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

WebGPUTracer / RayTracingCamp9

kugi
September 03, 2023

WebGPUTracer / RayTracingCamp9

WebGPU compute shader based PathTracer made for RayTracingCamp9
https://sites.google.com/view/rtcamp9/home

kugi

September 03, 2023
Tweet

More Decks by kugi

Other Decks in Programming

Transcript

  1. WebGPUTracer

    kugi(@kugi_masa)

    RayTracingCamp9


    View full-size slide

  2. 今回の目標

    GPUレンダリング


    View full-size slide

  3. でも...

    開発環境はMacOS


    View full-size slide

  4. 調べていると

    OSやドライバに依存しない実装 


    View full-size slide

  5. 方針

    ● 現時点ではDXRやVulkan Ray Tracingには非対応

    ● WebGPU Samples に Cornell box

    Compute Shader


    View full-size slide

  6. WebGPUTracer

    ● 概要

    ○ パストレーシングをComputeShaderで実装 

    ○ Multiple Importance Sampling 

    ○ インスタンス間の通信はなし(フレーム分割) 

    ○ wgpu-native、Dawn両方のビルドに対応 

    ● オブジェクト

    ○ Sphere

    ○ Quad

    ■ Triangleはバグが取れず断念 

    ● マテリアル

    ○ Lambert BRDF Only 


    View full-size slide

  7. WebGPUの苦難

    ● WGSLのデバッグが大変 

    ● wgpu-nativeとDawnの違い 

    ○ 書き方が微妙に違う 

    ■ 最近は揃いつつある 

    ○ wgpu-nativeだと本番環境でComputePipeline作成でハングする 

    ■ 本番環境ではDawnビルド 

    ● GitHub Actionでビルド/実行確認 

    ○ していたが... ある時からなぜか 「device lost」でプロセスが強制終了 

    ○ 最終的に同期Mくんから借りたゲーミングノートでビルド 


    View full-size slide

  8. 出力結果

    ● fps:60

    ● 動画の長さ:10秒

    ● サイズ:1280 x 720

    ● spp:150

    ● 光源:8つ

    ○ 近づくと点灯する7色の光源

    ○ 回転して色が変わっていく光源


    View full-size slide

  9. 今後の目標

    ● 最適化

    ● オブジェクト

    ○ Triangle

    ○ objファイルなど

    ● マテリアル

    ○ Specular

    ○ マイクロファセットモデル 

    ● ReSTIR


    View full-size slide