GLSLでパストレーシングを理解してみる

4.7K Views

November 17, 24

スライド概要

profile-image

VRコミュニケーションを支えるエンジニアをやっています

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

GLSLで パストレーシング を理解してみる とうとう @__tou__tou

3.

自己紹介 とうとう @__tou__tou 仕事 VRの会社でエンジニアをやっています。Unity、リアルタ イムサーバーを触っています 趣味 •VRChat •シェーダー

4.

パストレーシングとは 光線がオブジェクトや光源と何度も反射・屈折・散乱するプロセスをシミュレートし、 ピクセル毎の色を計算する手法 グローバルイルミネーション(GI)を実現することができる グローバルイルミネーションとは、間接照明を考慮して光をシミュレーションするこ と

5.

シンプルなパストレーシング を理解します

6.

以下の資料をベースにしています smallpt:Kevin Beason氏によってC++で書かれた99行のパストレーシングによる レンダラ http://www.kevinbeason.com/smallpt/ smallptのGLSL実装を試みたコード by Zavie https://www.shadertoy.com/view/4sfGDB 物理ベースレンダラ edupt解説 by hole(@h013) <- めちゃくちゃ分かりやすい https://kagamin.net/hole/edupt/index.htm 数式解説 https://qiita.com/pnlybubbles/items/5cb3cd3522e651cb536e

7.

理論

8.

パストレーシング

9.

パストレーシング

10.

レンダリング方程式

11.

レンダリング方程式

12.

再帰的なレンダリング方程式

13.

このままだと計算できないので

14.

モンテカルロ積分 数値的に計算できる!

15.

モンテカルロ積分 平均 確率 pdf で Li をN回サンプリングして、サンプル数Nで割る

16.

サンプリング方法

17.

一様分布サンプリング すべての方向を等しい確率でサンプリングする方法 単位半球面の面積は2πなので、確率密度関数 pdfは1/2π

18.

余弦インポータンスサンプリング 入射する光の寄与が大きい方向(表面の法線方向)を重点的にサンプリングする手法

19.

計算 余弦インポータンスサンプリングの適用と計算できるところを計算すると….

20.

計算 (BRDF)が分かれば計算できそう は入射する光に対してどの程度反射するかを表す比率的なもの

21.

BRDF (Bidirectional Reflectance Distribution Function ) 双方向反射分布関数

22.

BRDF(双方向反射分布関数) • BRDFは、ある方向から来る光が、別の方向にどのように反射されるかを記述する関 数 • 今回は、完全拡散面(Diffuse)と完全鏡面(Specular)のBRDFを紹介します。

23.

完全拡散面 (Diffuse) • 入射方向に寄らず、全方向に等しく反射する面 • 反射点で乱反射して全方向に等しく反射しているように見える • 反射する量は物体毎に異なる

24.

完全拡散面 (Diffuse) 完全拡散面の場合は、入射方向に寄らず全方向に等しく反射する面なので、 は定数 上の式を計算すると

25.

完全鏡面(Specular) • 反射光の寄与は、反射角と等しい入射角をもつ入射光のみ

26.

完全鏡面(Specular)

27.

計算(完全拡散面の場合)

28.

計算(完全鏡面の場合)

29.

衝突判定

30.

衝突判定 • 位置Xをどうやって求めるか

31.

直線と球の衝突判定 直線の方程式 球の方程式

32.

直線と球の衝突判定 直線の方程式 球の方程式

33.

直線と球の衝突判定 2次方程式なので解の公式を使う

34.

直線と球の衝突判定 解の公式 判別式

35.

直線と球の衝突判定 衝突点X 判別式 det > 0 の時、直線と球は衝突する

36.

実装に必要な情報まとめ

37.

レンダリング方程式 完全拡散面 完全鏡面

38.

直線と球の衝突判定 衝突点X 判別式 det > 0 の時、直線と球は衝突する

39.

実装 https://twigl.app?ol=true&ss=-Nf_C-M1QFqvd8m8gpaZ

40.

シーンの モデリング カメラレイの定 義 レンダリング方程式 の モンテカルロ積分

41.

シーンのモデリング

42.

シーンのモデリング r : 半径 p : 球の位置 e : 自己発光色 c : 反射率(アルベドカラー) refl : 面の種類

43.

コーネルボックス 半径 球の 中心座標 自己 発光 アルベド カラー (反射率) 面の 種類

44.

コーネルボックスの配置 真上から見た図 +x コーネルボックス +z

45.

球と光源の配置 半径 球の 中心座標 自己 発光 アルベド カラー (反射率) 面の 種類

46.

カメラの定義

47.

カメラレイの定義

48.

レンダリング方程式の モンテカルロ積分

49.

モンテカルロ積分

50.

レンダリング方程式の計算

51.

衝突判定

52.

完全拡散面の反射

53.

完全拡散面の反射 パラメータ分離

54.

完全鏡面の反射

56.

やり残したこと

57.

やり残したこと ● ガラス面 屈折 ● ロシアンルーレット 反射回数をいい感じにする ● NEE 光源に当たりやすい光の経路を重点的に選択