Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Accelerate your Ray Tracer
Search
yumcyawiz
September 07, 2018
Programming
0
100
Accelerate your Ray Tracer
yumcyawiz
September 07, 2018
Tweet
Share
More Decks by yumcyawiz
See All by yumcyawiz
fredholm(rtcamp9)
yumcyawiz
0
61
フォトンマッピングをパス空間から考える
yumcyawiz
0
240
fredholm
yumcyawiz
0
160
Introduction to volume rendering
yumcyawiz
0
1.6k
OSK#p-ray2020年度講義: 古典的レイトレーサーの実装
yumcyawiz
0
230
Ray Tracing: Overview
yumcyawiz
7
1.2k
GLSLでパストレーシングしてコーネルボックスを出す
yumcyawiz
0
350
Pybind11でC++とPythonのいいとこ取りをする
yumcyawiz
0
750
Path Tracing in 5 minutes
yumcyawiz
1
280
Other Decks in Programming
See All in Programming
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
710
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
330
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.4k
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
雑に思考を整理する技術と効能
konifar
60
29k
Elm 0.19.0 Changes
bkuhlmann
0
490
使ってみよう Azure AI Document Intelligence
kosmosebi
2
320
GitHub Copilotのススメ
marcy731
1
200
PostmanでAPIの動作確認が楽になった話
h455h1
0
170
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
Git Rebase
bkuhlmann
11
1.6k
Featured
See All Featured
Producing Creativity
orderedlist
PRO
337
39k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
The Invisible Customer
myddelton
114
12k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
17
1.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Building Applications with DynamoDB
mza
88
5.6k
Happy Clients
brianwarren
92
6.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
A Philosophy of Restraint
colly
197
16k
Clear Off the Table
cherdarchuk
84
310k
Transcript
ACCELERATE YOUR RAY TRACER 効率の良い衝突計算の方法
衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索)
線形探索 このような場合でも物体一つ一つと衝突計算が行われる
衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索) 圧倒的に無駄が多い
衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索) 大量のポリゴンに対応することができない
効率化手法 • Bounding Volume Hierarchy(BVH) • Kd-Tree
BVH • 物体をBounding Volumeと呼ばれる枠で囲む • 衝突計算を行うときは、まず枠と衝突するか試す
BVH 枠と衝突しないので中の物体は見ない
BVH • 物体をBounding Volumeと呼ばれる枠で囲む • 衝突計算を行うときは、まず枠と衝突するか試す • さらにBounding VolumeをBounding Volumeで囲んで木構造にする
BVH まず全体の枠と衝突計算をする
BVH 中の枠と衝突計算をする
BVH 最終的に枠の中で線形探索して衝突物体を得る
BVHの木構造
枠の生成方法 • Axis Aligned Bounding Box(AABB)と呼ばれる長方形を枠として使うことが一 般的 • AABBとは各軸に平行な長方形のこと •
中の物体の合計の大きさに合わせるようにする
AABB
BVHによる衝突計算の流れ 1. 物体集合からBVHを生成 2. まず全体の枠と衝突計算 3. 当たったら中の要素を衝突計算 4. 当たったらさらに中の要素を衝突計算 …
5. 最終的な衝突物体を得る 再帰的な処理
BVHの生成方法 • 中央分割法(Median Split) • 等数分割法(Equal Size Split) • Surface
Area Heuristics(SAH) いずれも全体の枠の長さが最大となる軸を分割軸として選ぶ
Median Split 中央値の位置で分割する
左右で物体の数が等しくなるところで分割する Equal Size Split
SAHのコストが最も低くなるところで分割する SAH 50 10 40 30 45
SAHコストの計算方法 = + + : 木の走査のコスト : 親の枠の表面積 , :
子の枠の表面積 , : 子の枠に入っている物体数 :物体との衝突計算のコスト このコストが最小となる分割位置を選ぶ
比較 Equal Size Median SAH SAHが最も優れたBVHを生成できる