Deferred Shading --延时着色

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里面做了一个两个光源的延时渲染

          

      

       

      

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值