光照系统
1. Global Illumination(全局光照)
- GI,能够计算直接光,间接光,环境光以及反射光的光照系统。通过GI算法,渲染出光照效果更为真实的场景。
2. 直接光
-
从光源直接放出的光,通过Light组件实现。
-
Type类型:
Directional Light(平行光):平行发射光线,可以照射场景里所有物体,和位置无关,模拟太阳;
Point Light(点光源):向四周发射,可以照射其范围里所有对象,模拟灯泡;
Spot Light(聚光灯):在灯光位置向 圆锥区域发射光线,只在这个局域的物体才会受到光照,模拟探照灯;
Area Light( 区域光):由一个面向一个方向发射光线,只有照射该区域内的物体,仅烘焙是有效,用在光线较为集中的区域。
-
Color:设置光的颜色,可以用于警报等;
-
Culling Mask:可以设置光照射哪些物体,打勾的可以照射到。
为某物体添加层layer,并选中,设置摄像机的Culling Mask的该层取消打勾,则该物体不受光照射; -
阴影类型:
硬阴影
软阴影
双面:对于一个当面的Plane平面,背面不可见,不会产生阴影,设置为双面这可以产生阴影; -
设置单个物体的阴影:选中这个物体,在属性设置中,可以设置其是否有阴影和接收阴影。
-
剔除远处的阴影,通过编辑–>Project Settings打开如下界面
可以通过设置质量的高低,设置场景效果,在其中的Shadows中可以设置,影子的剔除的距离等。
3. 点光源介绍-
在其球体范围内,可以照射;
3. 聚光灯光源介绍1.在其锥体范围内可照射,如手电筒,探照灯。
-
3. 环境光
- 作用于场景内所有物体的关照,通过Environment Lighting 中的Ambient控制。
- Ambient Source 环境光源
– Skybox 通过天空盒设置
– Gradient 梯度颜色
Sky天空颜色、Equator地平线颜色、Ground地面颜色
– Ambient Color 纯色
4. 反射光
5. 间接光
- .物体表面反射出来的光。
- 通过Light组件中的Bounce Intensity反弹强度控制。
- 可以通过Scene面板Irradiance模式查看间接光照。
- 只有标记Lightmaping Static 的物体才能产生间接反弹光照。
需要将不动的物体标记为静态的,即Lightmaping Static前打勾。 - 通过设置Scene为Emissive,即可查看间接光(能看见物体)。
结果如下(设置为静态的可见):
5.Realtime GI(实时GI)
-
所谓“实时”是指在运行期间任意的修改光源,而所有的变化可以实时更新。
-
操作步骤:
–游戏对象设置为Lightmaping Static;
– 启用Light 面板下的Precomputed Realtime GI
– 点击Build(如果勾选Auto编辑器会自动检测场景的改动修复光照效果)。在Preferences下可以设置GI缓存目录,unity会自动进行预计算。
–Realtime Resolution :实时计算分辨率
– CPU Usage :CPU使用率,值越大渲染越高。
6.烘焙 GI
- 烘焙Lightmap
当场景包含大量物体,实时光照和阴影对游戏性能影响很大,使用烘焙技术,可以将光线效果渲染成贴图再作用到物体上模拟光影,提高性能。 - 步骤:
a.把不动的物体标记为静态。
b. 设置模式为Baked
- 模式:
Realtime:仅实时光照是起作用
baked:仅烘焙模式起作用
Mixed:烘焙与实时光照都起作用
通过设置Scene为Baked Lightmap Culling可以查看烘焙贴图;
禁用光照后,贴图如下
通过设置Scene为Baked Lightmap Culling可以查看烘焙贴图;
结果:
也可以通过如下地方来查看实时GI和烘焙的贴图(Realtime LightMaps和Baked Lightmaps)。
7.光源侦测 Light Probes
-
由于LightMapping只能作用与静态(Static)的物体,导致运动的物体与场景中的光线无法融合,显得不真实,可以添加一个Probe收集光影信息,然后对运动物体邻近的几个Probe进行插值,然后将光线作用到物体上。
-
步骤(非静态物体):
– 创建游戏对象 Light Probe Group
– 添加侦测小球(小球数量要适量,可以人为添加)
– 点击Bulid(或Auto自动修改光照效果)
– 勾选需要侦测物体的Mesh Renderer 组件中的 Use Light Probes属性(我的为选择Blend Probes)。
小球布局位置,一般要包含需要侦测的物体。
如下图,小球为cube收集光影信息,通过黄色线上的小球来捕获光影信息,然后计算物体的光照信息。
附:
本文章学习至bilibili-没有文明的文明-史上最全Unity3D教程