做 Unity HDRP 项目全局光照是绕不过去的核心环节。HDRP 的 GI 体系比旧管线复杂得多光照贴图、Light Probe、Reflection Probe、SSGI、Adaptive Probe Volume、光线追踪一直到路径追踪官方文档每一块单拎出来都能写一篇但真正落到项目里你面临的永远是同一个问题——这一帧的间接光到底该走哪条链路实现才能在画质、性能和迭代效率之间找到平衡。这篇文章不打算复述官方手册而是按我在小型场景烘焙、中大型室内外场景、以及离线预览三个实际项目环境中反复测试总结出来的经验把 HDRP 的全局光照从光照贴图到路径追踪完整拆解一遍包含具体参数、操作顺序和踩坑记录。适合正在切 HDRP、或者已经在 HDRP 里被 GI 问题折磨的图形程序、TA 和技术向独立开发者。1. 先捋清 HDRP 的 GI 全景五条路线各自管什么1.1 从 Built-in 管线到 HDRPGI 的底层逻辑变了很多人刚切 HDRP 时的第一反应是Lighting 窗口怎么长这样以前的 Lightmap 烘焙、Light Probe、Reflection Probe 不是还在吗怎么又冒出一堆 Ray Tracing、APV、SSGI 的新选项原因是 HDRP 的整个光照模型变成了物理化的 PBR 体系灯光不再用光照强度那个抽象百分比而是 Lux、Lumen、Kelvin 这些物理单位材质走的是 GGX 能量守恒天光通过 HDRI Sky 和 Ambient Probe 注入场景。这一套底层逻辑变了之后GI 不再只是静态烘焙点亮场景而是要服务一整套从离线烘焙、动态实时到离线渲染器的闭环链路。所以在 HDRP 里GI 不是单一技术而是五条路线并存光照贴图Lightmapping离线烘焙服务静态物体。Light Probe Reflection Probe烘焙好的间接光数据用来给动态物体和光滑表面做插值采样。SSGIScreen Space Global Illumination屏幕空间的实时间接光动态场景专用。APVAdaptive Probe Volume新一代探针系统可以在运行时给所有物体提供间接光。Path TracingHDRP 自带的离线渲染器模式物理正确适合做预览、CG 级截图和资产验证。1.2 五条 GI 路线怎么选实操选型表我自己的选型逻辑一般看三个条件场景是否静态为主、目标平台能不能扛、项目处于哪个阶段原型、量产、还是宣发期。技术路线静态场景动态场景性能负担典型用途光照贴图强不支持只烤静态无运行时开销建筑、室内、固定关卡Light Probe Reflection Probe一般强低动态角色、移动物体与烘焙场景衔接SSGI弱强中高全屏 Pass全动态关卡低画质兜底方案APV强强中采样与插值大型开放场景兼顾动态物体Path Tracing只作离线性不适用极高离线截图、CG、光照验证实际项目里最常见组合是静态场景走光照贴图 动态物体走 Light Probe 光滑金属/玻璃走 Reflection Probe如果场景里动态物体多、遮挡多再上 APV。SSGI 我一般当作动态场景的补丁因为它依赖相机视角屏幕边缘容易露馅。Path Tracing 则是我做材质验证和输出宣传图时的专用工具不参与游戏运行时。2. 光照贴图把静态场景烤出间接光2.1 烘焙前必须检查的三件事光照贴图是整个 GI 体系的地基但如果模型和 UV 没准备好Lightmap 参数调得再好也没用。我烘焙前固定检查三项模型 UVUnity 虽然能自动生成 Lightmap UVGenerate Lightmap UVs 开关但这个自动展开的质量经常让人血压升高。如果模型比较复杂一定要在 DCC 软件里手动做一套第二套 UV专门用于 Lightmap。自动展开容易出现拉伸和过度密集的岛导致光影在物体上呈块状。物体的 Static 标记HDRP 里要参与烘焙的物体必须勾选 Lightmap Static或通过 Static 下拉菜单选择 Contribute GI。这个标记不勾光照贴图里就没有它的间接光贡献哪怕 Mesh 的 Lightmap UV 做得再完美也白搭。一个常见坑是场景大树墩子的静态标记开了但树干下面的草地忘了开于是树干阴影和地面草地的 GI 效果断层。材质球是不是 HDRP 管线材质Built-in 管线的 Standard Shader 切到 HDRP 之后如果不转换材质烘焙结果往往偏平、偏暗。HDRP/Lit 材质才有完整的 Metallic、Smoothness、Specular Color 物理反馈。2.2 Progressive GPU Lightmapper 参数怎么调HDRP 的烘焙默认走 Progressive GPU Lightmapper这套烘焙器最大的优点是用 GPU 算速度快参数实时反馈。我的习惯配置是Max Bounces最大反弹次数室内场景给 2 到 3室外给 2 就够了。别迷信高反弹数超过 3 次之后大部分场景的亮度增量肉眼几乎看不出但烘焙时间至少翻倍。And I found that in HDRP, the indirect diffuse bounces over 3 can also introduce unwanted color bleed from very saturated materials, especially red and orange props.Texel Size像素单位这个值是控制光照贴图密度的核心参数。一般来说一个房间的墙面和地面Texel Size 设置在 1.0 到 1.5 单位左右比较合适。如果你用的是 Per-Texel 控制模式那就根据实际物体大小微调——物体越小、细节越多Texel 密度要越高。Direct Sample Count / Indirect Sample Count光照贴图采样数直接用内存换质量。Direct 给 32Indirect 给 128 是比较均衡的档位。如果烘焙出来的软阴影有噪点优先加 Indirect 采样数而不是加 Direct。实现细节上HDRP 的烘焙进程是在 Lighting 窗口里点 Generate Lighting 触发的烘焙期间场景里的动态物体如果不开 Gizmo 显示烘焙数据容易让人误以为卡住了。烘焙完成后一定要在 Lightmap Display 里切换到 Shadowmask 或 Indirect 通道检查一遍逐张贴图确认没有爆炸的极亮像素或黑色漏洞。2.3 Lightmap 常见废案烘焙时间长、接缝明显怎么办我试过一次 2000 平方米的室内场景默认参数下去烘焙一次 80 分钟而且墙角的 Lightmap 接缝特别明显。后来做了三个改动把大拆小Mesh 的 Lightmap UV 岛屿如果数量太多GPU 烘焙器要处理大量边界信息。我把地形大块拆分、房间独立 Mesh烘焙速度直接降到 30 分钟以内。接缝处理Lightmap 接缝问题大多出在 UV 岛的 padding 不够。在 Import Settings 的 Generate Lightmap UVs 里把 Padding 调大一些。手动 UV 的情况下要在 DCC 里给每个岛留出足够收缩空间避免采样时把相邻岛的颜色包进来。检查 Scene View 里的光照贴图密度显示如果某个物体颜色是红色说明密度过高烘焙时间和内存都会暴涨如果是蓝色说明密度太低光影会糊。3. 探针与反射动态物体和光滑表面的最后一块拼图3.1 Light Probe Group 的布局与密度经验光照贴图只能服务静态物体场景里那位飞奔的角色如果直接吃静态烘焙就等于一个灰色模型站在彩色场景里——毫无环境光反馈。HDRP 里动态物体接收间接光的方案是 Light Probe Group灯光探针组会在场景空间里的每个探针位置采样间接光然后对物体进行四面体插值。这个探针摆放的核心原则是沿视线方向密、遮挡交界处密、空旷区域稀疏。室内转角、走廊口、门洞附近是遮挡变化最剧烈的区域一定要加密探针。我用 Auto Place 功能生成之后会一个个手动检查Green 的探针太稀、Yellow 的探针位置不太合理就把它们拖到真正的光梯度中心。另外一个容易漏掉的关键设置每个探针的 Intensity 受周围反射探针和天空盒影响如果场景中有大面积的红色地毯墙纸贴墙的探针会偏红得非常夸张。这不是 bug是因为 HDRP 的探针采样是把周围一定范围的间接光都纳入进来的。遇到这种情况要么中途加一面 Light Probes 专用的 Hidden 遮挡物要么手动调整探针位置让它离墙面远一点。3.2 Reflection Probe 与天空环境的配合光滑表面比如地板、车窗、金属把手它们的高光反射吃的是 Reflection Probe不是光照贴图。HDRP 的 Reflection Probe 可以设置为 Influence 体积影响范围但如果不手动设置它默认影响无限范围导致隔壁房间的地板反射了天空的蓝色看起来像没关门。我的经验是每个房间至少放一个 Reflection Probe并且把 Box Size 收紧到墙角范围。地板这种大面积光滑材质给一个平面 Reflection Probe 往往比球形的要稳因为它跟地板法线的贴合度更高。Reflection Probe 的更新模式选 Real-Time 会导致明显的性能开销所以除了动态车辆、水面这种必须的其他都选 Baked烘焙进光照贴图流程里。天空盒这块容易忽略的是Ambient Probe环境探针是 HDRP 里给物体一个基础 Ambient 方向光的来源如果把 HDRI Sky 的 Intensity 调成 0整个场景的暗部会像被罩了一层黑纱。可以先确认 Volume 里 Sky Exposure 是否为正值再谈怎么调反射。3.3 探针边缘不连续问题怎么救动态物体从一个探针区域走到另一个插值结果经常会闪一下或明暗突变。大部分原因是两个探针之间的间接光梯度太大而四面体网格的插值边界正好横穿了遮挡区域。解决方案有两个思路。一是摆密探针让探针间距在 1.5 米到 2 米之间尤其是移动频繁的路径上梯度变化就会平滑很多。二是检查探针是否穿墙如果探针 A 在墙内、探针 B 在墙外插值边界会有明显的穿帮感因为墙内光线出不来。把探针从墙里挪出来就好。对于超长的走廊或大型动态物体可以考虑 Light Probe Proxy VolumeLPPV它把探针数据投影到自定义体积网格里让大型物体各部位可以独立采样而不是拿中心点一个值糊弄。LPPV 的网格分辨率够高时动态物体表面能呈现出很好的间接光渐变效果接近 APV 的简化版但不需要全局烘焙 APV。4. 实时 GISSGI 与 Adaptive Probe Volume4.1 SSGI 的原理与调参边界SSGIScreen Space Global Illumination是 HDRP 里一个会在运行时对屏幕空间进行的间接光结算方案。它本质上是利用深度缓冲和法线缓冲把屏幕里可见像素当作光源再用历史帧累积的方式算出接近 GI 的反弹效果。因为它只看屏幕空间背对相机的地方、屏幕边缘外的东西统统采样不到所以叫它补丁是有道理的。HDRP 开启 SSGI 的主要入口在 HDRP Asset 的 Lighting 分类需要配合 SSGI Volume Override 使用。我调它的经验是SSGI 的质量档位选 Low 或 Medium 就够High 档在 4K 分辨率下每帧多出近 5ms 的开销肉眼提升却很小。Depth 的处理要小心大景深场景下 SSGI 会错误地把远处物体照亮导致远景发灰。这时可以把 Max Ray Distance 调短。SSGI 对相机动向特别敏感快速旋转相机时历史帧数据容易失效出现画面上的假暗部拖影。这是屏幕空间方案的先天毛病只能通过提高 History 权重来缓解但设置过高会让画面像果冻一样拖。4.2 APVAdaptive Probe Volume 的烘焙与运行时表现APV 是 HDRP 里我目前最推荐的动态 GI 方案一句话解释把整个场景用自适应的体积探针网格覆盖烘焙时在遮挡边界自动加密探针运行时所有物体——管你静态动态——都从最近的探针群插值拿间接光不需要 Light Probe Group 的手工摆放。使用 APV 的步骤场景里挂一个 Adaptive Probe Volume 组件。在它的 Gizmo 里调节体积范围和 Probe Spacing原则上贴地平面处要密高空处可以疏。在 HDRP Asset 里触发 Bake烘焙过程会和 Lightmap 一起跑输出 APV 探针数据。APV 的开销来自运行时每个物体对探针体积的查找和插值实测下来同屏 200 个动态物体时的额外开销在 1ms 到 2ms 左右比 SSGI 的稳定开销还是划算的。APV 还有一个很大的优势不需要把物体手动标 Static 参与 Lightmap 烘焙它只是把场景光照数据录入探针体积换个材质、挪动物体位置都不影响探针数据本身非常适合要频繁调整关卡设计的团队。4.3 烘焙 GI 和实时 GI 怎么分工我的最终方案是三层混合静态建筑、地形走传统 Lightmap让硬阴影和最稳定的低频 GI 由烘焙保证动态物体和可破坏物走 APV让间接光随场景变化实时更新SSGI 作为性能富余时的画质加成和近景 GI 增强。这三者之间没有冲突HDRP 会按物体标签自动决定采哪套数据所以不必担心贴图烘焙了又开了 APV会不会双份 GI 叠加——材质里可以单独控制 Indirec 光照的强度权重。5. 路径追踪离线渲染级的 HDRP 怎么开启5.1 硬件与软件前提路径追踪在 HDRP 里不是一个独立图标而是把渲染器切换成 Path Tracing 模式。开启前提是NVIDIA GeForce 20 系列以上的 RTX GPU或者支持 DXR 的显卡项目里启用 HDRP 的光线追踪支持HDRP Asset 里的 Ray Tracing 功能然后在 Camera 组件的 Renders 属性中把 Renderer 改为 Path Tracing。这里要强调没有 RTX 卡就别硬开即使开了也只是 CPU 模拟慢到无法接受。我自己的测试机上用的 RTX 3060输出 1080P 路径追踪图128 采样 降噪需要大约 3 到 4 秒一帧。这决定了路径追踪只能做离线性工具不能作为游戏运行时渲染方案。5.2 Path Tracing 模式的工作流路径追踪的工作方式简单粗暴从相机出发为每个像素发射大量光线光线在场景中不断反弹、采样材质、衰减能量最后累计出每个像素的颜色。它天然支持焦散、全局光照、多次镜面反射这是光栅化管线再怎么加 Post 也达不到的真实感。用 Path Tracing 时照明系统配置跟游戏运行时完全一致物理光强、色温、HDRI 天空、各类反射探针全部照常生效。但我建议把 Reflection Probe 关掉几个因为路径追踪场景下探针本身就成了多余数据开着反而会引入噪点和双影子。5.3 降噪器的选择与参数路径追踪原图在采样数不足时噪声很大HDRP 内置了降噪器。我的参数思路是先以 32 采样看一眼构图确认颜色和明暗方向没问题然后拉到 128 或 256 采样输出成品。降噪器开 Quality High但要注意别把它当成万能工具——降噪强度拉太高会让细小的镜面反射和高光点糊成一片金属拉丝纹理全废。如果你需要序列帧动画输出路径追踪的噪声会随着光源移动产生闪烁。这里我的土办法是固定种子Seed让每帧的随机采样序列一致再靠高采样数消除闪烁的人工痕迹而不是依赖降噪器因为降噪器对时间序列的稳定性确实不够友好。5.4 什么时候用路径追踪什么时候别用路径追踪对我而言是三个场景材质验收、项目宣传截图、以及光照迭代的视觉参考。给一个角色贴图、调一套金属 PBR 参数在 Path Tracing 下看 10 秒就能确认材质方向对不对比回游戏里拉各种曝光和后处理高效太多。但在项目运行时坚决不用它。如果你的目标是实时 VR、手游或者需要稳定 60 帧的平台老老实实回到光照贴图 APV 反射探针的路径上别被路径追踪的漂亮画面骗去性能核算。6. 场景打光的整体进路与氛围控制6.1 先定光再定相机最后定后处理很多新手喜欢一上来就摆一堆灯结果画面又脏又亮就怪 GI 有问题。我现在的习惯是先只放方向光做主光源把曝光和白平衡定到能看清全场景的程度然后加天光和 HDRI 天空把暗部环境和环境反射注入场景确定整个明暗关系之后再回来补补光、轮廓光和局部氛围光。最后才是 Post-processing 里的 Bloom、Tonemapping、Color Adjustments 这些化妆步骤。这套流程的核心原因是GI 系统的间接光是从直射光推导出来的主光源的方向和强度一旦改动Lightmap 重烘焙、APV 重烘焙后续补光全部作废。所以定光源优先级永远是第一位别急着加氛围。6.2 曝光、白平衡、Tone Mapping 与物理光强HDRP 的曝光默认自动模式但自动曝光在大场景里会疯狂适应亮度导致你精心调的光比被拉平。HDRP 里的 Mode 我一般切到 Manual或者用 Automatic 但把 Compensation 调到一个固定值手动压住画面整体亮度。白平衡通常直接交给 HDRI Sky 的色温HDRP 的 Volume 里有 White Balance 选项。白天场景给 5500K 到 6500K黄昏场景给 3500K 到 4500K重点是你所有光源的色温要和它保持一致体系别出现光源 3000K、环境 6500K 的割裂感。Tone Mapping 我用 Neutral 或 ACES 居多Neutral 偏干净可控ACES 对比更强、高光更耐看。如果场景里大量白色墙面ACES 会压高光让画面更胶但这也会让纯白变成淡灰所以要配合 Exposure 一起调。6.3 用 HDRP 的调试工具检查画面HDRP 自带 Rendering Debugger这个面板能调出光照、材质、法线等各种可视化的检查模式。我最常用的是Lightmap Preview确认烘焙结果和 UV 匹配关系。Overdraw 模式快速找出半透明材质堆叠过度的区域。GBuffer 检查看材质输入的 Albedo、Smoothness、Normal 是否合理。这些检查比肉眼看帧画面可靠得多。尤其是粗糙度我见过一个室内场景所有材质都给了 0.6 的 Smoothness结果反射探针到处糊成一片把 GI 的氛围全部毁掉。这一类问题调试面板三秒钟就能揪出来。7. 常见问题速查表与排查思路现象可能原因排查方向烘焙出的光照有明显接缝或黑线Lightmap UV 岛间距不够、Texel 密度不均检查 Lightmap UV 布局增加 Padding手动修 UV动态角色在场景里显得很灰Light Probe 密度不够或探针被墙体遮挡打开 Gizmo 检查探针分布在角色移动路径上加密地板反射是天空的蓝色像没装修Reflection Probe 影响范围过大或没有地板专用反射探针收紧 Box Size添加平面对照式探针整个场景暗部发黑没有环境反弹HDRI Sky 的 Exposure 过低或 Volume 里 Ambient Mode 被关检查 Sky Exposure 值和 Ambient Probe 权重开了 Path Tracing 后噪点巨大采样数不足、材质中存在极小的高光纹理细节提高采样数检查降噪器是否开启别再拉降噪强度硬救SSGI 开启后画面出现拖影或黑斑历史帧权重过高、Max Ray Distance 设置太长调低 History 权重缩短 Ray DistanceAPV 烘焙后动态物体间接光闪烁探针体积边界重叠、物体处在探针层级边缘检查 APV 体积范围把边界放到非关键区域最后分享一个我实际踩过几次坑之后总结的小技巧HDRP 的 GI 调试永远先看烘焙数据是否正确再看运行时消耗是否合理最后才去动后处理。大部分所谓光影不对的问题根源都在前两步——不是探针没摆好就是 Lightmap 参数给错了。我自己现在每次开新场景都会先用 Path Tracing 出一张参考图挂在旁边然后所有实时 GI 的调参都向着这张参考图靠。这样既不会被运行时性能绑架也不会被后处理带偏审美方向。这套方法配合上面的流程已经是稳定产出高质感 HDRP 场景的核心套路了。