方法: ハル シェーダーを作成する
ハル シェーダーは、 テセレーションを実装するために連携する 3 つのステージの最初のステージです。 ハル シェーダー出力は、テセレータ ステージとドメイン シェーダー ステージを駆動します。 このトピックでは、ハル シェーダーを作成する方法について説明します。
ハル シェーダーは、一連の入力コントロール ポイント (頂点シェーダーから) を出力コントロール ポイントのセットに変換します。 入力ポイントと出力ポイントの数は、変換に応じて内容と数が異なる場合があります (一般的な変換は基本変換になります)。
ハル シェーダーは、ドメイン シェーダーとテセレータのパッチ定数情報 (テセレーション 係数など) も出力します。 固定関数テセレータ ステージでは、テセレーション 係数と、ハル シェーダーで宣言された他の状態を使用して、テセレーションの量を決定します。
ハル シェーダーを作成するには
ハル シェーダーを設計します。 「 方法: ハル シェーダーを設計する」を参照してください。
シェーダー コードをコンパイルする
ID3D11Device::CreateHullShader を使用してハル シェーダー オブジェクトを作成します。
HRESULT CreateHullShader( const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader );
ID3D11DeviceContext::HSSetShader を使用してパイプライン ステージを初期化します。
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
ハル シェーダーがバインドされている場合は、ドメイン シェーダーをパイプラインにバインドする必要があります。 特に、ジオメトリ シェーダーを使用してハル シェーダー コントロール ポイントを直接ストリーミングすることは無効です。
関連トピック