KlayGE中的延迟渲染(二)

本文深入探讨了KlayGE游戏引擎中延迟渲染技术的实现细节,重点讲解了G-Buffer阶段与Shading pass阶段。介绍了如何通过合理分配G-Buffer来减少资源消耗,并讨论了normal存储的有效方法。
转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/?p=755

 

KlayGE中的延迟渲染(一)里,我们推出了lighting pass里的计算,本篇将讲解G-Buffer阶段和Shading pass阶段。

G-Buffer分配

在Deferred Rendering的框架中,不管是Deferred Shading还是Deferred Lighting,G-Buffer的分配都是非常关键的。上一篇得出的lighting pass公式如下:

从公式可以看出,在light pass里需要的量有nh,alpha,cspeclc。因为h = (n + lc) / 2(见游戏中基于物理的渲染系列文章),而lc = normalize(lp)(l是光源位置,p是要计算的点位置),所以最终需要G-Buffer提供的量有:np,alpha和cspec。要完整的保存这些量,一共需要8个通道,normal占3个,position占3个,alpha和cspec分别占一个。这样对G-Buffer来说消耗太大了,必须要缩减。

显而易见的是,normal是经过归一化的,只需要保存2个分量。http://aras-p.info/texts/CompactNormalStorage.html比较了多种保存2分量的方法,其中Spheremap transform速度和效果综合起来最佳,Crytek也在用同样的方法,即:


剩余内容请见http://www.klayge.org/?p=755

转载于:https://www.cnblogs.com/gongminmin/archive/2011/01/16/1936897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值