什么是全局光照:
全局光照,指的就是模拟光线是如何在场景中进行传播的,不仅会考虑那些直接光照的效果,还会计算光线被不同的物体表面反射而产生的间接光照。
Unity使用实时+预计算的方式来模拟场景中的光照:其中实时光照用于那些直接光照对场景的影响,物体移动式光照也会随之发生变化;因为实时光照无法模拟光线被多次反射(间接光照)的效果,因此采用预计算来模拟反射等间接光照。
其中预计算包括常见的光照烘焙:将光源对场景中的静态物体的光照效果提前烘焙到一张光照纹理当中,然后把这张光照纹理贴到这些物体的表面,来得到光照效果,这些纹理不仅包括了直接光照的影响,也包括了间接光照的影响。但是这些光照纹理无法再游戏运行时不断更新,即它们是静态的。
由于静态的光照烘焙无法在光照条件改变时更新物体的光照效果,因此Unity采用了预计算的实时全局光照来为我们提供解决途径:原理是 一旦物体与光源的位置确定了,这些物体对光线的反射路径以及漫反射光照也是固定的,也就是说与摄像机的位置无关,因此只要光源的位置不变,即使改变了光照的颜色以及强度,物体的材质属性等,这些信息就一直有效,不需要实时更新:即Enlighten会在所有静态物体组成的场景中,进行简化的“光线追踪”。
!需要将物体标识为Static !其次物体的高光反射(与摄像机的位置有关)需要通过probe反射探针来进行实现,
---作者后记:以上是在UnityShader入门精要中得出,但是在查看网上的预计算的实时全局光照后,发现,光源的位置可以变动,仍然可以进行实时的反射计算,原理上貌似是将物体(static)在各种方向上的反射线路进行预计算,然后实时的进行计算得出间接光照的信息