UPL9-15——反射探针
UPL9-15——反射探针
前置知识:
- US3S8L1——立方体纹理
- US3S8L2——天空盒
- US3S8L3——动态生成立方体纹理
- US3S8L4——反射效果
反射探针
反射探针(Reflection Probe)是用来捕捉某个空间内的环境反射信息的组件,Unity 通过在场景中放置一个 立方体探针(Cube Probe)
拍摄周围环境生成一个 立方体贴图(Cubemap),运行时动态物体或表面就能从中采样反射
说人话:反射探针用一张立方体贴图来模拟物体周围的反射环境,让金属、玻璃等材质看起来有倒影感
反射探针(Reflection Probe)的原理
-
烘焙阶段
Unity 以探针位置为中心渲染场景的 6 个方向(±X, ±Y, ±Z)生成一张 6 面的立方体贴图(Cubemap)
这张贴图包含该点周围环境的颜色和亮度信息 -
运行阶段
对于反射性材质(如金属),Shader 在像素着色时,根据该像素的法线方向
在 Cubemap 中查找对应方向的颜色,将结果作为反射光加入最终颜色 -
混合
若一个物体位于多个反射探针之间,Unity 会根据位置权重对反射贴图进行插值混合,保证反射在空间上连续、平滑
总结:反射探针就是预先烘焙好立方体贴图,当有反射效果的对象经过探针区域时,会使用该贴图进行着色,并且会帮助我们处理多探针之间的混合
注意:反射探针分为:
烘焙反射探针
适用于:静态场景、固定反射
实时反射探针
每帧渲染 6 张图,性能消耗较大,适用于:镜面、水面、动态光照变化
自定义反射探针
手动指定对应的立方体贴图,适用于:特殊效果或自定义反射
反射探针(Reflection Probe)的使用
-
在场景中创建 Reflection Probe(反射探针)
在 Hierarchy 窗口内右键选择 Light —— Reflection Probe 即可创建

-
根据对象类型决定是否烘焙进反射探针的立方体贴图内
注意,如果要将物体烘焙至反射探针内,需要将静态物体勾选 Reflection Probe Static(反射探针静态对象)

-
设置 Reflection Probe(反射探针)相关参数
具体参数见下文:反射探针(Reflection Probe)的参数
Reflection Probe 类型为 Baked 或者 Custom 时,点击 Bake 即可烘焙
烘焙后,即可在下方的预览窗口内看到反射内容:

-
设置对象让其支持反射探针
-
URP:在管线资源里设置

-
内置渲染管线:在对象的
Renderer组件上设置
-
-
动态物体使用支持反射探针的 Shader 的材质,并调节其金属度和光滑度
以 URP 的 Lit Shader 为例:

这样就能让使用此材质的物体出现反射效果

反射探针布局技巧
-
室内房间
每个房间中心放一个探针,包围整个房间
-
室外区域
每隔一段距离放探针,保证环境颜色平滑过渡
-
镜面或金属地面
使用 Realtime 探针或自定义反射
-
多层空间(楼上楼下)
每层独立放置探针
-
走廊、通道
间隔放置多个探针实现连续反射变化
反射探针常见问题
-
反射与环境颜色不符
探针位置错误或影响范围太小,调整 Box Size 与 Box Offset
-
反射贴图模糊
Cubemap 分辨率太低,提高 Resolution
-
动态物体反射不更新
探针为 Baked 类型,改为 Realtime 或手动更新
-
探针间反射突变
探针太稀疏,增加探针数量或开启混合
-
室内(反射偏暗)
提高 Intensity 到 1.3 ~ 2
-
反射拉伸失真
开启 Box Projection(矩形投影)并正确设置 Box Size(盒子大小)
-
反射边界突变
增大 Blend Distance(混合距离)到 1 ~ 2
-
镜像效果不动
检查 Type = Baked 是否应改为 Realtime
反射探针(Reflection Probe)的参数

-
Type:类型

-
Baked(烘焙)
烘焙型探针,只在光照烘焙时生成 Cubemap,运行时不会更新
适用于静态场景、室内、固定反射环境(最常用) -
Custom(自定义)
使用手动指定的 Cubemap 贴图
适用于特效或自定义反射环境
-
Dynamic Objects(动态对象)
这个复选框控制 是否让动态物体(比如移动的角色、车辆)出现在反射中
-
Cubemap(自定义的 Cubemap 贴图)
-
-
Realtime(实时)
实时探针,运行中每帧或定时重新渲染 Cubemap
适用于动态场景、移动镜面、水面等
-
Refresh Mode:刷新模式

-
On Awake:仅在场景加载或探针启用时更新一次
启动时生成一次反射,不会再次更新
-
Every Frame:每一帧都重新渲染反射
最实时的效果,但性能消耗极高
-
Via Scripting:仅在脚本中手动调用时更新
用于自定义控制(例如每隔几秒更新一次)
-
-
Time Slicing:时间切片

-
All Faces at Once:一次性渲染所有 6 个面
占用一帧大量 GPU 时间,但最快完成
有一点时间切分优化,但用户看不出来 -
Individual Faces:每帧只渲染一个面
平均分摊到 6 帧内,减少性能峰值
-
No Time Slicing:没有时间切片,一次性渲染完
没有时间切分优化,最直接的全量渲染
-
-
-
-
Runtime Settings(运行时设置)
-
Importance(重要性)
探针优先级(用于探针混合时决定哪个更重要)
当多个探针影响同一区域时,可手动提高靠近主要物体的探针权重 -
Intensity(强度)
反射亮度强度倍数
调整反射亮度。一般保持 1
如果反射偏暗可提高到 1.2 ~ 2 -
Box Projection(是否启用矩形投影)
启用盒体投影(Box Projection)
让 Cubemap 按包围盒尺寸进行位置校正
勾选后可使反射看起来更贴近真实空间(如室内、走廊) -
Blend Distance(混合举例)
探针与周围探针或天空盒反射的混合过渡距离
数值越大,边界过渡更平滑
建议 0.5 ~ 2 -
Box Size (X,Y,Z)(盒子尺寸)
探针影响范围(立方体大小) 决定该探针影响哪些物体
一般设置为能包裹目标区域的大小 -
Box Offset (X,Y,Z)(盒子偏移)
探针中心相对于物体位置的偏移
可用于微调探针采样中心,使反射效果更合理
-
-
Cubemap Capture Settings(立方体纹理捕获设置)
-
Resolution(分辨率)
生成 Cubemap 的分辨率(每个面像素数)
更清晰的反射可用 256~1024,但性能和内存消耗增加 -
HDR(是否启用高动态范围)
是否以高动态范围(HDR)捕捉反射
可以保留更宽亮度范围,用于 PBR 材质(推荐始终开启) -
Shadow Distance(阴影距离)
捕获反射贴图时的阴影距离
影响 Cubemap 内阴影质量
默认 100 足够 -
Clear Flags(清除标记)
捕获 Cubemap 时的背景
通常选 Skybox(用天空盒填充背景)
- Skybox:天空盒
- Solid Color:固定颜色
-
Background Color(背景光颜色)
若 Clear Flags 选择 Solid Color 时的背景颜色
仅在不使用 Skybox 时生效 -
Culling Mask(剔除遮罩)
哪些层的物体会被包含进反射贴图
默认 Everything,可排除 UI、特效层等非真实物体 -
Occlusion Culling(遮挡剔除)
是否在捕获时启用遮挡剔除
勾选提高性能,仅当场景中有遮挡数据时有效 -
Clipping Planes(裁剪平面)
捕获摄像机的近、远裁剪平面
控制捕获深度范围
默认 Near = 0.3、Far = 1000 通常合适
-
-
Bake(烘焙按钮)
点击 Bake,Unity 立即以该探针为中心渲染 6 个方向
结果会保存在 LightingData.asset 中
