Unity在過去幾年曾經被貼上手游專用的標簽,除了因為容易上手而被很多獨立手游開發者使用之外,更大的原因是老版本Unity的光照系統跟如UE3等知名的引擎相比落后很多。粵嵌武漢U3D培訓在這里介紹一下Unity5版本新增的全局光照。
Unity 5中新增一種全局光照明的使用方式:Precomputed Realtime GI(預計算實時全局光照明),簡稱:實時GI。而另一種Bake GI就是大家在Unity 4中一直用過來的ligtmap烘焙方式。
實時GI與Bake GI一樣,也需要預先的Bake過程,但是與Bake GI不同,實時GI并不預計算場景中光線的反射信息,而是預計算場景中靜態物體表面所有可能的反射光路,然后在游戲運行時結合燈光的位置、方向等信息實時計算出全局光照的結果。
這個計算機制使得預計算GI具備非常大的優勢,在使用預計算GI的燈光,其位置、方向、強度、顏色等各種信息都可以在運行時實時變化。
很多學員參加武漢U3D培訓時有個疑問,那就是預計算GI需要燈光類型是Realtime。Realtime難道不是實時燈光嗎?怎么變成全局光照明模型的燈光了?
Unity 5的燈光屬性中增加了一項,叫做Bounce Intensity,是指全局光照中的間接光強度,要理解這點可以簡單地把全局光照理解為直接光照與間接光照兩部分。直接光照指直接從光源射到物體上的光,而間接光照指從其他物體表面反射而來的光。直接光照的部分其實就是局部光照模型,也就是實時光照計算出來的結果。
回到正題,Bounce Intensity在Unity 5中默認值是1,意思就是說一盞Realtime燈光默認是使用預計算GI的,并且間接光照的強度不做改變。而lighting窗口中的預計算GI選項也是默認開啟的,所以如果你并不更改這些設置,即使看起來你好像只使用了Realtime的燈光,但是真正運行的時候卻其實是在使用全局光照系統。
只要一盞燈的Bounce Intensity大于0,Unity就會認為你需要使用全局光照系統。那么即使你在lighting窗口中取消勾選Precomputed Realtime GI,Unity依然會嘗試使用全局光照。
既然已經取消了預計算GI的選項,Unity會去使用另外一種全局光照的方式,Bake GI(只要你還勾選著Bake GI)。而結果就是,烘焙出來的lightmap里也有那盞Bounce Intensity大于0的Realtime燈光的信息。
全局光照雖然對硬件的要求變高了,但是使得Unity5的光照系統更加真實,也使得Unity的應用更加廣泛。以上是粵嵌武漢U3D培訓對Unity全局光照的簡單介紹。