
コンピュータグラフィックスでは、反射マッピングまたは環境マッピング[ 1 ] [ 2 ] [ 3 ]は、事前に計算されたテクスチャを使用して反射面の外観を近似する効率的な画像ベースの照明技術です。テクスチャは、レンダリングされたオブジェクトを取り囲む遠方の環境の画像を格納するために使用されます。
周囲の環境を保存する方法はいくつか用いられてきた。最初の手法は球面マッピングで、これは球面鏡に反射された周囲のイメージを単一のテクスチャに格納するものである。しかし、これはキューブマッピングによってほぼ完全に凌駕されている。キューブマッピングでは、環境を立方体の6つの面に投影し、6つの正方形テクスチャとして保存するか、単一のテクスチャの6つの正方形領域に展開する。その他、数学的または計算上の特性が優れている投影方法としては、放物面マッピング、ピラミッドマッピング、正八面体マッピング、HEALPixマッピングなどがある。
反射マッピングは、スクリーン空間反射や、光線をトレースしてその光路をたどることで正確な反射を計算するレイトレーシングなどと並んで、反射レンダリングのいくつかの手法の1つです。ピクセルでのシェーディング計算で使用される反射色は、オブジェクト上のポイントでの反射ベクトルを計算し、それを環境マップのテクセルにマッピングすることによって決定されます。この手法は、レイトレーシングによって生成されるものと表面上は似た結果を生成することが多いですが、反射の放射輝度値は、シーンジオメトリに対して光線をトレースして光線の放射輝度を計算するのではなく、入射角と反射角を計算し、テクスチャルックアップを行うことで得られるため、GPUのワークロードが簡素化され、計算コストが低くなります。
しかし、ほとんどの場合、マッピングされた反射は実際の反射の近似値にすぎません。環境マッピングは、めったに満たされない2つの仮定に基づいています。
環境マッピングは、一般的に反射面をレンダリングする最も高速な方法です。レンダリング速度をさらに向上させるには、レンダラーが各頂点における反射光線の位置を計算する場合があります。そして、その位置を頂点が接続されているポリゴン全体に補間します。これにより、すべてのピクセルの反射方向を再計算する必要がなくなります。
法線マッピングを使用する場合、各ポリゴンには多数の面法線(ポリゴン上の特定の点が向いている方向)があり、これらを環境マップと組み合わせて使用することで、よりリアルな反射を生成できます。この場合、ポリゴン上の特定の点における反射角度は、法線マップを考慮して決定されます。この手法は、平坦な表面を、例えば波型金属やヘアライン仕上げのアルミニウムのように、質感のあるように見せるために使用されます。
球面マッピングは、入射光の球面を、正射投影カメラを通して反射球の反射像として捉えたかのように表現します。テクスチャ画像は、この理想的な設定を近似するか、魚眼レンズを使用するか、または球面マッピングを用いてシーンを事前にレンダリングすることによって作成できます。
球面マッピングには、レンダリング結果のリアリティを損なう制約があります。球面マップは、それが表す環境の方位角投影として保存されるため、マップの端付近のテクセルカラーが解像度不足で正確に表現できずに歪むため、オブジェクトの反射像に突然の特異点(「ブラックホール」効果)が現れます。また、球面マッピングでは、正方形内にあって球体内にないピクセルも無駄になります。
球面マッピングによるアーティファクトは非常に深刻なため、仮想正射投影カメラの視点に近い視点でのみ有効である。

キューブマッピングやその他の多面体マッピングは、球面マップの深刻な歪みを解消します。キューブマップが正しく作成され、フィルタリングされていれば、目に見える継ぎ目はなく、マップを取得する多くの場合仮想カメラの視点とは独立して使用できます。キューブマップやその他の多面体マップは、画像ベースの照明の取得を除いて、ほとんどのコンピュータグラフィックスアプリケーションで球面マップに取って代わりました。画像ベースの照明は、視差補正されたキューブマップを使用して行うことができます。[ 4 ]
一般的に、キューブマッピングでは、屋外レンダリングで使用されるスカイボックスと同じものが使用されます。キューブマップによる反射は、オブジェクトがどの方向から見ているかを示すベクトルを特定することによって行われます。このカメラ光線は、カメラベクトルがオブジェクトと交差する点の表面法線に対して反射されます。その結果得られる反射光線は、キューブマップに渡され、照明計算で使用される放射輝度値を提供するテクセルを取得します。これにより、オブジェクトが反射しているような効果が得られます。
HEALPix環境マッピングは他の多面体マッピングと似ていますが、階層化できるため、球体により近い多面体を生成するための統一フレームワークを提供します。これにより、計算量の増加という代償を伴いますが、歪みを低減できます。[ 5 ]
1974年、エドウィン・キャットマルは、数学的定義に直接作用する「二変量表面パッチの画像をレンダリングする」アルゴリズム[ 6 ] [ 7 ]を作成しました。1975年にはブイ・トゥオン・フォンが、その後1976年には環境マッピングを開発したジェームズ・ブリンとマーティン・ニューウェルが、さらなる改良を研究し文書化しました。キャットマルの元のアルゴリズムを改良したこれらの開発により、彼らは「これらの一般化により、パターンとテクスチャを生成するための改良された技術がもたらされる」と結論付けました。[ 6 ] [ 8 ] [ 9 ]
ジーン・ミラーは1982年にMAGIで球状環境マッピングの実験を行った。
Wolfgang Heidrich は 1998 年に放物面マッピングを導入しました。[ 10 ]
エミル・プラウンは2003年に正八面体マッピングを導入した。[ 11 ]
マウロ・シュタイグレダーは2005年にピラミッドマッピングを導入した。[ 12 ]
Tien-Tsin Wongらは2006年にレンダリング用の既存のHEALPixマッピングを紹介した。 [ 5 ]