Posts Tagged ‘RedEngine.TBDR’

Tile-Based Deferred Rendering

Saturday, July 13th, 2013

Tile-Based Deferred Rendering(TBDR)从SIGGRAPH 2010发表开始逐渐为业界所了解。简要的说就是将屏幕空间划分成为格子状,利用compute shader将格子和光源照射区域进行碰撞检测,仅对碰撞成功的格子进行光照计算,而不用每次都做FullScreenQuad。

以前只知道deferred lighting(light pre-pass),光照都是通过一个一个sphere渲染的。感觉效率其实已经非常不错了。但是实验数据表明TBDR在大量光源存在的情况下明显优于light pre-pass。

顺带一提,由于Tile-Based的思想非常好,有人利用Tile-Based技术又提出了Forward+,也就是将TBDR中计算碰撞的结果直接输出,将这个碰撞列表拿来进行通常的Forward计算。在这里就能利用通常Forward的优势,比如复杂材质,半透明等等。

GPGPU给业界带来了另一个无限创造的可能性。谁利用的充分,谁就占优势。

最后给出截图,顺便代码参考了Intel的例子和某11区的牛人的例子。

黑色块是debug用的光源位置,顺便在cs里面也输出了。