HDRP 示例场景深度解析:为 Entities 配置光照探针(Light Probes)
2026/9/16 19:32:03 网站建设 项目流程

HDRP 示例场景深度解析:为 Entities 配置光照探针(Light Probes)

【免费下载链接】EntityComponentSystemSamples项目地址: https://gitcode.com/GitHub_Trending/en/EntityComponentSystemSamples

本指南围绕 Lightprobes 示例场景 展开,讲解如何在 HDRP + Entities Graphics 项目中,通过烘焙全局光照(Baked Global Illumination)与光照探针(Light Probes)为 ECS 实体提供间接光照。读完本文,你将掌握子场景(SubScene)内的静态灯光与动态实体在光照探针体系下的正确协作方式,并学会从零复现该示例的烘焙与场景配置流程。

示例定位:Entities 光照探针支持

Lightprobes 是 HDRPSamples 工程 中 "1. Lighting" 主题下的三个光照示例之一。该目录下三个场景构成了 ECS 间接光照的完整拼图:

场景主题
AmbientAndBlendProbes环境探针与混合探针(Blend Probes)的配置对比
LightmapsEntities 的烘焙光照贴图(Lightmap)支持
LightprobesEntities 的光照探针(Light Probes)支持

原文档明确指出:本示例用于demonstrates lightprobe support for Entities,即验证 ECS 世界中动态实体同样能通过光照探针获得烘焙间接光照。场景中的球体使用不同的受光着色器(lit shaders),全部依靠光照探针来照亮,而非直接光照贴图。

场景构成:从序列化文件看探针体系

从仓库的 Unity 序列化文件可以还原场景的实际构造,这比只看文档更直观地理解"谁在发光、光从哪来"。

主场景中的 Light Probe Group

主场景 Lightprobes.unity 中实际放置了一个名为Light Probe Group的 GameObject(见该文件第 519 行附近m_Name: Light Probe Group)。这正是光照探针的位置数据来源:烘焙时 Unity 会以这些探针点为采样点,记录空间各处的间接光照与球谐(SH)系数,运行时再插值到动态物体上。

子场景中球体的探针配置

核心场景内容位于子场景 SubScene.unity。其中的球体(如SphereSG)由 SphereCollider、MeshRenderer、MeshFilter、Transform 组成,其 MeshRenderer 关键配置为:

  • m_LightProbeUsage: 1——对应 Inspector 中Mesh Renderer → Probes → Light ProbesBlend Probes模式(1 即 Use Light Probes / Blend Probes);
  • m_ReflectionProbeUsage: 1——启用反射探针;
  • m_ProbeAnchor: {fileID: 0}——未显式指定锚点,使用世界原点附近的探针插值;
  • m_StaticEditorFlags: 0——球体未标记为 Static,这正是文档第 3 步要强调的点:动态物体靠探针接收烘焙间接光。

子场景中的多个球体(文件中多处出现m_LightProbeUsage: 1的 MeshRenderer)使用不同着色器,用以对比各类 lit shader 在探针光照下的表现一致性。

复现步骤:完整烘焙流程

以下为原文档提供的操作流程,结合仓库中的实际文件给出补充说明。

第 1~2 步:打开子场景

在 Hierarchy 中选择 Subscene,在 Inspector 中点击Open进入子场景编辑模式。仓库中该子场景位于 Subscenes/SubScene.unity。

第 3 步:核对 Static 标记

在子场景中确认:灯光标记为 Static(烘焙时作为光源参与计算),球体不标记 Static(它们作为动态实体,通过探针采样间接光照而非直接烘焙光照贴图)。这一静态/动态划分是整个示例的技术核心。

第 4~5 步:开启 Baked GI 并生成光照

  1. 打开Window > Rendering > Lighting窗口;
  2. 切到Scene标签页;
  3. 勾选Baked Global Illumination
  4. 按需配置 Lightmapping 参数(分辨率、采样数、弹射次数等);
  5. 点击Generate Lighting开始烘焙。

烘焙完成后,场景目录下会生成一份LightingData.asset(见 LightingData.asset),子场景的 LightmapSettings 会通过m_LightingDataAsset引用它。此外目录中还会产出两张 1024×1024 的光照贴图产物:

  • Lightmap-0_comp_dir.png/Lightmap-1_comp_dir.png——方向光照贴图(DIR 通道);
  • Lightmap-0_comp_light.exr/Lightmap-1_comp_light.exr——HDR 光照贴图(LIGHT 通道,EXR 保留高动态范围)。

这些文件证明该场景在烘焙时同时产出了光照贴图与探针数据,二者共同构成 Baked GI 体系。

第 6 步:保存并关闭

保存主场景与子场景,然后Close子场景。之后在 Play Mode 或构建的玩家程序中,球体将始终以 Entities Graphics 管线渲染(参见 HDRPSamples README 中对子场景渲染方式的说明:SubScene 中的 GameObject 在编辑模式、播放模式与构建产物中都会以 Entities Graphics 渲染)。

底层原理:烘焙参数与 GI 模式

从子场景的 LightmapSettings 序列化数据(第 43 行起)可以还原示例使用的烘焙配置,理解这些参数有助于调整自己的场景:

参数示例值含义
m_GIWorkflowMode: 11(On Demand)手动触发光照烘焙,对应 Generate Lighting 按钮
m_EnableBakedLightmaps: 1开启烘焙光照贴图
m_EnableRealtimeLightmaps: 0关闭不启用实时 GI(Enlighten 实时模式)
m_AtlasSize: 10241024光照贴图图集尺寸
m_BakeResolution: 4040 texels/unit烘焙贴图分辨率
m_PVRSampleCount: 512512Progressive Lightmapper 的采样数
m_PVRBounces: 22间接光弹射次数
m_PVREnvironmentSampleCount: 256256环境光采样数
m_LightProbeSampleCountMultiplier: 44光照探针采样数倍率,直接影响探针烘焙质量

其中m_LightProbeSampleCountMultiplier是决定探针精度的重要参数:倍率越高,每个探针位置的采样越密集,烘焙出的间接光照越平滑,但烘焙耗时也越长。本示例取 4,是质量与速度的平衡点。

进阶参考:相邻示例与 SH 覆盖

如果希望进一步理解探针体系在 Entities 下的应用,仓库提供了两个可直接对照的场景:

  • AmbientAndBlendProbes:将 2 个 GameObject 与 2 个相同配置的实体(MeshRenderer.Probes.LightProbes组件配置)并排放置,演示 Ambient 与 Blend Probes 两种模式的差异;
  • BuiltInMaterialSHProperties:演示如何在 Entities 上覆盖内置材质的 SH(球谐)属性值,即在探针数据之上进一步自定义间接光颜色。

小结

Lightprobes 示例用一个简洁的场景回答了"ECS 实体如何获得烘焙间接光照"这一问题:静态灯光 + 动态球体 + Light Probe Group + Baked GI,四者结合即可让使用不同 lit 着色器的实体在子场景中获得一致、平滑的探针光照。其场景文件(主场景 与 子场景)本身就是最直观的配置范本,可直接参照复刻到自己的 HDRP + Entities 工程中。

</|DSML|parameter> </|DSML|invoke> </|DSML|tool_calls>

【免费下载链接】EntityComponentSystemSamples项目地址: https://gitcode.com/GitHub_Trending/en/EntityComponentSystemSamples

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询