Slide 1

Slide 1 text

WebGPUTracer
 kugi(@kugi_masa)
 RayTracingCamp9


Slide 2

Slide 2 text

今回の目標
 GPUレンダリング


Slide 3

Slide 3 text

でも...
 開発環境はMacOS


Slide 4

Slide 4 text

調べていると
 OSやドライバに依存しない実装 


Slide 5

Slide 5 text

方針
 ● 現時点ではDXRやVulkan Ray Tracingには非対応
 ● WebGPU Samples に Cornell box
 Compute Shader


Slide 6

Slide 6 text

WebGPUTracer
 ● 概要
 ○ パストレーシングをComputeShaderで実装 
 ○ Multiple Importance Sampling 
 ○ インスタンス間の通信はなし(フレーム分割) 
 ○ wgpu-native、Dawn両方のビルドに対応 
 ● オブジェクト
 ○ Sphere
 ○ Quad
 ■ Triangleはバグが取れず断念 
 ● マテリアル
 ○ Lambert BRDF Only 


Slide 7

Slide 7 text

WebGPUの苦難
 ● WGSLのデバッグが大変 
 ● wgpu-nativeとDawnの違い 
 ○ 書き方が微妙に違う 
 ■ 最近は揃いつつある 
 ○ wgpu-nativeだと本番環境でComputePipeline作成でハングする 
 ■ 本番環境ではDawnビルド 
 ● GitHub Actionでビルド/実行確認 
 ○ していたが... ある時からなぜか 「device lost」でプロセスが強制終了 
 ○ 最終的に同期Mくんから借りたゲーミングノートでビルド 


Slide 8

Slide 8 text

出力結果
 ● fps:60
 ● 動画の長さ:10秒
 ● サイズ:1280 x 720
 ● spp:150
 ● 光源:8つ
 ○ 近づくと点灯する7色の光源
 ○ 回転して色が変わっていく光源


Slide 9

Slide 9 text

今後の目標
 ● 最適化
 ● オブジェクト
 ○ Triangle
 ○ objファイルなど
 ● マテリアル
 ○ Specular
 ○ マイクロファセットモデル 
 ● ReSTIR