AMDのGDC 2012のセッションのTechnology Behind AMD’s “Leo Demo”を見ていたところなかなか興味深いフォワードレンダリングのアプローチが取られていました.
スライド
http://developer.amd.com/gpu_assets/AMD_Demos_LeoDemoGDC2012.ppsx
Leo Demoでは,最近はやりのDeferred RenderingではなくForward Renderingが採用されているのですが,”Forward+”と呼ばれる新しいフォワードレンダリングのアプローチが提案されていました.
この手法では,Compute Shaderをつかって高速に大量のライトをフォワードレンダリングでも使えるようにしているようです.Battlefield 3やIntelのサンプルがあるTile-based Deferred RenderingではG-bufferを一定のサイズに区切って(タイルに)ライトのカリングを行うことで,1000個程度の動的なライトを1フレームで扱うのですが,この手法では3000個程度の動的ライトを処理できるようです(Radeon HD 7970の場合で3072個を1.7msでカリング).
IntelのTile-based Deferred Renderingのサンプルと解説ページ
http://software.intel.com/en-us/articles/deferred-rendering-for-current-and-future-rendering-pipelines/
Forward+はフォワードレンダリングなので,従来のDeferred Renderingの苦手とする多くのマテリアルが混在するシーンや複雑のマテリアルを使用することが出来るのところに優位性があるようです.なお,Leo Demoのスライドの後半ではベンチマーク結果が掲載されています.
※画像はクリックすると大きなサイズになります.
ベンチマークで使われたシーン
ベンチマーク結果
結果を見るとDeferred Renderingよりも圧倒的に速いですね.G-bufferの構築などが簡易になるので前処理が短くなっているのは推測できるんですが,その他の部分も短くなっています.
なお,この手法は,5月に開催されるEurographicsのショートペーパーで”Forward+: Bringing Deferred Lighting to the Next Level”と言うタイトルでAMDの原田さん(CEDECなどでは物理まわりのセッションでおなじみですが)が発表されるようです.
AMD 原田さんのサイト
https://sites.google.com/site/takahiroharada/
Eurographicsのショートペーパープログラム
http://www.eurographics2012.it/program_sp
詳細は,このショートペーパーがでてから読みたいところですので要チェックですね.