Slide 1

Slide 1 text

S K H O L E R E N D E R E R レイトレ合宿 10 kinankomtoi

Slide 2

Slide 2 text

S K H O L E R E N D E R E R • Skhole ギリシャ語で「暇」「余暇」、転じて「学問をする場所」 Schoolの語源 1 0 / 1 3 / 2 0 2 4 2 • なんかいい感じの単語でやりたかったので適当に付けた • 諸事情があり、かなりプリミティブなレンダラーになった

Slide 3

Slide 3 text

使 用 し た ラ イ ブ ラ リ • VectorLikeGLSL (自作) : GLSLライクなvec, mat - Swittzle演算子対応 - めちゃくちゃバグあった • TinyGLTF • TinyObj • Nlohmann/ json : Jsonの入出力 • Cxxops : コマンドラインパーサー • GLFW • ImGUI 1 0 / 1 3 / 2 0 2 4 3

Slide 4

Slide 4 text

S C E N E 1 0 / 1 3 / 2 0 2 4 4 • Blenderで制作 • 特に面白いことはない https://casual-effects.com/data/ • Mituba Knobをお借りしました

Slide 5

Slide 5 text

モ チ ベ ー シ ョ ン • 特殊なマテリアル作りたい - 特殊なマテリアルの設定がめんどくさい! • デバッグを楽にしたい - 静止画でデバッグするのはもうつらい・・・ • ポスプロちゃんとして~ • Causticsやりて~ • Vulkanをやりたい 1 0 / 1 3 / 2 0 2 4 5

Slide 6

Slide 6 text

目 標 1 0 / 1 3 / 2 0 2 4 6 • Vulkan Raytracing • Editor制作

Slide 7

Slide 7 text

目 標 1 0 / 1 3 / 2 0 2 4 7 • Vulkan Raytracing • Editor制作 • ポスプロ(Color Grading etc..) • Fast Multiple Scattering Approximate • VMF Diffuse: A unified rough diffuse BRDF • Interactive Rendering of Caustics using Dimension Reduction for Manifold Next-Event Estimation 特殊なマテリアル Caustics やりたい手法

Slide 8

Slide 8 text

目 標 1 0 / 1 3 / 2 0 2 4 8 • Vulkan Raytracing • Editor制作 • ポスプロ(Color Grading etc..) • Fast Multiple Scattering Approximate • VMF Diffuse: A unified rough diffuse BRDF • Interactive Rendering of Caustics using Dimension Reduction for Manifold Next-Event Estimation 特殊なマテリアル Caustics やりたい手法 間に合いませんでした

Slide 9

Slide 9 text

開 発記 1 0 / 1 3 / 2 0 2 4 9

Slide 10

Slide 10 text

1 0 / 1 3 / 2 0 2 4 10 ~ お盆 8月末 Vulkan Raytracing 入門 https://zenn.dev/nishiki/books/f468197dca2dd8 ゼロからVulkan Ray Tracing, Nishiki Nsightを導入したり Editor 制作

Slide 11

Slide 11 text

1 0 / 1 3 / 2 0 2 4 11 9月末 8月末 Editor 制作 Bounded VNDF Sampling for the Smith-GGX BRDF Visual Computing マテリアルの保存など アニメーション対応 オフスクリーン レンダリングなど

Slide 12

Slide 12 text

1 0 / 1 3 / 2 0 2 4 12 10/5 10/9 提出日 そろそろやばい・・・ Caustics アルゴリズム調査 HoudiniでVisualize 行けそうな感じ

Slide 13

Slide 13 text

1 0 / 1 3 / 2 0 2 4 13 10/5 10/9 提出日 一旦テストで提出、無事に通る Caustics アルゴリズム調査 10/6 テスト提出 OK

Slide 14

Slide 14 text

1 0 / 1 3 / 2 0 2 4 14 10/5 10/9 提出日 Causticsの実装を開始 Caustics アルゴリズム調査 10/6 テスト提出 OK 10/7 Caustics アルゴリズム実装 ある程度の解を見つけられるようになった 足りてない実装があったのでそれやれば ワンチャン行けるのでは・・・?

Slide 15

Slide 15 text

1 0 / 1 3 / 2 0 2 4 15 10/5 10/9 提出日 行けるかわからないので他のやりたかった 実装をやる Caustics アルゴリズム調査 10/6 テスト提出 OK 10/7 Caustics アルゴリズム実装 10/8 ポスプロ Fast Multiple Scattering VMF Diffuse テスト提出 ついでに提出

Slide 16

Slide 16 text

1 0 / 1 3 / 2 0 2 4 16 10/8が終わるころの思考 VMF Diffuseの実装 なんとか行けそう シーンももうちょい こだわろうかな ギリギリCausticsも できるかも・・・?

Slide 17

Slide 17 text

1 0 / 1 3 / 2 0 2 4 17

Slide 18

Slide 18 text

1 0 / 1 3 / 2 0 2 4 18 10/8が終わるころの思考 VMF Diffuseの実装 なんとか行けそう シーンももうちょい こだわろうかな ギリギリCausticsも できるかも・・・?

Slide 19

Slide 19 text

1 0 / 1 3 / 2 0 2 4 19 10/8が終わるころの思考 VMF Diffuseの実装 なんとか行けそう シーンももうちょい こだわろうかな ギリギリCausticsも できるかも・・・?

Slide 20

Slide 20 text

1 0 / 1 3 / 2 0 2 4 20 10/5 10/9 提出日 全てが崩壊 Caustics アルゴリズム調査 10/6 テスト提出 OK 10/7 Caustics アルゴリズム実装 10/8 ポスプロ Fast Multiple Scattering VMF Diffuse テスト提出

Slide 21

Slide 21 text

1 0 / 1 3 / 2 0 2 4 21 10/5 10/9 提出日 全てが崩壊 Caustics アルゴリズム調査 10/6 テスト提出 OK 原因が特定できずテスト提出まで 戻すことになった

Slide 22

Slide 22 text

1 0 / 1 3 / 2 0 2 4 22 10/5 10/9 提出日 10/6日時点のバージョンで提出することに・・・ Caustics アルゴリズム調査 10/6 テスト提出 OK 提出

Slide 23

Slide 23 text

画 像 が で な い ・ ・ ・ • レンダリング時間が遅いとOUT • ちょっとでも複雑なシーンにするとOUT • 昔からのバージョンでも同様のバグ • ギリギリ行けそうなシーンと条件を探すことに 1 0 / 1 3 / 2 0 2 4 23

Slide 24

Slide 24 text

で き た の が こ れ 1 0 / 1 3 / 2 0 2 4 24

Slide 25

Slide 25 text

教 訓 1 0 / 1 3 / 2 0 2 4 25 バキ外伝 創面 2巻 より引用

Slide 26

Slide 26 text

や った ( や ろう とし た ) 手 法 の 概 要 1 0 / 1 3 / 2 0 2 4 26

Slide 27

Slide 27 text

1 0 / 1 3 / 2 0 2 4 27 Bounded VNDF Sampling for Smith–GGX BRDF • サーフェイス方向に向かうサンプルを抑制する VNDF Sampling • 実装はSpherical VNDFサンプリングにちょっと+する ぐらいでできる • 記事を書きました https://zenn.dev/kinankomoti/articles/cff2efa809e8a0 • (著者の人がいるので直接聞いてください)

Slide 28

Slide 28 text

1 0 / 1 3 / 2 0 2 4 28 Fast Multiple Scattering Approximation • Multiple Scatteringの近似式を導いた手法 • Closedな式で提供(わりとシンプル) • 通常のSingle Scatteringに補正項を加える • 実装については以前記事を書きました https://kinakomoti321.hatenablog.com/entry/2023 /12/29/185730

Slide 29

Slide 29 text

1 0 / 1 3 / 2 0 2 4 29 Fast Multiple Scattering Approximation • 2次光までを考慮している • Ground Truthと比べると割と近い感じになっている

Slide 30

Slide 30 text

1 0 / 1 3 / 2 0 2 4 30 VMF Diffuse : A unified rough diffuse BRDF • Roughnessを持つDiffuse BRDFを提案 • 砂のような粒状のLambertian Sphereを考えるこ とで求めている • ShaderToyで実装している人がいました(高次光 の式も含めて) https://www.shadertoy.com/view/MXKSWW

Slide 31

Slide 31 text

1 0 / 1 3 / 2 0 2 4 31 VMF Diffuse : A unified rough diffuse BRDF • 実装はえげつない近似式を書けばOK • 特にBRDF以外は何も必要がないはず

Slide 32

Slide 32 text

1 0 / 1 3 / 2 0 2 4 32 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • Coplanarity 条件というものを用いて、Causticsのパス 探索の次元を減らした手法 • 1回屈折, 1回反射によるCausticsのレンダリングが 可能 • Triangle内の探索アルゴリズムの実装は Houdiniで実装 したのがあるので興味がある人はどうぞ (あっているかはわかりません)

Slide 33

Slide 33 text

1 0 / 1 3 / 2 0 2 4 33 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • Coplanarity (同一平面)条件 屈折反射において入射、出射ベクトル、法線は 同一平面上に存在する必要がある P : Diffuse点 M : サーフェイス点 L : Light点 N_m : Mの法線 • Causticsのパスは少なくともこの条件を満たす • Coplanarity条件を満たす曲線上で探索

Slide 34

Slide 34 text

1 0 / 1 3 / 2 0 2 4 34 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • TriangleにおいてCoplanarityを満たす 重心座標(α, β)は

Slide 35

Slide 35 text

1 0 / 1 3 / 2 0 2 4 35 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • これを展開するとConicの式が出てくる • この曲線に沿って探索を行っていく

Slide 36

Slide 36 text

2 0 2 4 / 1 0 / 1 3 36 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • 実際の探索は次のtangentとRefractionVectorで表現される符号を使う • この正負が反転する境界点がCausticsパスの解 となる • Triangleを移動したり、分割したりして境界点 を探索する

Slide 37

Slide 37 text

2 0 2 4 / 1 0 / 1 3 37 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • 注意点 • ちょっと数式のミスがある • 式(22),(23)の係数が間違ってる (22) D -> E (23) C - > D • Conic Matrix Mの定義は多分次のようなやつ あとこれ多分縦ベクトル これは3次元ベクトル のはず(z=0と思われ)