OpenGL3.3_C++_Windows(31)

demo

延迟渲染管线

  • 正向渲染:一个物体渲染完成,接着渲染下一个,对于光源需要对每个片段迭代计算,复杂度很高
  • 延迟渲染(Deferred Rendering):几何处理阶段,渲染场景到G缓冲(G-buffer)的纹理中(例如各种向量,镜面值……),并不用做复杂的光照计算,光照处理阶段(Lighting Pass),渲染屏幕大小的方形,使用G缓冲内的纹理数据,
  • 这样并不直接获取顶点着色器中的数据,而是延迟到G缓冲获取,因为深度测试已经将片段更新最顶层的片段(纹理的深度存储)。这样保证了对于在光照处理阶段中处理的每一个像素都只处理一次,
  • 缺陷
    • 纹理颜色缓冲中存储相对比较大的场景数据,这会消耗比较多的显存
    • 不支持混合,因为我们只有最前面的片段信息
    • 不支持MSAA,因为每个像素只有一个样本
  • //

MRT

  • G缓冲 + MTRshader,使用MTR将数据渲染到多个颜色缓冲
  • //

结合正向渲染

  • 光照处理:quad + shader:渲染quad,将G缓冲的数据作为纹理
  • 为了避免延迟渲染的缺陷,或者其他计算光照的方式,需要结合正向渲染,需要在延迟渲染之后进行-
  • 但是这样没有考虑深度信息,需要利用glBlitFramebuffer将上一阶段的深度信息,复制到默认帧缓冲中,再正常渲染(可以默认帧缓冲直接运行)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值