レイトレ合宿9でOptiXを用いて開発した自作レンダラーのプレゼンスライドです。
4次元空間上で回転し、それから3次元に投影することで、内外が入れ替わるような不思議なループアニメーションを制作しました。
2023年に発表された「Automatic Step Size Relaxation in Sphere Tracing」という手法でレイマーチングの交差判定を高速化しました。
redflash [4D]2023-09-02 レイトレ合宿9本戦@gam0022 / Sho HOSODA
View Slide
アピールポイント💪 • 超立方体 ‣ 4Dの回転のアニメーションを3Dに投影 ‣ “次元の差” で勝負 • レイマーチングの高速化 ‣ [Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing 2
基本機能 • Unidirectional Path Tracing ‣ implemented in NVIDIA® OptiX 6.5 • Materials ‣ Disney BRDF, Lambert Diffuse • NEE(Next Event Estimation) • MIS(Multiple Importance Sampling) • Primitives ‣ Sphere ‣ Mesh ‣ Distance Function (Raymarching) • ACES Filmic Tone Mapping • Deep Learning Denoising 3
レンダラーの出力設定 • 解像度 ‣ 1920x1080 • 300フレーム💪 ‣ 30FPS × 10秒(上限) ‣ 1フレーム1秒 ‣ ループ再生に対応したアニメーション • マルチインスタンス ‣ フレーム分割(150フレームで2分割) 4
超立方体 • 超立方体(hypercube) ‣ 4次元の立方体 54次元の立方体の理解 - 大人になってからの再学習
四次元の描画 4次元の回転を3次元から観測すると面白いアニメーションになる • 内側と外側がグルグルと入れ替わる 6
四次元の描画 73次元座標を4次元に変換(逆ステレオ投影)4次元空間上で回転3次元空間上で描画4次元座標を3次元に変換(ステレオ投影)Stereographic Projection:Cartography Applications -Mathematics Stack Exchange
ステレオ投影とは? • この動画が超分かりやすい ‣ 4次元の数 「四元数」の見た目 8
2つのフラクタルから構成 9外側のMengerSponge金属質で複雑内側のMengerSpongeサイバー感でシンプルclearcoatとsubsurface有効完成形
完成形 10
モデリングの試行錯誤 Untiy HLSLで下書きしてからCUDA Cに移植 11
レイマーチング(Sphere Tracing)の高速化の研究 • [Keinert et al. 14] Enhanced Sphere Tracing • [Bán&Valasek 18] Accelerating Sphere Tracing • [Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing 12今年の論文を実装![Bán&Valasek 18] シーンを平面と仮定Sphereが重ならないように次のステップを求める普通のSphereTracing [Bán&Valasek 23]は[Bán&Valasek 18]のパラメーターを自動調整
[Keinert et al. 14] Enhanced Sphere Tracing • レイのステップを ω ∈ [1, 2) 倍(relaxation parameter) ‣ 通常より大きくレイを進める ‣ 進み過ぎたら、引き返す 13
[Bán&Valasek 18] Accelerating Sphere Tracing 14● シーンを平面と仮定してステップを予測○ Sphere同士が重ならない最大のステップ○ ω ∈ [0, 1] の定数でステップの補正の強さを調整■ 平面のシーン: ω=1■ 曲面のシーン: ω<1普通のSphereTracing
[Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing • [Bán&Valasek 18] Accelerating Sphere Tracing と同じ著者ら ‣ Róbert Bán and Gábor Valasek • [Bán&Valasek 18]と同様に平面を仮定して最大のステップを決める • ωを状況に応じて自動調整 ‣ 引き返しがない状態が続けば、大きく調整 ‣ 引き返しが起きたら、ωを小さくリセット • 前の2つの手法より良いか同等の結果 15
[Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing 提出シーンで計測した結果、1.9倍も高速化🎉 16MengerSpongeはBox(平面)で構成されるので、とても相性が良かった
[Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing 形状の歪みが少ないほど効果が高い(2sppの描画時間) 1750 frame 150 frame 250 frame● 比率● 通常● [BV23]
[Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing 去年のシーンは通常SphereTracingの半分まで性能が悪化… 平面が含まれないフラクタルだと厳しいのかもしれない 18
その他の工夫 • 制限時間を守る工夫 ‣ 各フレームの最初の2サンプリングからギリギリ間に合うサンプリング数を推定 • PNGの保存の並列化 ‣ サブスレッドで動作 ‣ メインスレッドのレンダリングをブロックしない • 軽量版のレンダラー ‣ アニメーションの確認用 • プライマリレイのDepthを2回目以降のサンプリングで使い回す ‣ 大きく高速化できるが、DoFできなくなる 19
アピールポイント💪 • 超立方体 ‣ 4Dの回転のアニメーションを3Dに投影 ‣ “次元の差” で勝負 • レイマーチングの高速化 ‣ [Bán&Valasek 23] Automatic Step Size Relaxation in Sphere Tracing 20
END.21