SlideShare a Scribd company logo
フォトンマッピング 
GPU実装最新手法 
平成26年9月 
kgussan
GPU実装~リアルタイムGI 
昨年度の合宿で、様々なレイトレのわかりやすい資料が発表されたと思います。 
今回次に話題になりそうなGPU実装の論文について一つご紹介したいと思います。 
紹介するのはリアルタイム向けのアルゴリズムとして述べられた論文です。ですが 
GPUにとって効率の良いアルゴリズムを知るという意味において有用だと思います。 
現行リアルタイムCGとレイトレーシングの照明の違いとして、リアルタイムCGで使う 
近似アルゴリズムは、環境テクスチャマッピングによる2次の反射光までが中心です。 
近年、ボクセルコーントレーシング、ライトプロパゲーションボリュームなど、いくつか 
の条件付きで反射回数の制限がなくなってきています。 
最近のGPUの性能向上から、リアルタイムCGに本格のグローバルイルミネーション 
が適用される日も近いのではないかと思います。 
フォトンマッピングを使い、任意回数のフォトントレーシング反射結果を表現するいくつ 
かの手法を紹介します。
レイトレーシングとラスタライズアルゴリズムの比較 
レイトレーシングVSラスタライズ(グラフィックス専用演算器群) 
代表的なグラフィックスアルゴリズム比較 
リアルタイムに動かすために様々な工夫、近似を使っている。 
レイトレーシングラスタライズ 
光学計算 
レイトレーシング演算 
スリックモデルなど 
フォンライティング 
フォン・ブリンライティングなど 
大域照明 
(反射が2回以上の光学計算) レイトレーシング演算 
ライトプロパゲーションボリューム(LPV) 
事前計算放射輝度転送(PRT) 
ボクセルコーントレーシングなど 
影レイトレーシング演算 
シャドウマッピング 
シャドウボリューム 
SSAOなど 
反射 
レイトレーシング演算 
(任意回数の反射) 
キューブ環境マップスフィア環境マップなど 
(一回の反射まで) 
屈折 
レイトレーシング演算 
(任意回数の屈折) 
キューブ環境マップスフィア環境マップなど 
(一回の屈折まで) 
集光現象(コースティクス) レイトレーシング演算 
テクスチャ焼き込みなど。 
トポロジに依存するため動的には厳しい 
被写界深度(DOF) レイトレーシング演算深度バッファを使った画像(後)処理 
モーションブラーレイトレーシング演算深度バッファを使った画像(後)処理 
プリミティブ 
レイトレーシング演算 
(陰関数等の交差判定実装次第) 三角形 
基本的に速度はレイトレーシングより 
もラスタライズ方式のほうが格段に高 
速。前者は1フレームに数時間単位に 
対してラスタライズ方式は 
16.7ms(1/60秒, 60fps)で処理す 
ることを前提にしている。ハードウェア 
化されている恩恵とともに、近似演算 
で高速化されていることで可能になっ 
ている。近似されているゆえに高速だ 
が精度を捨てている。 
GPU性能に合わせて性能と質のトレ 
ードオフを見ながらリアルタイム演算 
のアルゴリズムは選択され、新しいも 
のが研究・開発されている。 
元ネタ:raytracing.jp
リアルタイムレイトレーシング 
真面目に計算理する方法でも,実用的なリアルタイム処理が現実に近くなっています。 
下記手法があれば解決? 
・Matt svobodaさんのリアルタイムレイトレデモ 
http://www.youtube.com/watch?v=i8hSZGTXTx8#t=144 
・Mattさんのリアルタイムレイトレデモ解説(brick map ) 
http://d.hatena.ne.jp/hanecci/20140209/p1
反射・屈折のみならず、環境項、多数回の拡散反射、コースティクスを扱うためにはレイトレだ 
けでは表現が難しいです。前頁のものだけでは不足です。フォトンマッピングなど、表現に適し 
た手法があります。 
レイトレーシングのGPU実装の話題は多々ありますが、フォトンマッピングのフォトン収集パス 
とそのGPU実装について述べている論文は見当たらないので紹介したいと思います。 
1st 著者NVIDIA Michaelさん 
今年はDeepGbuffer 
Morganさん: 
法線マップを使ったSSAOなど 
有名論文著作多数。 
http://graphics.cs.williams.edu/pape 
rs/PhotonI3D13/ 
リアルタイムフォトンマッピング処理
論文の概要 
フォトンマッピングの実装を取り上げてみます。 
計算には、フォトンのトレーシング計算に加えて、フォトン収集パスが必要になります。 
フォトン収集には大量のフォトンをサンプリングする必要があります。 
レイトレーシングはすでに様々な解法があります(NVIDIAには秒間数億レイが飛ばせる 
Optixシステムがある)。 
そのためトレーシングは割愛し、今回はフォトンのサンプリング手法について調べます。 
高速に実行するためにGPUを活用します。 
今回試してみたところではGeForce670にて、1frame 
28ms(30fps)を達成した。 
演算能力1344shader pipe, 
915MHz : 2460FLOPs 
メモリバンド幅192GB/s GDDR5 
計算解像度960x540
実装手法 
ここでは実装の可能性を思いつく手法を4つほど試してみました。 
3D Bounds / 2.5D Bounds / HashGrid / Tiled
それぞれの手法の分類を詳しく見てみる。
それぞれの手法の分類を詳しく見てみる。 
メインのループをフォトンあたりにするか、 
ピクセルあたりにするか 
射影するジオメトリを 
どう処理するか 
どの空間で処理するか。 
処理するシェーダステージ 
サンプリングを全部やるか、 
離散的に済ませるか
1)3D Bounds手法 
グラフィックスパイプラインのラスタライザを使って、インスタンシング等でフォトンを描画。 
フォトンの寄与範囲を20面体で表現し、干渉するオブジェクトに色を付ける。 
ラスタライザを使うことで高速に演算が可能になる。 
論文:http://graphics.cs.williams.edu/papers/PhotonHPG09/ 
デモ:https://www.youtube.com/watch?v=GckOkpeJ3BY
2)2.5D Bounds手法 
スクリーンスペースでZバッファを使い、フォトン 
を小さな球に外接するコーンとして計算。 
コーン形状はフォトン座標からGeometry Shader 
で生成する。 
スクリーンスペースで計算することから、3Dでは 
なく2.5Dと表現している。この状態ではZ方向のフ 
ォトンのバウンドは正確ではなくなる。 
(同じ量のフォトンを計算する場合に、3D方式よ 
りも、XYについての寄与は良くなるとのこと)
3)HashGrid Cells 
セル上にフォトンを分配し、スクリーンのピクセル座標を3D 
空間に投影し、その座標に近いフォトンを3D空間上で探 
索・収集する。 
セル内にhash6432shiftアルゴリズムでコードテーブルを作 
成しフォトンを管理する。 
高速化するために共有メモリ(LDS,GDS)を使いたいが、こ 
の手法では使いにくい。
4)タイルベース手法 
スクリーンスペースでタイル状にピクセルを区切 
り、そのタイルごとにフラスタムを生成。フラスタ 
ムにのりしろを付けてフォトンを分配する。 
Intel のtile based renderingのような手法。ここ 
で扱うポイントライトやスポットライトの代わりにフ 
ォトンを扱う。 
demo https://www.youtube.com/watch?v=Aogk2r_HjjA 
タイルベースの分割例(AMD Forward+)
サンプル手法 
真面目に周辺フォトンを探った結果と、周辺フォトンを離散的に(たとえば1飛ばしで1000フォトン中、500フォトンしか 
サンプルしない。) 
バイラテラルフィルタを使ってノイズを減らした画像をみると、差はほとんどなくすことができる。
実行結果 
リッチなフルのBRDF 
リアルタイム向けの 
ランバートのみBRDF 
2)“2.5Dバウンド”と4)”タイルド”アルゴリズムの結果が良好。 
今回はフルのBRDFではなく、リアルタイム向けにランバートのみの状態で 
良好な、タイルドアルゴリズムを詳しく見てみる。
タイルベースアルゴリズムフロー 
1. フォトン投射 
a. 普通にフォトンを光源から投射してトレーシング 
2. 代表深度生成 
a. 次に生成するフラスタムの深度を計算。分割されたタイル内のもっとも手前 
をnearに、もっとも奥をfar に設定 
3. フォトンのタイルデータベースへの分配 
a. 上記投射されたデータをスクリーンスペース上でタイルに区切ったピクセル 
からフラスタムのleft right top bottom を指定。 
b. 2と合わせてフォトン収集半径分ののりしろを付けて、フラスタムカリングが 
できる。これを使ってフォトンをタイルごとに分配。すべてのフォトンが対象。 
4. フォトンのサンプリング 
a. 離散的フィルタ:N飛ばしでフォトンをサンプルし、最後に飛ばしたN倍エネ 
ルギーを増やす。 
5. 放射輝度の計算 
6. 必要に応じてバイラテラルフィルタなどノイズをごまかす
Gpuフォトンマッピング手法 h26-09-kgussan-第2回レイトレ合宿
Gpuフォトンマッピング手法 h26-09-kgussan-第2回レイトレ合宿
Gpuフォトンマッピング手法 h26-09-kgussan-第2回レイトレ合宿
まとめ 
アルゴリズムをCPUからGPUに移動して高速にすることができる。 
この際、データ構造によって性能が大きく異なる。 
性能変化の傾向がCPUとGPUでは違う。 
現状GPUで、数百Kのフォトンをリアルタイムにサンプルして放射輝度を計算すること 
ができる。 
しかしながら、映画品質に向けてはまだ扱うフォトンの桁が6ケタくらい違う。 
今回のGPU実装ネックはメモリ読み込みのレイテンシ。 
分割したフォトンはのりしろ分の重複があるので数が増える。フォトンのデータを読み 
込むのにメモリ読み込みのレイテンシの時間分毎時データ読み込みの待ちが入り、 
処理が進まない。
参考
Gpuフォトンマッピング手法 h26-09-kgussan-第2回レイトレ合宿
参考:GPU実装Tips 
GPUのパイプラインは長い。流れが止まると後段 
は滞留する。 
→ 流れを止めない。ボトルネックになっている箇 
所を意識。 
ボトルネック解析ができたら当該箇所の負荷を緩 
和する。 
GPUの構成に依存して強い箇所、弱い箇所があり 
ます。それぞれ、GPUが持っているリソース・特性 
に合わせて調整します。 
よくあるネック要因 
●テクスチャネック 
●頂点アトリビュートネック 
●シェーダネック 
●CBDB(ROP)ネック 
●メモリバンド幅ネック 
●命令ネック 
●同期ネック 
●頂点数ネック
参考文献 
・フォトンマッピング入門林秀一さん 
http://www.slideshare.net/ssuser2848d3/ss-25795852 
・リアルタイムCGとフォトンマッピングのハイブリッドレンダリング 
http://game.watch.impress.co.jp/docs/series/3dcg/20091228_340280.html 
・intel / tile based rendering 
https://software.intel.com/en-us/articles/deferred-rendering-for-current-and-future-rendering-pipelines/ 
・AMD / Forward+ 
http://developer.amd.com/tools-and-sdks/graphics-development/ 
・Fast Global Illumination Approximations on Deep G-buffers 2014 
http://graphics.cs.williams.edu/papers/DeepGBuffer14/#video
フォトン主軸アルゴリズム疑似コード 
(散布系) 
for (uint32_t p=0; p<photon_num; p++ ){ //フォトンループ 
photon[ p ].draw(); // グラフィックスパイプでメモリにフォトン位置を格納 
for(uint32_t y=0; y<height; y++){ //スクリーン座標ループ 
for(uint32_t x=0; x<width; x++){ //pixel shader, compute shaderへGPU化しやすい。 
if( isVisible( photon[ p ].pos, x, y, eyePos ) ){ //スクリーン上でフォトンが見えるなら 
image[ y ][ x ] += contribution( p, x, y, z ); // 寄与をさせる。 
} 
} 
} 
}
ピクセル主軸アルゴリズム疑似コード 
(収集系) 
for(uint32_t y=0; y<height; y++){ //スクリーン座標ループ 
for(uint32_t x=0; x<width; x++){ //pixel shader, compute shaderへGPU化しやすい。 
for (uint32_t p=0; p<photon_num; p++ ){ //フォトンループ 
if( isVisible( photon[ p ].pos, x, y, eyePos ) ){ //スクリーン上でフォトンが見えるなら 
image[ y ][ x ] += contribution( p, x, y, z ); // 寄与をさせる。 
} 
} 
} 
}

More Related Content

What's hot

猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
 
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
エピック・ゲームズ・ジャパン Epic Games Japan
 
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)
エピック・ゲームズ・ジャパン Epic Games Japan
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
Unity Technologies Japan K.K.
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
Hiroshi Yamaguchi
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
 
Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話
Unity Technologies Japan K.K.
 
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
 
ガイデットフィルタとその周辺
ガイデットフィルタとその周辺ガイデットフィルタとその周辺
ガイデットフィルタとその周辺
Norishige Fukushima
 
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII
 
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
Masafumi Takahashi
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
エピック・ゲームズ・ジャパン Epic Games Japan
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
Kuninobu SaSaki
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
Unity Technologies Japan K.K.
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式
康弘 等々力
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
エピック・ゲームズ・ジャパン Epic Games Japan
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
Silicon Studio Corporation
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
torisoup
 

What's hot (20)

猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
 
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
Lightmassの仕組み ~Lightmap編~ (Epic Games Japan: 篠山範明)
 
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)
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
 
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話
 
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
 
ガイデットフィルタとその周辺
ガイデットフィルタとその周辺ガイデットフィルタとその周辺
ガイデットフィルタとその周辺
 
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
 
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術 次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説シリコンスタジオの最新テクノロジーデモ技術解説
シリコンスタジオの最新テクノロジーデモ技術解説
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 

Gpuフォトンマッピング手法 h26-09-kgussan-第2回レイトレ合宿

Editor's Notes

  1. ラスタライズにあるように現在のRealtimeRenderingは様々な手法で近似され高速になっている。
  2. レイトレーシングはリアルタイムによさそうなアルゴリズムが出てきている。 ではもう解決?
  3. 前のページのレイトレーシングでは拡散反射光の解決をしていない。 鏡面反射と屈折の処理。
  4. 完全なフォトンマッピングではなくリアルタイム向け技術のほうに寄せている実装。 フォトンマッピングの理由は 拡散光の内部反射、コースティクス、グロッシー反射、面光源、間接光が表現できること。 通常のリアルタイムレンダリングではできない要素が達成されている。 性能の高いGPUでは正確に近くなり、性能の低いGPUではそこそこの結果が出る。他のGIアルゴリズムではなかなかこうならない。 動機としては現行のNV GPUでやりたかったとのこと。 フォトンマッピングのサンプリングのみを適用する弱点としては、反射、屈折をそのままでは表現できない。 レイトレーシングやスクリーンスペースリフレクションなどの工夫が必要になる。 高速なフォトンマッピングの恩恵としてはアーティストのワークフロー向上。すぐにレンダリングの結果がわかる。 動的なGIがゲームで実現できる。インタラクティブなGI。 プリベイクデータの削減ができる。
  5. 主に4つの手法が有用そう
  6. 形は球に近ければ何でもいい。20面体がバランスが良かった。
  7. こちらもコーン形状なのはジオメトリシェーダで扱うのに高速であったため。 本来はこれも球状が理想的
  8. LDS: local data share 当該のシェーダパイプで同時に実行されるスレッド内でのデータ共有 高速 GDS: global data share すべてのシェーダパイプでのデータ共有 LDSに比べて低速、低容量
  9. ここではさらに離散的にサンプルを行い、バイラテラルフィルタをすることで負荷を減らしつつ画質も保っている。
  10. 真面目にすべてのフォトンをサンプルした結果と、離散的にサンプルした結果はそのままでは差があるが、バイラテラルフィルタでほぼ変わらない結果が出ている、とある。 実際に試したところでは、少し時系列にノイズがばらついてゆらゆら絵が揺れる。
  11. N=4。反射・屈折はなし。
  12. N=4。反射・屈折はなし。 枠内に分割したアルゴリズムを使う場合にはその範囲内の屈折しか表現できない。
  13. N=4。反射・屈折はなし。
  14. そのまま真面目に計算しても間に合わないので、リアルタイム向けには近似を組み合わせていくことになる。 また、反射と屈折には対応できていない。スクリーンスペースリフレクションなどの技術を組み合わせる必要がある。かなりリアルタイム向けに手法を振っている。 レイトレーシング処理を同時に行う時には、サンプル量はここまで出ない。 反射、屈折も併せて、真面目に計算するのであればhash grid cellがいいかもしれない。
  15. GPU800MHz 18 CU: 1.84TFlops 8 ROP/CBDB: 25.6Gpixel/s 18 TU: 230.4Gsample/s 2 Rasterizer: 1.6Gprims/s MemBandWidth: 176.0GB/s
  16. 原田さんのサイト https://e8040b55-a-62cb3a1a-s-sites.googlegroups.com/site/takahiroharada/storage/2012SA_2.5DCulling.pdf?attachauth=ANoY7coC61tpTf1XShM7uPHO1X-bGAcr19AdksUUxPpyKhHFqex4RUgivXkfDW3doqXXZHejslHi_2emKuKbxCBWKYMYHvYnF7K91BJA1JNmrAf-PXGfRsLc8ruGoiTox1EnG0LksoZpO1Qw-JY81RpOlPc4qWgc3UH3OUTVjrxiaW8FWIgPXXlsF8s13ojPAoo6n40551NDupod1l64oiIoz0Nbh5D_7jUWSSEBVxI5ImXrAoCw_u8%3D&attredirects=0
  17. //photon[ p ].draw(); //メモリにフォトン位置を格納