エフェクトのレンダリング (Direct3D 11)

エフェクトは、情報の格納や、ステートのグループを使用したレンダリングに使用できます。それぞれのテクニックでは、頂点シェーダー、ハル シェーダー、ドメイン シェーダー、ジオメトリ シェーダー、ピクセル シェーダー、コンピュート シェーダー、シェーダー ステート、サンプラーとテクスチャーのステート、アンオーダード アクセス ビュー ステート、およびその他のパイプライン ステートからいくつかのセットを指定します。エフェクトにステートを編成すると、エフェクトを作成、レンダリングすることによって、そのステートの結果となるレンダリング エフェクトをカプセル化できます。

エフェクトをレンダリング用に準備するにはいくつかの手順が必要です。最初の手順はコンパイルで、HLSL 言語構文およびエフェクト フレームワーク ルールに対して、HLSL のようなコードをチェックします。API 呼び出しを使用してアプリケーションからエフェクトをコンパイルすることも、エフェクト コンパイラ ユーティリティ fxc.exe を使用してオフラインでエフェクトをコンパイルすることもできます。エフェクトが正常にコンパイルされたら、別の (ただし非常に似ている) API セットを呼び出して、エフェクトを作成します。

エフェクトを作成したら、それを使用するために残り 2 つの手順が必要です。HLSL でエフェクト ステートの値 (エフェクト変数の値) が初期化されていない場合は、まず、ステートを設定するいくつかのメソッドを使用して、これらの値を初期化する必要があります。一部の変数については、エフェクトの作成時に 1 回初期化を実行します。それ以外の変数は、アプリケーションからレンダリング ループが呼び出されるたびに更新する必要があります。エフェクト変数が設定されたら、テクニックを適用することによって、エフェクトをレンダリングするようランタイムに指示します。これらのトピックについてはすべて、次の箇所で詳細に説明しています。

当然ながら、エフェクトを使用する場合のパフォーマンスに関する考慮事項があります。エフェクトを使用しない場合でも、これらの考慮事項は概して同じです。ステート変更の量を最小化することや更新の頻度によって変数を編成することなどが、これに該当します。これらの方策は、CPU から GPU に送信する必要があるデータの量を最小限に抑え、それによって同期化に関する潜在的な問題を最小限に抑えるために使用されます。

関連項目

エフェクト (Direct3D 11)