rendermoney的源码下载 http://ohmygaga.googlecode.com/files/MyDeferred%20Shading.rfx....~
Deferred Shading这个东西据说对多光源,而且是大量动态光源会提升性能~ 国外很多单机游戏有用~ 网游我还不知道哪里有用~ 大部分还是作为我们技术人员研究技术用.~
这个东西是什么网上可以找到~ ,推荐一篇文章
http://blog.csdn.net/yanonsoftware/archive/2007/05/14/1608621.aspx
上面还有源码.
ogre里面也实现了这个玩意~ 将在后面几篇研究~
看了上面那篇博客,作者写了个简单的框架~ 准备下面也想做个类似的东东,不过rendermoney或nv的那个工具跟美术交流也是挺方便的,还是继续用.~熟了以后总会派上用场.~ rm跟美术交流确实比较方便.....
延时着色这个东西还是很多的.这一篇 准备以白话形式搞出个效果~ (其实是rendermoney自带的), 接下来会以另外几篇说其中的问题.
rendermoney里面只是阐述技术~ 一个光源~取了position,和normal作为渲染贴图(暂时先这么叫)
G-buffer (可以理解为多张张Render Texture)
延期着色我理解的流程:
1.把相关模型里面受光照的一些信息分别保存,两中方案,一分别用不同的pass去rtt,例如第一个绘制的顶点的信息,第二个是normalmap的信息,第n是其他.......这样就要绘制n遍到(n肯定是有上限的)....二利用硬件能力Multiple Render Target,就是在一个pass里面可以有多个rendertarget,当然也是有上限的,我看的资料比较古老,讲到每个细节时候具体说..~总结:第一步就是把模型的信息renderttotexture.但是里面还是有很多很多猫腻,而且对性能影响很大...
2.用一个全屏的四边形在ps里面进行全屏的像素绘制..~ 遍历所有光源,在ps里面对上面的rendertexture分别采样,得到模型信息,跟每个光源进行计算然后输出.累加出每个光源的信息最后得到了绘制结果
rendermoney的第一个pass:
vs
ps 保存住这个mrt的信息
第二个pass用来渲染整个场景包含了光源
vs 没什么东东设置位置纹理坐标
ps
看起来貌似不是很难,...代码层确实不难...难的还是思想和硬件上的一些约束...~ 魔鬼藏在细节中~ ...具体的细节下篇再讲~~
在rendermoney里面做了一个两个光源的延时渲染