Unity5 新功能解析--GI(全局光)

http://blog.csdn.net/leonwei/article/details/48009059

 

Unity5带来的最大的改变就是全新的GI,在烘焙引擎上抛弃了4的beast,使用了虚幻采用的Enlighten,引入了实时的全局光。这里对UNITY5的新的光照系统做一总结.

  • 新加入了一种只用于烘焙的光照类型 Area Light

              面积光的光源有形状,是一个矩形区域,有位置,有方向,方向是超矩形的一面,矩形的背面没有光,并且随距离衰减直到没有。它用于模拟大量的光源和在一起的效果,如街道,但是因为计算复杂,所以只用于烘焙

  • 全局光照
构成 : 可实时更新的lightmap + 可实时更新的光照探头(light probe)+ 可实时更新的cubemap(Reflection probe)
实时全局光只实时计算物体之间的bounce light(物体之间来回反射的光)
实时全局光的实现:静态物体之间的bounce light可以在预先计算阶段搞定(light map)
                                     被静态物体照射到的动态物体,通过实时更新的光照探头搞定
                                      被动态物体照射到的物体,还不支持
相比UNITY4来讲,多出来的实时全局光部分应该是多出了lightmap 光照探头这些可以实时更新 而不是定死的
如下图在光源变化下,静态物体的对地板的反射绿色光也在跟着变化
  
此外UNITY5里面的标准材质的自发光在全局光计算中可以当做光源,即可以照亮周围物体并产生阴影,这是一个很屌的效果!,如下图,
,可以调节emission的GI模式,
自发光的GI效果如图
这可以表现一个很真实的发光体,相信看到这美术同学应该有点小激动吧~
 
 
 
 
    Unity5 的全局光照除了新引入的实时GI之外,也有过去的离线烘焙的方式,或者也可以选择二者合用的方式(不过这不是一个省效率的方式)
  • 1离线烘焙

 

    将light的Baking设为Baked,标记那些static的物体,在Lighting window中的Baked GI对应的就是烘焙的实时光,所以这是要把Precomputed Reatime GI关闭

 

  • 2实时
   将light的baking设为realtime,标记那些static的物体,在lighting window中将Baked GI关闭,将Precomputed Realtime GI开启,注意默认Precomputed Realtime GI的resolution并不高,如果想得到比较不错的效果,可以将它调高。在运行时就可以看到实时的GI效果
 
  • 3 烘焙GI加实时的局部光照
      这可能是更加主要的做法,即static的物件采用离线的烘焙GI,而非static的物件使用实时的局部光照,这需要将light调为mixed,然后将lightmap里面开启baked gi,而将realtime gi 关闭。
  • 4 烘焙的GI叠加实时的GI,这种做法基本没什么好处,而且效率也很低,这种组合是将light设为mixed,然后将light setting里面的baked gi和 relatime gi全开启

  • 通用的GI设置
       通常为了提升间接光照的质量,可以将light里面的Bounce Intensity提高,和lightsetting 里面 general gi的indirect intensity也提高。此外还可以在light setting里面设置天空盒和环境光。
      Unity5的scene视图里面有多提供了一个视图Irradiance 来查看动态物体间的间接光照
  • 光照探头,unity5的关照探头是为了使动态物体能偶受静态物体的gi影响,比UNITY4多了光照探头的信息可以实时更新的,其余的使用设置同4基本是一样的

  • 反射探头
       这是UNITY5的实时GI新增的一部分,我们可以在场景的某个区域创建一个Reflection Probe,这点的环境映射信息就会被保存下来,当有动态物体进入的时候,就可以被贴上这个cubemap。如下图是一个球进入了这个区域感受到了这个点处的环境映射。
posted @ 2016-08-21 23:09  alps_01  阅读(2105)  评论(0编辑  收藏  举报