延迟渲染的G-Buffer压缩

本文介绍了在延迟渲染中对G-Buffer进行优化的策略,包括Normal的存储方法、Depth的处理、Position的重建以及Diffuse、Specular、Emissive和Half-Lambert等信息的压缩。通过这些优化,尽管存在一定的精度损失,但整体性能得到了显著提升,为后续的PostProcess效果和带宽节省提供了可能。
摘要由CSDN通过智能技术生成

最近渲染器终于稳定下来了, 效果也做得差不多了, 于是做一下总结

当初为了追求进度和效果, 直接就是采用最暴力的A16R16G16B16F x 3的G-Buffer:

COLOR0 Normal.x Normal.y Normal.z Depth
COLOR1 Diffuse.r Diffuse.g Diffuse.b  
COLOR2 Specular.r Specular.g Specularb Specular  Glossy

可以说没有什么特殊的, 效果是出来了, 性能很是问题

所以想投入实际使用还是要优化一下性能, 对G-Buffer减肥

最苦逼的是渲染风格改了, 材质信息又增加了Emissive(4分量)和Half-Lambert(3个参数)

RTT的格式当然还是选择最快的A8R8G8B8, 但是8bit的通道只能保存[0, 1]范围的值, 精度只有256级

Normal可以只保存两个分量, 参考http://aras-p.info/texts/CompactNormalStorage.html, 用的method#1

虽然理论上有偏差, 但效果可以接受, 我要的是效率

Depth 8bit肯定不行, 之前想过用两个8bit通道保存, 实败了, 解出的值不是连续的, 所以把其中一个RTT的格式改成了R16G16F(又少了一个通道的说..

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值