Slide 1

Slide 1 text

軽率にレイトレする にー兄さん@第31回学生LT

Slide 2

Slide 2 text

写真・SNSへの投稿OKです

Slide 3

Slide 3 text

Today’s Agenda 自己紹介 レイトレとは? レイトレの理論 レイトレの愉しみ

Slide 4

Slide 4 text

自己紹介 にー兄さん(@ninisan_drumath) ・筑波大学情報科学類(coins)2年 ・普段はxR開発やモーションキャプチャ開発をしている ・最近は言語自作とかシェーダとか勉強したい(しろ) ・VTuberオタク ・学生LTは登壇3回目 ・今回のテーマは一回話したことがある...(前よりも詳しく頑張ったつもり)

Slide 5

Slide 5 text

にー兄さん(@ninisan_drumath) 自己紹介

Slide 6

Slide 6 text

!!注意!! この資料は初心者が作ったものです!! 誤植等あるかもしれませんがご了承ください...。マサカリも研がないで...。

Slide 7

Slide 7 text

レイトレとは?

Slide 8

Slide 8 text

レイトレ入門 レイトレーシングの略。光線追跡法。 一般に、仮想的なレイ(光線)を発射してその 挙動を追跡することで3DCGなどのシーンを レンダリングする手法の事 ● レイマーチング(スフィアトレーシング) ● 古典的レイトレーシング ● (双方向)パストレーシング

Slide 9

Slide 9 text

ゲームへの応用 ● レイトレーシングに最適化されたグラフィックボード 「RTX」シリーズがリリース ● Minecraftがレイトレ対応を発表 ● ゲームエンジン(UnityやUE4)が レイトレ用のレンダリングパイプラインを実装

Slide 10

Slide 10 text

レイトレの理論

Slide 11

Slide 11 text

古典的レイトレーシングのアルゴリズム for each pixels ray = ray from uv color = trace(ray) trace(ray) for each object in scene if ray intersects an object if the object is nearest in the scene return color(ray, object) color(ray, object) if shadow ray intersects light L = BRDF * (normal,ray) * (phi/r^2) if material is specular L+=trace(new ray) return L

Slide 12

Slide 12 text

理論はワカランけど 最小構成でレイトレしたい すべての物体の材質はランバート面 いいね?ポリゴンなんてものは知らない。世界はすべて球で構成されている。 GI?知らんな。なぜなら光は1回しか反射しないから。 あ、でも並列化はしたい(唐突な裏切り) フォトリアルとは?

Slide 13

Slide 13 text

レイの生成と交差判定 ピクセルのUV座標→ワールド変換したものが 光線ベクトルの原点になる 連立ベクトル方程式 を解く 球とレイの場合、tについての2次方程式になる プログラムの中で一番コストがかかる 並列化が可能

Slide 14

Slide 14 text

シャドウレイによる可視判定 交差した点がカメラから見えるかどうかを判定する 衝突点から各光源にシャドウレイというレイを飛ばし、 また各オブジェクトと交差判定をする。 交差しなかったら可視

Slide 15

Slide 15 text

表面材質の話 表面材質は拡散、反射、透過などの因子に関して 角度や入射光の強さによってきまる BRDF(Bidirectional Reflectance Distribution Function)という関数のによって扱われ る

Slide 16

Slide 16 text

ランバート反射BRDFについて ランバート反射する拡散面 すべての方向で放射輝度が一定 となる理想状態 BRDFが定数なので助かる

Slide 17

Slide 17 text

放射輝度の計算 レイトレーサーは 放射輝度という物理量を何らかの形で出 力するのが目的 レンダリング方程式を解くことによって算出 される 前述した制約のおかげでかなり簡単に なった BRDF 幾何学項 可視項 光源の 放射輝度 本家レンダリング方程式

Slide 18

Slide 18 text

レイトレの愉しみ

Slide 19

Slide 19 text

今回作ったプログラムがこちら えっ...これだけ...? ワイ君< あ、はい。

Slide 20

Slide 20 text

レイトレの愉しみ 初心者向けの文献は多分少ない方 →結構苦労した(2年越しの実現) 望んだ画像が描画されたときの感動が大きい まだまだ勉強することがたくさん(CG沼)

Slide 21

Slide 21 text

CGはニッチなプロたちの宝庫(たぶん) 数学とマシンパワーで殴ろう(良い子はマネしないでください ) レイトレ合宿なるコミュニティ活動が毎年行われている Qiitaのアドカレも毎年ある

Slide 22

Slide 22 text

レンダラの現状雑感 みんな大好きBlenderのCyclesレンダラーは(双方向)パストレーシング法 多くのコンピューターゲームはラスタライザを使っている ⇒リアルタイムレイトレーシングが一般的になる未来 デバイスの性能向上に合わせて高度なレンダリング手法が普及 並列化や交差判定の最適化アルゴリズムにより速く美麗な画像生成の研究 GANを用いたポストプロセッシングとかホットな話題らしい

Slide 23

Slide 23 text

まとめ ゲームをはじめ、色々な分野でレイトレーシングが導入されている 最小構成でレイトレは軽率にできる CGは沼

Slide 24

Slide 24 text

軽率にレイトレしよ う ご清聴ありがとうございました @ninisan_drumath