これはレイトレ(Raytracing) Advent Calendar 2023の記事です。
Siggraph Asia 2023でアクセプトされた論文の短い補足です。
Tessellation Free Displacement Mapping は事前分割なしにDisplacement Mappingが適用されたメッシュのレンダリングを行う手法で、注目を集めました。Adobeからは後続の研究 RMIP: Displacement ray-tracing via inversion and oblong bounding が出ています。これらの論文ではAffine Arithmeticを使ってConservativeなBounding Boxを計算します。レイと三角形の交差判定はWorld空間で行われるため、Watertightな手法を用いることができるという利点があります。
しかし、デメリットもあって、(1)テクスチャ空間で三角形が縮退している場合(例えば、2つの頂点が同じUVを持っている場合や、3つの頂点が同じUVを持っている場合)ではUV座標からWorld座標への変換が定まらないため、交差判定が行えません。エンジニアはこういったことが起きても原因が分かりますが、アーティストはそうではありません。なぜレンダリングされないケースがあるのか悩む、原因が分かってもアセットを一部用意し直す必要が生じるなど、作業効率が落ちてしまいます。また、(2)変異されたメッシュの定式化において、スムース法線のノルム|Ns|で割り算を行っている箇所がありますが、これも0になるケースが存在するため、問題が起きたときに頭を悩ませることになります。
私の論文ではこれらのデメリットが一切ありません。RMIPの論文のように変位方向からUV座標を求めるための3次方程式を解く必要もありません(RMIPの論文ではNewton Raphsonを用いています)。Affine Arithmeticも使いません。レイを2次の有理関数で表すため、Bounding Boxとの交差は2次方程式を解くことで安定して行えます。トラバーサルは完全にテクスチャ空間で行われるため、Displacement Mappingの場合はBounding Box同士が重なることもありません。更にUV平面だけではなく、高さ方向も加味しているため、Shell Mappingにも問題なく対応できる上位互換の手法となっています。RMIPでは、与えられた任意の矩形のMinMax値を一定コストで求める非常に興味深い方法が使われていますが、それも不要であり(もちろん勉強して実装する価値は大いにあり!)、コードのメンテナンスが非常に楽です。論文中では精度の問題について書いてありますが、レイと三角形の交差判定だけWorld空間で行うこともできます(このときテクスチャ空間で縮退した三角形は扱えなくなるので、トレードオフです)。テクスチャ空間での縮退は別の方法でなんとかする、交差判定の精度を上げたい、といった方はトラバーサルにだけ私の論文の手法を使うハイブリッドなアプローチが良いのでは、と思います。
パフォーマンスについては、論文執筆時点で十分に最適化ができていませんでしたが、それでも毛のような高周波な信号を持つものでは事前分割したジオメトリをObject SplittingのBVHでレンダリングしたよりも高速になるケースがあります。これはテクスチャ空間でのBounding BoxがOriented Boundになっているためです。
Adobeファンの方はAdobeの論文に飛びつくかもしれませんが、Nonlinear Ray Tracingの論文もお勧めしたいと思います