PRTDemo サンプル
このサンプルでは、低次球面調和関数を使用する事前演算済み放射輝度伝播 (PRT) シミュレーター、ID3DXPRTEngine の使用方法を示します。さらに、CPCA (クラスター主成分分析) による結果を圧縮し、vs_1_1 シェーダーを使って圧縮結果を任意のライティングによってリアルタイムで表示する方法を示します。
Path
ソース : | (SDK ルート)\Samples\C++\Direct3D\PRTDemo |
実行可能ファイル : | (SDK ルート)\Samples\C++\Direct3D\Bin\x86 or x64\PRTDemo.exe |
このサンプルが興味深い理由
低次球面調和基底関数を使用する PRT には、標準的なディフューズ (N ? L) ライティングに比べて数多くの利点があります。面光源とグローバル エフェクト (相互反射、ソフト シャドウ、自己シャドーイング、サブサーフェス スキャッタリングなど) は、事前計算済みライト トランスポート シミュレーションの後に、リアルタイムでレンダリングできます。CPCA ではシミュレーターの結果を圧縮できるため、シェーダーは同じ数の定数または頂点単位のデータを必要としません。
概要
基本概念では、まず、アート コンテンツ作成プロセスの一環として PRT シミュレーターをオフラインで実行し、圧縮した結果を後からリアルタイムで使用するために保存します。ライト トランスポート シミュレーターは、通常はリアルタイムで行うのが非常に難しい、グローバル エフェクトのモデリングを行います。リアルタイム エンジンは、球面調和基底関数の観点からライトを評価し、それらを 1 組の球面調和基底係数にまとめてライティング環境全体を表します。その後に、頂点シェーダーを使用し、圧縮されたシミュレーター結果とラインティング環境を組み合わせることによって、頂点のディフューズ カラーに到達します。オフライン シミュレーターによって相互反射とソフト シャドウの計算が行われるため、この手法は視覚的に優れており、効率的で、リアルタイムのライティングに使用できます。
PRT、CPCA (クラスター主成分分析)、および球面調和関数の数学的側面の詳細については、PRT の方程式 (Direct3D 9) および以下の参考資料を参照してください。
- Peter-Pike Sloan、Jan Kautz、John Snyder 共著「Precomputed Radiance Transfer for Real-Time Rendering in Dynamic, Low-Frequency Lighting Environments」。ACM Transactions on Graphics (TOG), Proceedings of the 29th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH), pp.527-536. New York, NY:ACM Press、2002 年発行。
- Peter-Pike Sloan、Jesse Hall、John Hart、John Snyder 共著「Clustered Principal Components for Precomputed Radiance Transfer」。ACM Transactions on Graphics (TOG)、Vol. 22、Issue 3 (SIGGRAPH)、382 ~ 391 ページ。New York, NY:ACM Press、2003 年 7 月。
- Robin Green 著「Spherical Harmonic Lighting:The Gritty Details」。Game Developers' Conference、カリフォルニア州サンノゼ、2003 年 3 月。