フォグ

フォグ

3D シーンにフォグを追加することにより、よりリアルな情景を表現したり、雰囲気を出したり、遠くの景色をぼかすことができる。Microsoft® Direct3D® は、ピクセル フォグと頂点フォグという 2 つのフォグ モデルをサポートする。この 2 つは、それぞれ固有の機能とプログラミング インターフェイスを持つ。

フォグは、基本的には、シーン内のオブジェクトの深度または視点からの距離に基づき、シーン内のオブジェクトの色と選択したフォグ色をブレンドして実現する。オブジェクトが遠ざかるに従い、元の色に対するフォグ色のブレンドが増し、シーンに浮かぶ小さい粒子によってオブジェクトの表示がぼけていく。次の画面は、フォグなしでレンダリングしたシーンと、フォグを有効にしてレンダリングした同じシーンを示している。

フォグなしとフォグありの図

上の図で、左側のシーンには明瞭な水平線があり、その向こうには実世界では見えるはずの風景が見えない。右側のシーンでは背景色と同一のフォグ色を使用して水平線がぼかされ、ポリゴンが遠方では消えるように見える。個別のフォグ エフェクトとクリエイティブなシーン デザインとを組み合わせると、シーン内のオブジェクトの色を和らげ、雰囲気を増すことができる。

Direct3D でシーンにフォグを追加するには、2 つの方法がある。ピクセル フォグと頂点フォグである。これらの名前は、それぞれのフォグ エフェクトの適用方法を表している。詳細については、「ピクセル フォグ」および「頂点フォグ」を参照すること。簡単に言えば、ピクセル フォグ (テーブル フォグともいう) はデバイス ドライバで実装され、頂点フォグは Direct3D ライティング エンジンで実装される。フォグを実装するには頂点シェーダを使う。必要に応じて、ピクセル フォグを同時に実装することもできる。

  頂点フォグおよびピクセル フォグのいずれを使用する場合でも、アプリケーションではフォグ エフェクトが正しく適用されるよう適切な射影行列を用意する必要がある。この制約は、Direct3D トランスフォーム & ライティング エンジンを使用しないアプリケーションにも当てはまる。適切な行列の作成方法の詳細については、「W バッファに有効な射影行列」を参照すること。

ここでは、フォグ機能を紹介し、Direct3D アプリケーションでの各種フォグ機能の使い方について説明する。説明する内容は次のとおりである。

フォグ ブレンディングは、レンダリング ステートで制御される。プログラマブルなピクセル パイプラインの一部ではない。