2026-06-01 引擎周报
✨ 新功能
- SubmitTool 动态配置更新:为 SubmitTool 添加了启动时自动从代码库下载配置文件的功能,这些配置会被合并到配置层级中,实现了工具设置的动态更新,无需重新部署。
- 提交工具查询参数:引入了
QueryParams配置项,允许通过正则表达式匹配的键值对追加到预检 URL,取代了功能较窄的旧AdditionalTasks机制。 - 控制台控制器模型加载:OpenXRRenderModel 插件现在支持通过
XR_EXT_render_model扩展加载控制器网格。 - MetaSound 工具更新:
UGameplayTagsToolset新增了ListTagsInSource工具,并明确提及其对 Gameplay Tag INI 文件的支持。 - Slate 调试支持:UbaVisualizer 修复了在高 DPI 会话中文本图集的分配失败问题。
- PCG 节点日志:PCG 图执行日志现在使用更具描述性的节点名称,与性能分析日志输出保持一致。
- Gaussian Splat 组件:
UGaussianSplatComponent新增了PointScaleFactor和OpacityScale属性。 - Nanite Groom:为 Nanite Groom 构建器添加了曲线蒙皮数据生成功能。
- 编辑器工作流:为 Details 面板中的 Actor 标题添加了“浏览到蓝图”命令。
- 引擎入口点:在编辑器和启动器中禁用了 AUTORTFM,以提高稳定性。
🚀 重大变更
- MegaLights 着色器线程组:调整了多个 MegaLights 着色器(StochasticLightingTileClassificationMarkCS、DenoiserTemporalCS、DenoiserSpatialCS)的线程组大小以支持非 8x8 的配置。在
ThreadGroupSizeMode 1下,这些着色器的线程组大小变更为 16x8。 - 多服务器启动:
LaunchMultiServer不再支持在-client=参数中使用多个相同的客户端条目,因为其启动值(如ProxyClientCount)将失去意义。 - 原型预填充禁用:通过 CVar 禁用了原型预填充,以避免破坏对象的重实例化。如果遇到复杂的对象图重实例化问题,可能需要重新启用此选项。
- 资源迁移断言:现在当资产在迁移期间被序列化时会触发断言。
- VulkanRHI 资源延迟删除:在桌面平台上将删除延迟更改为 0,并在没有帧延迟时通过
RHIProcessDeleteQueue处理DeferredDeletionQueue。 - 平台写入监视器:为
PlatformWriteMonitor添加了用作 IAS 调速器的支持。
⚡ 性能优化
- MegaLights 屏幕追踪优化:为
ScreenSpaceRayTraceLightSamplesCS添加了无跟踪压缩的屏幕追踪选项。在ThreadGroupSizeMode 1下,线程组大小变更为 128 线程,在特定主机上 540p 分辨率下可节省约 0.12 毫秒。 - 文件路径映射性能:提升了
MapCaseInsensitiveFile在重复查询目录时的性能。 - Mass 复制子系统优化:
UMassReplicationSubsystem::SynchronizeClientViewers在没有 replication bubble 存在时现在会提前返回,避免了不使用复制气泡的体验运行此代码。 - RHI 内存管理:修复了
GetContainerChunkFromChunkId以正确处理可选数据段。 - GPU 层级遮挡剔除:为
InstanceCullingUniforms中的BatchedPrimitiveData和BatchedInstanceData绑定了虚拟缓冲区。
🐛 Bug 修复
- 距离场指针复用:修复了因指针被用于不同资产而导致的距离场 Bug。
- 集合合并崩溃:修复了在合并单个骨骼的集合簇时发生的崩溃。
- MegaLights 时间降噪器:修复了场景纹理尺寸变化后时间降噪器失效的问题。
- 移动设备 Bloom:修复了移动设备上 Bloom 金字塔步骤因子与质量因子不独立的 Bug。
- Nanite 装配修剪:修复了在装配部分修剪时使用错误集群组的问题。
- 源代码控制差异:在
FSTClientUser中重写了Diff方法,以便在服务器回退到客户端差异比较时(通过P4DIFF的外部差异工具),能够安全地从 RPCvarList中捕获clientFile和depotFile元数据。 - Niagara 路径追踪:修复了由于对
RayTracingLODs无效索引导致的崩溃。 - MVVM 异步加载:修复了在激活异步加载线程时弃用机制工作不正常的问题。
- UI Framework 按钮点击:修复了当其他 widget 覆盖按钮时,
UIFrameworkButtonWidget的点击事件传递问题。 - HLOD 精灵网格:修复了精灵网格近似 HLOD 中的崩溃和双重构建缩放问题。
- ControlRig 节点:将缓存的绑定值暴露给垃圾回收,以解决 ControlRig 节点的问题。
- Slate 组件池:在插件卸载时刷新组件池引用的资产。
- 材质重置箭头:当没有设置
MeshComponent覆盖时,隐藏材质重置为默认值的箭头。 - 动画数据库:从
AnimDatabase中移除了所有曲线。 - Sequencer 相机弹射:在从相切断开时重置相机滚转角,与直接驾驶/弹射相机时的行为保持一致。
- UE 入口点:修复了在编辑器和启动器中禁用 AUTORTFM 的相关问题。
- Groom 蒙皮数据:修复了 Nanite Groom 构建器中曲线蒙皮数据生成的相关问题。
- 静态分析扩展:修复了
UnrealBuildTool中bStaticAnalyzerExtensions的默认值问题,以及使用此扩展时的预编译头文件(PCH)问题。 - 命名管道日志:在非 Shipping 构建中启用了命名管道日志。
- nDisplay:修复了 CIS 报告的问题。
- 移动设备纹理:修复了移动设备上纹理通道使用理想部分以获得一致的纹素到世界空间比率的问题。
- 统计报告竞争条件:修复了当 CSV 块命令关闭时,统计报告的竞争条件。
- 静态分析警告:修复了
UnrealBuildTool中的静态分析警告。
🔧 API 变更
- NSS 动态结构体:除了
BindStruct外,现在还公开了DropStruct辅助函数,以一致地释放动态结构体。 - 资产读取分析:添加了一个委托,用于存储来自实时客户端的不同资产读取数据,并通过 Analytics 服务在
EndPlay和MatchEnd时发送哈希包 ID 的列表,以收集稀疏数据并最小化性能影响。 - 云 DDC 启动探针:为云 DDC 添加了指定启动探针的能力,为启动时间较长的情况(如使用数据存储时)提供了更多灵活性。
- 构建设置版本:
BuildSettings添加了用于BuildSettingsVersion的辅助函数。 - 动画操作验证:将
AnimOp验证函数移至FUAFAnimNode,使节点能够专门化其验证。 - 自定义属性处理:现在在接口字段上运行自定义属性处理器。
- Unreal Toolbox:现在并发轮询
ToolCatalog市场源,隔离每个源的故障,并在所有轮询完成后应用一个合并的目录快照。 - CPU 性能分析事件:为 IAX 添加了缺失的
TRACE_CPUPROFILER_EVENT_SCOPE。 - 输出设备初始化:将输出设备的初始化时间点提前到引擎预初始化阶段,确保
GWarn/GError在 Trace 启动其工作线程之前可用。 - World Partition 列:在 TEDS 中为未加载的 Actor 添加了 World Partition 列。
⚠️ 废弃预告
- UMG 触摸动作包装器:为 UMG 的
Touch Action Wrapper添加了废弃消息。