Tutorial 08 – 天氣
這篇教程示範特效和燈光模擬。
天空的漸變
我們用精靈渲染天空而不用紋理。
它的上下頂點上不同的顏色,平滑過渡。
天空的顏色由一天中的時間決定,在一些顏色常量的插補中計算。
大海和波浪
同樣的着色技術可以用於大海。但這次我們用hgeDistortionMesh類代替hgeSprite來模擬波浪。
要創建波浪,我們爲每個曲面網格的節點設置位移和顏色(我們跳過第一和最後一條線因爲我們不想讓它們移動):
現在我們爲先前跳過的第一和最後一條線設置顏色。
大海準備就緒,我們開始渲染:
在源代碼中從月亮到太陽有一條光線被模擬。爲了達到這點我們只需要在太陽月亮下增加一條1 bit的白色線。
天空的物體
星星,月亮和太陽是由帶顏色的點組成的精靈。
有趣的地方是光暈和海面上的倒影。它們都是精靈:
注意光暈精靈使用不同的渲染模式來達到適當的顏色。它們共享相同的紋理區域。
太陽和月亮的位置,比例和顏色在UpdateSimulation中計算,在RenderSimulation中渲染:
同樣的海面倒影:
注意海面倒影精靈不是適當的比例。
執行
這個例子跑在一個相當高的FPS下。這可能是因爲Direct3D渲染精靈的瓶頸在於紋理帶寬,這個例子只用一塊小紋理渲染少量的精靈。大部分屏幕區域都填充單一的顏色。