2026-06-09 引擎周报
✨ 新功能
- 资产管理器: 为
PrimaryAssetTypeInfo新增bNeedsLoadForCooking属性。这使得除PrimaryAssetLabel之外的PrimaryAsset可以选择在 Cook 阶段被加载,以覆盖其在上次编辑器保存时存储的数据 AssetBundle 和其他数据。 - D3D12 常驻内存管理: 为
CREATE_NOT_RESIDENT资源创建标志添加设备功能检查,仅当设备支持ID3D12Device8(Win10 20H1+) 时才启用,以提高兼容性和资源管理的灵活性。 - Lumen: 新增
r.Lumen.SkylightPrefilterMipBias控制台变量 (设置为 0 或 1),可启用天空光预过滤。这能减少包含光源的天空光的噪声,但可能在室内引入一些光线泄漏。
🚀 重大变更
- 硬件光线追踪 (HWRT): 在
FRayTracingGeometryInitializer中显式提供了IndexBufferStride。相关代码现在使用此属性,移除了之前依赖在 RHI 线程外访问IndexBuffer的保守假设,提高了代码的安全性和明确性。 - MVVM: 将
UMVVMView::Destruct()中的check(bConstructed == true)断言降级为一个提前返回(early-out),以避免在特定顺序下调用时崩溃。 - CommonUI: 重构了编辑器按键传递逻辑 (
UCommonUIActionRouterBase)。现在从CommonUISettings读取需要忽略的按键绑定列表,而非硬编码。新的按键绑定可以在项目设置 (Plugins->CommonUIFramework) 中添加,并默认保留旧版“停止播放会话”的忽略设置。
⚡ 性能优化
- 网格分区 (Mesh Partition): 优化了三角形归属判定逻辑。现在,如果三角形的任何顶点与过滤边界重叠,则将其归属于相应的网格单元。这避免了地形类网格中常见的长条形四边形被错误地切割成锯齿状边缘的问题。
- 骨骼网格体 (Skeletal Mesh): 新增了一个选项,可以在阴影深度渲染中将骨骼网格体作为静态网格体渲染。当皮肤缓存不可用时,对于变形细微的骨骼网格体,这是一种有效的优化。初步测试显示,对于约 1.4 万面数的网格,阴影深度渲染时间从 0.16 毫秒降低至 0.08 毫秒。
🐛 Bug 修复
- 增强输入系统 (Enhanced Input): 修复了因优化过度引入的 Bug。当输入映射上下文 (IMC) 在按键被忽略的状态下被添加时,其关联的动作无法触发。修复方案改为按 (键, 动作) 组合跟踪忽略状态,以正确处理多个 IMC 映射到同一输入动作的情况。
- 音频: 修复了调制路由未被应用于声音提示中所有波形实例的 Bug。
- 崩溃修复: 修复了当
NumHierarchyElements为 0 时发生的崩溃;修复了FCascadeEditorModule::ShutdownModule中的 use-after-free 问题;当参考姿势无效时,避免了崩溃。 - Lumen: 修复了当无效辐照度场探针(例如非常靠近几何体的探针)所有均无效时可能显示为全黑的问题。现在会钳制无效探针的最小权重,确保至少有某种输出。
- 动画: 修复了在死亡混合和惯性化节点中,过大的根运动旋转增量可能导致角速度转换错误的问题;在 Mover 和 PoseSearch 中,在提取角速度前,强制对增量旋转和翘曲后的根运动旋转进行最短弧规范。
- 媒体 IO: 修复了在隔行扫描和逐行扫描模式之间切换时可能触发的断言错误。
- CoreUObject: 修复了在保存不含本地化文本的 FText 资产时可能发生的序列化问题。
- InstallBundleManager: 修复了无法识别与 DLC 关联但未分配 Chunk 的包的 Bug。
- VulkanRHI: 修复了当
r.Vulkan.UseMemoryBarrierOpt设为 0 时,读回纹理 (readback textures) 的处理问题。 - PCG: 修复了在保存 PCG 数据资产时,数据 Outer 对象可能导致的问题;修复了图差异 (graph diff) 中的潜在问题。
- Chaos 布料: 修复了使用 SKM 布料数据集成时,碰撞骨骼方向错误的问题。
- Shader 编译: 通过基于 Shader Map 顺序对 Shader 数据进行排序,修复了
ResourceIndex失效的问题;修复了ExportMaterialProxy未处理已连接输入可能修改 Shader 布局的方法,导致的编译与保守参数不匹配问题。
🔧 API 变更
- CommonUI: 编辑器按键传递逻辑的 API 行为变更,现在从配置读取忽略列表。
- Core: 为
TConstStructView添加了接受ScriptStruct和StructMemory的构造函数,以匹配TStructView的功能。 - UnrealEd:
ResavePackagesCommandlet现在向子类暴露了BuildPackageFilterFlags方法,并支持处理来自子类的预填充PackageNames。 - RHI: 控制台变量
r.RHI.UniformBufferContentMap.Enable现在支持在运行时切换。 - FMeshPassProcessor: 修改了构造函数,现在如果未显式传入
FScene指针,则通过传入的FSceneView解析,以确保在所有已知情况下均可访问场景数据。
⚠️ 废弃预告
- Swap 函数: 现在,对
const值调用Swap会产生警告,以维持向后兼容性。