PRTDemo サンプル

このサンプルでは、低次球面調和関数を使用する事前演算済み放射輝度伝播 (PRT) シミュレーター、ID3DXPRTEngine の使用方法を示します。さらに、CPCA (クラスター主成分分析) による結果を圧縮し、vs_1_1 シェーダーを使って圧縮結果を任意のライティングによってリアルタイムで表示する方法を示します。

SHPRTVertex sample screenshot

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) および以下の参考資料を参照してください。

関連項目

事前演算済み放射輝度伝播 (Direct3D 9), PRT の方程式 (Direct3D 9)