Deferred Lighting (延迟光照) + Light Pre-Pass 实现多光源动态阴影

  一直以来,不明白多光源动态阴影应该如何高效的实现,直到在网上查阅了大量的文章,得知虚幻3引擎里用到了 Deferred Lighting (延迟光照)渲染系统,实现了多光源的动态光照和阴影,我猜其它游戏中的实现方法也一定是大同小异了。
  于是我花了两个星期研究,有了现在的结果。延迟光照来源于一种基本的思想,三维变二维的处理方式,不过它变的很完整,除了把整个视口的颜色信息画到纹理,还把几何数据(坐标,法线)也分别画到了纹理上,使每个像素都有了完整的顶点信息。这一组纹理被称作“G-Buffer”,我一直觉得不知道怎样翻译比较好,“几何纹理缓存”?总之每帧的渲染中几何模型只画了一次,剩下的都是图像处理了,每加一个光照,就用G-Buffer的信息处理一次光照效果,累加到最终的输出。如果有一盏以上的灯光,最终场景的颜色亮度会超过1.0,所以必须用浮点纹理,也必须进行后期HDR效果处理,整个渲染过程变的十分完美。在这些步骤中,控制各种特效的开和关变的很容易,我觉得这是一大好处,虽然它本身的实现过程很麻烦。
  在具体的实现中,要解决的问题还是很多的,主要是画半透明物体的问题。网上很多文章都是大概雷同的解释,就是对半透明物体依然使用传统的方法绘制,单独走一个管线。我觉得这是个最差的设计。画出那么多G-Buffer就是为了方便进行各种后期效果处理的,加上必须要做HDR处理,已经消耗很多时间了,中间要做一次传统方法的绘制岂不是严重效率低下?而且效果是要统一的,所有的材质效果,光照效果,阴影效果,无论是否半透明都要在两套渲染过程中做的一模一样,实在不是一件容易的事。于是我想了一个把半透明物体

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值