方法 :ハル シェーダーの作成

ハル シェーダーは、テッセレーションを実装する 3 つのステージの 1 つ目です。ハル シェーダーの出力によって、テッセレータ ステージおよびドメイン シェーダー ステージを実行できます。

ハル シェーダーは、(頂点シェーダーからの) 入力コントロール ポイント セットを出力コントロール ポイント セットに変換します。入力ポイントと出力ポイントの数は、変換の種類に応じてその内容と数が異なります (変換の典型的な例として基底変換がある)。

ハル シェーダーは、パッチ定数情報 (テッセレーション係数など) もドメイン シェーダーおよびテッセレータに出力します。固定機能テッセレータ ステージは、テッセレーション係数およびハル シェーダーで宣言されたその他のステートを使用して、テッセレーションの実行程度を決定します。

ハル シェーダーを作成するには

  1. ハル シェーダーを設計します。「方法 :ハル シェーダーの設計」を参照してください。

  2. シェーダー コードをコンパイルします。

  3. ID3D11Device::CreateHullShader を使用して、ハル シェーダー オブジェクトを作成します。

     HRESULT CreateHullShader(   const void *pShaderBytecode,     SIZE_T BytecodeLength,     ID3D11ClassLinkage *pClassLinkage,     ID3D11HullShader **ppHullShader ); 
    
  4. ID3D11DeviceContext::HSSetShader を使用して、パイプライン ステージを初期化します。

     void HSSetShader(   ID3D11HullShader *pHullShader,     ID3D11ClassInstance *const *ppClassInstances,   UINT NumClassInstances ); 
    

ハル シェーダーがバインドされている場合、ドメイン シェーダーはパイプラインにバインドする必要があります。特に、ジオメトリ シェーダーでハル シェーダー コントロール ポイントを直接ストリーム出力することはできません。

関連項目

テッセレーションの概要