Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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を実装しています。

shocker_0x15

September 01, 2018
Tweet

More Decks by shocker_0x15

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. View Slide

  5. View Slide

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

    View Slide

  7. 書きました

    View Slide

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

    View Slide

  9. ※動画ファイルでした

    View Slide

  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は
    パフォーマンスの観点より
    二階層に留めることが推奨されている
    でもレンダラーを使う側の気持ちとしては
    自由な数の階層を使いたい

    View Slide

  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
    ユーザー視点 内部

    View Slide

  12. OptiX所感

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. すごい

    View Slide

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

    View Slide