1.如何實(shí)現(xiàn)霧化

    實(shí)現(xiàn)霧化的方式由多種,這里使用最簡(jiǎn)單的一種:線性霧化(linear fog)。在線性霧化中,某一點(diǎn)的霧化程度取決于它與視點(diǎn)之間的距離,距離越遠(yuǎn)霧化程度越高。線性霧化有起點(diǎn)和終點(diǎn),起點(diǎn)表示開始霧化之處,終點(diǎn)表示完全霧化之處兩點(diǎn)之間某一點(diǎn)的霧化程度與該點(diǎn)與視點(diǎn)的距離呈線性關(guān)系。比終點(diǎn)更遠(yuǎn)的點(diǎn)完全霧化了,即完全看不見了。

    某一點(diǎn)霧化的程度可以被定義為霧化因子(fog factor),并在線性霧化公式中被計(jì)算出來:

<霧化因子> = (<終點(diǎn)> - <當(dāng)前點(diǎn)與視點(diǎn)間的距離>) / (<終點(diǎn)> - <起點(diǎn)>)

    這里:

<起點(diǎn)> <= <當(dāng)前點(diǎn)與視點(diǎn)間的距離> <= <終點(diǎn)>

    霧化因子為1.0,表示該點(diǎn)完全沒有被霧化,可以很清晰地看到此處的物體。如果為0.0, 就表示改點(diǎn)完全被霧化了。起點(diǎn)因子的線形圖如下所示:

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

2.片元著色器中包含霧化因子的片元顏色計(jì)算

    計(jì)算公式如下:

<片元顏色> = <物體表面顏色> * <霧化因子> + <霧化顏色> * (1 - <霧化因子>)

3.使用頂點(diǎn)的w分量作為當(dāng)前點(diǎn)與視點(diǎn)間的距離

    之前,我們并未顯示使用過gl_Position的w分量,實(shí)際上,這個(gè)w分量的值就是頂點(diǎn)的視圖坐標(biāo)的z分量乘以-1。在視圖坐標(biāo)系中,視點(diǎn)在原點(diǎn),視線沿著Z軸負(fù)方向,觀察者看到的物體其視圖坐標(biāo)系值z(mì)分量都是負(fù)的,而gl_Position的w分量正好是z分量值乘以-1,所以可以直接使用