GPU加速の幾何細分化——メモリを節約しながら詳細を増加。リアルタイムVFXの標準。
テッセレーション(Tessellation)は、GPUの最も重要なトリックの一つであり、メモリや計算負荷を爆発させることなく、リアルタイムで複雑なジオメトリをレンダリングするために使用されます。セットやアセットパイプラインで数百万ものポリゴンをモデリングする代わりに、より薄いベースメッシュから始め、GPUが動的に分割するようにします。ハードウェアテッセレーターは、頂点シェーダーとフラグメントシェーダーの間に位置し、カメラからの距離、表面の曲率、ディスプレイスメントマップに応じて、数ミリ秒で面を分割できます。
実際には、テッセレーションは主に3つのシナリオで利用されます。第一に、キャラクターや環境におけるハイポリディテール(布地のしわ、コンクリートの凹凸、肌の毛穴など)を、1000万頂点ものベースメッシュで重くすることなく実現します。第二に、カメラに近づくと自動的に詳細になり、遠ざかると再び薄くなる適応型ジオメトリLOD(Level of Detail)です。これにより、帯域幅が劇的に節約されます。第三に、リアルタイムVFXにおける水、布、肌のシミュレーションで、粗いクロスメッシュをテッセレートし、ディスプレイスメントマップやノーマルマップでより細かい動きを表現します。プリコンピュートされたハイポリジオメトリ資産に対する利点は、動的で、メモリ効率が良く、ディテールの量が現在のフレームバジェットに適応することです。
ワークフローにおいて重要なのは、テッセレーションには信頼性の高いUVレイアウトと正しいノーマルベーキングが必要であるということです。ベースメッシュに折れ曲がったノーマルがあると、テッセレートされた結果は、滑らかな表面ではなく、まるでしわくちゃの紙のようにひどいものになります。ディスプレイスメントマップは、16ビット以上でクリーンである必要があります。そうでなければ、アーティファクトが発生します。そして、テッセレーションはGPUパワーを消費します。無限にスケーリングできるわけではありません。過度に攻撃的なテッセレーションファクターを持つ4Kショットは、RTXレンダリングを遅くする可能性もあります。近接表示には十分なディテールを持ちつつ、それ以上は必要ないという、目測が必要です。
Unreal EngineやUnityのようなリアルタイムエンジンでは、テッセレーションは最新のビューポートレンダラーの標準です。映画VFX(Arnold, RenderMan, V-Ray)ではあまり使用されません。そこでは、密なメッシュを事前にプリコンピュートすることが好まれることが多いです。しかし、インタラクティブVFX、ゲームシネマ、リアルタイム3D(Unreal Engine with Neonなど)を使用したライブアクションコンポジットでは、テッセレーションはパフォーマンスとビジュアルの豊かさの両方の基盤となります。