閱讀英文

共用方式為


霧公式 (Direct3D 9)

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

線性霧

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

direct3d 線性霧方程式

哪裡

  • start 是霧效果開始的距離。
  • 結尾是霧效應不再增加的距離。
  • d 代表深度,或與視點的距離。 對於以範圍為基礎的霧,d 的值是相機位置和頂點之間的距離。 對於非範圍型霧,d 的值是相機空間中 Z 座標的絕對值。

指數霧

圖元霧和頂點霧都支援線性和指數公式。

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

direct3d 指數霧 方程式

哪裡

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

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

direct3d 指數 2 霧 方程式

哪裡

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

注意

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

 

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

霧公式在距離和色彩圖表

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

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

direct3d方程式

此公式會以霧因數 f 有效調整目前多邊形 C 的色彩,並將產品新增至霧色 C,由霧因數反位縮放。 產生的色彩值是霧色與原始色彩的混合,作為距離因素。 此公式適用於 Microsoft DirectX 7.0 和更新版本中支援的所有裝置。 對於舊版坡形裝置,霧因數會調整擴散和反射色彩元件,並夾在0.0和1.0的範圍,包含。 霧因數通常從近平面的 1.0 開始,在遠平面減少到 0.0。

霧類型