SlideShare a Scribd company logo
1 of 50
Download to read offline
Ola Olsson
Markus Billeter
Ulf Assarsson
Chalmers University ofTechnology
1
CG 論文講読会 2013 / 5 / 20
Ryo Suzuki
HPG 2012
 類似するプロパティを持つ view sample を
Cluster にグループ化してシェーディング
 Tiled Shading より効率的に光源を割り当て、ラ
イティングのコストを大幅に削減
 Tiled Shading が苦手とする深度が不連続で高周
波なシーンに強い
 従来手法より 2 - 3 桁大きい数の光源(最大
100万個)がリアルタイムで可能
2
 近年 Tiled Shading への注目が高まっている
 Tiled Deferred Shading は PC /PS3 /
Xbox360 で実装されている
 演算コストと引き換えに、Deferred Shading
の帯域幅のボトルネックを緩和する
 帯域幅に比べ、大きな演算性能を持つ最新のコ
ンソールやハイエンドの GPU にとって効率的
3
 Frosbite 2 Engine
4
http://www.slideshare.net/DICEStudio/spubased-deferred-shading-in-battlefield-3-for-playstation-3
 Tiled Shading ではスクリーン空間の矩形タイル
でグループを作り、各タイルの最大・最小の
depth で錘台を定義して光源をカリング
 互いに近い depth を持つ面のタイルは小さな
Bounding Volume で表現できる
5
+Z
 depth が不連続なタイルでは光源カリングの効
率が低下
6
+Z
 より高次元のタイル = Cluster を導入
 Cluster は最大サイズが固定されていて、
ビューに依存したワーストケースが存在しない
 Deferred と Forward 両方で実装可能
7
 Cluster を拡張して法線情報を付与し、Cluster
ごとに光源の背面カリングをすることも可能
 光源割り当てを階層化し、大量の光源を堅牢に
サポート
 リアルタイムで最大 100 万光源
8
Deferred Shading
 1988 年にハードウェアデザインとして発表さ
れる
 1990 年に G-buffer を使ったより汎用的な手法
が登場
 ジオメトリとライティングの処理を分離し、大
量の光源の管理を単純化
 ハードウェア性能が向上し、ここ数年で主流に
9
Tiled Shading
 Deferred Shading をベースに、帯域幅のボトル
ネックに対処
 帯域幅が狭いコンソール機での AAA タイトル
開発における重要なアルゴリズムに
 GPU はメモリ帯域幅に比べて演算性能の向上が
早いため、将来世代の GPU にもうまくスケール
10
 どのように Cluster を作るか
 ある view sample がどの Cluster に属している
かを調べる方法
11
 Resolution Matched Shadow Maps (RMSM) では、
view sample がどの shadow page に属するかの
判断が必要
 スクリーン空間の coherency を利用して、近
傍ピクセルの重複したリクエストを削減
 残ったリクエストをソート・圧縮し、グローバ
ルで unique なリクエストを構築
12
 Compress-Sort-Decompress (CSD) では、フ
レームバッファを 1D 配列と見なし、ソートの
前にランレングス圧縮で重複を削減
 RMSM と CSD のどちらも、隣接した要素の
coherency に依存
 合理的な仮定だが coherency が低いシーンで
は、フレームバッファ全体のソートと変わらな
くなる
13
 ページテーブルを使う
 Virtual Textures 周辺の技術 [May10],
[HPLdW10]
 unique なシェーディングサンプル決定の手法
[LD12]
 シーンの coherency に依存せず、重複リクエ
ストを削減可能
14
1. シーンを G-Buffer にレンダリング
2. Cluster を割り当てる
3. 同一の Cluster を探す
4. Cluster に光源を割り当てる
5. サンプルのシェーディング
15
 1. シーンを G-Buffer にレンダリング
 従来の Deferred Shading や Tiled Deferred Shading
と同じ
 2. Cluster を割り当てる
 各ピクセルがどのクラスタに属するかを、座標(と必
要に応じて法線)から計算
 3. 同一の Cluster を探す
 unique な Cluster のリストを構築
16
 4. Cluster に光源を割り当てる
 どの光源が Cluster に影響しているかを効率的に探索
し、Cluster ごとに光源リストを作成
 5. サンプルのシェーディング
 サンプルが属する Cluster の光源リストを使って
シェーディング
17
 理想
 影響する光源が少ない、空間的に小さな Cluster
 効率のために Cluster 内にできるだけ多くのサンプル
 Cluster Key はできるだけ少ないビット数
18
 ワールド空間に一様なグリッドは?
 Cluster Key の計算が高速、すべての Cluster が同じ
サイズ
 しかし
 シーンに応じて適切なグリッドサイズを手作業で調整
する必要
 Cluster Key の表現に大きなビット数
 遠くの Cluster はスクリーン上では小さく、パフォー
マンスが低下
19
 Tiled Deferred Shading と同じスクリーン空間
のタイリングに、ビュー空間の z 軸に従った分
割を加える
 ワールド空間で見ると、視錘台を分割する小さ
な錘台の集まりができる
20
Z 軸の分割方法
 正規化されたデバイス座標を均等に分割?
・・非均一
 ビュー空間の座標を均等に分割?
・・遠くの Cluster が幅広く平ら
21
Z 軸の分割方法
 ビュー空間の z 座標を指数関数的に分割
 どの Cluster もなるべく立方体になるよう相似な分割
22
23
Sy : スクリーンの Y 方向の分割数
2θ : FOV
 スクリーン空間の座標 (xss,yss) , ビュー空間の
depth (zvs) , タイルサイズ(tx,ty) , (2) 式を使っ
て Cluster Key となるタプル (i,j,k) を計算
 (i,j) = (xss/tx, yss/ty)
 必要に応じて、量子化した法線を追加
24
 2 つのオプション
1. ソート
2. ページテーブル
25
(オプション 1) ソート
 各タイルでローカルにソート
 並列処理で圧縮して unique なクラスタを抽出、
グローバルに unique な Cluster のリストを構築
 各ピクセルに、Cluster のインデックスを保存
26
(オプション 2) ページテーブル
 Virtual Texture の手法を利用
 仮想マッピングを使い、Cluster Key が必要とす
るストレージに物理メモリの割り当てを行う
 詳細な実装は [LSK*06]
27
 ソート、ページテーブルどちらの手法でも、
Cluster Key から 3D Bound (と法線情報があ
れば Normal Cone) を定義できる
 実際の view sample の位置や法線はより小さな
bound を持つため、さらに縮小した explicit な
3D Bound や Normal Cone を計算してもよい
 ただし、ページテーブルではアトミックな演算
が多く、実装しなかった
28
 各 Cluster に影響を与える光源のリストを作成
 従来の Tiled Deferrd Shading では全般的に総当
たりの実装
 本手法では、大量の光源と Cluster 数の動的変
化を堅牢にサポートするためにツリーを使った
階層的なアプローチ
 中心座標をもとに光源を z 軸に従ってソートし
て Bounding Volume Hierarchy (BVH) を構築
29
http://www.vis.uni-stuttgart.de/~frisch/h/diss.htm
 探索木のリーフノードはソートされたデータか
ら直接取得
 32 個の連続したノードを AABB でグループ化
し 、1 つ上のレベルのノードを構築、単一の
ルートノードが残るまで繰り返す
 深さ優先でトラバース、各レベルで Cluster と
子ノードの bounding テスト
 リーフノードにおいて光源の bounding sphere
とテスト
30
 Cluster に法線情報を持たせていたら、光源の
背面カリングができる
 ω>π/2+α+δ のときカリング
31
cone(青) : Normal Cone
α : Cluster から導出、または保存されている
cone(破線) : Cluster を包含する円錐
cone(赤) : cone(破線) と幾何学的に等しい
δ : cone(破線) から導出
 ソートの手法では、各ピクセルに保存した
unique な Cluster のインデックスを利用
 ページテーブルの手法では、Cluster のイン
デックスを Cluster Key の保存に使われる物理
メモリの位置に保存するので、Cluster Key か
ら Cluster のインデックスを得ることができる
32
 OpenGL と CUDA でいくつかの種類を実装
 Clustered Deferred[NkX][En][Eb][Pt]
▪ Nk[X] : X×X 分割した立方体の面を使った法線情報を付加 / En : explicit な
normal cone を使う / Eb : explicit な 3D AABB bound を使う / Pt : ページ
テーブルを使う
 Clustered Forward
 Deferred
▪ ステンシルバッファによる最適化を実装、各サンプルへの光源割り当てが正
確になっている
 Tiled Deferred
 Tiled Deferred En
▪ normal cone を各タイルで計算
 Tiled Forward
33
 Cluster Key
 (i,j) : スクリーン空間でのタイル位置のオフセット
 タイルサイズが 32x32 なら、最大 8192x8192 のレンダーターゲットに対応
 k : depth のインデックス
 normal : 法線(オプション) 6bit なら
各面 3x3 に分割した立方体をサポート
34
8 bits 8 bits 10 bits (6 bits)
i j k normal
 Cluster Key (10 – 16bit) に、タイル内でのサンプル位
置を示す meta データ (32x32 タイルでは 10bit)を付
加し、 タイル内でローカルにソート
 グローバルで unique な Cluster Key の総数を求め、各
Cluster に unique ID [0 .. numClusters) をセット
 unique ID を Cluster メンバーの各ピクセルに書き込む
35
8 bits 8 bits 10 bits (6 bits) 10 bits
i j k normal meta
 3D Bound と Normal Cone は Cluster Key から
再構築可能
 必要に応じて、より縮小した AABB や normal
cone を保存する
 Explicit Bounds
 Explicit Normal Cone
 より高効率なカリングが可能に
36
 2-pass アプローチ
 並列 Prefix Sum を使って物理メモリを割り当
て、Cluster Key を保存
 シングルパスでの物理メモリの割り当てだと遅
かった。将来のハードウェアでは高速化の余地
37
 光源の探索木を毎フレーム構築
 Thurst[HB10] による効率的なソートを使用
 ツリー構築で CUDA warp (32 スレッド) を実行
 出力ノードが 32 個なのでトラバースでも CUDA
warp が役立つ
 最大深さが 5 レベルなら、再帰が発生する CUDA
の実装を回避できる
 5 レベルでは最大 3300 万の光源をサポート
38
 シーン 1 : Necropolis
 点光源を発射する大砲を設置
 最大 2500 光源
 シーンの端から端へカメラ移動
 シーン 2 : Sponza
 木のセットを設置
 1 万のランダムな光源
39
 シーン 1 : Necropolis の各フレームのライティ
ング計算回数
40
 シーン 1 : Necropolis の各フレームのレンダリ
ング時間
41
 シーン 2 : Sponza のライティング計算回数
 Tiled Shading はおよそ 90M 回になるのでグラフから除外
42
 シーン 2 : Sponza のレンダリング時間の内訳
 Deferred (97.1ms), Tiled Forward (23.6ms) はグラフから除外
43
 シーン 2 : Sponza の光源数とレンダリング時間
44
 Cluster や Tile に光源を割り当てる時間
45
 Clustered Shading は位置と任意で法線を使い、
類似した view sample を Cluster にグループ
化、Cluster に影響する光源のみ計算を行う
 Tiled Shading に比べ Cluster は小さく、光源の
影響は少なくなる
 Cluster の法線情報を光源の背面カリングに使
用可能
46
 ビューの状態変化に対する堅牢性が得られる
 Clustered Deferred / Clustered Forward どち
らもリアルタイムで 100 万光源が可能
 クラスタリングのコストは小さく、光源が少な
いシーンでも従来手法に匹敵するパフォーマン
ス
47
 Cluster 内のすべてのサンプルが特定の光源か
らおよそ等しく影響を受けているかをヒューリ
スティックに判断し、ライティングのコストを
削減
 簡単なテストでは、わずかな計算コストで最大
20 % ライティング計算を削減
 微細なアーティファクト、より高品質な近似を
 スペキュラのために、Cluster に平均輝度の情
報を付与?
48
 より複雑なシェーディングとの組み合わせ
 Clustered Shading は Tiled Shading に比べて
シェーディングコストが小さいので、シェーダ
の複雑さの増加に強い
49
50

More Related Content

What's hot

UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!com044
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式康弘 等々力
 
CatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメント
CatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメントCatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメント
CatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメントYoshiomi Kure
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことSatoshi Kodaira
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニックUnityTechnologiesJapan002
 
輪読発表資料: 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
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドToshiyasu Miyabe
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTERNPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTERエピック・ゲームズ・ジャパン Epic Games Japan
 
GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告t h
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingElectronic Arts / DICE
 
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクスUnite2017Tokyo
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonAMD Developer Central
 

What's hot (20)

UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!UE4でTranslucencyやUnlitに影を落としたい!
UE4でTranslucencyやUnlitに影を落としたい!
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式
 
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
 
CatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメント
CatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメントCatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメント
CatchUp! 謎だらけのゲーム開発 vol.02 カラーマネージメント
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
 
輪読発表資料: 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
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
 
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらいCEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTERNPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
 
GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
 
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
【Unite 2017 Tokyo】Unityで楽しむノンフォトリアルな絵づくり講座:トゥーンシェーダー・マニアクス
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
 
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
 

Similar to CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"

Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないことHopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないことNVIDIA Japan
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介Hiroki Nakahara
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法Takeshi Yamamuro
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)MasanoriSuganuma
 
研究内容 カタログマイニング
研究内容 カタログマイニング研究内容 カタログマイニング
研究内容 カタログマイニングShogo Tabata
 
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...MasanoriSuganuma
 
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...MasanoriSuganuma
 
Ibisml2011 06-20
Ibisml2011 06-20Ibisml2011 06-20
Ibisml2011 06-20Yasuo Tabei
 

Similar to CG 論文講読会 2013/5/20 "Clustered deferred and forward shading" (11)

Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないことHopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないこと
 
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
 
Halide for Memory
Halide for MemoryHalide for Memory
Halide for Memory
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
 
FPGAX2019
FPGAX2019FPGAX2019
FPGAX2019
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
 
研究内容 カタログマイニング
研究内容 カタログマイニング研究内容 カタログマイニング
研究内容 カタログマイニング
 
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
 
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
 
Ibisml2011 06-20
Ibisml2011 06-20Ibisml2011 06-20
Ibisml2011 06-20
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 

More from Ryo Suzuki

Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
Processingによるプログラミング入門 第6回
Processingによるプログラミング入門 第6回Processingによるプログラミング入門 第6回
Processingによるプログラミング入門 第6回Ryo Suzuki
 
Processingによるプログラミング入門 第5回
Processingによるプログラミング入門 第5回Processingによるプログラミング入門 第5回
Processingによるプログラミング入門 第5回Ryo Suzuki
 
Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回Ryo Suzuki
 
Processingによるプログラミング入門 第3回
Processingによるプログラミング入門 第3回Processingによるプログラミング入門 第3回
Processingによるプログラミング入門 第3回Ryo Suzuki
 
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回Ryo Suzuki
 
Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回Ryo Suzuki
 
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"Ryo Suzuki
 

More from Ryo Suzuki (10)

Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
Processingによるプログラミング入門 第6回
Processingによるプログラミング入門 第6回Processingによるプログラミング入門 第6回
Processingによるプログラミング入門 第6回
 
Processingによるプログラミング入門 第5回
Processingによるプログラミング入門 第5回Processingによるプログラミング入門 第5回
Processingによるプログラミング入門 第5回
 
Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回
 
Processingによるプログラミング入門 第3回
Processingによるプログラミング入門 第3回Processingによるプログラミング入門 第3回
Processingによるプログラミング入門 第3回
 
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回
 
Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回Processing によるプログラミング入門 第1回
Processing によるプログラミング入門 第1回
 
Kinect 入門
Kinect 入門Kinect 入門
Kinect 入門
 
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
 

CG 論文講読会 2013/5/20 "Clustered deferred and forward shading"

  • 1. Ola Olsson Markus Billeter Ulf Assarsson Chalmers University ofTechnology 1 CG 論文講読会 2013 / 5 / 20 Ryo Suzuki HPG 2012
  • 2.  類似するプロパティを持つ view sample を Cluster にグループ化してシェーディング  Tiled Shading より効率的に光源を割り当て、ラ イティングのコストを大幅に削減  Tiled Shading が苦手とする深度が不連続で高周 波なシーンに強い  従来手法より 2 - 3 桁大きい数の光源(最大 100万個)がリアルタイムで可能 2
  • 3.  近年 Tiled Shading への注目が高まっている  Tiled Deferred Shading は PC /PS3 / Xbox360 で実装されている  演算コストと引き換えに、Deferred Shading の帯域幅のボトルネックを緩和する  帯域幅に比べ、大きな演算性能を持つ最新のコ ンソールやハイエンドの GPU にとって効率的 3
  • 4.  Frosbite 2 Engine 4 http://www.slideshare.net/DICEStudio/spubased-deferred-shading-in-battlefield-3-for-playstation-3
  • 5.  Tiled Shading ではスクリーン空間の矩形タイル でグループを作り、各タイルの最大・最小の depth で錘台を定義して光源をカリング  互いに近い depth を持つ面のタイルは小さな Bounding Volume で表現できる 5 +Z
  • 7.  より高次元のタイル = Cluster を導入  Cluster は最大サイズが固定されていて、 ビューに依存したワーストケースが存在しない  Deferred と Forward 両方で実装可能 7
  • 8.  Cluster を拡張して法線情報を付与し、Cluster ごとに光源の背面カリングをすることも可能  光源割り当てを階層化し、大量の光源を堅牢に サポート  リアルタイムで最大 100 万光源 8
  • 9. Deferred Shading  1988 年にハードウェアデザインとして発表さ れる  1990 年に G-buffer を使ったより汎用的な手法 が登場  ジオメトリとライティングの処理を分離し、大 量の光源の管理を単純化  ハードウェア性能が向上し、ここ数年で主流に 9
  • 10. Tiled Shading  Deferred Shading をベースに、帯域幅のボトル ネックに対処  帯域幅が狭いコンソール機での AAA タイトル 開発における重要なアルゴリズムに  GPU はメモリ帯域幅に比べて演算性能の向上が 早いため、将来世代の GPU にもうまくスケール 10
  • 11.  どのように Cluster を作るか  ある view sample がどの Cluster に属している かを調べる方法 11
  • 12.  Resolution Matched Shadow Maps (RMSM) では、 view sample がどの shadow page に属するかの 判断が必要  スクリーン空間の coherency を利用して、近 傍ピクセルの重複したリクエストを削減  残ったリクエストをソート・圧縮し、グローバ ルで unique なリクエストを構築 12
  • 13.  Compress-Sort-Decompress (CSD) では、フ レームバッファを 1D 配列と見なし、ソートの 前にランレングス圧縮で重複を削減  RMSM と CSD のどちらも、隣接した要素の coherency に依存  合理的な仮定だが coherency が低いシーンで は、フレームバッファ全体のソートと変わらな くなる 13
  • 14.  ページテーブルを使う  Virtual Textures 周辺の技術 [May10], [HPLdW10]  unique なシェーディングサンプル決定の手法 [LD12]  シーンの coherency に依存せず、重複リクエ ストを削減可能 14
  • 15. 1. シーンを G-Buffer にレンダリング 2. Cluster を割り当てる 3. 同一の Cluster を探す 4. Cluster に光源を割り当てる 5. サンプルのシェーディング 15
  • 16.  1. シーンを G-Buffer にレンダリング  従来の Deferred Shading や Tiled Deferred Shading と同じ  2. Cluster を割り当てる  各ピクセルがどのクラスタに属するかを、座標(と必 要に応じて法線)から計算  3. 同一の Cluster を探す  unique な Cluster のリストを構築 16
  • 17.  4. Cluster に光源を割り当てる  どの光源が Cluster に影響しているかを効率的に探索 し、Cluster ごとに光源リストを作成  5. サンプルのシェーディング  サンプルが属する Cluster の光源リストを使って シェーディング 17
  • 18.  理想  影響する光源が少ない、空間的に小さな Cluster  効率のために Cluster 内にできるだけ多くのサンプル  Cluster Key はできるだけ少ないビット数 18
  • 19.  ワールド空間に一様なグリッドは?  Cluster Key の計算が高速、すべての Cluster が同じ サイズ  しかし  シーンに応じて適切なグリッドサイズを手作業で調整 する必要  Cluster Key の表現に大きなビット数  遠くの Cluster はスクリーン上では小さく、パフォー マンスが低下 19
  • 20.  Tiled Deferred Shading と同じスクリーン空間 のタイリングに、ビュー空間の z 軸に従った分 割を加える  ワールド空間で見ると、視錘台を分割する小さ な錘台の集まりができる 20
  • 21. Z 軸の分割方法  正規化されたデバイス座標を均等に分割? ・・非均一  ビュー空間の座標を均等に分割? ・・遠くの Cluster が幅広く平ら 21
  • 22. Z 軸の分割方法  ビュー空間の z 座標を指数関数的に分割  どの Cluster もなるべく立方体になるよう相似な分割 22
  • 23. 23 Sy : スクリーンの Y 方向の分割数 2θ : FOV
  • 24.  スクリーン空間の座標 (xss,yss) , ビュー空間の depth (zvs) , タイルサイズ(tx,ty) , (2) 式を使っ て Cluster Key となるタプル (i,j,k) を計算  (i,j) = (xss/tx, yss/ty)  必要に応じて、量子化した法線を追加 24
  • 25.  2 つのオプション 1. ソート 2. ページテーブル 25
  • 26. (オプション 1) ソート  各タイルでローカルにソート  並列処理で圧縮して unique なクラスタを抽出、 グローバルに unique な Cluster のリストを構築  各ピクセルに、Cluster のインデックスを保存 26
  • 27. (オプション 2) ページテーブル  Virtual Texture の手法を利用  仮想マッピングを使い、Cluster Key が必要とす るストレージに物理メモリの割り当てを行う  詳細な実装は [LSK*06] 27
  • 28.  ソート、ページテーブルどちらの手法でも、 Cluster Key から 3D Bound (と法線情報があ れば Normal Cone) を定義できる  実際の view sample の位置や法線はより小さな bound を持つため、さらに縮小した explicit な 3D Bound や Normal Cone を計算してもよい  ただし、ページテーブルではアトミックな演算 が多く、実装しなかった 28
  • 29.  各 Cluster に影響を与える光源のリストを作成  従来の Tiled Deferrd Shading では全般的に総当 たりの実装  本手法では、大量の光源と Cluster 数の動的変 化を堅牢にサポートするためにツリーを使った 階層的なアプローチ  中心座標をもとに光源を z 軸に従ってソートし て Bounding Volume Hierarchy (BVH) を構築 29 http://www.vis.uni-stuttgart.de/~frisch/h/diss.htm
  • 30.  探索木のリーフノードはソートされたデータか ら直接取得  32 個の連続したノードを AABB でグループ化 し 、1 つ上のレベルのノードを構築、単一の ルートノードが残るまで繰り返す  深さ優先でトラバース、各レベルで Cluster と 子ノードの bounding テスト  リーフノードにおいて光源の bounding sphere とテスト 30
  • 31.  Cluster に法線情報を持たせていたら、光源の 背面カリングができる  ω>π/2+α+δ のときカリング 31 cone(青) : Normal Cone α : Cluster から導出、または保存されている cone(破線) : Cluster を包含する円錐 cone(赤) : cone(破線) と幾何学的に等しい δ : cone(破線) から導出
  • 32.  ソートの手法では、各ピクセルに保存した unique な Cluster のインデックスを利用  ページテーブルの手法では、Cluster のイン デックスを Cluster Key の保存に使われる物理 メモリの位置に保存するので、Cluster Key か ら Cluster のインデックスを得ることができる 32
  • 33.  OpenGL と CUDA でいくつかの種類を実装  Clustered Deferred[NkX][En][Eb][Pt] ▪ Nk[X] : X×X 分割した立方体の面を使った法線情報を付加 / En : explicit な normal cone を使う / Eb : explicit な 3D AABB bound を使う / Pt : ページ テーブルを使う  Clustered Forward  Deferred ▪ ステンシルバッファによる最適化を実装、各サンプルへの光源割り当てが正 確になっている  Tiled Deferred  Tiled Deferred En ▪ normal cone を各タイルで計算  Tiled Forward 33
  • 34.  Cluster Key  (i,j) : スクリーン空間でのタイル位置のオフセット  タイルサイズが 32x32 なら、最大 8192x8192 のレンダーターゲットに対応  k : depth のインデックス  normal : 法線(オプション) 6bit なら 各面 3x3 に分割した立方体をサポート 34 8 bits 8 bits 10 bits (6 bits) i j k normal
  • 35.  Cluster Key (10 – 16bit) に、タイル内でのサンプル位 置を示す meta データ (32x32 タイルでは 10bit)を付 加し、 タイル内でローカルにソート  グローバルで unique な Cluster Key の総数を求め、各 Cluster に unique ID [0 .. numClusters) をセット  unique ID を Cluster メンバーの各ピクセルに書き込む 35 8 bits 8 bits 10 bits (6 bits) 10 bits i j k normal meta
  • 36.  3D Bound と Normal Cone は Cluster Key から 再構築可能  必要に応じて、より縮小した AABB や normal cone を保存する  Explicit Bounds  Explicit Normal Cone  より高効率なカリングが可能に 36
  • 37.  2-pass アプローチ  並列 Prefix Sum を使って物理メモリを割り当 て、Cluster Key を保存  シングルパスでの物理メモリの割り当てだと遅 かった。将来のハードウェアでは高速化の余地 37
  • 38.  光源の探索木を毎フレーム構築  Thurst[HB10] による効率的なソートを使用  ツリー構築で CUDA warp (32 スレッド) を実行  出力ノードが 32 個なのでトラバースでも CUDA warp が役立つ  最大深さが 5 レベルなら、再帰が発生する CUDA の実装を回避できる  5 レベルでは最大 3300 万の光源をサポート 38
  • 39.  シーン 1 : Necropolis  点光源を発射する大砲を設置  最大 2500 光源  シーンの端から端へカメラ移動  シーン 2 : Sponza  木のセットを設置  1 万のランダムな光源 39
  • 40.  シーン 1 : Necropolis の各フレームのライティ ング計算回数 40
  • 41.  シーン 1 : Necropolis の各フレームのレンダリ ング時間 41
  • 42.  シーン 2 : Sponza のライティング計算回数  Tiled Shading はおよそ 90M 回になるのでグラフから除外 42
  • 43.  シーン 2 : Sponza のレンダリング時間の内訳  Deferred (97.1ms), Tiled Forward (23.6ms) はグラフから除外 43
  • 44.  シーン 2 : Sponza の光源数とレンダリング時間 44
  • 45.  Cluster や Tile に光源を割り当てる時間 45
  • 46.  Clustered Shading は位置と任意で法線を使い、 類似した view sample を Cluster にグループ 化、Cluster に影響する光源のみ計算を行う  Tiled Shading に比べ Cluster は小さく、光源の 影響は少なくなる  Cluster の法線情報を光源の背面カリングに使 用可能 46
  • 47.  ビューの状態変化に対する堅牢性が得られる  Clustered Deferred / Clustered Forward どち らもリアルタイムで 100 万光源が可能  クラスタリングのコストは小さく、光源が少な いシーンでも従来手法に匹敵するパフォーマン ス 47
  • 48.  Cluster 内のすべてのサンプルが特定の光源か らおよそ等しく影響を受けているかをヒューリ スティックに判断し、ライティングのコストを 削減  簡単なテストでは、わずかな計算コストで最大 20 % ライティング計算を削減  微細なアーティファクト、より高品質な近似を  スペキュラのために、Cluster に平均輝度の情 報を付与? 48
  • 49.  より複雑なシェーディングとの組み合わせ  Clustered Shading は Tiled Shading に比べて シェーディングコストが小さいので、シェーダ の複雑さの増加に強い 49
  • 50. 50