(Direct3D 9)

C++ 應用程式可以藉由變更 Microsoft Direct3D 如何計算距離的模糊效果,來控制對場景中物件色彩的影響。 D3DFOGMODE列舉型別包含識別三個模糊公式的成員。 所有公式都會根據應用程式所設定的參數,以距離函數方式計算一個水氣因數。

線性模糊

這會使用下列D3DFOG_LINEAR方程式來設定。

direct3d 線性模糊的方程式

where

  • start 是水氣效果開始的距離。
  • end 是不再增加水氣效果的距離。
  • d 代表深度,或與觀點的距離。 對於以範圍為基礎的水,d 的值是相機位置與頂點之間的距離。 針對非範圍型的模糊,d 的值是相機空間中 Z 座標的絕對值。

指數型水氣

圖元模糊和頂點水都支援線性和指數公式。

這會使用下列D3DFOG_EXP方程式來設定。

direct3d 指數型模糊的方程式

where

  • e 是自然對數的基底 (大約 2.71828) 。
  • 密度是任意的模糊密度,範圍可以從 0.0 到 1.0。
  • d 表示深度或與觀點之間的距離,如先前所述。

這會使用下列D3DFOG_EXP2方程式來設定。

direct3d 指數 2 的方程式

where

  • e 是上述自然對數的基底。
  • 密度是任意的模糊密度,其範圍可以從 0.0 到 1.0,如上所述。
  • d 代表深度,或與檢視點之間的距離,如上所述。

注意

系統會將水氣因數儲存在頂點的反射色彩 Alpha 元件中。 如果您的應用程式執行自己的轉換和光源,您可以手動插入模糊因數值,以在轉譯期間由系統套用。

 

下圖顯示這些公式,使用公式參數中的一般值。

超過距離和色彩數量的模糊公式圖表

D3DFOG_LINEAR為 1.0,結尾為 0.0。 它不會相對於近或遠平面來測量。

當 Direct3D 計算模糊效果時,它會使用下列混合方程式中上述其中一個方程式的模糊因數。

direct3d 的模糊效果方程式

此公式會有效調整目前多邊形 C 的色彩,並依水因數 f,並將產品新增至水氣色彩 C,並依反模因數的位反縮放。 產生的色彩值是混色和原始色彩,做為距離因素。 此公式適用于 Microsoft DirectX 7.0 和更新版本中支援的所有裝置。 針對舊版坡形裝置,水氣因數會調整擴散和反射色彩元件,並固定在 0.0 和 1.0 的範圍內。 在接近平面的 1.0 開始,而遠平面則減少為 0.0。

水氣類型