Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Path Tracing in 5 minutes シングルファイルで拡張しやすいパストレーサーを作る @yumcyawiz 2020/08/15 OSK 夏休み LT 会 2020
Slide 2
Slide 2 text
Intro 「レイトレ」してみたいなあ 「レイトレすごい! 」 「時代はレイトレーシング」 最近こんな言葉をよく聞く気がします 1
Slide 3
Slide 3 text
Intro でも・ ・ ・ 「レイトレしてみたいけど難しそう」 「C++ よくわからん」 レイトレしたくても参入障壁は大きいようです 2
Slide 4
Slide 4 text
Intro そこで今回は見るだけで C++ でレイトレーサーを書いた気持ちにな れる LT をします 3
Slide 5
Slide 5 text
Goal 後で拡張しやすいパストレーサーをシングルファイルで作る Figure 1: 今回のレンダラーで出た絵 4
Slide 6
Slide 6 text
Project Setup
Slide 7
Slide 7 text
Project Setup 今回使うのは • C++17 • CMake • OpenMP 5
Slide 8
Slide 8 text
CMake Figure 2: CMakeLists.txt 6
Slide 9
Slide 9 text
Build Figure 3: Build の様子 7
Slide 10
Slide 10 text
Coding
Slide 11
Slide 11 text
Vec3 Vec3 は 3 次元ベクトルを表すクラス 8
Slide 12
Slide 12 text
Ray Ray は始点 (Vec3) と方向 (Vec3) を持つ Figure 5: Ray Class 9
Slide 13
Slide 13 text
RNG PCG32 を使って乱数生成 Figure 6: PCG32 Random Number Generator 10
Slide 14
Slide 14 text
Sampler 乱数生成器のラッパー Figure 7: Sampler Class 11
Slide 15
Slide 15 text
Film カメラのフィルム (画像) を表すクラス Figure 8: Film Class 12
Slide 16
Slide 16 text
Film PPM 出力部分 Figure 9: Film Class 13
Slide 17
Slide 17 text
Camera レイを生成するところ ピンホールカメラモデル Figure 10: Camera Class 14
Slide 18
Slide 18 text
Material 物体表面の反射特性を表すクラス レイを反射させる役割を持つ Figure 11: Material Class 15
Slide 19
Slide 19 text
Light 光源を表現するクラス Figure 12: Light Class 16
Slide 20
Slide 20 text
IntersectInfo 交差計算の結果を表現する構造体 Figure 13: IntersectInfo Struct 17
Slide 21
Slide 21 text
Shape 物体の形を表現する抽象クラス Figure 14: Shape Class 18
Slide 22
Slide 22 text
Sphere 球体を表現するクラス Figure 15: Sphere Class 19
Slide 23
Slide 23 text
Plane 平面を表現するクラス Figure 16: Plane Class 20
Slide 24
Slide 24 text
Primitive 物体を表現するクラス Material, Light, Shape を一緒に持つ Figure 17: Primitive Class 21
Slide 25
Slide 25 text
Sky 空の色を表現するクラス Figure 18: Sky Class 22
Slide 26
Slide 26 text
Scene シーンを表現するクラス カメラ, 物体集合, 空を一緒に持つ Figure 19: Scene Class 23
Slide 27
Slide 27 text
Integrator レイの持つ放射輝度を計算する パストレ Figure 20: Integrator Class 24
Slide 28
Slide 28 text
Renderer レンダリングを行う部分 Figure 21: Renderer Class 25
Slide 29
Slide 29 text
main main 関数 Figure 22: main 関数 26
Slide 30
Slide 30 text
Rendering
Slide 31
Slide 31 text
Test Scene Figure 23: Test Scene 27
Slide 32
Slide 32 text
CornellBox Scene Figure 24: Cornell Box 28