unity-light2-阴影
1. 没有阴影的原因
1.检查 是否灯光开启了阴影
2.检查物体是否接受阴影
3. Project Settings -> Quality 中的 Shadows 是否关闭了
4.在手机上没有阴影的原因,检查是否选择 Low 和 Very Low 等级,默认是不显示阴影的。
5. 检查物体的 shader 是否接受阴影。
2.烘焙光照阴影
全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法, 要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现 代游戏会先一定程度的预先处理这些计算,而非游戏执行时实时运算。
选择物体为 static 或者为 Contribute GI, 灯光选择为 Baked 类型,然后烘焙,烘焙完成后,将会光照贴图,物体不再受灯光影响。
烘焙完成后,Shadow casters 为 0,则代表成功。
烘焙完成后,如果发现颜色变暗,确保下面这两个都开启了
3.Mixed烘焙光照阴影
有时候需要,静态的物体用光照贴图,但是动态的物体需要实时的光照。
灯光类型改为 Mixed
新建一个 cube, 发现没有阴影
再次 Generate Lighting ,然后就有阴影了。
如果发现 静态物体拖动的时候,阴影会移动,修改 Shadowmask Mode 类型 为 Shadowmask,
Distance Shadowmask 只会在距离范围外用 光照贴图。
4.Mixed烘焙光照模式选择
Baked Indirect
只烘培间接光照,直接光以及阴影进行实时计算。运行时改变灯光,直接光照和阴影就会变,但间接光不变(如果间接光弱,视觉影响不大)。只减少间接光照的实时计算,适合对光照要求较高的场景,内存消耗小,当然性能的消耗也大。
Shadowmask
在上一部的基础上,对静态物体直接光照产生的阴影也会被烘培到ShadowMask中,动态物体不受影响。运行时改变灯光只有间接光照和静态物体的阴影不受影响。内存中多了一份Shadowmask,比上一部少了静态物体阴影的计算,占用性能小了一点。注意开启Shadowmask需要在QualitySettings设置Shadowmask Mode为Shadowmask。
Subtractive
静态物体:直接光和间接光都烘焙到光照贴图中;动态物体:接收直接光,可以在静态物体上投射主方向光的阴影。运行时改变光照,静态物体直接光、间接光、阴影不受影响,动态物体的直接光、主灯光(平行光)投射的阴影受影响、其他灯光无阴影。性能消耗最小,应用广。
5. 烘焙参数
Direct Samples 直接光照采样 影响质量、速度
Indirect Samples 间接光照采样 影响质量、速度
Indirect Resolution 间接光照分辨率 影响质量、速度
Lightmap Resolution Lightmap分辨率 影响质量、速度、大小
Lightmap Size Lightmap尺寸 影响质量、速度、大小
Filtering 影响烘培阴影边缘