効果 (Direct3D 10)
DirectX 効果はパイプライン状態のコレクションであり、 HLSL で記述された式と、効果フレームワークに固有の構文によって設定されます。 効果をコンパイルした後、効果フレームワーク API を使用してレンダリングします。 効果機能は、ジオメトリと単色を出力するピクセル シェーダーを変換する頂点シェーダーのような単純なものから、複数のパスを必要とし、グラフィックス パイプラインのすべてのステージを使用し、シェーダーの状態と、プログラム可能なシェーダーに関連付けられていないパイプラインの状態を操作するレンダリング手法まで多岐に渡ります。
最初の手順では、コントロールする状態を効果で整理します。 これには、シェーダーの状態 (頂点、ジオメトリ、ピクセル シェーダー)、シェーダーで使用されるテクスチャとサンプラーの状態、およびその他のプログラム不可能なパイプライン状態が含まれます。 テキスト文字列としてメモリ内に効果を作成できますが、通常は、効果の状態を効果ファイル (.fx 拡張子で終わるテキスト ファイル) に格納するのに便利なサイズが十分に大きくなります。 効果を使用するには、(HLSL 構文と効果フレームワーク構文をチェックするために) コンパイルし、API 呼び出しを通じて効果の状態を初期化し、レンダリング API を呼び出すようにレンダー ループを変更する必要があります。
効果は、特定の効果に必要なすべてのレンダリング状態を、手法と呼ばれる 1 つのレンダリング関数にカプセル化します。 パスは、レンダリング状態を含む手法のサブセットです。 マルチ パス レンダリング効果を実装するには、1 つの手法内で 1 つ以上のパスを実装します。 たとえば、1 セットの深度/ステンシル バッファーでジオメトリをレンダリングし、その上にスプライトをいくつか描画するとします。 最初のパスでジオメトリ レンダリングを実装し、2 番目のパスでスプライト描画を実装できます。 効果をレンダリングするには、レンダー ループで両方のパスをレンダリングするだけです。 効果には、任意の数の手法を実装できます。 もちろん、手法の数が多いほど、効果のコンパイル時間が長くなります。 この機能を利用する 1 つの方法は、さまざまなハードウェアで実行するように設計された手法を使用して効果を作成することです。 これにより、検出されたハードウェア機能に基づいて、アプリケーションでパフォーマンスを正常にダウングレードできます。
関連トピック