1,为什么要用灯光烘焙(Lightmapping)
,不使用灯光烘焙的情况下只有直接光照,光线不会计算反弹,直接光照射不到的地方会一片漆黑,在经过烘焙计算后,电脑会模拟光线反弹来生成间接光照,从而照亮场景来接近真实效果,也称为全局光照(GI),在实际项目中,实时的全局光消耗性能太大,所以我们将预计算的Global illumination添加到纹理贴图(Lightmap)里,以便用更少的资源来提供真实丰富的光照信息
2,unity目前有3种渲染管线,3D内置,URP和HDRP
,URP和内置管线效果相差不多,HDRP是基于物理世界来模拟光照,最直接的体现在于光照强度参数的单位,内置管线里的光照强度是一个相对数值,而HDRP中光照强度是物理世界真实数值
3,3D内置管线中的打光步骤:
1,在场景中选择静态物体,将其标记为Contribute GI
2,为场景指定一个skybox
3,创建一盏Directional Light作为主光源,设置为Mixed(可以同时拥有烘焙效果以及实时阴影),按需设置其他灯光选项
4,Light面板使用较低的参数来测试烘焙效果,观察结果
5,为场景中添加Reflection probes,在需要有反射的物体上标记为Reflection Probe Static
6,测试反射探针烘焙,观察结果
7,调整场景中小物体Mesh Render中SCale in Lightmap的尺寸,可以放大一倍,来让小物体的光照信息更加准确
8,也可以考虑将小物体的Contribute GI标签去除,使用Light Probes进行照明
9,添加Post Processing后期效果调整最终画面
4,灯光具体参数讲解
1,Direct Samples(直接光采样):数值越大Lightmap质量越高,烘焙时间越长,默认32
2,indirect Scamles(间接光采样):数值越大间接光相对越高,室外场景100左右。室内场景默认512起
3,Environment Samples(环境光采样):数值越大Lightmap质量越高,默认500
4,Bounce:光线路径的反弹数量,一般默认为2
5,Filtering:减少噪点,默认auto
6,Lightmap Resolution(贴图分辨率):默认40→80
7,Lightmap Padding(UV间隔):2→8
8,LightSize(每张贴图大小):默认1024
9,Compress Lightmaps:压缩贴图
5,注意事项
1,模型导入后勾选生成光照uv,FBX比较复杂的需要调整Pack Margin,可以增大UV之间的间隙,一般设置为8,同步调整Lightmap Padding数值
2,区分室内室外场景,并且物体是否需要反射环境值,一般情况下是反射周围环境,添加多个Reflection Probe后可以关掉天空盒反射,影响烘焙速度
3,静态物体尽可能优化掉不需要烘焙的部分,提高重要物件lightmap精度,同时减少贴图数量,不参与烘焙的物体用Light Probe照明