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全局光照的简单介绍。