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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yumcyawiz
September 07, 2018
Programming
120
0
Share
Accelerate your Ray Tracer
yumcyawiz
September 07, 2018
More Decks by yumcyawiz
See All by yumcyawiz
rtcamp 10 (vk-illuminati)
yumcyawiz
1
520
ReSTIRの数理と実装 (rtcamp10)
yumcyawiz
1
1.8k
fredholm(rtcamp9)
yumcyawiz
0
160
フォトンマッピングをパス空間から考える
yumcyawiz
0
530
fredholm
yumcyawiz
0
330
Introduction to volume rendering
yumcyawiz
0
2.7k
OSK#p-ray2020年度講義: 古典的レイトレーサーの実装
yumcyawiz
0
300
Ray Tracing: Overview
yumcyawiz
7
1.3k
GLSLでパストレーシングしてコーネルボックスを出す
yumcyawiz
0
600
Other Decks in Programming
See All in Programming
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
730
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.5k
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
3k
NakouPAY説明用
annouim0
0
250
Server-Side Kotlin LT大会 vol.18 [Kotlin-lspの最新情報と Neovimのlsp設定例]
yasunori0418
1
170
JOAI2026 1st solution - heron0519 -
heron0519
0
140
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
180
The Less-Told Story of Socket Timeouts
coe401_
3
590
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
0
400
「話せることがない」を乗り越える 〜日常業務から登壇テーマをつくる思考法〜
shoheimitani
4
850
iOS機能開発のAI環境と起きた変化
ryunakayama
0
190
第3木曜LT会 #28
tinykitten
PRO
0
110
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Utilizing Notion as your number one productivity tool
mfonobong
4
290
The Curse of the Amulet
leimatthew05
1
11k
Fireside Chat
paigeccino
42
3.9k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
170
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Docker and Python
trallard
47
3.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
180
Bash Introduction
62gerente
615
210k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Technical Leadership for Architectural Decision Making
baasie
3
330
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
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を生成できる