レイトレ合宿8 ( https://sites.google.com/view/raytracingcamp8/ )で提出した作品のレンダリングに用いたレンダラーの紹介です。
Path Tracing + Neural Radiance Cachingを実装して多重散乱の雲のレンダリングを高速化しました。
レイトレ合宿8https://sites.google.com/view/raytracingcamp8/@Shocker_0x15
View Slide
今回の実装概要- Multi-scattering Volume Rendering リベンジ?前やったときのが少し気に食わなかったのでもう一回やってみた- Path Tracing + Neural Radiance CachingVolume Renderingへの適用- Hosek-Wilkie Analytic SkyのGPU移植毎フレームImportance Map生成- CUDA/OptiXによるGPUレンダラー実験的要素が多かったのでとりあえず、今回の合宿専用自前のOptiX 7 Wrapper前回よりEC2インスタンス弱いけどRTコア載ってるからギリギリなんとかなった
Path Tracing + Neural Radiance Caching60fps, 8秒: 1フレームあたりのレンダリング予算は非常に少ない- 雲がしっかり映ってるフレームは2秒程度- 参考:レイトレ合宿5の雲は1枚絵で273秒GPUがいくら速かろうと雲のまじめなレンダリングはめちゃくちゃ重い多分白い雲の散乱アルベドは0.999を超える世界→ まじめにやってはいけない!が、あくまでオフラインレンダリング、完全に適当なのは嫌だなぁ…ボリュームレンダリングへのNRCの適用- NRCはアルベドが高いシーンほど強い → 雲は最適なのでは?- ベースのアルゴリズムはPath Tracing + MIS, Delta/Ratio Tracking- NRCはInstant-NGP (Multi-Res Hash Grid Input Encoding)ベース- 2回目以降の散乱イベントでヒューリスティックに基づいて経路終了、NRCクエリー- オフラインレンダリングなので訓練データ生成とレンダリングは別パスに。- 今回はやっていないが雲の変形にも対応できるはず
雲アセットの作成Houdiniが良いらしいので使ってみた。確かに簡単。
Path Tracing1spp: 1290 [ms]Path Tracing + NRC1spp: 150 [ms]Training: 60 [ms] / Rendering: 90 [ms]※オリジナルのNRCと異なり別パス
Path Tracing Path Tracing + NRC多少のバイアスは乗るが良い感じ
所感、今後- Super Voxelなどの既存の自由行程サンプリング高速化アプローチとの組み合わせ- ボリュームレンダリング用のデノイザー- NNなどの機械学習アプローチとはうまくやっていきたい“Deep Learning for Light Transport Simulation”, SIGGRAPH 2018より