Sheena3D裡面的動態光源主要分成主要光源(一道平行光,會產生有形狀的陰影,之前的SSAO是模擬無方向在空間中胡亂彈跳的光。)以及今天要分享的點光源系統。
通常在圖學裡面還有個叫做Spot light的東西,不過這個Sheena3D引擎裡面沒有(默),下面這張五彩繽紛食用色素極高的糖果球球的圖展現了點光源系統是如何在場景中作用,基本上只要把燈光的發射資訊塞進Effect元件中它就會自行默默地發光,照亮自己也照亮別人;當我們決定了點光源的顏色以及發射能量與射程後,引擎會自己渲染與點光源交互作用的物件,下圖中的球是發射光源體(我沒有把它調得很閃亮),旁邊的柱子就只是跟普通的柱子,當柱子被點光源照到的時候就會開始混色,像這張五彩繽紛四元素的場景,顏色互相混合得很詭異,感覺就像Sense很差的室內設計師設計的夜店一樣。
這種點光源拜 Deferred Shading 之賜,效能在目前的主流顯示卡上還算不錯,想當年Shader還沒普及的時候,我們要用per pixel light還得要仔細斟酌,fixed render pipline好像也才提供八盞燈最多(印象中,不太確定,可能要翻一下API)。
Sheena3D引擎預設開啟是32盞點光源(基本上好像開到64也還OK,這個留等以後有大場景再測),並會自行管理開啟與關閉,距離玩家較遠的點光源就會自動省略不進行計算,距離玩家較近的則使用比較精密的計算,這樣的LOD在Soft Shadow也有出現,在八系列或九系列的低階顯示卡上能擠出不少效能分給其他部分,當然我們實驗測試用的NV 6600GT索性直接關閉Soft Shadow了......。
上面這個是開啟點光源計算的場景。
這是同一場景關閉點光源。
沒有留言:
張貼留言