SlideShare a Scribd company logo
1 of 80
Download to read offline
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
YUSUKE TOKUYOSHI (SQUARE ENIX CO., LTD.)
TAKAHIRO HARADA (ADVANCED MICRO DEVICES, INC.)
確率的ライトカリング -理論と実装-
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 数万の光源で照らされたシーンを比較的小さい誤差で描画する方法のご紹介
‒論文: “Stochastic Light Culling” (http://jcgt.org/published/0005/01/02/)
 GPU実装の解説
‒リアルタイムレンダリング
‒オフラインパストレーシング
 講演の対象者
‒レンダリングの基礎知識をもっている人
‒これからレンダリングの研究を始める人
本講演の目的
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
VIDEO
間接照明(65536 virtual point lights)
Resolution: 1920×1152, GPU: AMD RadeonTM R9 290X
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ライトカリングの説明
 確率的ライトカリング
 間接照明のリアルタイム実装例
 オフラインレンダリングへの応用
‒パストレーシング用のカリングアルゴリズム
‒GPU実装
本日の流れ
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
LIGHT CULLING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 光源が大量に存在
‒自動生成される光源
‒間接照明を表現するvirtual point lights (VPLs) [Keller97]
 まじめにやると膨大な計算量
多光源レンダリング
VPLsを使った間接照明の光路
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 光源毎に光の影響範囲を制限
 範囲外はシェーディングの対象外
 光源を事前にカリングして高速化
ライトカリング
光源の影響範囲
光源を無視
(カリング可能)
シェーディング対象
シェーディング点から遠い光源は寄与が小さいので無視
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
TILE-BASED CULLING [Olsson11; Harada12]
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
TILE-BASED CULLING [Olsson11; Harada12]
1
2
3
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
TILE-BASED CULLING [Olsson11; Harada12]
1
2
3
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
TILE-BASED CULLING [Olsson11; Harada12]
1
2
3
[1] [1,2,3] [2,3]
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 光源から遠い所が暗くなる
‒実際の光は無限の影響範囲を持つ
‒物理ベースの光源を扱えない (e.g., VPLs)
 光源が多いほど誤差(bias)が累積
問題点
影響範囲を制限
無限の影響範囲
65536 VPLs使った間接照明
光が届かない
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 解に対する推定値の偏りを表す誤差
 ライトカリングは全光源が暗めに偏っている
 Biasのある推定が常に解に収束しないとは限らないが、この場合は収束しない
BIAS
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
STOCHASTIC LIGHT CULLING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 基本的にロシアンルーレット法[Arvo90]
 光の影響範囲をランダムに変更
‒遠い光源も低確率でサンプリング
 Biasを分散(推定値のばらつきを表す誤差)に変える
 光源数が多くなっても誤差が累積しない
手法の概要
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 各光源を確率的に殺す
 生存確率: シェーディング点から見た光源の明るさに比例
 生き残った光源のエネルギーは生存確率で割る
ロシアンルーレット法
生存確率: 𝑝𝑖 𝑙 = min
𝑓 𝑙
𝛼 𝑖
, 1
光源のfall-off関数: 𝑓 𝑙 =
1
𝑙2
ユーザー定義の係数
大きいほど死にやすい
光源までの距離
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
0
0.5
1
0 5 10
確率的FALL-OFF関数
Clamping Stochastic
0
0.5
1
0 5 10
乱数𝜉𝑖
𝛼𝑖
𝑟𝑖 𝑟𝑖
(光の影響範囲)(光の影響範囲)
𝑓̂ 𝑙 = �
𝑓 𝑙 =
1
𝑙2
𝑙 < 𝑟𝑖
0 otherwise
𝑓̂ 𝑙 = �
𝑓 𝑙
𝑝𝑖 𝑙
= max 𝛼𝑖,
1
𝑙2
𝑝𝑖 𝑙 > 𝜉𝑖
0 otherwise
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
確率的FALL-OFF関数
Clamping Stochastic
0
0.5
1
0 5 10𝑟𝑖
(光の影響範囲)
𝑓̂ 𝑙 = �
𝑓 𝑙 =
1
𝑙2
𝑙 < 𝑟𝑖
0 otherwise
0
0.5
1
0 5 10
乱数𝜉𝑖
𝛼𝑖
𝑟𝑖
(光の影響範囲)
𝑓̂ 𝑙 = �
𝑓 𝑙
𝑝𝑖 𝑙
= max 𝛼𝑖,
1
𝑙2
𝑝𝑖 𝑙 > 𝜉𝑖
0 otherwise
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
確率的FALL-OFF関数
Clamping Stochastic
0
0.5
1
0 5 10𝑟𝑖
(光の影響範囲)
𝑓̂ 𝑙 = �
𝑓 𝑙 =
1
𝑙2
𝑙 < 𝑟𝑖
0 otherwise
0
0.5
1
0 5 10
乱数𝜉𝑖
𝛼𝑖
𝑟𝑖
𝑓̂ 𝑙 = �
𝑓 𝑙
𝑝𝑖 𝑙
= max 𝛼𝑖,
1
𝑙2
𝑝𝑖 𝑙 > 𝜉𝑖
0 otherwise
(光の影響範囲)
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
ランダムな光の影響範囲
1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
ランダムな光の影響範囲
64 lights1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 シェーディング点毎に異なる光の影響範囲。事前にカリングできない
 共通の範囲を使いたい
ランダムな光の影響範囲
64 lights1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 シェーディング点毎に異なる光の影響範囲。事前にカリングできない
 共通の範囲を使いたい
 解決法: 全シェーディング点で同じ乱数を使用
ランダムな光の影響範囲
64 lights1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 シェーディング点毎に異なる光の影響範囲。事前にカリングできない
 共通の範囲を使いたい
 解決法: 全シェーディング点で同じ乱数を使用
ランダムな光の影響範囲
64 lights 1 light1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 シェーディング点毎に異なる光の影響範囲。事前にカリングできない
 共通の範囲を使いたい
 解決法: 全シェーディング点で同じ乱数を使用
‒推定に偏りがあるように見えるかもしれないが、実は偏ってない
‒Unbiased coherent sampling
ランダムな光の影響範囲
64 lights 1 light1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 シェーディング点毎に異なる光の影響範囲。事前にカリングできない
 共通の範囲を使いたい
 解決法: 全シェーディング点で同じ乱数を使用
‒推定に偏りがあるように見えるかもしれないが、実は偏ってない
‒Unbiased coherent sampling
ランダムな光の影響範囲
64 lights 64 lights1 light1 light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 関連研究
‒Virtual point lights (VPLs) [Keller97]
‒Lightcuts [Walter05]
‒Coherent path tracing [Sadeghi09]
UNBIASED COHERENT SAMPLING
複数のシェーディング点が同じサンプル光路(VPL)を共有
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 関連研究
‒Virtual point lights (VPLs) [Keller97]
‒Lightcuts [Walter05]
‒Coherent path tracing [Sadeghi09]
 “分散 = 高周波ノイズ”とは限らない
‒明るい斑点模様
‒フリッカリング
UNBIASED COHERENT SAMPLING
複数のシェーディング点が同じサンプル光路(VPL)を共有
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 関連研究
‒Virtual point lights (VPLs) [Keller97]
‒Lightcuts [Walter05]
‒Coherent path tracing [Sadeghi09]
 “分散 = 高周波ノイズ”とは限らない
‒明るい斑点模様
‒フリッカリング
‒バンディングアーティファクト
UNBIASED COHERENT SAMPLING
複数のシェーディング点が同じサンプル光路(VPL)を共有
Stochastic light culling
8 lights
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 誤差が偏りなくばらつくこと
 誤差が0に収束することは意味してない
‒よくある誤解のひとつ
‒T. Hachisuka. 2013. "Five Common Misconceptions about Bias in Light Transport Simulation"
 あえて誤差を0に収束させないunbiasedな手法もある (e.g., lightcuts)
‒許容誤差量を設定して過剰な計算を省く
‒誤差は許容量以下になるが、0には収束しない
‒実用的
“UNBIASED”の意味
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 分散の量を簡単にコントロール
 VPLsではシェーディング対象の平均光源数がほぼ一定に収束
 ユーザー定義の許容誤差量𝜖 𝑚𝑚𝑚から生存確率のパラメータ𝛼𝑖を計算
‒拡散反射を仮定
‒光源の放射強度𝐼 𝜔′ も低周波な分布を仮定
許容誤差量の設定
𝛼𝑖 =
2𝜋𝜖 𝑚𝑚𝑚
𝐸max
𝜔′
𝐼 𝜔′
カメラの露出
VPLの場合、VPL数𝑁に反比例: 𝐼 𝜔′
∝
1
𝑁
𝑟𝑖 ∝
1
𝑁
VPL数
Stochastic
Clamping
同じ許容誤差でのライティング時間 (ms)
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
本手法の処理の流れ
許容誤差量から生存確率のパラメータ𝛼𝑖を計算
ロシアンルーレット法を基に光源の影響範囲𝑟𝑖を決定
(光源毎の処理)
Light culling
(既存手法)
既存手法と同じ方法でシェーディング計算
シェーディング結果を生存確率で割る
Shading
赤字が新たに追加された処理
カリング手法に依存しない
Splatting [Dachsbacher06]
Tile-based culling [Olsson11; Harada12]
Clustered shading [Olasson12]
…etc.
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
EXAMPLE IMPLEMENTATION
OF
REAL-TIME INDIRECT ILLUMINATION
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 Reflective shadow maps (RSMs) [Dachsbacher05]
 各テクセル = VPLs
VIRTUAL POINT LIGHTS (VPLS)の生成
深度 法線 反射率
VPLの位置 VPLの放射強度の計算に使用
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 論文ではRSMから重要なVPLを再サンプリングした
 重要度: bidirectional RSM [Ritschel11]
 速度優先なら、再サンプリングせず代わりに低解像度のRSMを使ってもいい
RESAMPLING VPLS
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ピクセル毎に異なる光源を使ってシェーディング [Wald02]
‒8×8ピクセルのサンプリングパターン → ピクセルあたりの光源数は1/64に
 誤差(分散)は高周波ノイズとして画面に現れる
 後処理でノイズ除去フィルタリング
INTERLEAVED SAMPLING
8×8 interleaved sampling
ノイズ除去
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ピクセルに合わせてスレッドを割り当てるとdivergenceが発生
 画面を8×8の部分領域にピクセルを並び替えて回避 [Segovia06]
‒部分領域内では同じ光源が使用される
‒Single passで実装
INTERLEAVED SAMPLINGのGPU実装
並び替え
(ロード時)
シェーディング 並び替え
(ストア時)
G-buffer 間接照明バッファ
拡大図
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 Interleaved samplingと確率的ライトカリングの組み合わせ
 並び替えた部分領域に対してtiled deferred shading [Andersson11]
‒部分領域あたりの光源数は1/64に減っている
‒さらに確率的にカリングしてピクセルあたりの光源数を減らす
ライトカリングを適用
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 Interleaved samplingと確率的ライトカリングの組み合わせ
 並び替えた部分領域に対してtiled deferred shading [Andersson11]
‒部分領域あたりの光源数は1/64に減っている
‒さらに確率的にカリングしてピクセルあたりの光源数を減らす
ライトカリングを適用
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 Interleaved samplingと確率的ライトカリングの組み合わせ
 並び替えた部分領域に対してtiled deferred shading [Andersson11]
‒部分領域あたりの光源数は1/64に減っている
‒さらに確率的にカリングしてピクセルあたりの光源数を減らす
ライトカリングを適用
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
フィルタリング前の間接照明成分
65536 VPLs, Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
Shading time: 44.4 ms Shading time: 2.87 ms Shading time: 2.87 ms
w/o light culling Stochastic light culling Light culling with clamping ranges
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
ノイズ除去フィルタリング、テクスチャ適用、直接照明追加
65536 VPLs, Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
Total rendering time: 48.5 ms
RMSE: 0.0017
Total rendering time : 7.0 ms
RMSE: 0.0026
Total rendering time : 7.0 ms
RMSE: 0.0377
w/o light culling Stochastic light culling Light culling with clamping ranges
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
同じ計算時間での比較
1024 VPLs
Stochastic light culling Light culling with clamping ranges
Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
同じ計算時間での比較
4096 VPLs
Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
Stochastic light culling Light culling with clamping ranges
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
同じ計算時間での比較
16384 VPLs
Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
Stochastic light culling Light culling with clamping ranges
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
同じ計算時間での比較
65536 VPLs
Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
Stochastic light culling Light culling with clamping ranges
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 確率的ライトカリング
‒誤差を考慮したライトカリング
‒Biasを分散に変えて誤差を収束
 リアルタイム実装
‒カリング自体の実装に変更なし
‒Interleaved samplingと組み合わせると効果的
 制限事項
‒低周波のBRDFを仮定
ここまでのまとめ
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
STOCHASTIC LIGHT CULLING
FOR
PROGRESSIVE PATH TRACING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
1. イントロ
‒確率的ライトカリング + パストレーシング(ポイントライトのみ)
2. さらなる詳細
‒ 確率的ライトカリング + パストレーシング(全部入り)
3. GPUでの実装
 Demo time!!
AGENDA
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのシェーディング点において全てのライトからの寄与を求める
 簡単ではない、計算コストが高い
MANY LIGHT PROBLEM IN PATH TRACING
1.9M polys, 59,000 lights
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのシェーディング点において全てのライトからの寄与を求める
 手法として二つの可能性
1. それぞれのライトにおいて、一つ頂点をサンプリング
‒多くライトがあるシーンにおいて計算負荷が高い
‒1000ライトあれば、1000回シャドウレイをトレースしなければならない
MANY LIGHT PROBLEM IN PATH TRACING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのシェーディング点において全てのライトからの寄与を求める
 手法として二つの可能性
1. それぞれのライトにおいて、一つ頂点をサンプリング
‒多くライトがあるシーンにおいて計算負荷が高い
‒1000ライトあれば、1000回シャドウレイをトレースしなければならない
2. ライトを一つ選択し、一つ頂点をサンプリング
‒収束はライト選択する戦略に依存する
‒プログレッシブパストレーシングではより実用的
MANY LIGHT PROBLEM IN PATH TRACING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのシェーディング点において全てのライトからの寄与を求める
 手法として二つの可能性
1. それぞれのライトにおいて、一つ頂点をサンプリング
‒多くライトがあるシーンにおいて計算負荷が高い
‒1000ライトあれば、1000回シャドウレイをトレースしなければならない
‒確率的ライトカリング => バイアスを加えることなくシャドウレイの数を減らす
2. ライトを一つ選択し、一つ頂点をサンプリング
‒収束はライト選択する戦略に依存する
‒プログレッシブパストレーシングではより実用的
MANY LIGHT PROBLEM IN PATH TRACING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのシェーディング点において
‒For 全てのライト (4ライト)
‒シャドウレイをトレース (visibility)
‒シェーディングし、寄与を足し合わせる
W.O. STOCHASTIC LIGHT CULLING (POINT LIGHT)
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
STOCHASTIC LIGHT CULLING (POINT LIGHT)
 それぞれのシェーディング点において
‒For 全てのライト (4ライト)
‒If( !overlaps( ライトの影響範囲, 点 ) )
‒ continue
‒シャドウレイをトレース (visibility)
‒シェーディングし、寄与を足し合わせる
UNOPTIMIZED
 ライトの影響範囲は全てのシェーディング点に対し
て固定
 それぞれの点に重なっているライトを代わりに見
つける方が効率的
Stochastic Light Culling
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのシェーディング点において
‒For 重なっている ライト (1ライト)
‒ライト上の頂点を一つ選ぶ
‒シャドウレイをトレース (visibility)
‒シェーディングし、寄与を足し合わせる
STOCHASTIC LIGHT CULLING (POINT LIGHT)
OPTIMIZED
Stochastic Light Culling
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
STOCHASTIC LIGHT CULLING FOR POINT LIGHTS
HitInfo hit = scene.intersect( from, to );
if( !hit.hasHit() )
continue;
float4 hp = from + ( to - from ) * hit.m_f;
// explicit connection
for(int il=0; il<nLightSamples; il++)
{
const SampleInfo& l = ls[il];
float g = geomTerm( hp, hit.m_ns, l.m_x, l.m_n );
if( !scene.intersect( hp, l.m_x ).hasHit() )
{
float4 f = scene.brdfEvaluate( hit.m_ns, m );
dst += f * l.m_le * g / l.m_pdfArea;
}
}
DIRECT ILLUMINATION
HitInfo hit = scene.intersect( from, to );
if( !hit.hasHit() )
continue;
float4 hp = from + ( to - from ) * hit.m_f;
// explicit connection (SLC)
for(int il=0; il<nLightSamples; il++)
{
const SampleInfo& l = ls[il];
const float d2 = l2( hp - l.m_x );
if( SlcImpl::radius2( l.m_le, ALPHA, xi[il] ) < d2 )
continue;
float g = geomTerm( hp, hit.m_ns, l.m_x, l.m_n );
if( !scene.intersect( hp, l.m_x ).hasHit() )
{
float4 f = scene.brdfEvaluate( hit.m_ns, m );
float rrPdf = SlcImpl::computeRrPdf( hp, l, ALPHA );
dst += f * l.m_le * g / (l.m_pdfArea * rrPdf);
}
}
PT (Base) PT + SLC
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
class SlcImpl
{
public:
static
float computeRt( const float4& le, float alpha )
{
return sqrtf( dot3F4( float4(0.33f,0.33f,0.33f), le ) * ( 1.f/(M_PI*alpha) ) );
}
static
float computeRrPdf( const float4& vtx, const float4& lvtx, const float4& le, float alpha )
{
float d2 = dot3F4( vtx-lvtx, vtx-lvtx );
float r_t = computeRt( le, alpha );
if( d2 > r_t*r_t )
return r_t*r_t / d2;
return 1.f;
}
static
float radius2( float r_t, float xi )
{
return ( r_t*r_t / (1.f-xi) );
}
};
STOCHASTIC LIGHT CULLING CODE
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
SPECIFICS
FOR PATH TRACING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ポイントライトだけの説明をした
 パストレーシングでは他にも様々なライトが使われる
 ほとんどのライトはエリアライト
‒確率的ライトカリングはエリアライトに使える??
様々なライトの種類
Area IES Spot Point 
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ライトの影響範囲を計算する必要あり
 どうやって??
エリアライトの影響範囲
Point light
Area light
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ライトの影響範囲を計算する必要あり
 エリアライト == ポイントライトの集合
 球をエッジ上で掃引したもの
‒簡単には求まらない
エリアライトの影響範囲
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ライトの影響範囲を計算する必要あり
 エリアライト == ポイントライトの集合
 Conservativeな影響範囲を計算
‒一つの球として表現
‒エリアライトの中心を求める
‒中心からエッジまでの最大距離(R)
‒球の半径を求める
‒R+r
エリアライトの影響範囲
r
R
R
Conservative bound
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 カリングされる確率がはっきりと定義されている
 MISを導入するのが容易 (implicit connection + explicit connection)
 Implicit connectionにおいて、ライトサンプリングでの確率は
‒[pdf of sampling the light vertex] x [SLC (Russian Roulette) probability]
MULTIPLE IMPORTANCE SAMPLING (MIS)
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
BOUNDING SPHERE TREEを用いたカリング
 フラスタムカリングを使うことができない
‒シェーディング点がスクリーンスペースに並んでいない
‒カメラから直接見える点は例外
‒ランダムに分布したシェーディング点
‒ => 一般的なカリング方法を用いる必要がある
‒Bounding sphere treeを用いた
‒BVHの一種
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 それぞれのステップ(フレーム)において影響範囲が変わる
 それぞれのステップ(フレーム)において完全に再構築することもできる
 確率的ライトカリングのオーバーヘッドを減らすために、木構造は一度だけ計
算されて、その後はリフィットに止める
BOUNDING SPHERE TREEを用いたカリング
実装
nth step n+1th step
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
収束の比較
ClampingStochastic Light CullingReference
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
収束の速さ比較(CPU実装、同じ計算時間での比較)
Uniform sampling  Stochastic Light Culling 
55,000 triangle lights, after 30s
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
STOCHASTIC LIGHT CULLING
ON GPU
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 確率的ライトカリングはCPU実装ではとても良い
 GPUで実装するときに少し注意が必要
1. Work item (thread) の発散
‒シェーディングとビジビリティのテストをそれぞれのリーフノードにおいて行うとコード
の発散がひどい
2. Memory使用量
‒多くのWIが並列に走っている
‒それぞれのWIで必要なメモリ量が少なくても、多くのWIだと問題になる
‒[# of lights] x [# of WIs]
CHALLENGES
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
IMPROVING TREE TRAVERSAL & SHADING
 BVH巡回
 リーフノードでシェーディング
WORK ITEM DIVERGENCE
while( nodeIdx )
{
Node node = getNode( nodeIdx );
if( hit( node, ray ) )
{
if( isLeaf( node ) )
{
Ray shadowRay = createRay( node, ray );
if( !intersect( shadowRay) )
{
pixel += shade( node, ray );
}
nodeIdx = node.m_next;
}
else
{
nodeIdx = node.m_child;
}
}
else
{
nodeIdx = node.m_next;
}
}
Expensive computation deep in branches => Very bad
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
IMPROVING TREE TRAVERSAL & SHADING
 ツリー巡回しているときに、シェー
ディングを行わないためには、ライ
トの番号をバッファに保持し、後で
シェーディングをする
WORK ITEM DIVERGENCE
while( nodeIdx )
{
Node node = getNode( nodeIdx );
if( hit( node, ray ) )
{
if( isLeaf( node ) )
{
Ray shadowRay = createRay( node, ray );
if( !intersect( shadowRay) )
{
pixel += shade( node, ray );
}
nodeIdx = node.m_next;
}
else
{
nodeIdx = node.m_child;
}
}
else
{
nodeIdx = node.m_next;
}
}
Expensive computation deep in branches => Very bad
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
IMPROVING TREE TRAVERSAL & SHADING
 ツリー巡回しているときに、シェー
ディングを行わないためには、ライ
トの番号をバッファに保持し、後で
シェーディングをする
 ツリー巡回中の発散は解決したが
‒シェーダー実行の時間がばらつく (ray
cast + shade)
‒ライトの番号を蓄えるバッファが大き
すぎる (# of lights x # of WIs)
MEMORY FOOTPRINT
while( nodeIdx )
{
Node node = getNode( nodeIdx );
if( hit( node, ray ) )
{
if( isLeaf( node ) )
{
hitList[nHits++] = nodeIdx;
nodeIdx = node.m_next;
}
else
{
nodeIdx = node.m_child;
}
}
else
{
nodeIdx = node.m_next;
}
}
for(i=0; i<nHits; i++)
{
Node node = getNode( hitList[i] );
Ray shadowRay = createRay( node, ray );
if(!intersect( shadowRay) )
{
pixel += shade( node, ray );
}
}
Isolate expensive computation
Loop over nHits, which varies a lot => Bad
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
IMPROVING TREE TRAVERSAL & SHADING
 ツリー巡回中の発散は解決したが
‒ライトの番号を蓄えるバッファが大き
すぎる
‒=> 最大k個のライトだけを蓄える
‒=> 最大k回のシェーディングを行う
 リザーバサンプリング
‒全ての候補を蓄えずに最大k個を選
択することができる
RESERVOIR SAMPLING
while( nodeIdx )
{
Node node = getNode( nodeIdx );
if( hit( node, ray ) )
{
if( isLeaf( node ) )
{
resevoirSampling( hitList, nodeIdx );
nodeIdx = node.m_next;
}
else
{
nodeIdx = node.m_child;
}
}
else
{
nodeIdx = node.m_next;
}
}
for(i=0; i<resevoirMax; i++)
{
if( nHits <= i )
continue;
Node node = getNode( hitList[i] );
Ray shadowRay = createRay( node, ray );
if(!intersect( shadowRay) )
{
pixel += shade( node, ray );
}
}
Loop at most reservoirMax (constant) => Good 
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 前処理としてツリーはCPUで構築して、GPUに転送
 複数のカーネルを実行してリフィット
 それぞれのカーネルで1レベル、リフィット
 for それぞれのツリーの深さ:
‒リフィットのカーネルを実行
BOUNDING SPHERE TREE REFIT
__kernel
void RefitOneLevelKernel( GLOBAL(BSTreeNode) gTree, GLOBAL(u32)
gLevels, int cb_n, int cb_level )
{
int gIdx = GET_GLOBAL_IDX;
if( gIdx >= cb_n ) return;
if( gLevels[gIdx] != cb_level )
return;
int nodeIdx = gIdx;
BSTreeNode* dst = &gTree[nodeIdx];
u32 c0 = dst->m_child0;
u32 c1 = dst->m_child1;
float4 v0 = gTree[ c0 ].m_volume;
float4 v1 = gTree[ c1 ].m_volume;
mergeChildVolumes( dst );
}
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
Uniform Sampling (RSME:0.0749) Stochastic Light Culling (RSME:0.0464)
5,000 triangle lights, after 2min
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
RESULTS
Uniform Sampling (RSME:0.0355) Stochastic Light Culling (RSME:0.0203)
59,000 triangle lights, after 2min
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 Do we have time??
DEMO TIME!!
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 確率的ライトカリングを紹介した
‒バイアスを加えないライトカリング
 二つの応用例を紹介した
‒VPLを用いたリアルタイムGI
‒VPL + interleaved sampling
‒パストレーシングを用いたインタラクティブGI
‒エリアライトへの拡張
‒GPUへの最適化
CLOSING
© 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.
 ARVO, J., AND KIRK, D. 1990. Particle transport and image synthesis. SIGGRAPH Comput. Graph. 24, 4, 63–66.
 ANDERSSON, J. 2011. Directx 11 rendering in Battlefield 3. In GDC ’11.
 HARADA, T., MCKEE, J., AND YANG, J. C. 2012. Forward+: Bringing deferred lighting to the next level. In Eurographics ’12 Short Papers.
 KELLER, A. 1997. Instant radiosity. In Proc. SIGGRAPH’97, 49–56.
 OLSSON, O., AND ASSARSSON, U. 2011. Tiled shading. J. Graph. GPU, and Game Tools, 235–251.
 OLSSON, O., BILLETER, M., AND ASSARSSON, U. 2012. Clustered deferred and forward shading. In HPG’12, 87–96.
 RITSCHEL T., EISEMANN E., HA I., KIM J. D., SEIDEL H.-P. 2011. Making imperfect shadow maps view-adaptive: High-quality global illumination in large dynamic scenes. Comput. Graph.
Forum 30, 8, 2258–2269.
 SADEGHI, I., CHEN, BIN., AND JENSEN, H. W. 2009. Coherent path tracing. Journal of Graphics, GPU, and Game Tools, 14, 2.
 SEGOVIA, B., IEHL, J. C., MITANCHEY, R., AND PE ROCHE, B. 2006. Non-interleaved deferred shading of interleaved sample patterns. In GH’06, 53–60.
 T. Hachisuka. 2013. Five common misconceptions about bias in light transport simulation.
 VEACH, E., AND GUIBAS, L. J. 1995. Optimally combining sampling techniques for Monte Carlo rendering. In SIGGRAPH ’95, 419–428.
 VITTER, J. S. 1985. Random sampling with a reservoir. ACM Trans. Math. Softw. 11, 1, 37–57.
 WALD I., KOLLIG T., BENTHIN C., KELLER A., SLUSALLEK P. 2002. Interactive global illumination using fast ray tracing. In EGWR’02, pp. 15–24. 2
 WALTER, B., FERNANDEZ, S., ARBREE, A., BALA, K., DONIKIAN, M., AND GREENBERG, D. P. 2005. Lightcuts: A scalable approach to illumination. ACM Trans. Graph. 24, 3, 1098–1107.
REFERENCES

More Related Content

What's hot

デジタルネイチャー研新入生課題サーベイまとめ
デジタルネイチャー研新入生課題サーベイまとめデジタルネイチャー研新入生課題サーベイまとめ
デジタルネイチャー研新入生課題サーベイまとめYukiZenimoto
 
CEDEC 2009 Imagire Day 続・レンダリスト養成講座
CEDEC 2009 Imagire Day 続・レンダリスト養成講座CEDEC 2009 Imagire Day 続・レンダリスト養成講座
CEDEC 2009 Imagire Day 続・レンダリスト養成講座Silicon Studio Corporation
 
3次元計測とフィルタリング
3次元計測とフィルタリング3次元計測とフィルタリング
3次元計測とフィルタリングNorishige Fukushima
 
Deep Learning Chapter12
Deep Learning Chapter12Deep Learning Chapter12
Deep Learning Chapter12Kei Uchiumi
 
機械学習向けCGデータの量産手法の検討
機械学習向けCGデータの量産手法の検討機械学習向けCGデータの量産手法の検討
機械学習向けCGデータの量産手法の検討Silicon Studio Corporation
 
CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~
CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~
CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~Silicon Studio Corporation
 
3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!
3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!
3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!Silicon Studio Corporation
 

What's hot (7)

デジタルネイチャー研新入生課題サーベイまとめ
デジタルネイチャー研新入生課題サーベイまとめデジタルネイチャー研新入生課題サーベイまとめ
デジタルネイチャー研新入生課題サーベイまとめ
 
CEDEC 2009 Imagire Day 続・レンダリスト養成講座
CEDEC 2009 Imagire Day 続・レンダリスト養成講座CEDEC 2009 Imagire Day 続・レンダリスト養成講座
CEDEC 2009 Imagire Day 続・レンダリスト養成講座
 
3次元計測とフィルタリング
3次元計測とフィルタリング3次元計測とフィルタリング
3次元計測とフィルタリング
 
Deep Learning Chapter12
Deep Learning Chapter12Deep Learning Chapter12
Deep Learning Chapter12
 
機械学習向けCGデータの量産手法の検討
機械学習向けCGデータの量産手法の検討機械学習向けCGデータの量産手法の検討
機械学習向けCGデータの量産手法の検討
 
CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~
CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~
CEDEC 2012 コンピュータ・グラフィクス関連の最新論文紹介~Modular Radiance Transfer法の解説~
 
3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!
3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!
3DCG住宅プレゼンテーションのグローバルイルミネーションをディープラーニングで推定!
 

Viewers also liked

[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow
[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow
[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering WorkflowTakahiro Harada
 
[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays
[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays
[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRaysTakahiro Harada
 
Physics Tutorial, GPU Physics (GDC2010)
Physics Tutorial, GPU Physics (GDC2010)Physics Tutorial, GPU Physics (GDC2010)
Physics Tutorial, GPU Physics (GDC2010)Takahiro Harada
 
Introduction to Monte Carlo Ray Tracing (CEDEC 2013)
Introduction to Monte Carlo Ray Tracing (CEDEC 2013)Introduction to Monte Carlo Ray Tracing (CEDEC 2013)
Introduction to Monte Carlo Ray Tracing (CEDEC 2013)Takahiro Harada
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Takahiro Harada
 
Introducing Firerender for 3DS Max
Introducing Firerender for 3DS MaxIntroducing Firerender for 3DS Max
Introducing Firerender for 3DS MaxTakahiro Harada
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Takahiro Harada
 
対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド
対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド
対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライドdoboncho
 
Foveated Ray Tracing for VR on Multiple GPUs
Foveated Ray Tracing for VR on Multiple GPUsFoveated Ray Tracing for VR on Multiple GPUs
Foveated Ray Tracing for VR on Multiple GPUsTakahiro Harada
 
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Takahiro Harada
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)
A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)
A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)Takahiro Harada
 
Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)
Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)
Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)Takahiro Harada
 
Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...
Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...
Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...Takahiro Harada
 
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)Takahiro Harada
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングSatoshi Kodaira
 
ラク(効率化)して作る! shurikenエフェクトのノウハウ。
ラク(効率化)して作る! shurikenエフェクトのノウハウ。ラク(効率化)して作る! shurikenエフェクトのノウハウ。
ラク(効率化)して作る! shurikenエフェクトのノウハウ。Takahiro Akiyama
 
レイトレ合宿4!? 実装紹介スライド
レイトレ合宿4!? 実装紹介スライドレイトレ合宿4!? 実装紹介スライド
レイトレ合宿4!? 実装紹介スライドHisanari Otsu
 

Viewers also liked (20)

[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow
[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow
[2017 GDC] Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow
 
[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays
[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays
[2016 GDC] Multiplatform GPU Ray-Tracing Solutions With FireRender and FireRays
 
Physics Tutorial, GPU Physics (GDC2010)
Physics Tutorial, GPU Physics (GDC2010)Physics Tutorial, GPU Physics (GDC2010)
Physics Tutorial, GPU Physics (GDC2010)
 
Introduction to Monte Carlo Ray Tracing (CEDEC 2013)
Introduction to Monte Carlo Ray Tracing (CEDEC 2013)Introduction to Monte Carlo Ray Tracing (CEDEC 2013)
Introduction to Monte Carlo Ray Tracing (CEDEC 2013)
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
 
Introducing Firerender for 3DS Max
Introducing Firerender for 3DS MaxIntroducing Firerender for 3DS Max
Introducing Firerender for 3DS Max
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)
 
対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド
対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド
対応点を用いないローリングシャッター歪み補正と 映像の安定化~並進から回転へスライド
 
Foveated Ray Tracing for VR on Multiple GPUs
Foveated Ray Tracing for VR on Multiple GPUsFoveated Ray Tracing for VR on Multiple GPUs
Foveated Ray Tracing for VR on Multiple GPUs
 
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)
A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)
A Parallel Constraint Solver for a Rigid Body Simulation (SIGGRAPH ASIA 2011)
 
Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)
Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)
Heterogeneous Particle based Simulation (SIGGRAPH ASIA 2011)
 
Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...
Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...
Using GPUs for Collision detection, Recent Advances in Real-Time Collision an...
 
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
 
Unity って何?
Unity って何?Unity って何?
Unity って何?
 
自由なデータ
自由なデータ自由なデータ
自由なデータ
 
ラク(効率化)して作る! shurikenエフェクトのノウハウ。
ラク(効率化)して作る! shurikenエフェクトのノウハウ。ラク(効率化)して作る! shurikenエフェクトのノウハウ。
ラク(効率化)して作る! shurikenエフェクトのノウハウ。
 
レイトレ合宿4!? 実装紹介スライド
レイトレ合宿4!? 実装紹介スライドレイトレ合宿4!? 実装紹介スライド
レイトレ合宿4!? 実装紹介スライド
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (10)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

確率的ライトカリング 理論と実装 (CEDEC2016)

  • 1. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. YUSUKE TOKUYOSHI (SQUARE ENIX CO., LTD.) TAKAHIRO HARADA (ADVANCED MICRO DEVICES, INC.) 確率的ライトカリング -理論と実装-
  • 2. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  数万の光源で照らされたシーンを比較的小さい誤差で描画する方法のご紹介 ‒論文: “Stochastic Light Culling” (http://jcgt.org/published/0005/01/02/)  GPU実装の解説 ‒リアルタイムレンダリング ‒オフラインパストレーシング  講演の対象者 ‒レンダリングの基礎知識をもっている人 ‒これからレンダリングの研究を始める人 本講演の目的
  • 3. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. VIDEO 間接照明(65536 virtual point lights) Resolution: 1920×1152, GPU: AMD RadeonTM R9 290X
  • 4. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ライトカリングの説明  確率的ライトカリング  間接照明のリアルタイム実装例  オフラインレンダリングへの応用 ‒パストレーシング用のカリングアルゴリズム ‒GPU実装 本日の流れ
  • 5. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. LIGHT CULLING
  • 6. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  光源が大量に存在 ‒自動生成される光源 ‒間接照明を表現するvirtual point lights (VPLs) [Keller97]  まじめにやると膨大な計算量 多光源レンダリング VPLsを使った間接照明の光路
  • 7. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  光源毎に光の影響範囲を制限  範囲外はシェーディングの対象外  光源を事前にカリングして高速化 ライトカリング 光源の影響範囲 光源を無視 (カリング可能) シェーディング対象 シェーディング点から遠い光源は寄与が小さいので無視
  • 8. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. TILE-BASED CULLING [Olsson11; Harada12]
  • 9. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. TILE-BASED CULLING [Olsson11; Harada12] 1 2 3
  • 10. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. TILE-BASED CULLING [Olsson11; Harada12] 1 2 3
  • 11. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. TILE-BASED CULLING [Olsson11; Harada12] 1 2 3 [1] [1,2,3] [2,3]
  • 12. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  光源から遠い所が暗くなる ‒実際の光は無限の影響範囲を持つ ‒物理ベースの光源を扱えない (e.g., VPLs)  光源が多いほど誤差(bias)が累積 問題点 影響範囲を制限 無限の影響範囲 65536 VPLs使った間接照明 光が届かない
  • 13. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  解に対する推定値の偏りを表す誤差  ライトカリングは全光源が暗めに偏っている  Biasのある推定が常に解に収束しないとは限らないが、この場合は収束しない BIAS
  • 14. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. STOCHASTIC LIGHT CULLING
  • 15. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  基本的にロシアンルーレット法[Arvo90]  光の影響範囲をランダムに変更 ‒遠い光源も低確率でサンプリング  Biasを分散(推定値のばらつきを表す誤差)に変える  光源数が多くなっても誤差が累積しない 手法の概要
  • 16. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  各光源を確率的に殺す  生存確率: シェーディング点から見た光源の明るさに比例  生き残った光源のエネルギーは生存確率で割る ロシアンルーレット法 生存確率: 𝑝𝑖 𝑙 = min 𝑓 𝑙 𝛼 𝑖 , 1 光源のfall-off関数: 𝑓 𝑙 = 1 𝑙2 ユーザー定義の係数 大きいほど死にやすい 光源までの距離
  • 17. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. 0 0.5 1 0 5 10 確率的FALL-OFF関数 Clamping Stochastic 0 0.5 1 0 5 10 乱数𝜉𝑖 𝛼𝑖 𝑟𝑖 𝑟𝑖 (光の影響範囲)(光の影響範囲) 𝑓̂ 𝑙 = � 𝑓 𝑙 = 1 𝑙2 𝑙 < 𝑟𝑖 0 otherwise 𝑓̂ 𝑙 = � 𝑓 𝑙 𝑝𝑖 𝑙 = max 𝛼𝑖, 1 𝑙2 𝑝𝑖 𝑙 > 𝜉𝑖 0 otherwise
  • 18. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. 確率的FALL-OFF関数 Clamping Stochastic 0 0.5 1 0 5 10𝑟𝑖 (光の影響範囲) 𝑓̂ 𝑙 = � 𝑓 𝑙 = 1 𝑙2 𝑙 < 𝑟𝑖 0 otherwise 0 0.5 1 0 5 10 乱数𝜉𝑖 𝛼𝑖 𝑟𝑖 (光の影響範囲) 𝑓̂ 𝑙 = � 𝑓 𝑙 𝑝𝑖 𝑙 = max 𝛼𝑖, 1 𝑙2 𝑝𝑖 𝑙 > 𝜉𝑖 0 otherwise
  • 19. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. 確率的FALL-OFF関数 Clamping Stochastic 0 0.5 1 0 5 10𝑟𝑖 (光の影響範囲) 𝑓̂ 𝑙 = � 𝑓 𝑙 = 1 𝑙2 𝑙 < 𝑟𝑖 0 otherwise 0 0.5 1 0 5 10 乱数𝜉𝑖 𝛼𝑖 𝑟𝑖 𝑓̂ 𝑙 = � 𝑓 𝑙 𝑝𝑖 𝑙 = max 𝛼𝑖, 1 𝑙2 𝑝𝑖 𝑙 > 𝜉𝑖 0 otherwise (光の影響範囲)
  • 20. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. ランダムな光の影響範囲 1 light
  • 21. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. ランダムな光の影響範囲 64 lights1 light
  • 22. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  シェーディング点毎に異なる光の影響範囲。事前にカリングできない  共通の範囲を使いたい ランダムな光の影響範囲 64 lights1 light
  • 23. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  シェーディング点毎に異なる光の影響範囲。事前にカリングできない  共通の範囲を使いたい  解決法: 全シェーディング点で同じ乱数を使用 ランダムな光の影響範囲 64 lights1 light
  • 24. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  シェーディング点毎に異なる光の影響範囲。事前にカリングできない  共通の範囲を使いたい  解決法: 全シェーディング点で同じ乱数を使用 ランダムな光の影響範囲 64 lights 1 light1 light
  • 25. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  シェーディング点毎に異なる光の影響範囲。事前にカリングできない  共通の範囲を使いたい  解決法: 全シェーディング点で同じ乱数を使用 ‒推定に偏りがあるように見えるかもしれないが、実は偏ってない ‒Unbiased coherent sampling ランダムな光の影響範囲 64 lights 1 light1 light
  • 26. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  シェーディング点毎に異なる光の影響範囲。事前にカリングできない  共通の範囲を使いたい  解決法: 全シェーディング点で同じ乱数を使用 ‒推定に偏りがあるように見えるかもしれないが、実は偏ってない ‒Unbiased coherent sampling ランダムな光の影響範囲 64 lights 64 lights1 light1 light
  • 27. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  関連研究 ‒Virtual point lights (VPLs) [Keller97] ‒Lightcuts [Walter05] ‒Coherent path tracing [Sadeghi09] UNBIASED COHERENT SAMPLING 複数のシェーディング点が同じサンプル光路(VPL)を共有
  • 28. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  関連研究 ‒Virtual point lights (VPLs) [Keller97] ‒Lightcuts [Walter05] ‒Coherent path tracing [Sadeghi09]  “分散 = 高周波ノイズ”とは限らない ‒明るい斑点模様 ‒フリッカリング UNBIASED COHERENT SAMPLING 複数のシェーディング点が同じサンプル光路(VPL)を共有
  • 29. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  関連研究 ‒Virtual point lights (VPLs) [Keller97] ‒Lightcuts [Walter05] ‒Coherent path tracing [Sadeghi09]  “分散 = 高周波ノイズ”とは限らない ‒明るい斑点模様 ‒フリッカリング ‒バンディングアーティファクト UNBIASED COHERENT SAMPLING 複数のシェーディング点が同じサンプル光路(VPL)を共有 Stochastic light culling 8 lights
  • 30. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  誤差が偏りなくばらつくこと  誤差が0に収束することは意味してない ‒よくある誤解のひとつ ‒T. Hachisuka. 2013. "Five Common Misconceptions about Bias in Light Transport Simulation"  あえて誤差を0に収束させないunbiasedな手法もある (e.g., lightcuts) ‒許容誤差量を設定して過剰な計算を省く ‒誤差は許容量以下になるが、0には収束しない ‒実用的 “UNBIASED”の意味
  • 31. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  分散の量を簡単にコントロール  VPLsではシェーディング対象の平均光源数がほぼ一定に収束  ユーザー定義の許容誤差量𝜖 𝑚𝑚𝑚から生存確率のパラメータ𝛼𝑖を計算 ‒拡散反射を仮定 ‒光源の放射強度𝐼 𝜔′ も低周波な分布を仮定 許容誤差量の設定 𝛼𝑖 = 2𝜋𝜖 𝑚𝑚𝑚 𝐸max 𝜔′ 𝐼 𝜔′ カメラの露出 VPLの場合、VPL数𝑁に反比例: 𝐼 𝜔′ ∝ 1 𝑁 𝑟𝑖 ∝ 1 𝑁 VPL数 Stochastic Clamping 同じ許容誤差でのライティング時間 (ms)
  • 32. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. 本手法の処理の流れ 許容誤差量から生存確率のパラメータ𝛼𝑖を計算 ロシアンルーレット法を基に光源の影響範囲𝑟𝑖を決定 (光源毎の処理) Light culling (既存手法) 既存手法と同じ方法でシェーディング計算 シェーディング結果を生存確率で割る Shading 赤字が新たに追加された処理 カリング手法に依存しない Splatting [Dachsbacher06] Tile-based culling [Olsson11; Harada12] Clustered shading [Olasson12] …etc.
  • 33. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. EXAMPLE IMPLEMENTATION OF REAL-TIME INDIRECT ILLUMINATION
  • 34. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  Reflective shadow maps (RSMs) [Dachsbacher05]  各テクセル = VPLs VIRTUAL POINT LIGHTS (VPLS)の生成 深度 法線 反射率 VPLの位置 VPLの放射強度の計算に使用
  • 35. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  論文ではRSMから重要なVPLを再サンプリングした  重要度: bidirectional RSM [Ritschel11]  速度優先なら、再サンプリングせず代わりに低解像度のRSMを使ってもいい RESAMPLING VPLS
  • 36. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ピクセル毎に異なる光源を使ってシェーディング [Wald02] ‒8×8ピクセルのサンプリングパターン → ピクセルあたりの光源数は1/64に  誤差(分散)は高周波ノイズとして画面に現れる  後処理でノイズ除去フィルタリング INTERLEAVED SAMPLING 8×8 interleaved sampling ノイズ除去
  • 37. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ピクセルに合わせてスレッドを割り当てるとdivergenceが発生  画面を8×8の部分領域にピクセルを並び替えて回避 [Segovia06] ‒部分領域内では同じ光源が使用される ‒Single passで実装 INTERLEAVED SAMPLINGのGPU実装 並び替え (ロード時) シェーディング 並び替え (ストア時) G-buffer 間接照明バッファ 拡大図
  • 38. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  Interleaved samplingと確率的ライトカリングの組み合わせ  並び替えた部分領域に対してtiled deferred shading [Andersson11] ‒部分領域あたりの光源数は1/64に減っている ‒さらに確率的にカリングしてピクセルあたりの光源数を減らす ライトカリングを適用
  • 39. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  Interleaved samplingと確率的ライトカリングの組み合わせ  並び替えた部分領域に対してtiled deferred shading [Andersson11] ‒部分領域あたりの光源数は1/64に減っている ‒さらに確率的にカリングしてピクセルあたりの光源数を減らす ライトカリングを適用
  • 40. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  Interleaved samplingと確率的ライトカリングの組み合わせ  並び替えた部分領域に対してtiled deferred shading [Andersson11] ‒部分領域あたりの光源数は1/64に減っている ‒さらに確率的にカリングしてピクセルあたりの光源数を減らす ライトカリングを適用
  • 41. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS フィルタリング前の間接照明成分 65536 VPLs, Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X Shading time: 44.4 ms Shading time: 2.87 ms Shading time: 2.87 ms w/o light culling Stochastic light culling Light culling with clamping ranges
  • 42. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS ノイズ除去フィルタリング、テクスチャ適用、直接照明追加 65536 VPLs, Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X Total rendering time: 48.5 ms RMSE: 0.0017 Total rendering time : 7.0 ms RMSE: 0.0026 Total rendering time : 7.0 ms RMSE: 0.0377 w/o light culling Stochastic light culling Light culling with clamping ranges
  • 43. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS 同じ計算時間での比較 1024 VPLs Stochastic light culling Light culling with clamping ranges Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X
  • 44. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS 同じ計算時間での比較 4096 VPLs Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X Stochastic light culling Light culling with clamping ranges
  • 45. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS 同じ計算時間での比較 16384 VPLs Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X Stochastic light culling Light culling with clamping ranges
  • 46. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS 同じ計算時間での比較 65536 VPLs Resolution: 1920×1152, 𝜖 𝑚𝑚𝑚 = 0.0005, GPU: AMD RadeonTM R9 290X Stochastic light culling Light culling with clamping ranges
  • 47. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  確率的ライトカリング ‒誤差を考慮したライトカリング ‒Biasを分散に変えて誤差を収束  リアルタイム実装 ‒カリング自体の実装に変更なし ‒Interleaved samplingと組み合わせると効果的  制限事項 ‒低周波のBRDFを仮定 ここまでのまとめ
  • 48. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. STOCHASTIC LIGHT CULLING FOR PROGRESSIVE PATH TRACING
  • 49. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. 1. イントロ ‒確率的ライトカリング + パストレーシング(ポイントライトのみ) 2. さらなる詳細 ‒ 確率的ライトカリング + パストレーシング(全部入り) 3. GPUでの実装  Demo time!! AGENDA
  • 50. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのシェーディング点において全てのライトからの寄与を求める  簡単ではない、計算コストが高い MANY LIGHT PROBLEM IN PATH TRACING 1.9M polys, 59,000 lights
  • 51. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのシェーディング点において全てのライトからの寄与を求める  手法として二つの可能性 1. それぞれのライトにおいて、一つ頂点をサンプリング ‒多くライトがあるシーンにおいて計算負荷が高い ‒1000ライトあれば、1000回シャドウレイをトレースしなければならない MANY LIGHT PROBLEM IN PATH TRACING
  • 52. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのシェーディング点において全てのライトからの寄与を求める  手法として二つの可能性 1. それぞれのライトにおいて、一つ頂点をサンプリング ‒多くライトがあるシーンにおいて計算負荷が高い ‒1000ライトあれば、1000回シャドウレイをトレースしなければならない 2. ライトを一つ選択し、一つ頂点をサンプリング ‒収束はライト選択する戦略に依存する ‒プログレッシブパストレーシングではより実用的 MANY LIGHT PROBLEM IN PATH TRACING
  • 53. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのシェーディング点において全てのライトからの寄与を求める  手法として二つの可能性 1. それぞれのライトにおいて、一つ頂点をサンプリング ‒多くライトがあるシーンにおいて計算負荷が高い ‒1000ライトあれば、1000回シャドウレイをトレースしなければならない ‒確率的ライトカリング => バイアスを加えることなくシャドウレイの数を減らす 2. ライトを一つ選択し、一つ頂点をサンプリング ‒収束はライト選択する戦略に依存する ‒プログレッシブパストレーシングではより実用的 MANY LIGHT PROBLEM IN PATH TRACING
  • 54. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのシェーディング点において ‒For 全てのライト (4ライト) ‒シャドウレイをトレース (visibility) ‒シェーディングし、寄与を足し合わせる W.O. STOCHASTIC LIGHT CULLING (POINT LIGHT)
  • 55. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. STOCHASTIC LIGHT CULLING (POINT LIGHT)  それぞれのシェーディング点において ‒For 全てのライト (4ライト) ‒If( !overlaps( ライトの影響範囲, 点 ) ) ‒ continue ‒シャドウレイをトレース (visibility) ‒シェーディングし、寄与を足し合わせる UNOPTIMIZED  ライトの影響範囲は全てのシェーディング点に対し て固定  それぞれの点に重なっているライトを代わりに見 つける方が効率的 Stochastic Light Culling
  • 56. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのシェーディング点において ‒For 重なっている ライト (1ライト) ‒ライト上の頂点を一つ選ぶ ‒シャドウレイをトレース (visibility) ‒シェーディングし、寄与を足し合わせる STOCHASTIC LIGHT CULLING (POINT LIGHT) OPTIMIZED Stochastic Light Culling
  • 57. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. STOCHASTIC LIGHT CULLING FOR POINT LIGHTS HitInfo hit = scene.intersect( from, to ); if( !hit.hasHit() ) continue; float4 hp = from + ( to - from ) * hit.m_f; // explicit connection for(int il=0; il<nLightSamples; il++) { const SampleInfo& l = ls[il]; float g = geomTerm( hp, hit.m_ns, l.m_x, l.m_n ); if( !scene.intersect( hp, l.m_x ).hasHit() ) { float4 f = scene.brdfEvaluate( hit.m_ns, m ); dst += f * l.m_le * g / l.m_pdfArea; } } DIRECT ILLUMINATION HitInfo hit = scene.intersect( from, to ); if( !hit.hasHit() ) continue; float4 hp = from + ( to - from ) * hit.m_f; // explicit connection (SLC) for(int il=0; il<nLightSamples; il++) { const SampleInfo& l = ls[il]; const float d2 = l2( hp - l.m_x ); if( SlcImpl::radius2( l.m_le, ALPHA, xi[il] ) < d2 ) continue; float g = geomTerm( hp, hit.m_ns, l.m_x, l.m_n ); if( !scene.intersect( hp, l.m_x ).hasHit() ) { float4 f = scene.brdfEvaluate( hit.m_ns, m ); float rrPdf = SlcImpl::computeRrPdf( hp, l, ALPHA ); dst += f * l.m_le * g / (l.m_pdfArea * rrPdf); } } PT (Base) PT + SLC
  • 58. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. class SlcImpl { public: static float computeRt( const float4& le, float alpha ) { return sqrtf( dot3F4( float4(0.33f,0.33f,0.33f), le ) * ( 1.f/(M_PI*alpha) ) ); } static float computeRrPdf( const float4& vtx, const float4& lvtx, const float4& le, float alpha ) { float d2 = dot3F4( vtx-lvtx, vtx-lvtx ); float r_t = computeRt( le, alpha ); if( d2 > r_t*r_t ) return r_t*r_t / d2; return 1.f; } static float radius2( float r_t, float xi ) { return ( r_t*r_t / (1.f-xi) ); } }; STOCHASTIC LIGHT CULLING CODE
  • 59. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. SPECIFICS FOR PATH TRACING
  • 60. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ポイントライトだけの説明をした  パストレーシングでは他にも様々なライトが使われる  ほとんどのライトはエリアライト ‒確率的ライトカリングはエリアライトに使える?? 様々なライトの種類 Area IES Spot Point 
  • 61. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ライトの影響範囲を計算する必要あり  どうやって?? エリアライトの影響範囲 Point light Area light
  • 62. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ライトの影響範囲を計算する必要あり  エリアライト == ポイントライトの集合  球をエッジ上で掃引したもの ‒簡単には求まらない エリアライトの影響範囲
  • 63. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ライトの影響範囲を計算する必要あり  エリアライト == ポイントライトの集合  Conservativeな影響範囲を計算 ‒一つの球として表現 ‒エリアライトの中心を求める ‒中心からエッジまでの最大距離(R) ‒球の半径を求める ‒R+r エリアライトの影響範囲 r R R Conservative bound
  • 64. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  カリングされる確率がはっきりと定義されている  MISを導入するのが容易 (implicit connection + explicit connection)  Implicit connectionにおいて、ライトサンプリングでの確率は ‒[pdf of sampling the light vertex] x [SLC (Russian Roulette) probability] MULTIPLE IMPORTANCE SAMPLING (MIS)
  • 65. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. BOUNDING SPHERE TREEを用いたカリング  フラスタムカリングを使うことができない ‒シェーディング点がスクリーンスペースに並んでいない ‒カメラから直接見える点は例外 ‒ランダムに分布したシェーディング点 ‒ => 一般的なカリング方法を用いる必要がある ‒Bounding sphere treeを用いた ‒BVHの一種
  • 66. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  それぞれのステップ(フレーム)において影響範囲が変わる  それぞれのステップ(フレーム)において完全に再構築することもできる  確率的ライトカリングのオーバーヘッドを減らすために、木構造は一度だけ計 算されて、その後はリフィットに止める BOUNDING SPHERE TREEを用いたカリング 実装 nth step n+1th step
  • 67. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS 収束の比較 ClampingStochastic Light CullingReference
  • 68. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS 収束の速さ比較(CPU実装、同じ計算時間での比較) Uniform sampling  Stochastic Light Culling  55,000 triangle lights, after 30s
  • 69. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. STOCHASTIC LIGHT CULLING ON GPU
  • 70. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  確率的ライトカリングはCPU実装ではとても良い  GPUで実装するときに少し注意が必要 1. Work item (thread) の発散 ‒シェーディングとビジビリティのテストをそれぞれのリーフノードにおいて行うとコード の発散がひどい 2. Memory使用量 ‒多くのWIが並列に走っている ‒それぞれのWIで必要なメモリ量が少なくても、多くのWIだと問題になる ‒[# of lights] x [# of WIs] CHALLENGES
  • 71. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. IMPROVING TREE TRAVERSAL & SHADING  BVH巡回  リーフノードでシェーディング WORK ITEM DIVERGENCE while( nodeIdx ) { Node node = getNode( nodeIdx ); if( hit( node, ray ) ) { if( isLeaf( node ) ) { Ray shadowRay = createRay( node, ray ); if( !intersect( shadowRay) ) { pixel += shade( node, ray ); } nodeIdx = node.m_next; } else { nodeIdx = node.m_child; } } else { nodeIdx = node.m_next; } } Expensive computation deep in branches => Very bad
  • 72. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. IMPROVING TREE TRAVERSAL & SHADING  ツリー巡回しているときに、シェー ディングを行わないためには、ライ トの番号をバッファに保持し、後で シェーディングをする WORK ITEM DIVERGENCE while( nodeIdx ) { Node node = getNode( nodeIdx ); if( hit( node, ray ) ) { if( isLeaf( node ) ) { Ray shadowRay = createRay( node, ray ); if( !intersect( shadowRay) ) { pixel += shade( node, ray ); } nodeIdx = node.m_next; } else { nodeIdx = node.m_child; } } else { nodeIdx = node.m_next; } } Expensive computation deep in branches => Very bad
  • 73. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. IMPROVING TREE TRAVERSAL & SHADING  ツリー巡回しているときに、シェー ディングを行わないためには、ライ トの番号をバッファに保持し、後で シェーディングをする  ツリー巡回中の発散は解決したが ‒シェーダー実行の時間がばらつく (ray cast + shade) ‒ライトの番号を蓄えるバッファが大き すぎる (# of lights x # of WIs) MEMORY FOOTPRINT while( nodeIdx ) { Node node = getNode( nodeIdx ); if( hit( node, ray ) ) { if( isLeaf( node ) ) { hitList[nHits++] = nodeIdx; nodeIdx = node.m_next; } else { nodeIdx = node.m_child; } } else { nodeIdx = node.m_next; } } for(i=0; i<nHits; i++) { Node node = getNode( hitList[i] ); Ray shadowRay = createRay( node, ray ); if(!intersect( shadowRay) ) { pixel += shade( node, ray ); } } Isolate expensive computation Loop over nHits, which varies a lot => Bad
  • 74. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. IMPROVING TREE TRAVERSAL & SHADING  ツリー巡回中の発散は解決したが ‒ライトの番号を蓄えるバッファが大き すぎる ‒=> 最大k個のライトだけを蓄える ‒=> 最大k回のシェーディングを行う  リザーバサンプリング ‒全ての候補を蓄えずに最大k個を選 択することができる RESERVOIR SAMPLING while( nodeIdx ) { Node node = getNode( nodeIdx ); if( hit( node, ray ) ) { if( isLeaf( node ) ) { resevoirSampling( hitList, nodeIdx ); nodeIdx = node.m_next; } else { nodeIdx = node.m_child; } } else { nodeIdx = node.m_next; } } for(i=0; i<resevoirMax; i++) { if( nHits <= i ) continue; Node node = getNode( hitList[i] ); Ray shadowRay = createRay( node, ray ); if(!intersect( shadowRay) ) { pixel += shade( node, ray ); } } Loop at most reservoirMax (constant) => Good 
  • 75. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  前処理としてツリーはCPUで構築して、GPUに転送  複数のカーネルを実行してリフィット  それぞれのカーネルで1レベル、リフィット  for それぞれのツリーの深さ: ‒リフィットのカーネルを実行 BOUNDING SPHERE TREE REFIT __kernel void RefitOneLevelKernel( GLOBAL(BSTreeNode) gTree, GLOBAL(u32) gLevels, int cb_n, int cb_level ) { int gIdx = GET_GLOBAL_IDX; if( gIdx >= cb_n ) return; if( gLevels[gIdx] != cb_level ) return; int nodeIdx = gIdx; BSTreeNode* dst = &gTree[nodeIdx]; u32 c0 = dst->m_child0; u32 c1 = dst->m_child1; float4 v0 = gTree[ c0 ].m_volume; float4 v1 = gTree[ c1 ].m_volume; mergeChildVolumes( dst ); }
  • 76. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS Uniform Sampling (RSME:0.0749) Stochastic Light Culling (RSME:0.0464) 5,000 triangle lights, after 2min
  • 77. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved. RESULTS Uniform Sampling (RSME:0.0355) Stochastic Light Culling (RSME:0.0203) 59,000 triangle lights, after 2min
  • 78. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  Do we have time?? DEMO TIME!!
  • 79. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  確率的ライトカリングを紹介した ‒バイアスを加えないライトカリング  二つの応用例を紹介した ‒VPLを用いたリアルタイムGI ‒VPL + interleaved sampling ‒パストレーシングを用いたインタラクティブGI ‒エリアライトへの拡張 ‒GPUへの最適化 CLOSING
  • 80. © 2016 SQUARE ENIX CO., LTD. and Advanced Micro Devices Inc. All Rights Reserved.  ARVO, J., AND KIRK, D. 1990. Particle transport and image synthesis. SIGGRAPH Comput. Graph. 24, 4, 63–66.  ANDERSSON, J. 2011. Directx 11 rendering in Battlefield 3. In GDC ’11.  HARADA, T., MCKEE, J., AND YANG, J. C. 2012. Forward+: Bringing deferred lighting to the next level. In Eurographics ’12 Short Papers.  KELLER, A. 1997. Instant radiosity. In Proc. SIGGRAPH’97, 49–56.  OLSSON, O., AND ASSARSSON, U. 2011. Tiled shading. J. Graph. GPU, and Game Tools, 235–251.  OLSSON, O., BILLETER, M., AND ASSARSSON, U. 2012. Clustered deferred and forward shading. In HPG’12, 87–96.  RITSCHEL T., EISEMANN E., HA I., KIM J. D., SEIDEL H.-P. 2011. Making imperfect shadow maps view-adaptive: High-quality global illumination in large dynamic scenes. Comput. Graph. Forum 30, 8, 2258–2269.  SADEGHI, I., CHEN, BIN., AND JENSEN, H. W. 2009. Coherent path tracing. Journal of Graphics, GPU, and Game Tools, 14, 2.  SEGOVIA, B., IEHL, J. C., MITANCHEY, R., AND PE ROCHE, B. 2006. Non-interleaved deferred shading of interleaved sample patterns. In GH’06, 53–60.  T. Hachisuka. 2013. Five common misconceptions about bias in light transport simulation.  VEACH, E., AND GUIBAS, L. J. 1995. Optimally combining sampling techniques for Monte Carlo rendering. In SIGGRAPH ’95, 419–428.  VITTER, J. S. 1985. Random sampling with a reservoir. ACM Trans. Math. Softw. 11, 1, 37–57.  WALD I., KOLLIG T., BENTHIN C., KELLER A., SLUSALLEK P. 2002. Interactive global illumination using fast ray tracing. In EGWR’02, pp. 15–24. 2  WALTER, B., FERNANDEZ, S., ARBREE, A., BALA, K., DONIKIAN, M., AND GREENBERG, D. P. 2005. Lightcuts: A scalable approach to illumination. ACM Trans. Graph. 24, 3, 1098–1107. REFERENCES