霧公式 (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。