効果 (Direct3D 11)
DirectX 効果はパイプライン状態のコレクションであり、HLSL およびエフェクト フレームワークに固有の構文 記述された式によって設定されます。
エフェクトをコンパイルした後、効果フレームワーク API を使用してレンダリングします。 エフェクト機能は、ジオメトリを変換する頂点シェーダーや、単色を出力するピクセル シェーダー、複数のパスを必要とするレンダリング手法、グラフィックス パイプラインのすべてのステージを使用するレンダリング手法、シェーダーの状態、およびプログラミング可能なシェーダーに関連付けられていないパイプライン状態の操作まで、さまざまなものがあります。
最初の手順では、効果で制御する状態を整理します。 これには、シェーダーの状態 (頂点、ハル、ドメイン、ジオメトリ、ピクセルおよびコンピューティング シェーダー)、シェーダーで使用されるテクスチャとサンプラーの状態、およびその他のプログラム不可能なパイプライン状態が含まれます。 効果はテキスト文字列としてメモリ内に作成できますが、通常は、効果の状態を効果ファイル (.fx 拡張子で終わるテキスト ファイル) に格納するのに便利な大きさになります。 効果を使用するには、(HLSL 構文と効果フレームワーク構文を確認するために) 効果をコンパイルし、API 呼び出しを使用して効果の状態を初期化し、レンダリング API を呼び出すようにレンダー ループを変更する必要があります。
効果は、特定の効果に必要なすべてのレンダリング状態を、手法と呼ばれる 1 つのレンダリング関数にカプセル化します。 パスは、レンダリング状態を含む手法のサブセットです。 マルチ パス レンダリング効果を実装するには、手法内で 1 つ以上のパスを実装します。 たとえば、1 セットの深度/ステンシル バッファーでジオメトリをレンダリングし、その上にスプライトをいくつか描画するとします。 最初のパスでジオメトリ レンダリングを実装し、2 番目のパスにスプライト描画を実装できます。 効果をレンダリングするには、レンダー ループで両方のパスをレンダリングするだけです。 効果には、任意の数の手法を実装できます。 もちろん、手法の数が多いほど、効果のコンパイル時間が長くなります。 この機能を利用する 1 つの方法は、さまざまなハードウェアで実行するように設計された手法を使用して効果を作成することです。 これにより、アプリケーションは検出されたハードウェア機能に基づいてパフォーマンスを適切にダウングレードできます。
一連の手法をグループにグループ化できます (構文 "fxgroup" を使用します)。 手法は任意の方法でグループ化できます。 たとえば、マテリアルごとに 1 つずつ、複数のグループを作成できます。各材料は、各ハードウェアレベルのための技術を持つことができます。各手法には、特定のハードウェア上のマテリアルを定義するパスのセットがあります。
このセクションでは、次の操作を行います。
話題 | 形容 |
---|---|
効果 で状態を整理する |
Direct3D 11 では、特定のパイプライン ステージの効果の状態が構造別に整理されます。 |
エフェクト システム インターフェイス |
エフェクト システムでは、エフェクトの状態を管理するための複数のインターフェイスが定義されています。 |
特殊化インターフェイスの |
ID3DX11EffectVariable には、インターフェイスを必要な特定の種類のインターフェイスにキャストするためのメソッドが多数含まれています。 |
エフェクト のインターフェイスとクラスを する |
Effects 11 では、さまざまな方法でクラスとインターフェイスを使用できます。 |
効果 をレンダリングする |
効果は、情報を格納したり、状態のグループを使用してレンダリングしたりするために使用できます。 |
効果 の複製を する |
効果を複製すると、効果のコピーとほぼ同じ 2 つ目が作成されます。 |
ストリーム アウト構文の |
ストリームアウトを持つジオメトリ シェーダーは、特定の構文で宣言されます。 |
効果 10 と効果 11 の の の違い |
このトピックでは、効果 10 と効果 11 の違いを示します。 |
関連トピック
-
Direct3D 11 の プログラミング ガイド