论文部分内容阅读
材质主要是绘制过程中针对物体的颜色、纹理、光影效果等属性的控制,自从可编程图形管线引入以来,用户可以自定义各种特殊的光影效果,以及组合出各种复杂的材质。然而由于需要在GPU上编写着色程序,很多的美工没有这样的能力,因此高级的材质在实际应用中也只能束之高阁,或者加重程序员的工作,却得不到很好的美学效果。本论文在数字媒体公共平台的项目基础上,侧重研究基于可视化工作的高级材质合成技术以及系统实现。通过开发可视化的着色器编辑工具,着色程序直接通过创建节点树自动生成,从而降低了高级材质的开发难度。本文首先系统的分析了可编程渲染管线各个阶段的功能,着色程序的设计规范,以及GPU执行效率等方面的知识,以便设计一个实用高效的材质合成系统框架。然后论文深入研究了着色程序片段重组原理,每个着色程序片段对应一个表示,根据着色程序片段的功能差异和表示在实现过程中的差异性,系统将表示分为以下几类:数据源类型,负责着色程序数据导入,数据可以是纹理元素、矩阵和向量等类型,数据源可以通过应用程序绑定也可以通过实时渲染得到;数学运算类,这类表示类似数学函数,函数的调用规范和CPU上的规则类似,函数的重载根据输入端的数据类型做出选择,由系统调用规范做出决策;图形算法固有模块类,这类表示定义了算法中的通用模块,通过抽象出材质算法中通用的算法单元,比如视差的偏移计算,浮雕的求视线的精确交点,降低了美工开发着色程序的难度,同时也解决了一些无法由运算表示组合得到的程序结构,如循环结构。本文实现了一套实用而高效的材质系统,本系统定义了统一的着色程序架构,架构包括特效函数的注入接口,着色程序片段粘合标准。定义中描述了基本材质的算法模块,基本材质包含了凹凸系列,环境贴图、反射、折射、高光、透明等。在这一组材质算法的基础上,用户通过组合基本材质算法,合成高级材质特效。通过合成的材质特效的效果文件,在符合调用接口的基础上,用户将效果文件应用到场景编辑器中使用,也可以用于其他的三维应用程序中。