レイトレ合宿6Zin実装してきたこと、これからやってみたいこと
View Slide
これまで実践してきたこと
BlenderからシーンをエクスポートBlenderでシーンを作成Pythonスクリプトで変換マテリアル設定などを編集レンダリングBlendファイルJSONファイルJSONファイル
他のレンダラー❖Cycles❖PBRT❖RenderMan❖RadeonProRender
色んなコンパイラで試してみる (C++)❖ Windows• MSVC• Clang❖ Linux (Ubuntu)• GCC• Clang❖ macOS• GCC• Clang私のレンダラーでのパフォーマンスは・・・Clang (Win) [1.5x] = Clang (Ubuntu) > MSVC [1.0x] = GCC
これから実践していきたいこと
テストを充実させたい❖ コードが大きくなってくると自分のレンダラーを信じられなくなってくる❖ 一から書き直したくなる❖ テストを書いておきましょう
テストを充実させたい❖ 解析的なテスト• PDFの積分やエネルギー保存則、衝突判定など❖ 機能毎のテスト• 簡単なシーンをレンダリングしてリファレンスと比較❖ 統合テスト• 実践的なシーンをレンダリングしてリファレンスと比較簡単なシーンの例 実践的なシーンの例
レンダラーの効率化❖ 年々レンダリング時間が減っていて辛い・・・ピクセル当たりにかけられるサンプル数はどんどん減ってる❖ レンダラーを効率化したい
レンダラーのGPU実装❖CUDA❖METAL❖OpenGL (GLSL)❖DirectX Raytracing❖Vulkanなどなど
Vulkanについて❖ 様々なOS上で動作 (Windows, Linux, macOS(MoltenVK))❖ Compute Shader を持っており、SPIR-Vを受け取る
Vulkan compute shader実行までの流れ❖ SPIR-V自体は中間表現言語、何らかのプログラミング言語から変換する❖ GLSLならglslang、OpenCLならclspvといったツールでコンパイルする
以上です