Slide 1

Slide 1 text

Ray Tracing: overview 2021/01/10 OSK#p-ray Lecture01

Slide 2

Slide 2 text

What is Ray Tracing? レイトレーシングの概要

Slide 3

Slide 3 text

Ray Tracing • レイ(光線)を再帰的に追跡する計算手法のこと • 写実的なCGをレンダリングできる

Slide 4

Slide 4 text

Ray Tracingの例 写実的なCGをレンダリングできる

Slide 5

Slide 5 text

Ray Tracingの活用場面 • 映画 https://renderman.pixar.com/robot-room オフラインレンダリングではメジャーな手法

Slide 6

Slide 6 text

Ray Tracingの活用場面 • ゲーム https://www.nvidia.com/ja-jp/geforce/news/minecraft-with-rtx-beta-out-now-download-play/ 近年はリアルタイム向けにも活用され始めている

Slide 7

Slide 7 text

Ray Tracingの活用場面 • 光学設計 レンズ設計, 照明解析など

Slide 8

Slide 8 text

Ray Tracingの特徴 • 計算量が非常に多い • アルゴリズム自体はシンプル • 写実的なCGを出すには理論的な理解が必須 • こだわれるポイントが無限にある → 沼

Slide 9

Slide 9 text

Physically Based Rendering(PBR) 物理的に正しくレンダリングする

Slide 10

Slide 10 text

What is PBR? • 物理的に正しくレンダリングすること • 光の伝達を数式で記述, それの数値計算を行う PBRによって写実的なCGが生成できる

Slide 11

Slide 11 text

放射輝度 • ある点にある方向から来る光の強さを表す量 • CGではRGBで表されることが多い PBRで最も重要な物理量

Slide 12

Slide 12 text

レンダリング方程式 • ある1点から別の1点に移る光の流れを記述する積分方程式 PBRで最も重要な式 PBRとはレンダリング方程式の数値計算

Slide 13

Slide 13 text

レンダリング方程式 から に出る放射輝度 発光部分 与えられた方向にどれだけ反射するか (BRDF) 入射放射輝度 コサイン項 反射部分 から に出る放射輝度 入射放射輝度 コサイン項 BRDF 半球全体 半球全体

Slide 14

Slide 14 text

レンダリング方程式の解 • ノイマン級数展開によって解を表すことができる • 次元積分の無限級数となる これを数値計算すれば写実的なCGが得られる 1回反射 2回反射 k回反射

Slide 15

Slide 15 text

Monte Carlo Ray Tracing レンダリング方程式の数値計算手法

Slide 16

Slide 16 text

レンダリング方程式の数値計算 • 高次元積分を含むため, 通常の数値積分は困難(次元の呪い) • モンテカルロ積分を利用する → Monte Carlo Ray Tracing

Slide 17

Slide 17 text

モンテカルロ積分 • 被積分関数の評価点をランダムに生成し, 評価値/確率密度の平均を取る • 大数の法則により, サンプル数を増やせば求めたい積分値に収束 • 収束が遅い ( 1 ) モンテカルロ積分

Slide 18

Slide 18 text

レンダリング方程式の数値計算 • パス ҧ = 0 1 ⋯ をランダムに生成してモンテカルロ積分 ≈ パスをいかにして生成するか?

Slide 19

Slide 19 text

Path Tracing • 視点からランダムに方向をサンプリングしていくことでパスを生成 • 光源に衝突しなかった場合は寄与が0

Slide 20

Slide 20 text

Next Event Estimation(NEE) • 光源上の点をサンプリングし, パスをその点とつなげる • パスが寄与を持ちやすくなる

Slide 21

Slide 21 text

Bidirectional Path Tracing(BDPT) • 視点と光源の両方からサブパスを生成し, それらを繋げてパスを作る • NEEの一般化

Slide 22

Slide 22 text

Metropolis Light Transport(MLT) • 寄与の大きいパスをMarkov Chain Monte Carlo(MCMC)を用いて重点的にサ ンプリング

Slide 23

Slide 23 text

Other Methods • Primary Sample Space Metropolis Light Transport(PSSMLT) • Gradient Domain Path Tracing(GDPT) • Matrix Bidirectional Path Tracing(M-BDPT) • Stochastic Progressive Photon Mapping(SPPM) • Vertex Connection and Merging(VCM) • and more…

Slide 24

Slide 24 text

Related Technologies モンテカルロレイトレーシング周りの技術

Slide 25

Slide 25 text

Quasi Monte Carlo(QMC) • 準乱数を用いてモンテカルロ積分する方法 • 収束が通常のモンテカルロ積分より早い ( log ) Sobol列 QMC

Slide 26

Slide 26 text

BSDF • アーティストが操作しやすい様々なBSDF(BRDF + BTDF)が提案されている Physically-Based Shading at Disney, Brent Burley, Walt Disney Animation Studios, 2012

Slide 27

Slide 27 text

Volume Rendering • 媒質内での光の吸収, 散乱, 発光も考慮したレンダリング https://github.com/sakanaman/kumo_viewer

Slide 28

Slide 28 text

Spectral Rendering • 物理的な波長を考慮してレンダリングする方法 • 光の分散を表現できる @sakanaoki181

Slide 29

Slide 29 text

Realistic Camera Model • 視点からのレイの生成にレンズを組み込む • 現実の写真レンズによる写り方を再現する

Slide 30

Slide 30 text

Bounding Volume Hierarchy(BVH) • レイとシーンの交差計算を効率化する空間分割法 • ポリゴンを含むようなシーンでは必須

Slide 31

Slide 31 text

The Latest Topics 最近の話題 https://www.minecraft.net/ja-jp/article/render-dragon-and-nvidia-ray-tracing

Slide 32

Slide 32 text

GPU Ray Tracing • Optix, Direct X Ray Tracing(DXR), Vulkan Ray Tracing(VKR) • GPUの並列計算の強みを利用 • CPUより圧倒的に計算が早い https://devblogs.microsoft.com/directx/announcing-microsoft-directx-raytracing/

Slide 33

Slide 33 text

Realtime Ray Tracing • レイトレ専用回路を持つRTXの登場 • デノイザーと組み合わせることで部分的には実現している(e.g. Minecraft RTX) https://www.nvidia.com/ja-jp/geforce/news/minecraft-with-rtx-beta-out-now-download-play/

Slide 34

Slide 34 text

Path Guiding • 各点の入射放射輝度まで考慮した重点的サンプリング手法 • 機械学習の活用 https://github.com/Tom94/practical-path-guiding

Slide 35

Slide 35 text

Differentiable Rendering • シーンが微小に変化した時の放射輝度の変化を計算 • 機械学習と組み合わせることで, 画像からシーンの逆構築ができる (Inverse Rendering) https://mitsuba2.readthedocs.io/en/latest/src/inverse_rendering/diff_render.html

Slide 36

Slide 36 text

Thank you for listening.