Pro Yearly is on sale from $80 to $50! »

レイトレ合宿6 レンダラー紹介 / Renderer Introduction, Ray Tracing Camp 6

367b44575446a2eccc58feea183c1475?s=47 shocker_0x15
September 01, 2018

レイトレ合宿6 レンダラー紹介 / Renderer Introduction, Ray Tracing Camp 6

レイトレ合宿6 ( https://sites.google.com/site/raytracingcamp6/ )で提出した作品のレンダリングに用いたレンダラーの紹介です。

NVIDIAのOptiXを活用したGPUレンダラーです。光輸送アルゴリズムとしてはPath Tracing with MISを使用、マテリアルとしてはスタンダードなものに加えてUE4かFrostbiteのようなBRDFを実装しています。

367b44575446a2eccc58feea183c1475?s=128

shocker_0x15

September 01, 2018
Tweet

Transcript

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

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

  3. 2018年3月ごろ: ... GDCでDXR発表されたし触ってみよう 手元PC (MacBook Pro Retina 2013, GT 750M)で動かず!

    ... 環境もまだ安定してなさそうだしHLSLも書きたくないなぁ (そもそも今思えばレイトレ合宿の環境で動くのか?)
  4. None
  5. None
  6. NVIDIA OptiX かのピクサーがLookdev用のレンダラーに使っていたり 有名どころのレンダラーのGPU実装も バックエンドに使っていたりするらしい あれ…OptiX最高なのでは…? シェーダー構成もDXRと極めて近いし CUDAという安定してそうな環境かつ強力な文法で書ける OptiX最高なのでは…?

  7. 書きました

  8. Full-Featured Path Tracer GPU実装だからといって機能は妥協したくない - シーングラフ (これはOptiXがある程度担保してくれる) - 任意形状の光源・EnvLight -

    多様かつ複雑なマテリアル - Lambert, Ideal Specular BRDF/BSDF - UE4 BRDF - … - 実用的な光輸送アルゴリズム実装 Path Tracing with MIS
  9. ※動画ファイルでした

  10. デュアルシーングラフ 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は パフォーマンスの観点より 二階層に留めることが推奨されている でもレンダラーを使う側の気持ちとしては 自由な数の階層を使いたい
  11. デュアルシーングラフ ユーザー視点のシーングラフの裏で二階層に変換したシーングラフを構築 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 ユーザー視点 内部
  12. OptiX所感

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

    フォトンマッピング実装などにも難あり? Atomicは使えたが、スレッドグループの概念がサポートされない
  14. 余談:OptiX ForumのNVIDIAの人すげぇ...

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

  16. すごい

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