前向渲染 延迟渲染

1.基础思路
       目前我们看到最终画面都是2D的,只能看到有限的像素数,理论上我们只要处理(指光照,阴影处理)最终我们可以看到的点的效果就够了,多余的处理是浪费的。而 正常的前向渲染(Forward Shading)流程是把空间的点进行各种剪裁后,进行处理,所处理量远远大于我们最终看到的 。所以延迟渲染出现了。它先 将摄像机空间的点光栅化转化成屏幕坐标后再进行处理 这样就能减少处理的次数,从而提高效率

2.处理方法
       既然把处理流程放在了后面,那么处理所需要的参数也必须带到后面的流程。这里使用MRT(multi target render)就很重要,RT占用的显存越大,对显卡的的带宽要求也就越高,目前最多使用4个RT。后面的处理至少需要空间位置信息,可以通过Depth(至少16位)获得[2],其他可以将法线信息(normal),高光信息(specular),AO系数,diffuse,自发光(emissive),材质编号等信息放入MRT中。

3.产生的问题
       由于屏幕每个像素只能处理点,对于多个点合成一个像素的问题就无法解决了。
       首先就是半透明,会导致半透明物体无法受光照影响。对于半透明物体引擎一般采用正常渲染来处理,当然也有引擎将透明点信息也存储下来,处理的时候再拆开,这样受RT空间的限制,必然会有一些损失。
       其次是抗锯齿,因为抗锯齿需要采样周围其他点的信息。做法要么就采用边缘模糊来降低锯齿,要么就使用大的RT进行超采样,不过效率会降低。

.CryEngine渲染流程
G-Buffer(渲染几何信息到MRT上) -> Shadows(生成阴影图) -> SSAO(屏幕空间环境光遮罩) -> GI(全局照明) -> Deferred Lighting -> Forward Pass(正常渲染)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值