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

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

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

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

当然ながら、効果を使用するには、パフォーマンスに関する考慮事項があります。 効果を使用しない場合、これらの考慮事項はほとんど同じです。 たとえば、状態の変化の量を最小限に抑えることや、更新の必要がある変数を頻度ごとに整理することなどが挙げられます。 これらの戦術によって、CPU から GPU への送信が必要なデータの量を最小限に抑えるため、同期の問題の可能性が最小限に抑えられます。

効果 (Direct3D 10)