ドメイン シェーダー (DS) ステージ
ドメイン シェーダー (DS) ステージでは、パッチ内の細分化されたポイントの頂点の位置を計算します。つまり、各ドメイン サンプルに対応する頂点の位置を計算します。 ドメイン シェーダーは、テッセレータ ステージの出力ポイントごとに 1 回実行され、ハル シェーダーの出力パッチや出力パッチ定数、およびテッセレータ ステージの出力 UV 座標への読み取り専用アクセスが可能です。
目的と用途
ドメイン シェーダー (DS) ステージは、ハル シェーダー (HS) ステージとテッセレータ (TS) ステージからの入力に基づいて、出力パッチ内の細分化されたポイントの頂点の位置を出力します。
入力
- ドメイン シェーダーは、ハル シェーダー (HS) ステージからの出力の制御点を利用します。 ハル シェーダーの出力には次の項目が含まれます。
- 制御点。
- パッチ定数データ。
- テセレーション係数。 テセレーション係数には、未処理の値 (整数テセレーションによる丸めの前など) と共に、固定機能テッセレータで使われる値を含めることができます。
- ドメイン シェーダーは、テッセレータ (TS) ステージからの出力座標ごとに 1 回呼び出されます。
出力
- ドメイン シェーダー (DS) ステージでは、出力パッチ内の細分化されたポイントの頂点の位置を出力します。
ドメイン シェーダーが完了すると、テセレーションは終了し、パイプライン データは、ジオメトリ シェーダー (GS) ステージやピクセル シェーダー (PS) ステージなど、次のパイプライン ステージで処理が続行されます。 隣接性を持つプリミティブ (三角形ごとに 6 個の頂点など) を想定するジオメトリ シェーダーは、テセレーションがアクティブな場合には有効ではありません (これは未定義の動作となり、デバッグ レイヤーで問題が検出されます)。
例
void main( out MyDSOutput result,
float2 myInputUV : SV_DomainPoint,
MyDSInput DSInputs,
OutputPatch<MyOutPoint, 12> ControlPts,
MyTessFactors tessFactors)
{
...
result.Position = EvaluateSurfaceUV(ControlPoints, myInputUV);
}
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示