2009年3月5日 星期四

關於dynamic lighting

前幾天看到C9的宣傳影片,發覺到dynamic lighting有明顯進步。

第一次公布宣傳影片時,只有人物和怪物有dynamic lighting。

最新的宣傳影片,多加上Terrain的dynamic lighting運算,但是草則沒有。

草為什麼沒有?這我能瞭解此原因。要作出來是可以,只是效率上的關係。

我這幾天在看一些資料,關於dynamic lighting的作法有幾種:

1.Single Pass PerLight
2.Multiple Lights PerPass
3.deferred shading

第一點的優點是彈性很大,可以隨意去加你想要的light type。

但是效率會不太好,因為batch會提升的關係。

第二個跟第一點是相反的關係。

第三個我就不談了,光是Geometry Buffer就讓人吃不消了。

第一點在製作console game的話,可以拿去實作,

但是在online game的話,我會去用第二點。

其實在C9的dynamic lighting只有Point light而已(影片中),

至於每個geometry能吃多少個光,這我就不清楚了,

能確定的是online game是不能處理太多光源的,原因在於效能。

現在還沒完成,要等到下禮拜一才開始動工,

不過大致上看了一下之後,要實作出來是沒什麼問題,

而且關於玩家的顯卡上的運算方式和光源數量的調整動作,

也是沒有多大的問題。


//////////// 09/03/11 ////////////////


花了兩個工作天,已經把dynamic lighting給完成了,

每個geometry可以吃5個燈光(per-pixel in shader 2.0),

加上direction light就有六個燈光,至於比較遠的話,會弄成per-vertex。

基於效能的關係,花草不會納入運算,不過樹木會納入。

其實最後會加上bloom效果,會讓人看起來花草有納入運算。

課長講說:試看看能不能吃更多的光。

我想說...就算可以吃很多,但是還沒測過整體效能,

所以吃太多也未必好事。

而且這東西會跟C9一樣,會跟特效放在一起。

沒有留言:

張貼留言