一种基于可视化编辑的高级材质合成系统与方法

文档序号:6372213阅读:384来源:国知局
专利名称:一种基于可视化编辑的高级材质合成系统与方法
技术领域
本发明涉及可视化编辑与合成领域,尤其是一种基于可视化编辑的高级材质合成系统与方法。
背景技术
随着图形硬件可编程能力的不断提高,图形处理单元(Graphic ProcessingUnit)在图形实时渲染中担任越来越重要的角色。充分利用GPU的并行性能,减轻CPU负担,缓解CPU和图形接口在图形渲染过程中由于总线对整个流水线产生的瓶颈。其次,不断增强的可编程特性,在顶点和象素阶段可以产生更丰富的形状、外观特效。着色器模型2. 0以后的渲染管线提供了两种可编程模块,通过运行定制的着色器 程序,实现材质渲染,在现代游戏开发中也开始受到关注。可视化的材质编辑器,它能很方便地帮助不会编写GPU着色器程序代码的美工创造出令人惊叹的材质效果。这样,图形程序员被解放出来将精力更多地用于整个引擎的图形架构。固定的图形管线中顶点的光照和坐标变换由顶点程序取代,像素的颜色融合及纹理操作像素程序取代,固定图形管线演变为可编程图形管线。人们可以在顶点和像素两个级别上编程实现灵活的处理,满足不同的要求。顶点和像素程序在图形应用中统称为着色器程序(SHADER)。以及后来的GeForceex、7x系列和相应的ATI 5xx核心的处理器都是沿着扩展图形可编程能力的方向发展,这一阶段图形处理器的特点是“可编程图形管线(PROGRAMABLE PIPELINE)”。对于大多数的GPU编程语言,要高效地合并着色器很难,因为着色语言的设计目标是实现一个具有完整效果的单块程序。特别是对于没有编程经验的美工,如果要实现一个比较满意的材质效果,就需要把自己的想法和编程人员进行沟通,而不能够自己来实现创作,这个过程不仅增加了成本,而且往往不能得到想要的效果。本发明,为了改善这方面的困难,在用户不需要编写着色器程序代码的情况下,任意的组合美工想要得到的材质效果。在一套严格定义的规则约束下,实现了着色器程序片段动态重组成新的着色器程序,实时产生高级材质效果。美工人员通过可视化创作就可以得到自己想要的材质效果。

发明内容
本发明的目的是提供一种基于可视化编辑的高级材质合成系统与方法,探索动态合成着色器程序的方法,生成这些程序、存储它们以及把一个灵活的着色器程序流水线整合到3D引擎的高级技术。目标是让引擎的材质渲染基于着色器程序,却不至于只支持预定义效果,通过组织基本的效果元素,以新颖和富有创造性的方法进行集成,美工不需要知道着色器流水线的系统知识就可以加入更加细微丰富的效果,以堆积木的方式建立出可以重组的新效果。为了达到上述目的,本发明提供了一种基于可视化编辑的高级材质合成系统,包括以下功能模块主接口模块、表达式库模块、属性模块、GPU着色器生成模块和材质合成模块;主接口模块用于定义光照方程各分量接口、法线接口、透明接口、透明遮罩接口和扭曲接口 ;
表达式库模块提供给用户方法和数据结构的集合;
属性模块用来确定整个渲染流程的状态和每一个表达式结点的属性;
GPU着色器生成模块用来生成最终的GPU着色器模块;
材质合成模块用于产生材质渲染效果,即根据前面生成的GPU着色器模块、用户加载进系统的三维物体模型、设置好的材质渲染流程的状态,将材质效果实时渲染到预览窗中;
其中,光照方程各分量接口,用于构造标准光照方程,建立材质的光照效果;法线接口, 用于将传递进来的法线贴图数据解释为每个像素的法线向量;透明接口,用于将标量解释为透明度;透明遮罩接口,用于确定对每一个像素是否应用透明效果;扭曲接口,用于确定扭曲度大小;三维物体模型,用于展示生成的材质效果。作为优选,光照方程各分量包括漫反射分量、自发光分量、高光分量和高光系数。作为优选,表达式库模块包括数据源类表达式和数据转换方法类表达式;数据源类表达式用来定义图形学相关的数据结构,提供数据流;数据转换方法类表达式用来提供数据转换的方法,为数据流的流动提供了保证。作为优选,属性模块用来设置整个材质效果的属性或者用来设置单独表达式结点的属性,每一种表达式都对应着若干种属性,这些属性或者决定数据源的数值,或者决定数据转换方法的状态。作为优选,整个材质效果的属性包括线框显示、取样方式、透明显示。为了达到上述目的,本发明的另一目的在于提供了一种基于可视化编辑的高级材质合成方法,包括以下步骤
步骤(I):从表达式库模块中选择表达式,建立表达式结点组合的有向无环 步骤(2):通过属性模块设置每一个表达式结点的属性,以及整个渲染流程的状态; 步骤(3):通过GPU着色器生成模块加载三维物体模型,执行渲染;
步骤(4):通过材质合成模块预览材质效果,实现二次编辑。优选步骤所述步骤(I)中,表达式库模块中每个表达式或对应一种数据源,或对应一种数据转换方法,表达式库提供给用户可用方法和数据结构的集合,用户通过表达式结点的自由组合,得到相应的材质效果。优选步骤所述步骤(3)中,用户选取表达式库中的表达式,通过符合图形学意义的组合,形成一个有向无环图,图的结点就是每一个表达式,称为表达式结点,通过将此有向无环图进行拓扑排序确定数据的流动方向,然后按照拓扑排序的顺序遍历图的结点,将数据流动的整个过程输出到GPU着色器模块。优选步骤所述步骤(4)中,根据前面生成的GPU着色器模块、用户加载进系统的模型、设置好的材质渲染流程的状态,将材质效果实时渲染到预览窗中,用户可以进行预览、调整摄像机朝向、旋转模型以及二次编辑。综上所述,由于采用了上述技术方案,本发明的有益效果是可以灵活组织表示,生成用户想要的材质效果,并且将动态组合得到的着色器程序,应用于场景编辑器的材质中。帮助不会编写着色器程序的美工创建高级材质特效,同时可以扩展表达式库并扩展材质类型,唯一的要求,用户需要有基本的图形学理论知识。


本发明将通过例子并参照附图的方式说明,其中
图I是本发明用于基于可视化编辑的高级材质合成系统的材质结构 图2是本发明用于基于可视化编辑的高级材质合成系统的合成渲染流程图。
具体实施例方式本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙 述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。主接口模块主接口模块定义了一系列图形学接口,表示图形学各个方面,用来汇聚收集最终的数据,并将数据分别加载进光照方程各分量接口,通过,漫反射、高光、高光系数、自发光这几个分量来构造标准光照方程,得到真实的光照模型,建立材质的光照效果;法线接口,用于将传递进来的法线贴图数据解释为每个像素的法线向量,然后将该法线向量加入GPU着色器模块关于每个像素颜色的计算中;透明接口,用于将标量解释为透明度,然后将该透明度数据加入GPU着色器模块关于每个像素颜色的计算中;透明遮罩接口,用于确定对每一个像素是否应用透明效果;扭曲接口,用于确定扭曲度大小。这一系列过程保证了整个渲染流程的通用性,整体上决定了整个材质渲染效果。这些图形学接口相当于表达式结点有向无环图的挂载点,数据汇集在此进行拼装组合,进而组成完整的GPU着色器模块实现高级材质效果。表达式库模块表达式库模块包含了本系统所有的表达式,其组成结构包括数据源类表达式和数据转换方法类表达式。每一个表达式包含有输入、输出和相应的属性,用来进行数据的流动;数据源类表达式用来定义图形学相关的数据结构(GPU可编程语言中的内置数据类型),提供数据流支持,一般只有输出没有输入,这个类型的表达式有二维纹理、三维纹理、环境贴图、RGB值和标量值;数据转换方法类表达式用来提供数据转换的方法(基本数学操作和图形学算法中的通用模块),为数据流的流动提供了保证,存在若干个输入和一个输出,这个类型的表达式有折射、反射、四则运算、插值类提供给用户不同的插值算法、坐标变换类提供模型顶点和摄像机在不同坐标空间中的变换、动画表示类在时间函数的作用下结合数学函数来对纹理坐标进行扰动等。表达式库模块的实现形式是以DLL动态链接库的方式加载到主程序中,每当有新的图形学材质算法被研究出来时,我们可以将算法抽象为数据源和数据转换方法的组合,将表达式库中没有的数据源表达式和数据转换方法表达式加入表达式库中,以便产生新的材质效果。因此我们的表达式库具有扩展特性。表达式库模块提供了材质合成系统的所有方法和数据,用户从库中选择表达式,进行符合图形学意义的组合,组合后的最终输出将会流向主接口模块相应的接口,进而组合成完整的GPU着色器模块,就可以得到相应的高级材质效果。属性模块属性模块用来确定整个渲染流程的状态和每一个表达式的属性。渲染流程状态的设置决定了渲染管线中某个渲染状态,渲染管线中的渲染状态一般都是是或否两种状态,或者为可配置的状态,比如是否以线框模式渲染,是否利用透明度值,透明度的计算采取的规则等;每个表达式属性实际上是底层每个表达式类的私有成员,在将表达式拖入编辑区的同时,我们可以对表达式的属性进行设置,这一动作会触发修改事件,作用于类的成员函数,修改类的私有成员的值,同时修改对应的着色器代码。底层实现是通过调用当前表达式对应的类的成员函数,设置类数据成员的值,同时更新对应GPU着色器代码,通过此方式动态更新GPU着色器模块中属性对应的着色器程序参数。每个表达式属性的设置决定了 GPU着色器模块中某个变量的值,比如RGB表达式的四个通道的值,纹理表达式的纹理坐标取值模式等。通过属性模块,可以同时决定渲染管线和GPU着色器模块的最终产出效果。GPU着色器生成模块GPU着色器生成模块用来产生最终的GPU着色器模块,大致有三个过程。第一,在编辑区,用户选取表达式库中的表达式,通过符合图形学意义的组合, 用连线将一个表达式结点的输出连接到另一个表达式结点的输入,用此种方式表示数据的流动,最终表达式结点的输出将会连接到主接口对应的接口中去。第二,用户做好连线工作后,形成一个有向无环图,图的结点就是每一个表达式,称为表达式结点。第三,通过将此有向无环图进行拓扑排序,也就确定了数据的流动方向,然后按照拓扑排序的顺序遍历图的结点,就可以将数据流动的整个过程整理出来,输出到主接口模块中去,主接口模块收集到这些数据,会组合成GPU着色器程序,这样就生成了完整的GPU着色器模块。其中,GPU着色器生成模块还负责定义通用的渲染流程,包括定义所有组件之间的通信渠道,通信渠道在每个表达式结点的入口和出口端口中定义,规范了每个端口的数据类型,表达式结点根据入口结点的数据类型选择表示底层的函数类型,表达式结点的输出端口的数据类型由入口数据类型决定,通过定义规范的通信渠道定,保证了结点的通用特性;定义光照方程分量接口,定义了光照方程可能涉及的所有分量和参数,在没有输入的时候,采用默认值参与光照计算,当将编辑区的结点树和光照方程分量接口关联时,相当于把通用的着色器代码挂接到了这些节点,类似总线结构的关节点,而编辑区的节点之间的连接,相当于树状结构的挂接;定义光照方程,光照方程采用丰(Phong)光照方程,光照方程分量有光照方程类型决定,编辑区所有的节点挂接和修改都是动态的修改着色器代码,映射到底层就是动态的修改光照方程中的分量值,最终将逐像素的光照计算所得到的颜色值赋值给每个像素,渲染出来。所有节点的通用性、光照方程分量接口的通用性和光照方程的通用性保证了整个渲染流程的通用性。在通用流程的架构下,规划了渲染流水线的组件挂接点,在特定的注入点,可以高效的传入通用代码。材质合成模块材质合成模块最终产生材质渲染效果。根据前面生成的GPU着色器模块、用户加载进系统的三维物体模型、设置好的材质渲染流程的状态,交给底层图形渲染引擎的着色器程序加载接口,在GPU中执行顶点着色器程序和像素着色器程序,将材质效果实时渲染到预览窗中,实现实时渲染,用户根据渲染结果,可以进行预览、调整摄像机朝向、旋转模型,还可以继续编辑,得到更细化的材质效果。参见图I,这是一个材质结构图。
从图可以看出,表达式结点之间通过连线将一个表达式结点的输出连接到另一个表达式结点的输入上去,用来表示数据的流动方向。数据从数据源类表达式开始流动,经过若干个用户选取的数据转换方法类表达式,进行数据的转换和重组,最终得到具有图形学意义的数据,至此,有向无环图表达式结点的任务结束。有向无环图表达式结点接着必须和主接口模块中的相应接口进行连线,表示之前生成的图形学意义的数据必须经过主接口的包装组合才能生成完整的GPU着色器模块。主接口模块将数据进行分类,分别是光照方程各分量、法线分量、透明分量和扭曲分量,将数据一一对应到这几个分量中去,然后组合生成完整的GPU着色器模块。最终,底层图形渲染引擎将生成好的完整GPU着色器模块加载进来,生成用户想要的高级材质效果。图2为材质渲染的流程图。从图可以看出,该流程囊括了本发明的所有模块,从用户操作到最终生成的高级材质效果。I、用户打开表达式库,选择能产生想要材质效果的相应表达式,并将其拖进编辑区。 2、用户按照图形学意义将一个表达式结点的输出连到另一个表达式结点的输入,用来表示数据的流动方向,并在此过程中设置好表达式结点的属性,对于数据源类表达式,属性即是数据源的值;对于数据转换方法类表达式,属性即是转换过程的配置。最终用户的连线将表达式结点组织成了一个有向无环图,图的结点就是每一个表达式。数据的流动方向即是该有向无环图拓扑排序的顺序。因此只需要以拓扑顺序遍历该有向无环图,即可以得到数据的流动方向。3、用户需要将有向无环图表达式结点的最终表达式输出连接到主接口模块的相应接口上去。以拓扑顺序遍历该有向无环图,将每个表达式的数据或操作传递给主接口模块各个接口,主接口模块生成完整的GPU着色器模块。4、利用生成好的GPU着色器模块,加载进来的模型文件,设置好的渲染管线的状态,通过底层图形渲染引擎提供的着色器程序加载接口,生成该着色器程序对应的高级材质效果,并在模型表面展示出来。5、对于已经呈现在预览窗口的材质,可以通过旋转移动模型的方式来进行多角度预览,还可以通过改变属性的方式来进行二次编辑。本发明并不局限于前述的具体实施方式
。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
权利要求
1.一种基于可视化编辑的高级材质合成系统,其特征在于包括以下功能模块主接口模块、表达式库模块、属性模块、GPU着色器生成模块和材质合成模块; 主接口模块用于定义光照方程各分量接口、法线接口、透明接口、透明遮罩接口和扭曲接口 ; 表达式库模块提供给用户方法和数据结构的集合; 属性模块用来确定整个渲染流程的状态和每一个表达式结点的属性; GPU着色器生成模块用来生成最终的GPU着色器模块; 材质合成模块用于产生材质渲染效果,即根据前面生成的GPU着色器模块、用户加载进系统的三维物体模型、设置好的材质渲染流程的状态,将材质效果实时渲染到预览窗中; 其中,光照方程各分量接口,用于构造标准光照方程,建立材质的光照效果;法线接口,用于将传递进来的法线贴图数据解释为每个像素的法线向量;透明接口,用于将标量解释为透明度;透明遮罩接口,用于确定对每一个像素是否应用透明效果;扭曲接口,用于确定扭曲度大小;三维物体模型,用于展示生成的材质效果。
2.根据权利要求I所述的一种基于可视化编辑的高级材质合成系统,其特征在于光照方程各分量包括漫反射分量、自发光分量、高光分量和高光系数。
3.根据权利要求2所述的一种基于可视化编辑的高级材质合成系统,其特征在于表达式库模块包括数据源类表达式和数据转换方法类表达式;数据源类表达式用来定义图形学相关的数据结构,提供数据流;数据转换方法类表达式用来提供数据转换的方法,为数据流的流动提供了保证。
4.根据权利要求3所述的一种基于可视化编辑的高级材质合成系统,其特征在于属性模块用来设置整个材质效果的属性或者用来设置单独表达式结点的属性,每一种表达式都对应着若干种属性,这些属性或者决定数据源的数值,或者决定数据转换方法的状态。
5.根据权利要求4所述的一种基于可视化编辑的高级材质合成系统,其特征在于整个材质效果的属性包括线框显示、取样方式、透明显示。
6.根据权利要求I或2或3或4或5所述的一种基于可视化编辑的高级材质合成方法,其特征在于包括以下步骤 步骤(I):从表达式库模块中选择表达式,建立表达式结点组合的有向无环图; 步骤(2):通过属性模块设置每一个表达式结点的属性,以及整个渲染流程的状态; 步骤(3):通过GPU着色器生成模块加载三维物体模型,执行渲染; 步骤(4):通过材质合成模块预览材质效果,实现二次编辑。
7.根据权利要求6所述的一种基于可视化编辑的高级材质合成方法,其特征在于所述步骤(I)中,表达式库模块中每个表达式或对应一种数据源,或对应一种数据转换方法,表达式库提供给用户可用方法和数据结构的集合,用户通过表达式结点的自由组合,得到相应的材质效果。
8.根据权利要求7所述的一种基于可视化编辑的高级材质合成方法,其特征在于所述步骤(3)中,用户选取表达式库中的表达式,通过符合图形学意义的组合,形成一个有向无环图,图的结点就是每一个表达式,称为表达式结点,通过将此有向无环图进行拓扑排序确定数据的流动方向,然后按照拓扑排序的顺序遍历图的结点,将数据流动的整个过程输出到GPU着色器模块。
9.根据权利要求8所述的一种基于可视化编辑的高级材质合成方法,其特征在于所述步骤(4)中,根据前面生成的GPU着色器模块、用户加载进系统的模型、设置好的材质渲染流程的状态,将材质效果实时渲染到预览窗中,用户可以进行预览、调整摄像机朝向、旋转模型以及二次编辑。
全文摘要
本发明公开了一种基于可视化编辑的高级材质合成系统与方法,涉及可视化编辑与合成领域,包括以下功能模块主接口模块、表达式库模块、属性模块、GPU着色器生成模块和材质合成模块;主接口模块用于定义光照方程各分量接口、法线接口、透明接口、透明遮罩接口和扭曲接口;本发明的有益效果是可以灵活组织表示,生成用户想要的材质效果,并且将动态组合得到的着色器程序,应用于场景编辑器的材质中。帮助不会编写着色器程序的美工创建高级材质特效,同时可以扩展表达式库并扩展材质类型,唯一的要求,用户需要有基本的图形学理论知识。
文档编号G06T15/50GK102760304SQ20121021719
公开日2012年10月31日 申请日期2012年6月28日 优先权日2012年6月28日
发明者唐琛, 曹跃, 李文全, 李鑫, 田瑞娇, 蔡洪斌, 许泉, 赵帅, 陈雷霆 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1