テッセレーション

テッセレーションは、コンピュータグラフィックスの画像演算手法の1つである。2次元画像上で3次元の複雑な立体を表現するために多数のポリゴンが用いられるが、テッセレーションはこのポリゴンメッシュをさらに分割して表現することで、画像をより詳細かつ滑らかで現実感のあるものにする技術である。「テセレーション」とも表記される。

1. 概要
-----

この手法が登場した背景には、コンピュータの進歩に伴う3次元コンピュータグラフィックスにおけるポリゴン描画数の増加がある。映画やCMなどで用いられるプロダクションレンダリングの分野では、古くからサブディビジョンサーフェイスやNURBSのように、デザイナーが操作・管理するデータの量を抑制しつつ最終レンダリング品質における詳細度を向上させる仕組みが考え出されてきた。

一方、PCなどで用いられるGPUによる画像処理の演算速度やビデオメモリ容量の向上によって、リアルタイムでの3D画像の描画においても1フレームあたりのポリゴン数を増すことが可能になったが、今度は元のモデルにおいて膨れ上がった頂点データをGPU側で読み込むために長時間掛かるのが利便性や性能を損なうという問題が出てきた。特に2015年現在でも、マザーボードとグラフィックスカード上のディスクリートGPUを接続するPCI-Express規格は、CPU-メインメモリ間やGPU-ビデオメモリ間と比べて遥かに帯域幅が小さく、CPU-GPU間におけるデータの転送速度が性能のボトルネックとなりうる。また、グラフィックスカードに搭載されているビデオメモリは直結型のため、CPU用システムメモリと比べて簡単に増設するわけにはいかず、ビデオメモリに格納するデータはできるかぎり少ないほうがよい。

そのため、最初に読み込むモデルでは粗めのポリゴンにしておいて、GPUで読み込んだ後にそれを演算によって小さなポリゴンに分割・生成することで、大きくなり続ける初期モデルのデータ量を抑制する工夫がなされるようになった。テッセレーションをハードウェアによって実行できれば、例えば入力ジオメトリデータ量は同一だが、詳細化の必要がない遠景は低ポリゴンのままで表現し、視点に近いオブジェクトほどポリゴンを動的に細かく分割することでジオメトリを詳細に表現する、といった最適化が可能になる。テッセレーションは、詳細化が必要な近景に関してのみCPU側で実行してデータを増幅したのち、GPUに転送して描画する形にすることもできるが、実際の描画を担当するGPU側で増幅できるほうがCPUの負担やCPU-GPU間のデータ転送量を減らすことができる。

PC用リアルタイム3DグラフィックスAPIの標準規格には、主にマイクロソフトによって開発されているDirectXと、Khronosグループによって管理されているオープン規格であるOpenGLが存在するが、Direct3D 9およびOpenGL 2.xでのテッセレーションはAMDによる拡張実装にとどまるなど、テッセレーション機能に関しては長らく標準化が進まない状況にあった。2006年11月にWindows Vistaとともにリリースされた「DirectX 10」や2009年8月にリリースされた「OpenGL 3.2」ではジオメトリシェーダーが標準導入され、また2009年10月にWindows 7とともにリリースされた「DirectX 11」や2010年3月にリリースされた「OpenGL 4.0」からはついにテッセレーションシェーダーが標準導入されるに至った。DirectX 11やOpenGL 4に対応するハードウェアにおいては、実時間処理でのテッセレーションは幾つかの高性能なGPU内の専用回路であるテッセレータによって実現されるようになっている。なお、組み込み環境向けのOpenGL ESにおいても、2015年8月にリリースされたOpenGL ES 3.2においてジオメトリシェーダーとテッセレーションシェーダーが標準化された。後発の下位レベルグラフィックスAPIであるVulkanやMetalにおいてもテッセレーションのパイプラインを利用することができる。

1.1. 描画パイプラインとテッセレーション
----------------------

以下では、実質的な標準の1つとなっているマイクロソフト社のDirectX 11でのテッセレーション機能について説明する。なおジオメトリシェーダーもまたディスプレースメントマッピングなどでテッセレーションに応用することができるが、マイクロソフトはジオメトリシェーダーをテッセレーションに使用することを推奨していない。

DirectX 11ではレンダリングパイプラインの途中に新たにテッセレーション機能を加えており、以下の3つのステージから構成される。

ハル シェーダー
テッセレータ
ドメイン シェーダーハルシェーダーでは、パッチ情報に基づいてポリゴンごとの曲面の制御点の算出を行なうパッチ情報はテッセレーションの前の頂点シェーダーによって空間配置などに関して事前に演算処理される。}}。ハルシェーダーはプログラマブルシェーダーであり、ポリゴンの分割数をすべて一様に与えることもできれば、稜線近くだけポリゴンの分割度を増すような工夫も行なえる法線マッピングでは法線ベクトルに対する陰影だけを擬似的にポリゴンに塗り加えただけであり、立体面の法線が視線と直交する箇所、つまり稜線ではポリゴンの多角形がそのまま外形線となって現われてしまう。これを避ける、または影響を最小化するにはポリゴンを小さくする必要があるが単純にポリゴンを小さくするとそれ以降の演算量が幾何級数的に増大する。}}。

テッセレータでは、ハルシェーダーの指示に従ってポリゴンを実際に分割する。Direct3Dでは元のポリゴンとして3角形、4角形、線分が用いられる。

ドメインシェーダーでは、ハルシェーダーが計算した曲面生成用の制御点に沿ってテッセレータが分割したポリゴンごとの頂点座標を算出する。ドメインシェーダーはプログラマブルシェーダーであり、例えば凹凸データを与えることでディスプレースメントマッピングも可能である。

テッセレーション処理は描画パイプラインにおけるオプションであり、もしテッセレーションを行なわないならば、上記の3つのステージはスキップすればよい。

DirectX 11では、頂点シェーダーからデータを受け取り、テッセレーションを経て、ジオメトリシェーダーへと送られる構造になっている。

OpenGL 4では、ハルシェーダーに相当するものはテッセレーション制御シェーダー、テッセレータに相当するものはテッセレーションプリミティブジェネレーター、そしてドメインシェーダーに相当するものはテッセレーション評価シェーダーと呼ばれる。

1.2. 応用例
--------

コンピュータゲームでよく用いられる手法のひとつであるLODは、演算量を縮減する目的から、視点からの距離に応じて画像の遠部にある立体のポリゴン数を減らす工夫であり、テッセレーションを用いない従来手法ではポリゴン数を変えた数種のモデルを距離に応じて切り替えるようにしていたが、切り替え時に外形の形状が突然変わるために不自然な印象を与えていた。テッセレーションでは分割度を自在に変化させられるのでこのような問題は本質的に発生しないとされる。このような手法は距離適応型テッセレーションと呼ばれる。

また、ピクセル陰影処理において、リアリティ向上のためにテクスチャを利用してバンプマッピングや法線マッピングなどを行なっているが、これらは最良の場合でも視線方向から見た陰影を元の形状に貼り付けているだけのフェイク技法であるため、元の形状が稜線によって途切れる凹凸形状までは変化しない。具体的には、例えば球状の物体にいくらテクスチャを貼り付けて凹凸に見せても、テッセレーションを用いない限り周囲の外形は常に円形でしかない。テッセレーションではテクスチャ情報などを元に凹凸の形状を後付けで加える「ディスプレースメントマッピング」と呼ばれる表現手法が容易に行なえ、先の例では外形まで変更できるため、さらにリアリティを向上することができる。

2. テッセレーションとコンピュータ・モデル
----------------------

コンピュータグラフィックスの分野では、テッセレーション技術はポリゴンデータセットの管理およびレンダリングに適した構造への分割によく用いられる。通常は、少なくとも実時間レンダリングにおいては、データは三角形面にテッセレートされるが、これはときおり「三角形面化」と呼ばれる。テッセレーションはDirectX 11とOpenGL 4における主要な機能である。CADにおいて、構築されるデザインは、解析的3D表面と曲線や、3D立体の連続的な境界線によって構成される限定的な面と端部などによって境界表現トポロジーモデルで表現される。任意の3D立体は、たいてい直接に分析するには複雑すぎる。このため、それらは小さく分析の容易な3次元ボリューム要素片からなるメッシュによって近似される。このメッシュは有限要素解析に用いられる。オリジナルの限界頂点がメッシュに含まれるように、表面のメッシュは個別の面と辺ごとに生成される。オリジナル表面の近似がさらなる処理の要求に適合することを保証するために、通例表面メッシュ生成のための3つの基本パラメータが定義される。

平面近似ポリゴンと表面との最大許容距離：このパラメータは、メッシュがオリジナルの分析的表面と十分な類似であることを保証する。
近似ポリゴンの最大許容サイズ：このパラメータはさらなる分析のための十分な詳細度を保証する。
2つの隣り合う近似ポリゴン同士の最大許容角度：このパラメータは分析に重大な影響を及ぼすような小さなコブや穴でさえもメッシュに現れないことを保証する。メッシュを生成するアルゴリズムは、これらのパラメータによって操作される。いくつかのコンピュータ分析では「適応型メッシュ」が必要とされるが、これは分析にさらなる詳細度を必要とするような領域内でより微細化されるようなメッシュのことである。いくつかのジオデシック・ドームは、可能な限り正三角形に近い三角形からなる球面のテッセレーションにより設計される。

テッセレーションでは、2つの頂点間に異なる2つの法線を持つ場合、生成される面に亀裂が生じてしまうという問題がある。また、上手に形状を制御しないと追加される頂点が想定よりも立体物の外側に加えられることで不必要に膨張してしまうことがある。

3. 脚注
-----

3.1. 注釈
-------

3.2. 出典
-------

4. 関連項目
-------

3次元コンピュータグラフィックス
GPU
テクスチャマッピング
トゥーンレンダリング
シェーディング
シェーダー

5. 外部リンク
--------

[1] - NVIDIA
[2]