Tessellation stages in DirectX11 Shader Model 5.0

DirectX11 Shader Model 5.0 でのテッセレーションに関係した各ステージが行う処理について, 以下に説明してみます.

I will try to explain what kind of process is done by stages related with tessellation in DirectX11 shader model 5.0 .

  • 0. ハルシェーダ ( Hull Shader )
    • 0 (a) ハルシェーダでの制御点のシェーディング ( Hull Control Point Shading )
      • この関数では入力したパッチの制御点を, 出力するパッチの制御点に変換する処理を行います. 例えば, 違うプリミティブを出力したりなどです. この処理は 1 スレッドで1制御点の処理を行います.
      • This function converts input patch control points to output patch control points. This process is done paralllely for each control points.
    • 0 (b) ハルシェーダでのパッチ単位の定数の計算 ( Hull Patch Constant Function )
      • 上の項目で説明した関数の結果をこの関数が受け取り, LOD パラメータ( エッジごとのテッセレーション係数と, 三角形の内部のテッセレーション係数 ) を計算して, ドメインシェーダが受け取る定数パラメータとして出力します. この処理はパッチごとに 1 スレッドで処理します.
      • This functions receives parameters from the previous function, and computes LOD parameters ( per edge tessellation parameters and per triangle interior parameters ) as constant parameters for the domain shader. This process is done per patches.
    • 1. テッセレータ ( Tesselator )
      • ハルシェーダの結果を元に, テッセレーション後の頂点をパッチ座標系で生成します.
      • This unit generates tessellated vertices in patch space.
    • 2. ドメインシェーダ ( Domain Shader )
      • テッセレーション後に生成された頂点が, パッチ上のどこにあるか?(重心座標系)を元に頂点情報を計算します. その頂点情報をパッチ座標系からクリップ座標系に変換します.
      • This shader computes vertex information from patch space location and converts them from patch space to clip space.