【光照】UnityURP中的[HDR贴图]
HDR贴图的概念与特性 HDR(高动态范围)贴图是Unity URP中用于存储超出标准0-1范围光照信息的特殊纹理格式。与普通LDR(低动态范围)贴图相比,HDR贴图能够存储更广范围的亮度值,通常使用
【从UnityURP开始探索游戏渲染】专栏-直达
Unity URP 光照贴图技术通过预计算静态物体的光照信息并存储为纹理,实现高效的光照效果渲染。
核心步骤:
Contribute GI
,并启用Lightmap Static
标识。Generate Lightmap UVs
(Project视图 > Model选项卡)。Scale In Lightmap
:控制分辨率(值越大细节越精细)。Lightmap Resolution
:全局设置(建议30-100 texels/unit)。示例场景:
csharp
// 静态物体Cube烘焙设置
public class StaticBaker : MonoBehaviour {
void Start() {
GetComponent<MeshRenderer>().lightmapScaleOffset = new Vector4(1, 1, 0, 0);// 默认UV缩放
GetComponent<MeshRenderer>().lightmapIndex = 0;// 绑定光照贴图索引
}
}
技术组合:
LightProbeProxyVolume
获取周围烘焙光照数据。Mixed
模式,静态阴影烘焙到光照贴图,动态物体接收实时阴影。示例代码:
csharp
// 动态物体Sphere适配光照
public class DynamicLighting : MonoBehaviour {
void Update() {
LightProbes.GetInterpolatedProbe(transform.position, GetComponent<Renderer>(), out var probe);
GetComponent<Renderer>().additionalLightmapSettings.lightProbeVolume = probe;
}
}
通过PrefabLightmapsData
脚本保存光照贴图数据,动态加载时恢复:
Awake
阶段重新绑定光照贴图。Rendering Layer Mask
限制光源影响范围。Scale In Lightmap
值。【从UnityURP开始探索游戏渲染】专栏-直达 (欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)