1. 效果图
2. 原理
烘焙出两组lightmap,并在shader中进行采样;最后插值输出混合结果。天空球也是同理可得。
3. 代码
3.1 shader
Shader "Unlit/lightMapChanging"
{
Properties {
[NoScaleOffset]_SkyCube ("天空球", Cube) = "grey" {}
_SkyCube2 ("天空球2", Cube) = "grey" {}
_Rotation ("水平旋转", Range(0.0, 360.0)) = 0.0
[HDR]_TintCol ("染色", Color) = (1.0, 1.0, 1.0, 1.0)
}
SubShader {
Tags {
"Queue"="Background" // 调整渲染顺序
"RenderType"="Background" // 渲染类型改为背景
"PreviewType"="Skybox" // 预览类型改为天空球
}
Cull Off
ZWrite Off
Pass {
Name "SKY_FORWARD"
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
// 参数
uniform samplerCUBE _Sk