Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RT Camp 10 Renderer

kinakomoti-321
October 13, 2024
120

RT Camp 10 Renderer

kinakomoti-321

October 13, 2024
Tweet

Transcript

  1. S K H O L E R E N D

    E R E R レイトレ合宿 10 kinankomtoi
  2. 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 • なんかいい感じの単語でやりたかったので適当に付けた • 諸事情があり、かなりプリミティブなレンダラーになった
  3. 使 用 し た ラ イ ブ ラ リ •

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

    / 2 0 2 4 4 • Blenderで制作 • 特に面白いことはない https://casual-effects.com/data/ • Mituba Knobをお借りしました
  5. モ チ ベ ー シ ョ ン • 特殊なマテリアル作りたい -

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

    2 4 6 • Vulkan Raytracing • Editor制作
  7. 目 標 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 やりたい手法
  8. 目 標 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 やりたい手法 間に合いませんでした
  9. 1 0 / 1 3 / 2 0 2 4

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

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

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

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

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

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

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

    19 10/8が終わるころの思考 VMF Diffuseの実装 なんとか行けそう シーンももうちょい こだわろうかな ギリギリCausticsも できるかも・・・?
  18. 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 テスト提出
  19. 1 0 / 1 3 / 2 0 2 4

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

    22 10/5 10/9 提出日 10/6日時点のバージョンで提出することに・・・ Caustics アルゴリズム調査 10/6 テスト提出 OK 提出
  21. 画 像 が で な い ・ ・ ・ •

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

    2 4 25 バキ外伝 創面 2巻 より引用
  23. や った ( や ろう とし た ) 手 法

    の 概 要 1 0 / 1 3 / 2 0 2 4 26
  24. 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 • (著者の人がいるので直接聞いてください)
  25. 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
  26. 1 0 / 1 3 / 2 0 2 4

    29 Fast Multiple Scattering Approximation • 2次光までを考慮している • Ground Truthと比べると割と近い感じになっている
  27. 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
  28. 1 0 / 1 3 / 2 0 2 4

    31 VMF Diffuse : A unified rough diffuse BRDF • 実装はえげつない近似式を書けばOK • 特にBRDF以外は何も必要がないはず
  29. 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で実装 したのがあるので興味がある人はどうぞ (あっているかはわかりません)
  30. 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条件を満たす曲線上で探索
  31. 1 0 / 1 3 / 2 0 2 4

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

    35 Interactive Rendering of Caustics using Dimmension Rendering for Manifold Next-Event Estimation • これを展開するとConicの式が出てくる • この曲線に沿って探索を行っていく
  33. 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を移動したり、分割したりして境界点 を探索する
  34. 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と思われ)