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