Direct3D中的霧化(3) 摘要: 要使用基于范圍的霧化,首先需要檢查當前硬件是否支持基于范圍的霧化:
// check if hardware supports range fog
D3DCAPS9 caps;
g_device->GetDeviceCaps(&caps);
if(! (caps.RasterCaps & D3DPRASTERCAPS_FOGRANGE))
return false;
Direct3D中的霧化(2) 摘要:
添加像素霧化效果也需要對Direct3D渲染設備進行三方面的設置:啟用霧化效果、設置霧化混合因子計算公式、設置霧化參數。添加像素霧化效果和添加頂點霧化效果基本相同,唯一的區別是霧化混合因子計算公式的設置。像素霧化混合因子計算公式也是采用函數IDirect3DDevice9::
SetRenderState()設置,不同的是第一個參數需要設置為D3DRS_FOGTABLEMODE。
Direct3D中的霧化(1) 摘要:
霧化效果是計算機圖形學中應用最廣的效果之一,它不僅能顯著地增加視覺效果的真實感,并可以提供一定的深度感。在實時圖形程序,特別是游戲設計程序中,為了確保圖形系統的運行速度,圖形開發人員往往在位于觀察點遠處的場景使用較為簡單的三維模型,甚至不繪制物體,而在近處使用復雜模型,這樣就可能造成物體變形、突然出現或突然消失等失真現象,霧化效果可以有效地避免這種失真現象。
在Direct3D圖形系統中,霧化是通過將景物顏色與霧的顏色,以隨物體到觀察點距離增加而衰減的混合因子混合而實現的。距離觀察點越近,混合因子越大,場景內的物體顏色越大,霧的顏色越小,景物就越清晰;隨著觀察點拉遠,混合因子逐漸變小,場景中物體的顏色變小,而物的顏色變大,景物越來越模糊。Direct3D計算霧化的方法如下:
color = f * colorscene + (1-f) * colorfog
其中,color表示最終經過霧化處理的顏色,colorscene表示物體原來的顏色,colorfog表示應用程序中定義的霧的顏色,f表示霧化混合因子。