Unity URP 透明玻璃出现白色光斑?Directional Light 镜面高光问题分析与解决
在使用 Unity URP 制作展馆、数字孪生或建筑可视化项目时,经常会使用透明材质来模拟玻璃幕墙、落地窗、展柜玻璃等效果。
为了获得更真实的反射效果,通常会将材质的 Smoothness 调高。但有时会发现,场景中会突然出现一个非常刺眼的白色光斑,并且随着 Directional Light 的方向变化而移动。
本文结合实际项目案例,分析该问题产生的原因以及解决方案。

一、问题现象
在一个展馆场景中,使用 URP Lit 材质制作落地窗玻璃。

材质主要参数如下:
text
Surface Type = Transparent
Metallic = 0
Smoothness = 0.903
场景中存在一个 Directional Light 用于模拟太阳光。
在特定角度发现玻璃表面出现一个明显的白色光斑:

从现象上看,这个光斑具有以下特点:
- 非常明亮
- 会随着 Directional Light 方向变化而移动
- Smoothness 越高越明显
- 开启 HDR 或 Bloom 后更加刺眼
- Reflection Probe 强度变化对其影响不大

很多开发者第一反应会认为是 Reflection Probe 烘焙错误,但实际上这与 Reflection Probe 没有直接关系。
二、问题原因
问题的根源在于 Directional Light 产生的镜面高光(Specular Highlight)。
URP Lit 材质默认采用 PBR(Physically Based Rendering)渲染模型。
当材质 Smoothness 较低时:
text
Smoothness ≈ 0
光线会向各个方向散射:
text
粗糙表面
↓
高光区域较大
亮度较低
而当 Smoothness 逐渐提高时:
text
Smoothness → 1
材质表面会越来越接近镜面:
text
光线集中反射
↓
形成高亮区域
↓
出现白色光斑
对于 Directional Light 而言,其本质上模拟的是太阳光:
text
无限远
平行光
高强度
因此在高 Smoothness 材质上会产生非常集中的镜面反射。
查看当前玻璃材质设置:

可以看到:
text
Smoothness = 0.903
Specular Highlights = 开启
当满足以下条件时:
text
高 Smoothness
+
Directional Light
+
Specular Highlights
就会产生这种白色高光斑。
如果场景同时开启:
text
HDR
Bloom
高光还会进一步扩散,形成更大的白色光团。
因此该现象实际上属于:
text
Direct Specular Reflection
(直接光镜面反射)
而不是 Reflection Probe 反射导致的问题。
三、解决方式
根据项目需求,可以采用以下几种方式进行处理。
方案一:关闭 Specular Highlights(推荐)
对于建筑玻璃、展馆玻璃、落地窗等场景,最推荐的方法是直接关闭 Specular Highlights。
位置:
text
URP Lit
↓
Advanced Options
↓
Specular Highlights
关闭后:
text
不再计算直接光镜面高光
保留环境反射
效果:
text
白色光斑消失
Reflection Probe仍然生效
整体观感更加柔和
推荐配置:
text
Specular Highlights = Off
Environment Reflections = On

方案二:降低 Smoothness
如果仍然希望保留一定的镜面高光,可以适当降低 Smoothness。
例如:
text
0.9
↓
0.75 ~ 0.85
这样会使高光区域变宽:
text
亮度降低
边缘变软
不再刺眼
推荐参数:
text
Metallic = 0
Smoothness = 0.8
对于建筑玻璃通常已经足够。

方案三:降低 Directional Light 强度
很多展馆项目实际上并不需要真实太阳光。
可以适当降低:
text
Directional Light Intensity
例如:
text
1.0
↓
0.3 ~ 0.5
能够有效减弱镜面高光。
尤其是在室内数字展馆项目中:
text
环境光
+
烘焙光照

通常已经足够。
方案四:调整 Bloom
如果白色光斑周围还有明显发光扩散现象,需要检查 Bloom。
推荐参数:
text
Threshold = 1.2 ~ 1.5
Intensity = 0.2 ~ 0.5
或者直接关闭 Bloom 验证问题来源。
总结

当 URP 中的透明玻璃材质出现明显白色光斑时,通常不是 Reflection Probe 的问题,而是 Directional Light 在高 Smoothness 材质上产生的镜面高光。
判断依据非常简单:
text
关闭 Specular Highlights
↓
光斑消失
则可以确定问题来源于 Direct Specular Reflection。
对于建筑可视化、数字孪生、展馆项目中的玻璃材质,推荐采用如下配置:
text
Surface Type = Transparent
Metallic = 0
Smoothness = 0.75 ~ 0.85
Specular Highlights = Off
Environment Reflections = On
这样既能保留 Reflection Probe 带来的环境反射效果,又能避免刺眼的太阳高光,更符合建筑玻璃的视觉表现。