効果のレンダリング (Direct3D 10)

効果は、情報を格納したり、状態のグループを使用してレンダリングしたりするために使用できます。 各手法では、頂点シェーダー、ジオメトリ シェーダー、ピクセル シェーダー、シェーダーの状態、サンプラーとテクスチャの状態、その他のパイプライン状態を指定します。 したがって、状態をエフェクトに整理したら、効果を作成してレンダリングすることで、その状態から生じるレンダリング効果をカプセル化できます。

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

効果が作成された後、それを使用するための残りの 2 つの手順があります。 まず、状態を設定するためのさまざまなメソッドを使用して、効果の状態の値 (効果変数の値) を初期化する必要があります。 一部の変数の場合、これは効果が作成されたときに一度行うことができます。他のユーザーは、アプリケーションがレンダー ループを呼び出すたびに更新する必要があります。 効果変数が設定されたら、手法を適用して影響をレンダリングするようにランタイムに指示します。 これらのトピックはすべて、以下で詳しく説明します。

当然ながら、効果を使用するための パフォーマンスに関する考慮事項 があります。 効果を使用しない場合、これらの考慮事項は大きく同じです。 状態の変化の量を最小限に抑える、頻度で更新する必要がある変数の整理などです。 これらの戦術は、CPU から GPU に送信する必要があるデータの量を最小限に抑えるために使用されるため、潜在的な同期の問題を最小限に抑えます。

効果 (Direct3D 10)