627 Views
October 14, 24
スライド概要
2024/10/11 - 13 に初島で開催されたレイトレ合宿 10 のために作成した自作レイトレーサーの紹介スライドです。
スペクトラルレンダリングとボリュームレンダリングに挑戦をしました。
X: Twitter: https://x.com/_Pheema_
レイトレ合宿 10: https://sites.google.com/view/rtcamp10
自作レンダラー紹介 Auteve Pheema, レイトレ合宿 10 in 初島 (2024/10)
Result 2/8
参加するにあたっての目標 5 年ぶりの参加!色々と忘れていることも多そう… -> まずはちゃんと提出できることを目標とする やりたいことを決める ボリュームレンダリング スペクトラルレンダリング 3/8
開発環境 VS2022 CMake + vcpkg vcpkg.json に使用したいライブラリを追記するだけでライブラリを導入できるようにした ライブラリ導入時の手間 (パスの設定、リンク時の /MD(d), /MT(d) 不一致等…) がだいぶ減って助かった 使用したライブラリ fmt (文字列のフォーマット・表示) stb-image (PNG 画像の保存) Catch2 (テストの実行) argparse (実行引数のパース) oneTBB (レンダリングの並列化) Prague Sky Model (スペクトルレンダリング対応の天球モデル) 4/8
実装したこと 水中の散乱・吸収として、一様な媒質内のボリュームレンダリングを実装した 水中の散乱・吸収で波長依存性を考慮した (水質は Jerlov water type 1B) 水やガラスの屈折率で波長依存性を考慮した (Sellmeier equation を利用) "Sampling Visible GGX Normals with Spherical Caps" (実装したが未使用) 単位ベクトルを表現する UnitVector クラス Debug , RelWithDebInfo において、コンストラクタ内で正規化されているかをチェックをする 型から単位ベクトルであることが分かるので不要な normalize を減らすことができた シーンについて シーンを作る時間がなかったので、球と平面で構成されたシンプルなシーンを作成 穏やかな水面の上に複数のガラス球を配置された風景を表現した 5/8
海水のボリュームレンダリングなし グラデーションがちょっと急すぎる…?🤔 6/8
海水のボリュームレンダリングあり 海水の影響を計算することでグラデーションがより滑らかに🥳 7/8
自作レンダラー紹介 Auteve Pheema, レイトレ合宿 10 in 初島 (2024/10) 8/8