コンピュータ グラフィックスでは、ピクセル単位の照明とは、レンダリングされたイメージ上の各ピクセルの照明を計算してイメージまたはシーンを照明する手法を指します。これは、3D モデルの各頂点で照明を計算し、その結果の値をモデルの面に補間して最終的なピクセル単位のカラー値を計算する頂点照明などの他の 一般的な照明方法とは対照的です。
ピクセル単位のライティングは、ブレンディング、アルファ ブレンディング、アルファ カバレッジ、アンチエイリアシング、テクスチャフィルタリング、クリッピング、隠面判定、Z バッファリング、ステンシル バッファリング、シェーディング、ミップマッピング、法線マッピング、バンプ マッピング、ディスプレイスメント マッピング、視差マッピング、シャドウ マッピング、スペキュラマッピング、シャドウボリューム、ハイダイナミック レンジ レンダリング、アンビエント オクルージョン(スクリーン スペース アンビエント オクルージョン、スクリーンスペース ディレクショナル オクルージョン、レイ トレーシング アンビエント オクルージョン)、レイ トレーシング、グローバル イルミネーション、テッセレーションなどの手法でよく使用されます。これらの手法はそれぞれ、照らされている表面やシーン、光源に関する追加データを提供し、表面の最終的な外観や雰囲気に影響を与えます 。
最近のほとんどのビデオゲーム エンジンは、頂点ライティングではなくピクセル単位の技術を使用してライティングを実装し、ディテールとリアリティを高めています。BrinkやDoom 3などのゲームの開発に使用されたid Tech 4エンジンは、完全にピクセル単位のシェーディング エンジンを実装した最初のゲーム エンジンの 1 つでした。CryENGINE、Frostbite Engine、Unreal Engineなどのすべてのバージョンでも、ピクセル単位のシェーディング技術が実装されています。
ディファードシェーディングは、Frostbite EngineやBattlefield 3で使用されていることで有名な、ピクセル単位のライティングにおける最近の開発です。ディファードシェーディング技術は、潜在的に多数の小さなライトを低コストでレンダリングすることができます(他のピクセル単位のライティング手法では、サイズに関係なく、シーン内の各ライトに対してフルスクリーンの計算が必要です)。[1]
歴史
パーソナル コンピュータやビデオ ハードウェアが、ゲームなどのリアルタイム アプリケーションで完全なピクセル単位のシェーディングを実行できるほど強力になったのはごく最近のことですが、ピクセル単位の照明モデルで使用されるコア概念の多くは、何十年も前から存在しています。
フランク・クロウは1977 年にシャドウ ボリュームの理論を説明した論文を発表しました。[2] この手法では、ステンシル バッファーを使用して、「シャドウ ボリューム」内にある表面に対応する画面の領域を指定します。シャドウ ボリュームとは、何らかのオブジェクトによって光源から隠された空間のボリュームを表す形状です。これらのシャドウ領域は通常、シーンがバッファーにレンダリングされた後に、ステンシル バッファーを使用してシャドウ領域を保存することによってシェーディングされます。
ジム・ブリンは、1978 年のSIGGRAPH論文で法線マッピングの考え方を初めて紹介しました。[3]ブリンは、エドウィン・キャットマル が提案した以前の非照明テクスチャ マッピングの考え方は、粗い表面をシミュレートするには非現実的であると指摘しました。粗さをシミュレートするためにオブジェクトにテクスチャをマッピングする代わりに、ブリンは、表面全体の法線の確立された「摂動」に基づいて、表面上の点が受ける照明の度合いを計算する方法を提案しました。
ハードウェアレンダリング
ビデオ ゲームなどのリアルタイム アプリケーションでは、通常、ピクセル シェーダーを使用してピクセル単位の照明を実装し、GPUハードウェアでエフェクトを処理できるようにします。レンダリングされるシーンは、まず、深度、法線方向、拡散色など、シーンのレンダリングに使用されるさまざまな種類のデータを格納する多数のバッファーにラスタライズされます。次に、データはシェーダーに渡され、シーンの最終的な外観をピクセルごとに計算するために使用されます。
ディファード シェーディングは、最近ゲームで実現可能になったピクセル単位のシェーディング手法です。[4]ディファード シェーディングでは、「G バッファ」を使用して、ピクセル レベルで最終シーンをシェーディングするために必要なすべての項を保存します。このデータの形式は、目的の効果に応じてアプリケーションごとに異なり、法線データ、位置データ、スペキュラデータ、拡散データ、エミッシブ マップ、アルベドなどが含まれます。複数のレンダリング ターゲットを使用すると、このすべてのデータを 1 回のパスで G バッファにレンダリングでき、シェーダは最終的な「ディファード パス」で G バッファのデータに基づいて各ピクセルの最終的な色を計算できます。
ソフトウェアレンダリング
ピクセル単位のライティングは、通常はインタラクティブなフレームレートでレンダリングしない多くの高性能な商用レンダリング アプリケーションでもソフトウェアで実行されます。これは、オフライン レンダリングまたはソフトウェア レンダリングと呼ばれます。AutodeskのSoftimageなどのスイートに統合されているNVidia のmental rayレンダリング ソフトウェアは、よく知られた例です。
参照
注記
- ^ 「フォワードレンダリングと遅延レンダリング」。
- ^ Crow, Franklin C: 「コンピュータグラフィックスのシャドウアルゴリズム」、コンピュータグラフィックス (SIGGRAPH '77 Proceedings)、第 11 巻、第 2 号、242-248 ページ。
- ^ Blinn, James F. 「しわのある表面のシミュレーション」、コンピュータグラフィックス (SIGGRAPH '78 Proceedings、vol. 12、no. 3、286-292)。
- ^ Hargreaves、Shawn 、Mark Harris:「海底6800マイル:遅延シェーディング」。NVidia開発者アセット。
