Microsoft DirectX 8.0 (Visual Basic)

フォグ公式

Microsoft® Visual Basic® で記述されたアプリケーションでは、Microsoft Direct3D® で距離に応じてフォグ エフェクトの計算を変更することにより、フォグがシーンのオブジェクトの色に与える影響を制御できる。CONST_D3DFOGMODE 列挙には、3 つのフォグ公式を識別するメンバが含まれている。すべての式は、アプリケーションが設定するパラメータを与えられ、距離の関数としてフォグ係数を計算する。距離自体がどのように計算されるかは、範囲ベースのフォグが有効であるかどうかと、射影行列により変化する。詳細については、「視点からの相対深度 対 Z ベースの深度」および「範囲ベースのフォグ」を参照すること。

D3DFOG_LINEAR

この線形公式で、start はフォグ エフェクトが始まる距離、end はフォグ エフェクトがそれ以上増加しなくなる距離、d はシーンの範囲内での深度または視点からの距離を表す。オブジェクトが遠方になるに従って d の値が増加する。線形公式と指数公式は、ピクセル フォグと頂点フォグの両方でサポートされている。

D3DFOG_EXP

D3DFOG_EXP2

上の 2 つの指数公式で、e は自然対数の底 (約 2.71828)、density は 0.0 から 1.0 の範囲の任意のフォグ密度、d はシーンの範囲内での深度、つまり視点からの距離である。

  システムは、頂点のスペキュラ色のアルファ成分にフォグ係数を格納する。アプリケーションで独自のトランスフォーム & ライティングを実行する場合は、フォグ係数を手動で挿入しておくと、レンダリング時にシステムがそのフォグ係数を適用する。

次の図では、公式のパラメータに共通の値を使用して、これらの公式をグラフに示している。

Direct3D がフォグ エフェクトを計算するときは、上の等式の 1 つのフォグ係数を次に示すブレンディング公式で使用する。

この公式は、現在のポリゴン Ci の色をフォグ係数 f により効果的にスケーリングし、その積を、フォグ係数のビット反転によりスケーリングしたフォグ カラー Cf に加算する。結果として得られるカラー値は、フォグ カラーと元の色のブレンドであり、距離の係数でもある。この公式は、Microsoft DirectX® 7.0 およびそれ以降がサポートするすべてのデバイスに適用される。従来からのランプ デバイスに対しては、フォグ係数はディフューズ色成分とスペキュラ色成分をスケーリングし、0.0 から 1.0 の範囲内 (0.0 と 1.0 を含む) に収める。フォグ係数は、通常、前方クリップ面を 1.0 として始まり、後方クリップ面を 0.0 として減少する。