SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発Unity Technologies Japan K.K.
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことSatoshi Kodaira
 
【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作
【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作
【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作UnityTechnologiesJapan002
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingElectronic Arts / DICE
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意UnityTechnologiesJapan002
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lightingozlael ozlael
 
実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~Silicon Studio Corporation
 
Substance勉強会 in Osaka
Substance勉強会 in OsakaSubstance勉強会 in Osaka
Substance勉強会 in OsakaAiko Shinohara
 
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~historia_Inc
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Checkerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCCheckerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCQLOC
 
【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略Takayasu Beharu
 
RenderTextureの正しいα値は?
RenderTextureの正しいα値は?RenderTextureの正しいα値は?
RenderTextureの正しいα値は?KLab Inc. / Tech
 
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~com044
 

Mais procurados (20)

GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
 
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
 
プロシージャル技法による背景の自動生成 『1,000の和室
プロシージャル技法による背景の自動生成 『1,000の和室プロシージャル技法による背景の自動生成 『1,000の和室
プロシージャル技法による背景の自動生成 『1,000の和室
 
【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作
【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作
【Unite Tokyo 2019】HDRPコワクナイ! HDRPで目指す小規模で高品質な映像制作
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 
実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~実践的なHDR出力対応 ~レンダリングパイプラインの構築~
実践的なHDR出力対応 ~レンダリングパイプラインの構築~
 
Substance勉強会 in Osaka
Substance勉強会 in OsakaSubstance勉強会 in Osaka
Substance勉強会 in Osaka
 
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
 
Lightmass Deep Dive 2018 Vol.1: Lightmass内部アルゴリズム概要(Lightmap編)
Lightmass Deep Dive 2018 Vol.1:  Lightmass内部アルゴリズム概要(Lightmap編)Lightmass Deep Dive 2018 Vol.1:  Lightmass内部アルゴリズム概要(Lightmap編)
Lightmass Deep Dive 2018 Vol.1: Lightmass内部アルゴリズム概要(Lightmap編)
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Checkerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOCCheckerboard Rendering in Dark Souls: Remastered by QLOC
Checkerboard Rendering in Dark Souls: Remastered by QLOC
 
【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略【Unity】より良い表現のためのライティング戦略
【Unity】より良い表現のためのライティング戦略
 
RenderTextureの正しいα値は?
RenderTextureの正しいα値は?RenderTextureの正しいα値は?
RenderTextureの正しいα値は?
 
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
 
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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