Slide 1

Slide 1 text

レイトレ合宿6 2018/09/01-02 https://sites.google.com/site/raytracingcamp6/ VLR @Shocker_0x15

Slide 2

Slide 2 text

今回の技術的ポイント 再びGPUレンダラー! - OptiXによる実装 - Full-Featured Path Tracer - デュアルシーングラフ

Slide 3

Slide 3 text

2018年3月ごろ: ... GDCでDXR発表されたし触ってみよう 手元PC (MacBook Pro Retina 2013, GT 750M)で動かず! ... 環境もまだ安定してなさそうだしHLSLも書きたくないなぁ (そもそも今思えばレイトレ合宿の環境で動くのか?)

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

NVIDIA OptiX かのピクサーがLookdev用のレンダラーに使っていたり 有名どころのレンダラーのGPU実装も バックエンドに使っていたりするらしい あれ…OptiX最高なのでは…? シェーダー構成もDXRと極めて近いし CUDAという安定してそうな環境かつ強力な文法で書ける OptiX最高なのでは…?

Slide 7

Slide 7 text

書きました

Slide 8

Slide 8 text

Full-Featured Path Tracer GPU実装だからといって機能は妥協したくない - シーングラフ (これはOptiXがある程度担保してくれる) - 任意形状の光源・EnvLight - 多様かつ複雑なマテリアル - Lambert, Ideal Specular BRDF/BSDF - UE4 BRDF - … - 実用的な光輸送アルゴリズム実装 Path Tracing with MIS

Slide 9

Slide 9 text

※動画ファイルでした

Slide 10

Slide 10 text

デュアルシーングラフ Scene + AS Transform A Transform B ObjectGroup + AS (Transform C) Mesh A ObjectGroup + AS (Transform D) Mesh B Mesh C OptiXは任意の深さのシーングラフ (articulate scene graph)を作成可能 だがAcceleration Structureは パフォーマンスの観点より 二階層に留めることが推奨されている でもレンダラーを使う側の気持ちとしては 自由な数の階層を使いたい

Slide 11

Slide 11 text

デュアルシーングラフ ユーザー視点のシーングラフの裏で二階層に変換したシーングラフを構築 Scene Transform A Transform B ObjectGroup (Transform C) Mesh A ObjectGroup (Transform D) Mesh B Mesh C Scene + AS Mesh A Mesh B Mesh C Tr AC Tr ACD Tr BC Tr BCD ObjectGroup + AS ObjectGroup + AS ユーザー視点 内部

Slide 12

Slide 12 text

OptiX所感

Slide 13

Slide 13 text

BVHの構築とトラバースは面倒を見てくれるので楽 トランスフォームがある場合も透過的に扱える しかし 光源側からの経路のサンプリングが絡み始めると途端に面倒に 例: 任意メッシュの光源のNEEやライトトレーシング 透過的に扱えていたトランスフォームを全部自前で処理する必要がある ナイーブなパストレーシング実装までは簡単 →ハイブリッドレンダリングで要求される実装も素直そう(DXRも) 現状CUDAでは使えるアトミックも使えないので フォトンマッピング実装などにも難あり? Atomicは使えたが、スレッドグループの概念がサポートされない

Slide 14

Slide 14 text

余談:OptiX ForumのNVIDIAの人すげぇ...

Slide 15

Slide 15 text

ある日フォーラムで質問を投げた

Slide 16

Slide 16 text

すごい

Slide 17

Slide 17 text

今後の挑戦 OptiXが実用的なレンダラー実装として使えることが確認できたので CPUレンダラーとの統合 https://github.com/shocker-0x15/SLR OptiX AI Denoiserの利用 Full-Featuredレンダラーとしての機能拡充 例: SSSやボリュームレンダリング