延时渲染(Deferred Shading)

1、延时渲染的优势

延时渲染(deferred shading)相对于前向渲染(forward shading)主要有以下两个优势:(1) 只对看得见的像素进行光照计算,对于深度比较复杂(像素被超过4个以上的面片所覆盖)以及灯光数目较多的场景,可以有效提高渲染速度;(2)将光照与其他效果分离,可以大大减少shader组合的数量,假设光照效果数为M,其他效果数为N,对于前向渲染,则需要组合出M*N个shader,而对于延时渲染,只需要M+N个shader即可。

2、延时渲染框架

                                         图1:延时渲染pipeline

延时渲染是一种multi-pass渲染技术,分为几何pass和光照pass,然后有可选的一个或多个后处理pass。

geometry pass

这个pass的输入是一个object list,然后绘制每个object,但是并不直接输出到frame buffer,而是输出到几何缓存(Geometry Buffer)中,它其实就是一个opengl中的FBO(frame buffer object),几何缓存中包括diffuse map,position map以及normal map,其中position和normal map都用16位的浮点纹理存储,diffuse map直接用rgb纹理存储即可,position和normal是指在视图空间的位置和法线,因为法线是归一化的,所以只存储其xy分量即可,剩余的一个分量用来存储material id,其用来在lighting pass中索引material pallette。一个简单的geometry pass的shader如下:

vertex shader:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值