SlideShare a Scribd company logo
1 of 36
レイトレ空間構造入門
2013/08/24
Toru Matsuoka
空間構造とは
●
空間構造とは
– レイトレーシングにおいてはトラバースを高速化
するために必要な構造
空間構造を使わないと
●
オブジェクトの数、三角形の数、フォトンの
数などが多くなると計算量が大きくなりすぎ
てしまう。
●
ex. 三角形の数を n としたときの1光線が三
角形に当たるかをチェックしようとすると ...
– 手当たり次第の計算量: O(n)
– KD-Tree や BVH を使ったときの計算量:
O(log(n))
主な空間構造
●
Uniform Grid
●
KD-Tree
●
Octree
●
BVH
Uniform Grid
●
空間を均一な空間に区切る
●
いわゆるボクセル表現
●
トラバースが高速
●
大きなメモリ使用量
●
空間的に疎なシーンに弱い
KD-Tree
●
空間を各次元に沿って2つに分ける
●
空間的に疎なシーンでも安定
●
メモリ使用量も少ない
Octree
●
八分木
●
空間を 2*2*2 = 8つに分ける
●
メモリ使用量が少ない
●
トラバースが速い
BVH
●
Bounding Volume Hierarchy
●
枝ノードにはバウンドと子ノード
●
近いオブジェクトをまとめる
空間構造の選択の指標
●
メモリ使用量
●
構築速度
●
トラバース速度
レイトレで空間構造
●
レイトレでは BVH が使われることが多い 
– BVH
●
ほかの空間構造と比べて
– トラバースが遅くない
– メモリ消費が大きくない
– 空間的な疎密に影響されにくい
BVH の計算
●
木構造構築
– メッシュの三角形の面を格納
●
トラバース
– 木構造の葉にぶつかるまで光線に沿って辿る
各種 BVH 手法の紹介
●
QBVH
●
LBVH
●
SBVH
●
BVH の最適化
QBVH
●
Shallow Bounding Volume
Hierarchies for Fast SIMD Ray
Tracing of Incoherent
Rays[Dammertz et al. 2008]
●
枝ノードに4つの子のバウンドを格納
●
SIMD を使用
●
高速なトラバースとそれに適した構造
LBVH
●
LBVH
●
Fast BVH Construction on
GPUs [Lauterbach et al. 2009]
●
BVH を高速に構築する手法
●
MortonCode を求めてソートする。
LBVH のアイデア
●
MortonCode を三角形の中心値から求め
る
●
MortonCode をそのまま整数値として
ソート
→Z 曲線順に並べられる
●
Z 曲線から木構造を作成
MortonCode
●
多次元データを一次元にマッピング
●
G. M. Morton 氏により導出
Wikipedia より画像を転載
Morton Code を求める
●
三角形の中心位置を求める
●
全体のバウンドからの相対的な位置を求める
(0.8, 0.7)
(1, 0)(0, 0)
(1, 1)(0, 1)
(0.2, 0.3)
Morton Code を求める
●
各次元それぞれ 10bit あわせて 20bit の
MortonCode( 2次元の場合 ) を求める
場合
●
小数を整数に変換
(0.2, 0.3) → (0.2*2^10, 0.3*2^10) →
(204, 307)
Morton Code を求める
●
2進数で各次元のビットを交互にあわせて一
つの整数にする。
(204, 307)
→ (0011001100, 0100110011) :2 進
数
→ 00 01 10 10 01 01 10 10 01 01
:MortonCode
Morton Code をソート
●
MortonCode を通常の整数としてソート
●
ソートすると三角形は Z 曲線上に並ぶ
0
2
3
5
4
1
BVH の構築
●
Z 曲線での順番で近い位置にあるならば、空
間的にも近い位置にある。
●
MortonCode のビットの変わり目で分割
00 01 10 11
0
0
0
1
1
0
1
1
0
2
3
5
4
1
LBVH の特徴
●
長所
– 構築が速い
●
ソートを一回のみ行う
– 普通の BVH の実装では大抵ノードを下るごとにソートを行
う必要がある。
●
実装が容易
●
欠点
– BVH の質が良くない
●
トラバース速度に影響
●
SAH などと組み合わせる必要があるが・・・
LBVH 派生
●
HLBVH
– HLBVH: Hierarchical LBVH
Construction for Real-Time Ray
Tracing [Pantaleoni and Luebke
2010]
– ソートを多段( Hierarchical )にして高速化
– SAH も適用
LBVH 派生
●
PLBVH
– オリジナル手法
●
めんどくさくて論文にしてない・・・
– ソートではなく Partition を用いる
– ビットの変わり目の検索もしない
– すべてソートしなくても良い分高速
– 並列化しやすい
LBVH
●
計測
bunny
dragon happy
build traverse build traverse build traverse
BVH 60 13 995 20 1045 17
HLBVH 19 21 180 59 226 59
PLBVH 12 14 143 20 213 20
MBP Core i7 2.7Ghzh 8GB
単位は ms
SBVH
●
SBVH
●
Spatial Splits in Bounding
Volume Hierarchies [Stich et al.
2009]
●
空間を分割
●
三角形にバウンドをできるだけフィット
SBVH のアイデア
●
細い三角形などではバウンドに無駄な空間が
できやすいので、空間を分割して、複数のバ
ウンドで一つの三角形を参照する。
SBVH の特徴
●
長所
– トラバースが高速
●
短所
– 構築に非常に時間がかかる
– メモリ使用量が増える
SBVH
●
実測
bunny dragon happy
build traverse build traverse build traverse
BVH 78 29 1364 54 1655 42
HLBVH 29 41 464 62 649 59
SBVH 503 26 8638 35 12365 30
MBP Core i7 2.7Ghzh 8GB
単位は ms
BVH の最適化
●
LBVH は構築が速い、トラバースが遅い
●
SBVH は構築が遅い、トラバースが速い
→ 構築は LBVH などの高速な手法を用い、その
後木構造を最適化する。
Tree Rotation BVH
●
Tree Rotations for Improving Bounding Volume
Hierarchies[Kensler 2008]
●
木構造を回転してつなぎ直して、より SAH コストの
かからないよう最適化
●
局所最適
論文より引用
Treelet
Restructuring BVH●
Fast Parallel Construction of High-Quality Bounding
Volume Hierarchies[karras et al. 2013]
●
先に LBVH などで構築し、 Treelet( 部分木 ) ごとに作り
直して、 SAH コストを最小化
●
SBVH の空間分割も取り入れてトラバース速度も SBVH
並みに
論文より引用
Treelet
Restructuring BVH●
実測
build traverse build traverse build traverse
QBVH 60 13 995 20 1045 17
HLQBVH 19 21 180 59 226 59
PLQBVH 12 14 143 20 213 20
TRQBVH 84 12 1019 17 1305 18
MBP Core i7 2.7Ghzh 8GB
単位は ms
組み合わせ可能
●
それぞれの手法は組み合わせ可能
– QBVH: トラバースの高速化
– LBVH: 構築の高速化
– Tree Restructuring BVH: 木構造の最適
化
→TR L Q BVH
まとめ
●
各種空間構造
●
適宜最適な空間構造
– メモリ使用量
– 構築速度
– トラバース速度
●
レイトレの性能追求=空間構造の性能追求
空間構造入門
●
ご清聴ありがとうございました。

More Related Content

What's hot

shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...
[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...
[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...Deep Learning JP
 
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​SSII
 
3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)Toru Tamaki
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)Tomohiro Motoda
 
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...Deep Learning JP
 
画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイcvpaper. challenge
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Yusuke Uchida
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法Hirokatsu Kataoka
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化Yusuke Uchida
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)AtCoder Inc.
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 

What's hot (20)

shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...
[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...
[DL輪読会]“Spatial Attention Point Network for Deep-learning-based Robust Autono...
 
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​SSII2020SS:  微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
 
3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)3次元レジストレーション(PCLデモとコード付き)
3次元レジストレーション(PCLデモとコード付き)
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)
 
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
 
画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ画像生成・生成モデル メタサーベイ
画像生成・生成モデル メタサーベイ
 
ドロネー三角形分割
ドロネー三角形分割ドロネー三角形分割
ドロネー三角形分割
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
Lucas kanade法について
Lucas kanade法についてLucas kanade法について
Lucas kanade法について
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 

Similar to レイトレ空間構造入門

2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなしOonishi Takaaki
 
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lightsomochi64
 
ハイブリッドロケットエンジンによる多段式打ち上げ機
ハイブリッドロケットエンジンによる多段式打ち上げ機ハイブリッドロケットエンジンによる多段式打ち上げ機
ハイブリッドロケットエンジンによる多段式打ち上げ機Masahiro Kanazaki
 
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]Hideo Takagi
 
SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-Takeshi Yamamuro
 
GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。dec9ue
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア鉄次 尾形
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
Mvp road show_0830_rev1
Mvp road show_0830_rev1Mvp road show_0830_rev1
Mvp road show_0830_rev1Takano Masaru
 

Similar to レイトレ空間構造入門 (11)

2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
 
ハイブリッドロケットエンジンによる多段式打ち上げ機
ハイブリッドロケットエンジンによる多段式打ち上げ機ハイブリッドロケットエンジンによる多段式打ち上げ機
ハイブリッドロケットエンジンによる多段式打ち上げ機
 
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
 
SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-SIGMOD'10勉強会 -Session 8-
SIGMOD'10勉強会 -Session 8-
 
GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。GCをみればRTSが見えてくる、かも。。。
GCをみればRTSが見えてくる、かも。。。
 
【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア【公開版】AWS基礎 for 新卒エンジニア
【公開版】AWS基礎 for 新卒エンジニア
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
JAWS DAYS 2015
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
 
Mvp road show_0830_rev1
Mvp road show_0830_rev1Mvp road show_0830_rev1
Mvp road show_0830_rev1
 

レイトレ空間構造入門