Share via


バンプ マッピング

バンプ マッピング

バンプ マッピングは、少数のポリゴンだけできれいにテセレーションされたオブジェクトの反射状態をシミュレートする、特殊なスペキュラまたはディフューズ環境マッピングである。次の画像は、Bump Earth サンプルに基づいてバンプ マッピングのエフェクトを示している。

左側のなめらかな球は地球をシミュレートしたもので、右側の球ではバンプマップ テクスチャを追加している

左側の地球は、地球の表面の画像でテクスチャ処理され、スペキュラ環境マップが適用されている。右側の地球もまったく同じであるが、バンプ マップが適用されている。2 つ目の地球の画像のポリゴン数は、1 つ目の画像のポリゴン数と変わらない。

Microsoft® Direct3D® のバンプ マッピングでは、開発者はデルタ値による輪郭線の情報を提供することから、バンプ マッピングは、正確にはスペキュラまたはディフューズ環境マップのピクセル単位のテクスチャ座標の補正と記述できる。輪郭線の情報は、システムによって次のテクスチャ ステージの環境マップの u および v テクスチャ座標に適用される。デルタ値は、バンプ マップ サーフェイスのピクセル フォーマットでエンコードされる。詳細については、「バンプ マップ ピクセル フォーマット」を参照すること。

BumpEarth サンプルでは、高さマップを使って輪郭線データを格納する。サンプルを開始すると、高さマップ内のピクセルが処理されて適切な u および v が計算される。これは、隣接する 4 つのピクセルを基準にした、各ピクセルの相対高度に基づく。

本来、Direct3D では高さマップをサポートしていない。高さマップは、輪郭線データを格納および視覚化するのに便利なフォーマットであるにすぎない。前の画像は高さマップに基づいて作成されたもので、BumpEarth サンプルではこの高さマップを使って、Direct3D に提供するバンプ マップを生成している。この画像は説明を目的に示したものである。アプリケーションでは輪郭線情報をどのようなフォーマットでも格納でき、また Bump Waves サンプルのように個々のバンプ マップを生成することもできる。

次は、BumpEarth サンプルで使う高さマップ画像である。このサンプルでは、これを使って、バンプ マップ テクスチャのピクセル フォーマットでエンコードされるデルタ値を計算する。

地球の高さマップをエンコードするイメージ

バンプ マッピングは、複数のテクスチャ ブレンディング サービスに完全に依存しており、デバイスは少なくとも 2 つのブレンディング ステージ (1 つはバンプ マップ用、もう 1 つは環境マップ用) をサポートしている必要がある。ベース テクスチャ マップを適用するには、最も一般的な場合、最低 3 つのテクスチャ ブレンディング ステージが要求される。次の図は、テクスチャ ブレンディング カスケードにおける、ベース テクスチャ、バンプ マップ、および環境マップ間の関係を示している。

ポリゴン テクスチャを生成するために使われるテクスチャ ブレンディング カスケード

テクスチャ ステージを適切に用意し、バンプ マッピングを有効にする必要がある。

ここでは、Direct3D によるバンプ マッピングの実行について説明する。以下のトピックでは、バンプ マッピングを紹介し、その主要な概念を特定および定義し、アプリケーションでのバンプ マッピングの使い方について説明する。