スクリーンスペースアンビエントオクルージョン(SSAO)は、アンビエントオクルージョン効果をリアルタイムで効率的に近似するコンピュータグラフィックス技術です。これは、 Crytekで働いていたVladimir Kajalinによって開発され、2007年にCrytekによって開発されたビデオゲームCrysisで初めて使用されました。[1]
実装

このアルゴリズムはピクセル シェーダーとして実装され、テクスチャに格納されているシーンの深度バッファーを分析します。画面上のすべてのピクセルについて、ピクセル シェーダーは現在のピクセルの周囲の深度値をサンプリングし、サンプリングされた各ポイントからオクルージョンの量を計算します。最も単純な実装では、オクルージョン係数はサンプリングされたポイントと現在のポイントの深度差のみに依存します。
追加のスマートなソリューションがなければ、このような力ずくの方法では、良好な視覚品質を得るためにピクセルあたり約 200 回のテクスチャ読み取りが必要になります。これは、現在のグラフィックス ハードウェアでのリアルタイム レンダリングには適していません。はるかに少ない読み取りで高品質の結果を得るために、ランダムに回転したカーネルを使用してサンプリングが実行されます。カーネルの方向は、最終画像に高周波ノイズのみが含まれるように、N画面ピクセルごとに繰り返されます。最終的に、この高周波ノイズは、深度の不連続性を考慮したN x N後処理ブラー ステップ (隣接する法線と深度の比較などの方法を使用) によって大幅に除去されます。このようなソリューションにより、高品質の結果を維持しながらピクセルあたりの深度サンプル数を約 16 以下に削減でき、コンピューター ゲームなどのソフト リアルタイム アプリケーションで SSAO を使用できるようになります。
他のアンビエント オクルージョンソリューションと比較して、SSAO には次の利点があります。
- シーンの複雑さに依存しません。
- データの事前処理は必要なく、読み込み時間もシステム メモリへのメモリ割り当てもありません。
- ダイナミックなシーンで機能します。
- 画面上のすべてのピクセルに対して同じように一貫して動作します。
- CPU を使用せず、完全にGPU上で実行できます。
- あらゆる最新のグラフィックス パイプラインに簡単に統合できます。
SSAO には次のような欠点もあります。
- むしろローカルであり、多くの場合はビューに依存します。これは、任意のジオメトリによって生成される可能性のある隣接するテクセル深度に依存するためです。
- オブジェクトのエッジなどの深度の不連続性に干渉せずに、ノイズを正しく滑らかにしたりぼかしたりすることは困難です (オクルージョンがオブジェクトに「にじみ出る」べきではありません)。
参照
- スクリーン空間方向性遮蔽(SSDO)[2]
参考文献
- ^ 「アンビエントオクルージョンとは何ですか?ゲームでは重要ですか?」
- ^ Tobias Ritschel、Thorsten Grosch、Hans-Peter Seidel (2009)。「イメージ空間での動的グローバルイルミネーションの近似」。Proceedings ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games。2015年11 月 25 日閲覧。
外部リンク
- 次世代を見つける – CryEngine 2
- SSAO の動作を示すビデオ
- 深度バッファのアンシャープマスクによる画像強調
- GPU でのハードウェア アクセラレーションによるアンビエント オクルージョン技術
- スクリーン空間アンビエントオクルージョン技術の概要
- リアルタイム深度バッファベースのアンビエントオクルージョン
- Crysis で使用される SSAO シェーダーのソースコード
- 画像空間における動的グローバルイルミネーションの近似
- 累積スクリーンスペースアンビエントオクルージョン
- NVIDIAはSSAOをドライバーに統合した
- SSAOのいくつかの方法はShaderX7の本で説明されています
- SSAO シェーダー (ロシア語)
- SSAO チュートリアル、Crysis で使用されているテクニックの拡張
