About "partitioning method" in Hull Shader entry point

土日に "Practical Rendering and Computation with Direct3D 11", Jason Zink, Matt Pettineo, Jack Hoxley. を少しずつ読んでいます.

この本では Tessellation 関係の説明がそこそこされているのが良いです.

今回, Hull shader のエントリポイントで指定する "partitioning method" の役割について書いてあったので, 軽く紹介してみます. これは固定機能のテッセレータに渡されるもので, テッセレーション係数の解釈の仕方をするもので, 以下の 4 種類の値があります.

  • integer
    • テッセレーション係数を 1-64 の間の最も近い整数値に切り上げます. 整数値で離散的に変化します.
  • pow2
    • 2^n ( n = 0-7 ) の値の整数値に丸めます. 整数値で離散的に変化します.
  • fractional_even
    • 偶数 ( 2, 4, 6, .. ) の値に丸めますが, 小数点以下を考慮して連続的に変化します.
  • fractional_odd
    • 奇数 ( 1, 3, 5, .. ) の値に丸めますが, 小数点以下を考慮して連続的に変化します.

interger や pow2 だと, 整数値で三角形の数が変化するので LOD が変化しているのがばれやすいです.
fractional_even や fractional_odd だと, float のテッセレーション係数の値に応じて連続的に変化させるように見せます.