GC的Shading系统终于有点成果了!被郁闷了两三周的时间,做DS都没这么麻烦。
在制作的过程中有一些经验和教训,准备跟日记结合,重新组织一下写下来。
GCShading修改后的设计也不一定就是最好的,这里只是想把思路组织一下,把经验和教训分享一下,特别欢迎众位前辈拍砖、指正!
由于要写的内容太多,一两天内来不及写完,因此,可能会在之后一段时间写一组连载,请多包涵。 *^_^*
Preview
Shading的概念,在之前翻译那篇Tabula rasa的文章中给出了一个参考:
在计算机图形学的词典里,Shading表示“对受光物体的渲染”,这个渲染过程包括下面几步:
1, 计算几何多边形(也就是Mesh)。
2, 决定表面材质特性,例如法线、双向反射分布函数(bidirectional reflectance distribution function,BRDF)等等。
3, 计算入射光照。
4, 计算光照对表面的影响,并最终显示。
在进行外包实现的过程中,由于需求的变化,受光是一个经常变化的选项。在真实感光影上,我们就已经有诸多选择,即便是最终决定了使用Deferred Shading进行全场景动态光影之后,针对是否使用静态光照图仍然有一些讨论——毕竟,目前来说,动态的优势在于交互,但是静态的优势在于真实。
GC初始的设计,是一切围绕着材质转,材质决定其渲染模式,Shading Environment决定材质的渲染。Render System这个Singleton,拿到材质之后,根据当前的渲染环境,决定对其的渲染。如下图:
这样的考虑主要是为了之后节点化材质系统所考虑(不太明白节点化概念的朋友可参考Mental Mill),材质如果节点化之后,意味着Shader代码需要与材质绑定了。这样,一个自然而然的想法就是——材质成为Shader的载体。
但是,首先我们就必须面对一个问题:Mesh,有没有Skin,与Shader是有关的,有Skin就必须在Shader里写Bone数组,写Bone处理。但是,材质知道这些,合适么?不合适。
此外,一旦渲染模式、受光模式有所变化,材质类型就变得复杂起来,有些材质是静态光照图,有些材质是动态光影,甚至需要有材质类型支持顶点光照——听起来很可笑,到底是不是动态光影,凭什么由材质支持呢?材质是用户使用的,用户只要指定纹理、半透明、是否进行深度检测之类的不就可以了么?一个材质,能进行顶点光照,凭什么就不能进行动态光影呢?
现在GC面临的问题是,切换不同的渲染需求、光照模式后,材质被迫需要修改,这是我们所不想见到的。
另一方面,由于DX10本身日益显露的“过渡产品”特征,因此在GC的编码中,不断在考虑迁移到DX11平台的问题。这样的话,“描述”与“实现”分开就特别必要了。如果我们把材质、受光、Skin之类的渲染需求都升格为“描述”,那么,“实现”是可以独立处理的。这种想法也促使我们下决心处理掉GC的Shading系统,进行重新设计。
分享到:
相关推荐
Deferred Shading延迟光照,例子简单易懂,很容易理解哈
非真实感图形学的程序,为提取三维物体的二维轮廓的程序。shape from shading的一个重要程序
apple公司的lens shading专利,用于iphone手机上使用。
shape from shading 的matlab实现
介绍了一种shape from shading的新方法
Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading Flat shading
非常不好找的 opengl 4.0 shading language cookbook 源码 GLSL COOKBOOK 源码 opengl 4.0 shading language cookbook 源码 GLSL COOKBOOK 源码 opengl 4.0 shading language cookbook 源码 GLSL COOKBOOK 源码 ...
模仿软件,使用opencv对camera模组进行暗电流、lenshading进行校正和优化。
The opengl shading language
图形学实验:flat shading C++源码(用opengl实现) 给定物体的动态序列(见附件),请利用局部光照模型将其渲染。要求: (1)给场景增加一个平坦的地面模型,增加纹理到地面上更好; (2)在适当位置设置两个光源; ...
1、Ruo Zhang,Ping-Sing Tsai, James Cryer and Mubarak Shah, Shape from Shading: A Survey' 2、 James Cryer, Ping-Sing Tsai and Mubarak Shah. Shape from Shading and Stereo 3、Ping-sing Tsai and Mubarak ...
Shawn的Deferred Shading ppt 翻译 Shawn的Deferred Shading讲解ppt是很好的学习延迟着色的资源!
OpenGL® Shading Language is the experienced application programmer's guide to writing shaders. Part reference, part tutorial, this book thoroughly explains the shift from fixed-functionality graphics...
The shading for real-time computer graphics has undergone a complete paradigm shift in recent years
OpenGL Shading Language Cookbook
OpenGL 4 Shading Language Cookbook (2nd ed.)一书及其代码和编译方法
OpenGL Shading Language 第三版
shape from shading(SFS)的matlab代码,修改图片路径,可直接运行。这段代码用的就是Tsai文章中的方法,文件夹下还有我执行后效果图,大家可参考一下。由于我不知道准确的光照角度,所以恢复效果不太好,尤其是...
对比per_pixel shading per_vertex shading绘图的不同效果
OpenGL4.4版 Shading Language