虚幻引擎:开创视觉与创意的新纪元

先看看据说虚幻5做出来的东西吧:

虚幻引擎5!!!4K画质PS5实机演示!

好了,用文字认识一下吧:

虚幻引擎5.3对UE5的核心工具集作了进一步优化,涉及渲染、世界构建、程序化内容生成(PCG)、动画和建模工具、虚拟制片、模拟等多方面。

渲染

纳尼特

纳尼特

显式切线

Nanite现在支持在数据格式和运行时中使用显式切线(Explicit Tangent)。此前,Nanite依赖的切线空间是在材质中隐式派生的,并且需要依赖屏幕空间位置和UV梯度。这种方法在计算上很方便,使切线不占用内存和磁盘空间,并且在实际使用中,非常适合各种类型的网格体,尤其是高度曲面细分的网格体。但是,在某些情况下,特别是涉及低面模型时,隐式切线会很不精确,往往需要按顶点自定义切线才能获得需要的品质。为了解决该问题,用户现在可以选择是否在资产上保存和使用原始模型切线。启用此选项后,将产生某些负面影响,即资产的内存和磁盘占用量大约会提高10%。

Nanite样条线网格体(试验性)

我们对基于Nanite网格体的样条网格体组件进行了初步实现。在设置 文件中设置 r.Nanite.AllowSplineMeshes=1 即可启用此功能。警告:目前,启用此功能会导致性能降低,并影响Nanite的整体剔除表,在某些极端变形情况下,还存在错误剔除的问题。.ini

遮罩材质和像素深度偏移(PDO)的性能优化

针对可编程光栅,引入了新的滑动窗口顶点缓存,带来更快速的遮罩材质和PDO。初步测试表明,带遮罩的植被的光栅化速度提高了20%。

Nanite对象的选中效果

启用TSR/TAA后,选中Nanite对象后不再会出现轮廓闪烁,也不会被其他对象剔除/遮挡,并且会按最终分辨率渲染。

Nanite实例化静态网格体(ISM)/植被实例的选中效果

我们修复了编辑器中的几个问题,这些问题与选择、修改或删除启用了Nanite的实例化静态网格体或植被Actor实例有关。

回退目标设置

我们为Nanite静态网格体添加了回退目标(Fallback Target)设置。通过此菜单,你可以更明确地控制回退效果以及回退方法:相对误差法(Relative Error)还是百分比三角法(Percent Triangle)。

流明

流明

  • 如果启用了基于硬件光线追踪(HWRT)的命中光照,并且在后期处理体积中将“最大反射弹射次数(Max Reflection Bounces)”设置设为 2 或更高,Lumen将支持多次反射弹射。如果有足够的性能预算,这种方法还能防止反射中出现黑色区域。

  • Lumen反射现在可以在没有Lumen GI的情况下使用。这点适合那些只想用静态光照,但不仅仅想依赖反射捕获/探头来提升反射质量的游戏或应用。这类Lumen反射仅在启用HWRT时起作用,它将自动启用命中光照,因为当禁用Lumen GI时,Lumen的表面缓存优化不可用。

  • 我们对Lumen HWRT进行了重大优化,包括在主机上默认为HWRT启用异步计算。

  • Lumen Overview可视化模式现在包括Lumen Scene的几何体法线视图,这样有助于发现全局距离场(在软件光线追踪的情况下)或Nanite回退网格体(在HWRT的情况下)的问题。

  • 我们添加了r.Lumen.Reflections.VisualizeTraces,用于可视化和调试反射光线。

  • 我们修复了材质AO,它之前在自发光和直接光照上应用。

正交渲染(试验性)

正交渲染

正交渲染在建筑可视化和制造业项目中很常见,在游戏中也常用于一些风格化摄像机镜头。长期以来,它一直在UE中作为摄像机的一项功能,但由于很多渲染功能都不支持,因此实际使用较少。

从5.3开始,正交渲染作为一项试验性功能受到支持。我们修复了引擎的多个方面,以便透视投影和正交投影在功能上实现对等。UE5的大部分当下功能都可以正常运行,包括Lumen、Nanite、阴影。该功能还在持续开发之中,我们非常乐意倾听你的反馈,了解你是如何在项目中使用它。

稀疏体积纹理(试验性)

稀疏体积纹理

在UE 5.3中,我们引入了全新的资产类型:稀疏体积纹理(Sparse Volume Texture,SVT)。SVT能够保存烘焙后的模拟数据,这些数据可用于表示各类体积化媒介,例如烟雾、火焰和水。要创建SVT,可以导入在其他3D应用程序中创建的OpenVDB( )文件;支持单个文件和动画序列。此外,Niagara流体现在会在内部缓存为SVT,以便大幅优化性能和内存。.vdb

SVT与3D纹理/体积纹理类似之处在于,它将纹素(体素)保存在3D数据结构中,并可以使用三维UV坐标建立索引。不同于常规(密集)体积纹理,SVT只需要在包含"有趣"的数据的体积区域上耗费内存,相较于密集体积纹理,能够允许大得多的体积,或者对相同规模的体积使用更少的内存。

某些基于延迟渲染的效果,例如异类体积、体积云和体积雾等,可以通过在其体积域材质中包含一套稀疏体积纹理材质节点,来充分利用SVT。使用异类体积渲染的资产必须利用新的异类体积组件。延迟渲染功能仍然限于现有的实时体积功能集。我们提供了对渲染体积的更完整支持,但只作为试验性功能在路径追踪器中提供,可以精确模拟散射、阴影和GI。还有一个非常简单的稀疏体积纹理查看器组件,主要用于调试,并适用于延迟渲染器。

路径追踪器

路径追踪器

  • (试验性)路径追踪器现在初步支持追踪异类体积,例如烟雾、火焰和云。异类体积可以采用Niagara流体插件创建,或通过使用稀疏体积纹理驱动的数据实例化异类体积Actor来创建。VDB文件可以导入为稀疏体积纹理,因而可以在路径追踪器中渲染。注意:此系统尚不兼容天空大气云。

  • (试验性)现在路径追踪器中支持Substrate材质。

  • 次表面散射取样效率得到提升,对于相同数量的光线取样,在次表面材质中造成的噪点更少。

  • 路径追踪器现在渲染其自己的深度通道,而不是使用光栅化程序生成的通道。这样一来,深度和RGB结果之间可更精确地匹配,优化依赖于景深等深度的后期处理通道。(此更改不影响"参照景深"。)

  • 现在支持材质图表中的DBuffer贴花着色节点。这些节点自5.0以来就可用,极大地扩展了材质中贴花的功能。(有关DBuffer贴花着色节点的文档将在发布UE 5.3时提供。)

  • 后期处理材质缓冲区现在有专门用于路径追踪器的更多输出。这些缓冲区可通过材质图表中称为“Path Tracing Buffer Texture”的新节点访问,并提供辐射、降噪辐射、反射率、法线和方差的数据。

Substrate(试验性)

酶作用物

Substrate在5.2中作为试验性的功能发布,会将着色模型的固定套件(例如默认光照和透明涂层)替换为表现力更强、更为模块化的框架,以提供更大范围的表面外观和更宽泛的参数空间。性能将根据复杂性和期望的预算而调整,旧版材质的开销与以前相似。

Substrate在5.3中仍为试验性。它不应该用于制片场景,但我们鼓励你测试它,希望你能在此开发阶段为我们提供意见反馈。

UE 5.3包含Substrate的功能、稳定性和性能方面的许多优化。一些更改包括:

  • 新的闪光和高光度轮廓功能,主要用于汽车应用。

  • 改进了DBuffer着色节点支持。

  • 用于高规格平台的新绒毛模型。

  • 我们更新了材质编辑器中的“Substrate材质信息(Substrate Material Information)”选项卡,更好地显示材质性能和拓扑信息。

  • 我们添加了许多漏洞修复和性能优化。

虚拟阴影贴图

虚拟阴影贴图

  • 我们不再将UE 5.3中的虚拟阴影贴图视为测试版,现在将其视为可投入使用。虚拟阴影贴图(VSM)仍有很多开发工作要做,但这一转变反映了当前暂定功能集的稳定性和可行性。

  • 现在,即使启用阴影缓存时,VSM也会遵守Nanite剔除距离。之前,启用了缓存时,阴影中会忽略剔除距离,因为它可能在主渲染和阴影贴图之间造成不一致。但是,如果针对频繁的剔除调整了内容,这可能对性能造成很大影响。依赖剔除的场景现在有更快速的阴影,但如果剔除距离足够短,能够在主渲染中看到停顿,就可能出现阴影瑕疵。

  • 我们添加了逐个为图元添加标记的功能,允许用户控制阴影失效行为。这样用户就有办法在一些情况下防止失效,例如,图元已知会静态使用WPO设置的情况下,目前我们的系统不能自动对此进行推断。默认设置是“自动(Auto)”,除非显式更改,否则会保留当前行为。

  • 我们做了更多漏洞修复和性能优化。

毛发

毛发

我们为Groom和Groom绑定资产添加了Groom流送支持。这样就能在编辑器和游戏中更快地加载内容,因为只需加载所需部分即可;Groom资产的CPU和GPU内存压力也得到缓解。

我们添加了连续LOD,当屏幕存在大量Groom但只占据屏幕较小部分时,这有助于缩放/提升性能。此设置默认关闭,你可以使用 来启用。r.HairStrands.ContinuousLOD

我们为变形器图中的毛发发束添加了试验性的支持,包括支持编写自定义属性。这仍处于开发早期,但可在运行时在变形器图表中做出Groom更改。

我们修改了Groom属性,现在更加灵活,更容易添加新的可选属性。我们添加了两个新的可选属性(clumpID / AO)。Groom属性的数字值现在可在Groom编辑器中看到,以便更轻松地检查。

在资产导入期间,点/曲线限制现在会报告给用户,并相应修剪数据。此外,现在导入的属性在导入时以及在Groom编辑器中会清晰显示,以便直观地看到特定Groom资产的可用内容。

我们做了许多额外的漏洞修复和性能优化。

时序超分辨率(TSR)

时序超分辨率

我们引入了新功能,在禁用动态分辨率时(主要是在PC平台上)更好地自动控制游戏中的屏幕百分比。默认启发法基于所显示像素数量的最优TSR收敛速率来设置屏幕百分比。这样一来,最终用户应该更容易摸索找到其设备的最佳设置。

编辑器有多项新的UX功能,可辅助理解和控制编辑器和PIE视口中屏幕百分比的行为。

我们添加了对桌面GPU上16位运算的初步支持,前提是硬件支持,包括Radeon RX 5000系列(RDNA)显卡和更高版本。

我们修复了TAA和TSR之间关于自发光表面的Lumen屏幕空间追踪的不一致情况。

我们做了许多优化和漏洞修复。

渲染资源查看器

渲染资源查看器

渲染资源查看器是UE 5.2中引入的工具,可用于完全了解GPU内存分配情况和渲染资源,例如顶点缓冲区和索引缓冲区,以及它们来自哪些资产,例如静态和骨骼网格体。这为美术师和开发人员带来了优化GPU内存并使其项目保持在渲染预算之内所需的信息。

UE 5.3中的新增功能:

  • 你现在可以选择渲染缓冲区/纹理并跳至内容浏览器中的源资产。

  • Insight Memory Trace现在会追踪DX12资源,而Insight Metadata Trace会像渲染资源查看器那样追踪资源所有者路径。这些功能可补充渲染资源查看器,后者仅在编辑器中起作用,并允许追踪所属资产路径、渲染资源的调试名称,及其在打包版本中的所有者渲染类名。

光照

光照

  • 带有光线追踪的阴影的光源现在可以选择对体积雾投射阴影。你可以使用控制台变量r.VolumetricFog.InjectRaytracedLights启用此选项,由于存在性能开销,它在默认情况下关闭。

  • 现在,聚光灯、点光源和矩形灯可以将其强度单位设置为 'EV'(曝光值),这意味着您可以以相对的 "档位" 或2的幂次增量设置强度。

世界构建

关卡实例Actor筛选器

关卡实例Actor筛选器

Actor筛选器在世界分区关卡内允许每个关卡实例采用变体。它们包含数据层实例和/或本地数据层,设置为支持通过纳入用户定义的默认筛选器来筛选Actor。根据每个关卡实例中设置的筛选器默认值、覆盖和激活状态,将在流送生成时纳入或排除与这些预配置的筛选器关联的所有Actor。筛选掉的数据将完全从游戏中删除。

关卡流送持久性(试验性)

关卡流送持久性是一种插件,用于管理流出/流入关卡中包含的对象上特定标记属性的保存和恢复。这些属性在引擎配置( )文件中定义。 .ini

这可在Gameplay期间通过内存中快照提供持久存储的属性,还可以在会话之间持久存储,前提是通过提供的API实现了这一功能。

Nanite地形

Nanite地形

Nanite现在可以在地形Actor中启用,与正常地形渲染相同。Nanite地形网格体在后台重新构建,以免在编辑器中时干扰用户工作流程。Nanite地形不会优化地形分辨率,但允许用户利用Nanite运行时功能,例如GPU剔除、自动几何体流送和LOD,它通常会提升运行时性能,尤其是对于VSM等很耗资源的功能。

大型地形导入/导出

我们更新了地形导入/导出,利用世界分区,将导入操作分拆为多个连续批次,从而支持非常大的地形/分辨率。

地形物理材质显示

地形物理材质现在可以在显示碰撞时使用新的控制台变量 来显示。启用后,它可帮助用户调试物理材质的导出情况,尤其是在使用Landscape Physical Material Output节点时。 landscape.CollisionMesh.ShowPhysicalMaterial

地形LOD组

我们添加了LOD组,以便在相同组中的多个地形Actor之间无缝进行LOD过渡。

程序化内容生成(PCG)

层级化生成

层级化生成

利用层级化生成,你可以在相同PCG图表中执行不同的网格大小。

在PCG图表设置中设置默认网格大小轴后,用户可以开始添加Grid Size节点,定义应该执行下游元素的粒度。以更高网格大小处理的数据可以在所有更小的级别使用。

利用此分层逻辑,用户可以实现更加优化的程序化生成,尤其是在运行时的大型世界上。

来自外部数据的规则处理

来自外部数据的规则处理

我们现在支持来自外部数据的规则处理,提供了与《城市示例》项目的规则处理器插件等同的功能来管理外部数据,处理这些数据,并在目标Actor上生成构件。

其中包括:

  • 对Alembic点云和数据表的外部数据支持

  • 用于将Alembic文件转换为PCG设置资产的工具

子图表检查

子图表检查

我们添加了对通过父图表中的属性列表视图来调试和检查PCG子图表的支持。

图表实例参数

图表实例参数

我们引入了蓝图API来获取和设置PCG图表用户参数。其他新增内容包括UX优化以及筛选支持的类型。

自定义PCG元素

自定义PCG元素

为了改进自定义PCG元素的创建工作流程和可读性,我们重命名了特定于PCG的蓝图循环函数。我们还添加了新函数来按顺序设置和输出PCG数据集合。

开发人员迭代

多进程烘焙(测试版)

多进程烘焙(Multi-Process Cook) 利用可用的CPU核心和内存资源,帮助缩短从构建场服务器或在本地工作站上获取烘焙的输出所需的总时间。

多进程烘焙是UE 5.3的测试版功能。根据项目大小和数据的分离情况,性能增益可能有所不同。为实现最佳效果,我们推荐你根据项目和可用硬件规格测试不同的CookProcessCount值。

虚拟资产

虚拟资产现在可在UE 5.3中投入使用,推荐用于使用Perforce版本控制和共享虚幻DDC(派生数据缓存)的团队,以实现最佳性能。

总的来说,虚拟资产可显著减小本地项目数据的大小,只需同步核心资产元数据,然后根据需要下拉批量数据,因此同步速度更快。

虚拟资产支持用于纹理、音频数据和静态网格体(包括Nanite)。批量数据使用Oodle压缩,以进一步节省数据大小。

如果你需要离线,可以在启动项目时预先缓存命令,以便将虚拟化数据缓存在你的计算机本地。虚幻自动化工具(UAT)中还提供了"自动修复/重新虚拟化资产"检入脚本,用于捕捉项目范围内错误地取消虚拟化的所有资产。

C++20默认版本

UE 5.3现在使用最新C++20标准编译,该版本在你的开发环境中受支持。

我们向虚幻编译工具(UBT)添加了C++20支持,可使用目标或模块设置进行控制;C++14已标记为弃用,不再受支持。

无论目标C++标准是什么,所有引擎模块默认使用C++20编译。其他模块仍支持C++17,但可以根据需要选择加入C++20。

C++ 虚幻头工具

我们从虚幻引擎删除了 C++ Unreal Header Tool。请使用C# Unreal Header Tool。

平台

XR光谱仪

XR光谱仪

注视追踪的注视点可变速率着色(试验性)

在开发XR应用程序时,性能至关重要。利用此试验性的功能,注视追踪的注视点图像生成可以用于OpenXR,减少了绘制的像素总数。

  • 确保启用了OpenXR和OpenXR EyeTracking插件,并设置:

    • XR的。VRS。注视点Level 1-3以启用注视点

    • XR的。VRS。GazeTrackedFoveation 1以启用注视追踪的注视点

    • XR的。VRS。FoveationPreview 1以启用注视点遮罩的预览

Nanite的单通道立体渲染

启用实例化立体渲染时,Nanite现在可以在单个通道中渲染两个立体视图。

  • Nanite渲染过程包括多个步骤,为每只眼睛分别执行这些步骤不是最优操作。启用了ISR的项目现在可以让Nanite管线的每个步骤同时处理两只眼睛,减少了总体渲染时间。

  • 如果你怀疑此技术会造成问题,可以使用r.Nanite.MultipleSceneViewsInOnePass=0将其禁用。

Lumen全局光照的立体优化

Lumen GI有许多按视图区分的缓存。由于立体视图在位置和方向上彼此靠得非常近,我们可以在各个视图之间复用部分缓存。

  • 如果遇到问题,你可以使用r.Lumen.StereoOptimizations=0将其禁用。

手持AR优化
  • ARCore SDK已更新到1.37

  • ARCore插件清理:

    • 删除了弃用的摄像机元数据API用法。

    • 已更新为新的云锚异步API。

    • 已更新为新的前置/后置摄像机配置API。

    • 删除了有跨平台等效函数的特定于ARCore的已弃用蓝图函数。

    • 在世界变换或世界比例的追踪发生更改时,修复了ARCore和ARKit ARPin。

XRScribe插件(试验性)

利用这个新的试验性插件,可使用OpenXR插件和相关代码,而无需OpenXR设备。该插件可捕获虚幻引擎和运行时之间的OpenXR API交互,并可以使用该捕获来模拟设备。

  • XRScribe OpenXR表面目前支持的一组有限的OpenXR扩展。尚不支持手动追踪、注视追踪、深度层和Vive追踪器。

  • 目前仅可用于Win64,但将来会支持其他平台。

  • 模拟当前会处理HMD和设备姿势的重播,但还不能处理输入。

  • 插件内置捕获可用于使用CLI(-xremu=mq1或-xremu=vi)进行快速模拟。

XRBase重构

我们将核心引擎中的许多与XR相关的接口的实现重构为XRBase插件,减小非XR项目中的可执行文件大小和内存开销。因此,一些与XR相关的插件可能需要将XRBase添加为依赖项。

XR_FB_Foveation支持(试验性)

现在可以在“项目设置(Project Settings)->OpenXR设置(OpenXR Settings)”中启用Meta Quest设备的固定和动态注视点。你可以使用以下控制台变量来进行配置:

  • XR的。OpenXRFBFoveationLevel(默认值=0)

    • 0=无,1=低,2=中,3=高

  • XR的。OpenXRFBFoveationDynamic(默认值=False)

    • 真/错

  • XR的。OpenXRFBFoveationVerticalOffset(默认值=0)

其他优化
  • 武尔坎RHI上的 移动预览(Mobile Preview) 现在以原生方式使用多视图扩展,而不是移动多视图模拟。

  • 所有 Meta 设备的打包可以通过在项目设置中启用 Meta Quest的数据包(Package for Meta Quest) 设备复选框来实现。

  • OpenXR 插件的 扩展插件 现在可以访问 层列表(Layer List) 。

移动开发要求和兼容硬件

下面列出了虚幻引擎5.3支持的移动设备所支持的操作系统版本和最低硬件。有关必需SDK和IDE的更多信息,请参阅“平台SDK升级”小节。

iOS/tvOS/iPadOS

UE 5.3支持iOS、iPadOS和tvOS设备,前提是这些设备的操作系统支持版本目标SDK 15或更高版本。UE 5.3支持:

  • A8 AppleTV设备

  • A8X iPad的

  • A9设备或更高版本

下面是适用于UE 5.2的最低兼容设备型号:

  • iOS的15

    • iPhone 6S或更高版本

    • iPod Touch第7代

  • iPadOS 15的

    • iPad第5代或更高版本

    • iPad Air 2* 或更高版本

    • iPad Mini 4* 或更高版本

    • iPad Pro(所有型号)

  • tvOS 15

    • Apple TV 高清*

    • Apple TV 4K(第一代)

    • Apple TV 4K(第二代)

人造人

UE 5.3支持满足以下规格的Android设备:

  • Android 8或更高

  • 64位基于ARM的CPU

  • 兼容的GPU:

    • Mali T8xx、G71、G72、G76、G77、G78和G71x系列

    • Adreno 5xx、6xx或7xx系列

    • PowerVR GM9xxx系列

    • Xclipse 920系列

  • 兼容的图形API:

    • OpenGL ES 3.2 版本

    • 带有兼容驱动程序的Android 10或更高版本设备上的Vulkan 1.1

Android SDK和JDK更新

我们简化了Android SDK要求,迁移到 Android Studio Flamingo 2022.2.1 并使用 OpenJDK 17.0.6 作为JDK版本。UE和AGDE的基线Android支持现在以相同JDK版本为目标,用户不需要单独的 和 环境变量指向单独的JDK安装。请注意,此更新后,UE现在以JDK的 目录而不是 为目标。JAVA_HOMEAGDE_JAVA_HOMEjbrjre

如果你需要支持比5.3更早的UE版本,但也需要为Android设置UE 5.3,我们推荐以下操作:

  • 卸载之前版本的Android Studio之前,将 目录的内容复制到Android Studio安装之外的某个地方,避免被覆盖。jre

  • 确保Android环境变量不以之前版本的UE使用的SDK为目标。

  • 对于较旧版本的UE,使用 或你的项目设置手动设定目标SDK。尤其是,将JDK目标设置为复制的 目录。BaseEngine.inijre

请参阅有关为UE 5.3设置Android Studio的文档,了解更多详情和说明。

现代化Xcode项目

我们更新了UE处理Xcode项目和工作空间的方式,使其更符合现代Xcode工作流程规范。这包括以下更改:

改进了Xcode项目组织结构
  • UE现在 对每个平台使用一个Xcode工作空间 。

    • 例如:UnrealGame(Mac)和UnrealGame(IOS)。

  • UE现在 对其工作空间中的每个编译目标类型使用单独的项目 。

    • 例如:UnrealGame(Mac)、UnrealGameEditor(Mac)和UnrealGame Server(Mac)各自是Mac工作空间下的单独项目。

    • 每个项目仅允许它支持的编译配置。例如,编辑器项目不显示测试或发布配置。

  • 框架现在使用标准Xcode方法进行处理 。

    • 虽然之前的版本需要开发人员手动复制并协同设计框架,编译系统现在会自动发现并协同设计框架。

改进了打包和分发过程
  • 运行所需的所有数据都捆绑在每个Apple平台的 独立 文件中。.app

    • 这包括macOS,它在之前版本的UE中不使用此范式。

  • 自动协同设计 现在是在macOS和iOS/iPadOS/tvOS的开发/调试版本中处理协同设计的首选方法。

  • 你可以使用Xcode 通过Xcode存档管理和分发应用 ,这现在是创建发布版本的首选方式。

    • 因此发布版本会创建 文件和 文件。.xarchive.dSYM

  • 改进了权利和 文件的管理。开发人员现在可以将模板或自定义文件用于这两种资产。.plist

如需详细了解这些优化,请参阅我们有关现代化Xcode工作流程的文档。

iOS工作流程

iOS工作流程

UE 5.3为iOS平台的开发工作流程带来了多项优化:

  • 如果你的App ID包含扩展虚拟寻址权利,可以使用 MallocBinned2 内存分配器。

  • 凭借 modernXcode项目集成 (请参阅上面的“modernXcode项目(Modernized Xcode Projects)”),改进了打包和应用签名。

  • 准备调试(Prepare for Debugging) 命令可简化调试管线,现在提供了Windows远程(试验性)和备用Mac工作流程。请参阅有关在Xcode中调试使用远程Mac的文档,了解更多详情。

  • Apple Silicon Mac上现在支持 iOS模拟器 ,可在不使用设备的情况下更快速地进行开发迭代(试验性)。

Android上的移动光线追踪支持(试验性)

UE 5.3支持 光线追踪 用于运行 移动桌面渲染器 的高端Android设备。支持的移动GPU包括:

  • 肾上腺皮质激素 740

  • 不朽-G715

  • 三星 Xclipse 系列

要启用移动光线追踪,请执行以下操作:

  • 为你的项目启用桌面渲染器。

  • 启用光线追踪。

  • 将以下内容添加到你的设备描述:

<span style="color:#000000"><span style="background-color:#ffffff"><code><span style="color:#000000">[</span><span style="color:#153b65">Android_Vulkan_SM5</span> <span style="color:#153b65">DeviceProfile</span><span style="color:#000000">]</span> 

<span style="color:#000000">+</span><span style="color:#153b65">CVars</span><span style="color:#000000">=</span>r<span style="color:#000000">.</span><span style="color:#153b65">Android</span><span style="color:#000000">.</span><span style="color:#153b65">DisableVulkanSM5Support</span><span style="color:#000000">=</span><span style="color:#153b65">0</span></code></span></span>

此更新还包括对光线追踪的阴影的移动内联阴影支持,这仅适用于延迟着色。

此支持为 试验性 ,目前不应该用于制片目的。但是,我们欢迎用户提供试用后的反馈!

移动渲染器

移动渲染器

移动渲染器现在包括多项性能和视觉质量优化,尤其是:

  • 基于计算的地形顶点剔除。

  • 雾体积支持。

  • 移动正向的全局距离场生成。

  • 实例渲染优化(GPU场景)。

  • 虚拟纹理支持。

对Apple M2设备上的Nanite的支持(测试版)

Apple M2设备上的Nanite

对于运行macOS的 Apple Silicon M2设备 ,虚幻引擎5.3引入了 Nanite 渲染技术测试版支持。配合着色器模型SM6,该支持在可从Epic Games启动程序下载的UE macOS二进制文件中默认启用,而试验性5.2支持仅在从GitHub源文件编译时可用。

角色和动画

运行时和非线性过场动画的动态工作流程

运行时和非线性过场动画的动态工作流程

此版本着重优化了运行时工作流程和非线性组织。

用户定义的动态绑定

使用关卡序列导演蓝图来定义不同的对象,例如玩家Pawn,以由Sequencer在运行时期间动态拥有或生成。

材质分段混合

和其他轨道类型类似,材质类型的分段可以添加到支持材质的轨道。这包括UMG中的材质参数集合与UI动画。

子序列的镜头试拍

和镜头轨道类似,子序列的镜头试拍可以在Sequencer中创建和设置。

镜头试拍注释

在Sequencer中添加/编辑/查看镜头/子序列的注释。

文本轨道

文本属性现在可以在Sequencer中有轨道,其中用户可以随时间推移更改文本字段的值并为其设置关键帧。

动画重定向

动画重定向

此版本着重优化了重定向的一些编辑流程。

  • 重定向编辑器中的工具栏 - 这可用于轻松访问全局和根骨骼设置,以及重定向阶段。允许在运行重定向、编辑重定向姿势和查看重定向姿势选项之间切换模式。

  • 重定向姿势 - 编辑骨骼的本地空间,将骨骼旋转归零。

  • 在右键鼠标上下文菜单中,从所选骨骼网格体/IK Rig创建IK Rig/IK重定向器资产。

  • IK Rig和IK重定向器资产的缩略图。

动画编辑

动画创作

此版本中的其他动画编辑相关的优化包括:

智能烘焙
  • 现在允许你仅以烘焙关键帧为目标。

  • 约束烘焙

  • 空间切换烘焙

  • 吸附工具

  • 折叠分段

  • 烘焙变换

智能自动切线
  • 新的自动切线可更好地维持曲线形状。

曲线编辑器优化
  • 优化了规格化视图

  • 优化了大量按键的性能

  • 更好的控点选择

  • 更精确的选框

  • 修复了关闭自动取景时的缩放级别

动作混合优化
  • 交换根骨骼适用于使用AnimBP进行根骨骼运动预览的动画。

  • 骨骼动画分段可以向后延伸。

导出优化
  • 将Control Rig动画导出为FBX文件。

骨骼编辑器(试验性)

骨骼编辑器

利用 骨骼编辑器(Skeletal Editor) ,用户可以直接在虚幻编辑器中创建骨架并编辑网格体皮肤权重。使用此工具,可在资产中添加骨骼、变换静态网格体并将其转换为骨骼网格体,以便更快速地迭代,这些操作全都在一个地方进行,无需导入骨架数据。

  • 将静态网格体转换为骨骼网格体

  • 创建和编辑骨架

    • 添加骨骼

    • 删除骨骼

    • 确定骨骼方向和编辑骨骼

    • 镜像骨骼

  • 创建皮肤权重

    • 绘制权重笔刷工具

    • 编辑选择顶点时的权重

    • Flood / Relax / Prune / Average / Normalize操作

    • 镜像权重

  • 绘制地图

  • 骨骼和权重的Python API支持

机器学习(ML)变形器

机器学习(ML)变形器

利用ML变形器,用户可以训练在UE中实时运行的机器学习模型,近似表示复杂的Rig、非线性变形器或任意变形。

UE 5.3中的优化包括:

  • 增加了用于本地神经变形模型的遮罩系统,使用户能够更好地处理结构化数据。

  • 优化了最接近相邻值模型UI和工作流程。

  • 去除了对NNI框架的依赖性。

  • 能够在视口中创建训练遮罩,并按骨骼/骨骼组/曲线可视化遮罩。

  • 不再需要执行手动步骤(例如安装Python程序包),即可在Windows上正确训练最接近相邻值和神经变形模型。

  • 能够在Linux和macOS上运行已训练的神经变形和最接近相邻值模型(不过可能会遇到训练错误)。

基于数据构建Control Rig

我们进一步扩展了Control Rig的 程序化 工具集,以便你可以使用Control Rig图表外部的数据,以程序化方式创建和修改Rig。其中包括:

  • 能够查询和使用外部数据,例如变换、浮点和骨架等,以程序化方式构建Control Rig。

  • 新增“GetUserData”节点,用于查询传入的数据。

  • 新增“Set Shape Library from User Data”节点,用于交换当前所引用的形状库。

虚拟制片

适用于ICVFX的SMPTE 2110

适用于ICVFX的SMPTE 2110

虚幻引擎5.3版本将基于SMPTE 2110的端到端IP视频信号流与nDisplay一起使用,完成了次世代ICVFX舞台部署的事项。通过SMPTE 2110支持,制片可以充分利用舞台上的可用硬件资源,提高效率,实现更高分辨率的内视锥和更低延迟的潜力。

利用基于SMPTE 2110的配置,制片能够:

  • 渲染内视锥一次,然后将其与群集中的其他渲染节点共享,避免每个节点出于确定性而冗余地重新渲染内视锥。

  • 将整个渲染节点的资源专用于内视锥,利用所有可用资源,在摄像机中看到的像素上显示可能的最高质量。

  • 使用SMPTE 2110原生同步策略对每个渲染节点进行帧锁定,确保虚幻引擎输出与摄像机保持同相。

  • 使用SMPTE 2110将产生的渲染内容输出到LED处理器,不必使用显示器端口和/或HDMI转换器。

虚拟摄像机

虚拟摄像机

镜头试拍浏览器

我们添加了一个功能,可从虚拟摄像机浏览关卡序列,并加载它们进行查看或作为下一个录制文件的基础,以及为序列添加星标、标记或将其设为NG以筛选列表。

来自单个VCam的多个HUD

你现在可以将多个输出提供程序添加到单个VCamComponent,每个提供程序都有自己的HUD和流。你可以从一个VCam同时流送操作员视图、简单的烧入和清洁板。

带时间刻度的播放和录制

你现在可以按非1:1速度播放和录制。按自定义速率录制,你的动作在全速播放时会加快或变慢。

初始macOS支持(试验性)

VCamActor现在支持通过旧版远程会话从macOS进行流送。虚拟摄像机核心、VCamComponent、VCamModifier和VCamOutputProvider可用于在macOS版本的UE5上创建自定义VCam。我们仍在进行开发,为macOS引入像素流送和完全VCam支持。

CineCamera绑定轨道(测试版)

CineCamera绑定轨道

我们添加了针对高级过场动画和虚拟摄像机工作流程定制的新绑定轨道Actor。

计划你的构图

将摄像机聚焦、光圈和变焦存储在轨道点中,允许轨道驱动更复杂的构图。

驱动轨道

使用多种驱动模式自动进行移动:

  • 手动(Manual) :从Sequencer或外部输入驱动你的轨道位置。

  • 时长(Duration) :驱动轨道位置,以在设定时间内完成你的移动。

  • 速度(Speed) :按设定速度驱动你的轨道位置。

使用Sequencer

点将按绝对值存储,可以在Sequencer中安全地设为关键帧。因此,给定点的位置值只能通过直接修改点的方式更改。如果你将特定位置设为关键帧以在给定取景处发生,无论之前或之后添加了多少个新点,它都不会更改。

可视化你的速度

通过应用于轨道网格体的热图沿轨道任意点查看你的速度,避免在录制分层移动时出现意外情况。

选择你的轴继承

选择仅从绑定轨道继承一部分轴。从轨道驱动位置,同时优化旋转,或选择删除Z轴,更平稳地运行。

CineCamera场景捕获组件(测试版)

CineCamera场景捕获组件

我们为CineCamera添加了场景捕获组件。你可以精确地将CineCamera组件捕获到渲染目标,以用于材质、UMG等。该功能与CineCamera特有的属性和后期处理一起支持镜头失真。

变形镜头校准解算器(试验性)

变形镜头校准解算器

我们向镜头工具添加了变形镜头(Anamorphic Len)模型和解算器,用于镜头资产,以便可以解算变形镜头失真。使用镜头组件,你还能够将变形镜头模型失真添加到CineCamera Actor,在引擎中渲染失真效果,这样就可以使用带有轮廓的变形镜头直观地查看镜头。还可以调整变形镜头模型的手动参数,带来变形失真外观。

用于纹理转换的OCIO

用于纹理转换的OCIO

引入的工作颜色空间成为虚幻引擎中强大的颜色管理的基础,可用于一些重要操作,例如配置纹理的输入颜色空间,帮助确保资产外观准确,无论它们在何处创建。虚幻引擎5.3对此支持进行了扩展,可利用OpenColorIO执行这些纹理转换。凭借这一点,虚幻引擎采用业界标准框架,在不同纹理的颜色管线中尽量保持一致。

nDisplay多玩家Actor复制

nDisplay多玩家Actor复制

我们修订了nDisplay低级别网络架构,以便可以支持多玩家游戏情境中的Actor复制。

  • 对最终用户透明:

    • 可以在nDisplay项目设置中使用 群集复制已启用(Cluster Replication Enabled) 选项激活该功能。

    • 我们向Switchboard添加了多玩家服务器选项。

  • 每个nDisplay节点在加入多玩家会话或游戏时会变成网络客户端。

未来我们希望支持nDisplay群集而不是单独的节点加入多玩家会话。

nDisplay填充派生数据缓存

nDisplay填充派生数据缓存

我们添加了一个功能,在首次使用之前提前填充派生数据缓存,使nDisplay系统(独立着色器)做好准备。此功能可使用编译菜单在本地触发,或使用Switchboard在所有群集节点上触发。

然后即可启动nDisplay群集,而无需进一步的着色器编译。你可以将此操作安排在你方便的时间离线执行,因为它使用命令行参数公开给虚幻引擎,可以在外部触发。

DMX控制控制台UX

DMX控制控制台UX

我们改进了新的控制控制台UI和UX,添加了以下内容:

  • 两种主布局模式:

    • 默认,其中仅所选补丁可见

    • 手动,其中你可以定义调节器组位置

  • 修订了搜索机制,以更快速地访问DMX调节器

  • 能够使用相对或绝对功能按钮更改调节器值

  • 能够选择哪些补丁在积极发送DMX数据

DMX像素映射UX

DMX像素映射UX

DMX像素映射工具进行了大幅改造,现在提供了优化的UI和UX,以及其他修复:

  • 新的输入筛选器分段允许你对传入像素缩小规模、进行模糊处理和执行基于材质的逻辑。

  • DMX库操控与控制控制台提供的新UX一致。这可以与层级视图协同使用,以便你可以看到哪些补丁是新增的,哪些是保留的。

媒体IO媒体板材质系统

媒体IO媒体板材质系统

我们优化了当前媒体板Actor材质系统,让你能够:

  • 使用新的自动填充下拉菜单直接从媒体板插件内容目录选择材质。

  • 浏览到媒体板插件内容目录进行快速访问。

此外,我们在默认媒体板材质中启用了 输出深度和速度(Output Depth and Velocity) 标志,在有相对于媒体板Actor的摄像机移动时提高TSR/TAA图像稳定性。

模拟

Chaos布料编辑器基础(试验性)

Chaos布料编辑器基础

UE 5.3的Chaos布料增加了 试验性 布料编辑器。

在新的布料编辑器中,将来每个角色可以有多件衣服,多个角色也可以穿同一件衣服。它还提供了基于面板的工作流程,可更轻松地设置和修改服装设置。它包括以下功能:

  • 角色物理的新基类编辑器(布料/flesh)。

  • 基于面板的编辑器的第一个阶段,带有数据流图表。

  • 非破坏性工作流程

  • 布料作为单独的组件从骨骼网格体提取。

  • 额外的碰撞支持

  • 新皮肤权重传输工具

  • 遮罩现在替换为可复用的权重贴图。

  • 多个材质可以由单个模拟网格体支持驱动。

请参阅面板布料编辑器概述,详细了解此功能。

Chaos ML布料(试验性)

Chaos ML布料

对于许多用例来说,布料模拟可能太昂贵。美术师、工程师和游戏设计师需要成本更低的替代运行时解决法案来模仿布料模拟,尤其是对于更贴身的服装。当前,这需要在要模拟的DCC与将结果导入回引擎之间频繁来回切换,整个过程很繁琐。

对于UE 5.3,美术师现在可以使用 试验性 的Chaos布料生成器插件 在引擎中 模拟和训练布料。

请参阅机器学习布料模拟概述,详细了解此功能。

Chaos刚体和场景查询

我们对Chaos物理系统做出了多项更新和优化,为美术师、开发人员和程序员带来更好的模拟结果,尤其是刚体模拟和场景查询。

我们一直在关注刚体的低级别优化,包括SIMD、缓存一致性、功能删除、减少数据复制,等等。

场景查询实现了动态加速结构,现在更新和查询更快。

Chaos破坏

破裂编辑器更新

添加了新的材质,用于在管理和分配几何体集合的材质时帮助进行精细控制。

破裂编辑器材质

距离工具已经优化,可进行更好的可视化控制,并有新的接触方法来生成连接图表

破裂编辑器距离工具

关卡统计数据现在显示聚合凸包信息,这在优化几何体集合碰撞时很有用

破裂编辑器关卡统计数据

运行时优化
  • 几何体集合组件默认情况下不再更新,仅在几何体集合受伤害后更新。更新函数的运行时开销也已降低

  • 进行了解算器和属性层面的数据类型优化,降低了磁盘上几何体集合资产的开销,及其实例的运行时内存开销

  • 还进行了许多优化,以降低几何体集合实例的总体CPU开销,以便在更大规模使用破坏

引入了新的试验性伤害模型,利用材质的物理属性以及几何体集合的内部拓扑和连接

Niagara流体

Niagara流体

  • 我们添加了在Niagara流体模拟缓存后对其进行变换的功能。这样就可以多次复制缓存,并在时间/空间上偏移副本,利用单个缓存的模拟获得更复杂的效果。

  • 我们添加了对3D气体模拟的数据通道支持。它是 试验性 的功能,可用于从关卡中的任意CPU系统获得流体。在主发射器上,粒子源现在有两种模式:发射器和数据通道。发射器模式从相同系统中的发射器读取数据。数据通道模式从预定义的Niagara数据通道读取数据。可以从现有“设置流体源属性(Set Fluid Source Attributes)”模块写入该数据通道。

  • 路径追踪器现在支持异类体积,这意味着流体可以直接在其中渲染。

  • 我们添加了对SVT(稀疏体积纹理)的 试验性 支持;缓存流体现在会直接写入SVT,速度快一个数量级。

Niagara摘要视图编辑器

Niagara摘要视图编辑器

利用摘要视图编辑器,用户可以创建Niagara发射器的自定义视图。这样就可以仅将发射器的最重要设置和输入公开给最终用户。一种很常见的用例是Niagara流体发射器,它们可更轻松地做出调整,只需查看一部分组织有序的设置,就能实现预期效果。用户可以重新排列并设置类别、分段、单独的模块输入或整个模块,以及特定属性,例如Sprite渲染器的Sprite材质。

请参阅摘要视图快速入门,详细了解此功能。

音频

MetaSound构建器API

利用MetaSound构建器API,你可以在游戏实时运行的同时,通过C++或蓝图API创建和更改MetaSound图表。这样就可以在Gameplay期间添加/删除MetaSound节点并修改连接。

音频总线写入

现在你可以从一个MetaSound获取数据,并将其发送到另一个MetaSound,或通过新的MetaSound节点发送到另一个源总线。

MetaSound输出监测(试验性)

MetaSound输出监测

利用Metasound输出监测,你可以使用蓝图或C++来检测Metasound图表中的变化。这意味着,用户可以将Gameplay和视觉效果匹配到Metasound中发生的事件。例如,你可以根据音乐拍子或音频变化来调整Gameplay元素和视觉效果。

这样就可以:

  • 在提供的float、int32、Bool和fstring类型的Metasound输出发生值变化时触发事件。

  • 在音频输出上的包络跟踪器更改时触发事件。

UI系统

Common UI(测试版)

通用用户界面

Common UI提供了工具箱,用于创建支持跨平台的多层丰富用户界面。它包括:

  • 一个特定于UI的输入操作系统。

  • 一个输入路由系统,可更轻松地选择性排除菜单而不捕获输入。

  • 一个样式系统,为常用文本/字体、边界和按钮提供样式资产。

  • 其他常用控件的库。

此版本的优化包括:

  • 集成了增强的输入

  • 输入调试

  • 文档和内容示例

UMG中的字体DPI匹配

UMG中的字体DPI匹配

设计师现在可以在将UI模型转换为UMG屏幕时无缝匹配其字体大小,而不用担心DPI不匹配。

  • 新创建的项目的DPI设置将默认为72 DPI。

  • 现有项目将保持为96 DPI。

  • 在不同的DPI设置之间来回切换不会影响字体的渲染方式。

请参阅有关字体DPI缩放的文档,了解更多详情。

蓝图中的Viewmodel

蓝图中的Viewmodel

虽然旧版虚幻引擎需要设计师在C++中创建Viewmodel,但在UE 5.3中,现在可以在蓝图中创建Viewmodel。此更新在各个方面简化了Viewmodel的创建和绑定过程。

  • 扩展MVVMViewmodelBase类以创建新的Viewmodel蓝图。

  • 在蓝图中正常创建变量,然后点击其名称旁边的钟形图标,将其指定为FieldNotify变量。

  • 创建FieldNotify函数来处理不需要专用变量的运算,然后使用FieldNotify变量触发它们。

  • 使用Viewmodel面板将你的Viewmodel添加到控件类。

  • 使用新的点击拖放功能,可更快速、轻松地将Viewmodel绑定到UI字段。

请参阅Viewmodel文档,了解有关如何在项目中使用基于蓝图的Viewmodel的完整说明。

建模

建模工作流程(测试版)

建模工作流程

开发资产的美术师需要高效的建模、塑造、UV编辑和纹理工作流程。这些工作流程不仅仅是按特定顺序点击几个不同的工具。每种交互都需要考虑到,以便减少鼠标点击次数,尽量减少光标移动,并为美术师提供精确的反馈。

围绕这一目的在UE5.3中进行的优化包括:

新UI

建模模式的主菜单、工具控制板和属性面板已重新设计。新UI更紧凑,可实现更高效、一致的工作流程。新菜单还包含新的收藏夹选项,提供了可按用户定义的顶层自定义菜单。

工具预设

创建者和开发人员现在可以为建模工具创建自定义预设。利用自定义预设,美术师可以存储工具的多个选项,并从工具图标快速访问。

元素选择

利用直接网格体元素选择,可实现更一致、优化的工作流程。现有选择方法需要美术师在调用操作之前,首先选择网格体,然后选择特定工具,最后选择元素。利用新元素选择工作流程,美术师可以选择网格体,选择元素,然后调用操作,而无需使用PolyEdit或TriEdit之类的中间工具。

建模工具(测试版)

建模工具

建模模式的工具集会继续演化。对于UE 5.3,我们为工具集添加了一些请求的增强功能,以及使用样条线的新工具。新元素选择模式也支持一组专用工具。

样条线工具

我们为"创建(Create)"菜单添加了新工具,创建者可用于绘制新样条线,并将其用于旋转和扁平网格体操作。

元素选择工具

元素选择工作流程利用了新的工具菜单,这些工具可直接作用于选择的内容。控制板包括常用工具,例如 挤压(Extrude) 、 斜边(Bevel) 、 偏移(Offset) 、 插入(Inset) 和 插入循环(Insert Loops) 。还可快速访问 PolyGroup 和 三角形编辑(Triangle Edit) 。

LOD支持

烘焙变换和编辑枢轴点工具现在可选择使用新变换或枢轴点更新所有LOD。

顶点颜色绘制

我们添加了用于绘制顶点颜色的新工具。利用新工具,用户可以绘制、填充和混合颜色到多个或特定通道。

其他优化

我们对 编辑法线(Edit Normals) 、 焊接(Weld) 、 烘焙纹理(Bake Texture) 和 生成多边形组(Generate PolyGroups) 工具做了额外的优化 

如需详细了解可用工具,请参阅建模工具

UV工具(测试版)

UV工具

UV是处理网格体时的重要组件,不仅可用于最终渲染,还可以作为关卡设计的关键部分。对于UE 5.3,我们向UV编辑器添加了两个重要的新功能:

UV编辑器失真显示

UV编辑器现在有可选的失真显示模式。这样可交互式表示纹素拉伸级别或密度。

UV自动布局

该工具现在支持纹素密度规格化。此选项会尝试调整单独岛状区的大小,在整个布局中维持固定的平均密度。

如需详细了解UV工具,请参阅UV编辑器

几何体脚本(测试版)

几何体脚本为技术美术师提供了用于创建自定义建模工具和工作流程的工具包。在5.3中,几何体脚本现在为测试版,并且在不断扩展之中,增加和优化的内容如下:

增强了多个新节点提供的骨骼网格体互操作性:

  • CopyBonesFromMesh

  • TransferBoneWeightsFromMesh

  • GetRootBoneName

  • GetBoneChildren

  • GetAllBonesInfo

  • 获取Bones信息

  • DiscardBonesFromMesh

用于管理2D多边形和路径的新函数,包括计算偏移及其布尔值:

  • 多边形差集

  • 多边形并集

  • 多边形交集

  • 还有许多其他函数,构成一个大型函数库。

德洛内三角剖分,用于创建内插点的网格体:

  • 附加德洛内三角剖分2D

网格体表面上的测地线:

  • GetShortestSurfacePath

  • GetShortestVertexPath

如需详细了解几何体脚本和可用函数,请参阅几何体脚本用户指南和几何体脚本参考

内容管线

交换导入/重新导入

交换导入/重新导入

在此版本中,交换框架包括以下优化:

  • 我们增加了新的自定义资产类型,可用于重新导入完整场景。

  • 交换UI现在支持根据平移工具(Translator)来覆盖管线堆栈。这提供了额外的一层可配置性,并用于默认设置:例如,glTF资产管线堆栈将覆盖默认资产管线堆栈(用于FBX和OBJ)。

  • 对于glTF导入,你现在可以选择让编辑器生成材质或使用预定义材质实例。你还可以覆盖这些实例,获得对glTF渲染的更多用户控制。

USD MaterialX(试验性)

美元 MaterialX

虚幻引擎5.3提供了将USD用于MaterialX的功能,以便简化DCC和虚幻引擎之间的工作流程和内容创建。现在可以直接在引擎中使用MaterialX着色网络导入USD文件。

此外,你现在可以在USD舞台编辑器中打开带有MaterialX着色网络的USD文件,同时直接与USD文件的内容交互。

虚幻引擎中的MaterialX支持此前已在5.1中引入,现在仍为试验性的功能。

USD材质和纹理

USD材质和纹理

在虚幻引擎5.3中,更改了纹理和材质的处理方式,优化了USD资产的显示:

  • 我们添加了在相同材质上支持多个UV集的功能。

  • 我们添加了对预览表面材质上的简单UV变换的支持。如果你要加载预览表面并使用数学节点来变换纹理,现在可以正确显示。

  • 我们添加了在USD舞台编辑器细节面板中交互式更改USD材质的功能,可在视口中实时查看结果。之前,用户需要保存USD文件并重新打开,才能看到更改。

USD动画

USD动画

直接导入几何体缓存

我们添加了直接从USD文件将缓存几何体导入UE中的功能。在此之前,你只能在舞台上加载USD文件,并从中播放几何体缓存动画。

支持Sequencer中的临时Actor

我们添加了对Sequencer中临时Actor的支持。这样你可以将USD舞台Actor中的元素添加到Sequencer,重新加载USD文件或关闭后重新打开虚幻引擎,Sequencer将保持连接到USD舞台Actor中正在制作动画的元素。这也意味着,你现在可以维持稀疏的关键帧动画曲线,以驱动USD舞台Actor中正在制作动画的元素,并且烘焙的动画可以导出到新的USD文件。USD舞台Actor现在也可以导出,因此其元素的动画可以在引用的舞台上导出为覆盖。

框架

智能对象 - 世界分区支持

智能对象和世界分区

智能对象(Smart Object)现在可无缝用于世界分区、数据层和持久关卡。我们还优化了智能对象,支持将寻路网格体和物理系统用于插槽可用性。

蓝图类型转换自动转型

蓝图类型转换自动转型

弃用基于代码的蓝图可见属性并转换属性类型,可能带来一些困难,例如在重新给旧引脚连线时发生故障。这会造成孤立的引脚和编译错误。

在UE 5.3中,如果两种类型都提供了自动转型函数,将自动创建转型节点并添加到图表中。此外,每当添加新的转型节点时,都会创建备注,说明用户可能想更新其API以使用新的类型转换。

数据资产合并

数据资产合并

为添加对比工具所提供功能之外的更多功能,我们首先研究了一种数据合并解决方案。这第一个版本支持在无法自动解决冲突时手动合并数据资产。

目前  支持数据资产,但我们希望在将来支持更多数据类型。

检查工具Swarm注释

检查工具Swarm注释

现在,5.2中引入的检查工具在将P4用作源码控制时直接与Swarm集成,因此你在其中执行的对比将直接在编辑器中显示注释。你不仅可以获得对每次更改的注释,还可以留下全局检查备注。我们在Swarm中使用简单的元数据标记,将注释链接到对比的右侧分段。

引擎内容和模板

使用增强输入的协作查看器模板

协作查看器模板

利用协作查看器模板,多个用户可共同使用同一个3D内容。此举是为了让你的团队更轻松、快速地实时检查设计并进行交流,以便更高效地找出问题并对内容迭代。

在UE 5.1中,我们发布了对增强输入的OpenXR支持,并将其设为XR应用程序的推荐输入系统。在UE 5.3中,我们更新了模板,以便利用增强输入所支持的抽象和灵活性。

平台SDK更新

平台SDK的徽标

  • 窗户

    • Visual Studio 2022 v17.4或更高版本

    • Windows SDK 10.0.18362或更高版本

    • LLVM clang 14.0.1

    • .NET 4.6.2 目标包

    • .NET 6.0

  • 构建场编译时面向的IDE版本

    • Visual Studio:Visual Studio 2022 17.4 14.34.31933工具链和Windows 10 SDK (10.0.18362.0)

    • Xcode:Xcode 14.2

  • GDK

    • Windows SDK最低版本:10.0.19041.0

    • GDK: 2023年3月更新5 GDK

    • 固件版本:恢复时间为2023年6月 (10.0.22621.4819)

    • 支持的IDE:Visual Studio 2022

  • Linux操作系统

    • 原生Linux开发

    • 推荐操作系统:Ubuntu 22.04或CentOS 7

    • 编译器:clang 16.0.6

    • 跨平台开发

    • 交叉编译工具链:v22基于clang-6.0.6 (CentOS 7)

  • macOS操作系统

    • 推荐

      • 最新macOS 13 Ventura

      • 最新Xcode 14.1或更高版本

    • 最低

      • macOS 12.5 蒙特雷

      • Xcode 14.1 版本

  • EOSSDK的

    • 1.16二进制文件,带1.15头文件

      • 提供1.15功能集。

      • 1.16二进制文件,用于最近的平台SDK支持和WebRTC修复。

  • 蒸汽

    • 1.53

  • iOS / tvOS / iPadOS

    • 推荐

      • 最新macOS 13 Ventura

      • 最新Xcode 14.2或更高版本

    • 最低

      • macOS 12.5 蒙特雷

      • Xcode 14.1 版本

    • 支持的目标SDK版本:iOS 15或更高版本

    • 图形API:Metal 2.4和Metal 3.0

  • 人造人

    • Android Studio Flamingo 2022.2.1 补丁 2 2023 年 5 月 24 日

    • 安卓 NDK r25b

    • 安卓开发工具包

      • 推荐:SDK 33

      • 用于编译UE的最低版本:SDK 30

      • 在设备上运行的最低目标SDK:SDK 26

    • 如果你使用AGDE调试,则需要AGDE v22.2.69+。

    • 构建工具:33.0.1

    • Java运行时: OpenJDK 17.0.6 2023-01-17

  • 开关

    • SDK 版本 16.2.0

    • 最低固件版本:16.0.3

    • 任天堂开发界面 2.5.5

    • 支持的IDE:Visual Studio 2022(SDK 16.2.0版本)

  • PS4版的

    • 奥比斯SDK 10.508.001

    • 系统软件10.508.011

    • 支持的IDE:Visual Studio 2022

  • PS5的

    • Prospero SDK 7.00.00.38

      • UE5Main有一个补丁更新到7.00.00.45。着色器编译器修复推荐使用该补丁。

    • 系统软件7.40.00.06

    • 支持的IDE:Visual Studio 2022

  • ARCore

    • 1.37

  • 方舟

    • 4.0

  • OpenXR的

    • 1.0.22

版本说明

动画

API 变更:

  • 添加了 Mutable 扩展 API 的第一个版本。

新增功能:

  • 向绑定逻辑动画图节点添加了新的 LOD 阈值属性,以便比其他骨骼后处理更早地计算面部动画,这可能是同一后处理 AnimBP 的一部分。

  • 添加了在较低 LOD 级别禁用或跳过后处理 AnimBP 的功能。您可以设置后处理 AnimBP LOD 阈值,就像为某些动画图形节点设置 LOD 阈值一样。此外,您可以在设定点期间完全跳过后处理动画 BP 图,以提高性能。速度改进会随着后处理 AnimBP 的复杂性以及不支持 LOD 阈值或设置基于节点的 LOD 阈值的节点数量而增加。

  • 添加了按“同步标记”(Sync Marker)向“动画序列浏览器”(Animation Sequence Browser)进行过滤的选项。

  • 当 LegIK 节点缺少定义或包含对无效骨骼的引用时,添加新的输出警告。

  • IK Rig 和 IK Retargeter 现已在 UEFN 中推出。

  • IK 重定向姿势现在可以在局部空间中归零,以立即伸直四肢,从而实现更准确的重定向。

  • 为动画视口工具栏添加了 0.75 和自定义速度,用于动画速度和转盘速度。

Bug修复:

  • 修复了可能阻止 MeshBoneReduction 模块在 MeshUtilities 模块启动后立即加载的问题,因为可能随时需要从后台线程加载它

  • 通过添加防止在骨架网格体编辑器中使用无效 actor 指针的防护措施,修复了此问题。

  • 修复了 LegIK 动画蓝图节点中不正确的本地化文本。

  • 修复了在创建动画资源时覆盖现有资源时出现的问题,方法是在创建新资源的选项中启用替换现有动画。

  • 修复了将动画通知从多个轨道粘贴到不包含相同轨道的位置时出现的问题。

删除:

  • 在加载时从可变图中删除了空链接。这样可以防止在无法加载保存到图形中的节点时出现错误行为和编辑器不稳定。

在引擎中制作动画

API 变更:

  • 修复 2D 控件的 Y 轴上的倒切线。

新增功能:

  • 添加了一个新的控制台变量,用于切换是否应为新组件自动创建控制装备轨道。ControlRig.Sequencer.AutoGenerateTrack

  • Control Rig FBX动画现在可以在虚幻引擎之间导出和导出

起色:

  • 曲线编辑器滤镜已得到改进,现在可以使用范围而不是单个选择进行设置,因此您现在可以烘焙一系列帧或时间。

  • 现在可以在进行拖动操作时更新曲线邻近度,以便曲线工具提示显示正确的时间和值。

  • 现在,每当将新项目添加到编辑器中时,曲线编辑器的选择都会同步。

Bug修复:

  • 修复了以下问题:延迟关卡序列资源的创建,直到将控制装备 actor 的滴答程序拖放到视口中。这样可以防止级别序列资产创建与创建参与者事务位于同一事务中。以前,在撤消动作时,电影场景可能会被收集为垃圾,因为它的创建是在另一个事务期间发生的。

  • 修复了可能导致内存泄漏的问题,即在渲染结束时未释放后台缓冲区渲染目标。

  • 约束:传播偏移量变化,以便同步局部变换动画。

游戏玩法

新增功能:

  • 现在,您可以使用新的实验性 Dead Blending AnimGraph 节点。该节点被设计为惯性化节点的直接替代品,但使用新的鲁棒“死混合”算法,该算法更有能力处理多个同时的惰化请求,或者当惯性化转换在两个截然不同的姿势之间时。

  • 向蓝图公开了一种新方法,您可以使用该方法获取在指定动画槽上播放的蒙太奇的权重。

  • 添加了以下 AnimNode 函数:、、 和 。它们位于任何动画状态图的 Result 节点中。On State ExitOn State EntryOn State Fully Blended InOn State Fully Blended Out

  • 添加了对 AnimNodes 的支持,以显示任何绑定的函数,而不是对它们进行硬编码。

  • 添加了一种方法,供用户使用“DefaultBindingName”元数据标记为蓝图中函数成员引用的默认绑定名称指定字符串。

  • 添加了在使用状态机转换初始化时对动画同步组的支持。

  • 支持在使用状态机自动转换规则时显式指定转换触发时间。

  • 在动画蓝图中添加了一个上下文菜单选项,用于从蓝图创建动画模板,该模板可用于覆盖使用子蓝图的动画。

起色:

  • 现在可以派生自 ,以支持想要提供自定义版本的插件。PlayMontageCallbackProxy

Bug修复:

  • 修复了在重新设置动画蓝图父级时使用 Inertialization AnimGraph 节点时可能导致崩溃的问题。

  • 修复了同步组无法按预期进行标准混合的问题。

  • 改进了距离匹配中的卡住检测

  • 禁用了从动画蓝图编辑器的树视图复制状态的选项。

影片渲染队列

新增功能:

  • 修复了在Sequencer中单击“渲染影片”按钮时,默认设置会添加到已存在的作业中的问题。

  • 公开UMoviePipelineImageSequenceOutput_EXR以便C++插件可以引用它。

  • 使用“渲染所有摄像机”功能时,如果生成摄像机的默认生成轨迹值为 false,则会跳过这些摄像机。

  • 添加了对在全景渲染期间保留摄像机旋转的支持。

  • 更新了控制台变量设置,以显示每个 cvar 预设中包含的 cvar。

起色:

  • 添加了 UI 渲染器设置的解决方法,该设置存在某些布局小组件不喜欢 720p PIE 预览窗口的问题。

优化:

  • 优化了多核机器上RGBA图像的多样本累加器。

Bug修复:

  • 修复了取消作业报告为某些回调的成功作业的问题。

  • 修复了 UWorldSettings::Min/MaxUndilatedFrameTime 在渲染后被修改且未还原的问题。

  • 修复了在实际上没有任何更改时丢失对队列的未保存更改的 UI 警告。

  • 修复了在不使用“渲染所有摄像机”功能时解决的问题。{camera_name}main_camera

  • 修复了在启用 OpenColorIO 的情况下导出 ProRes 时的数据类型问题。

索具

API 变更:

  • 缓冲区的创建都是在运行时在数据接口内完成的。

新增功能:

  • 添加了动画节点的输出骨骼传输列表。现在,您可以在 Animation Blueprint Graph 中限制由 Control Rig AnimNode 驱动的骨骼。

  • 添加了半边连接数据接口。

  • 添加了单元节点,用于检查形状库中是否有形状。

  • 添加了对 uint32 类型的支持。

  • 将 Int32 添加到 Name 节点 (IntToName)

  • 添加了直接在 Control Rig Editor 中更新骨骼参考姿势的功能。

  • 添加了 LocalChainDynamics 函数,该函数为给定链创建简单的链动态。

  • 新的蒙皮权重编辑工具支持通过绘制或直接在选定的顶点上编辑权重。

  • 现在可以直接从右键菜单中的骨架网格体创建 IK 装备/重定向资源。

  • 从模板的参数中检索模板的性能改进。

  • IK Retargeter 工具栏经过重新设计,可即时访问常见的重定向设置。

  • 改进了“物理资源编辑器”视口中的物理约束编辑。

  • 从 Control Rig 虚拟机中提取所有实例数据,并将其移动到上下文数据结构中,作为无状态虚拟机的一个步骤。

  • FBIK 求解器现在支持运行时的动画翻译。挤压和伸展四肢可以使用FBIK。

  • 现在,RigVM 上下文必须作为参数传递给虚拟机功能,而不是位于虚拟机本身中(这是迈向无状态虚拟机的一步)。

起色:

  • 骨架网格体上的蒙皮权重现在可以通过 BP 或 Python 中的新 API 进行编辑。

Bug修复:

  • 修复了从 向输出骨架添加曲线时出现的问题。USkeletalMergingLibrary::MergeSkeletons

  • 修复了在复制或重命名包含函数引用的控制装备蓝图后,与缺少函数定义相关的控制装备蓝图编译错误。

  • 修复了在调试 Control Rig 实例时退出 PIE 时 Control Rig 编辑器详细信息面板导致的问题。

  • 修复了有时约束视口小组件会相对于错误的主体绘制的问题。

  • 修复了以下问题:按下用于编辑约束的子帧的键盘修饰符 (Alt + Shift) 也会激活“将相机锁定到构件”功能 (Shift) 的键盘修饰符,这会导致平移构件在编辑子帧时移动不规则。

  • 修复了添加注释和使用撤消/重做时的 Control Rig 编辑器问题。

  • 修复了在绑定上发现特定函数参数用法时,由于内联函数参数的无效重新映射而导致的 Control Rig 编译器问题。

  • 修复了 RigVM 编译器中 rig 函数具有超过 255 个操作数时的问题。

  • 修复 IK Retarget 自动链映射模式“exact all”;现在,它不会将非精确匹配项重置为 None。

  • 如果输入骨骼的数量在运行时动态变化,FBIK 求解器现在将动态重新初始化。

  • 清理了 Control Rig Python 文件,以消除运行时的混合制表符/空格错误。

  • RigVMController:添加了数组升级,以重新路由没有源或目标链接的节点,其中值为数组,因此它可以加载一些已弃用的 Rig。

  • FBIK 求解器现在只需一个效应器即可正常工作(从 5.2 回归)。

  • 修复了在 Control Rig 图形中的序列节点上添加引脚时出现的问题。

  • 修复了 FBIK 求解器中的内存泄漏(从 5.2 回归)。

  • 修复了 Control Rig 中的 Spherical Pose Reader 节点,因此当激活区域填满整个球体时,它不再翻转。

  • RigVM 插件现在具有自定义序列化对象版本。

  • 修复了 Control Rig Gizmos 无法正常工作的问题;将资源引用更改为软对象指针后。

荒废的:

  • 已弃用所有执行数据接口。要设置自定义计算内核的执行域,请使用内核节点详细信息面板中的“执行域”字段。在将数据接口连接到内核的主组或将组件绑定节点直接连接到主组引脚后,有效的域应显示在下拉菜单中。

运行

API 变更:

  • 扩展了 ImmediatePhysics_Chaos API,以便您现在可以使用接受 JointSettings 对象而不是 FConstraintInstance 的新 CreateJoint 函数创建即时物理约束,而无需从约束实例复制值。

新增功能:

  • 向倒带调试器添加了新的惯性化专用轨道。

  • 现在,您可以在 Rewind Debugger 中单击 Animation 节点轨道,该节点将在相应的 Animation Blueprint 中突出显示,以改进调试工作流程。

  • 添加了动画状态机架构缺少的工具提示。

  • 动画蓝图运行时错误现在会记录在 PIE 日志中(如果这些错误是在游戏会话期间发现的)。

  • 动画蓝图日志记录现在可以使用标记化消息将错误超链接到错误来源的节点。

  • UAnimInstance::IsSlotActive() 现在是线程安全的。

  • 混合空间图中的玩家节点现在已添加到 GraphAssetPlayerInformation 中。

  • 恢复了一些现在使用 Anim Pose API 的动画蓝图库方法。

  • 用于区分状态别名和管道的新颜色。

  • 已从 SkeletalMeshComponent 中提取了一些 LOD 骨骼生成函数,因此可以从插件中使用它们。

    • 更新了 ComputeRequiredBones 函数以使用提取的函数。

  • 向 SkeletalMeshComponent 添加了一个委托,因此当 LOD 重新计算 RequiredBones 时,可以通知外部系统。

  • 将 SkeletionRemapping.h 和 SkeletonRemappingRegistry 从私有移动到公共,以允许在插件中包含这些文件

  • AnimBoneCompressionCodec 现在有一个新的 DecompressPose 函数,该函数采用 FAnimBoneDecompressionData 参数,解压缩数据采用以下单独的数组格式:平移、旋转、缩放 3D。

  • 添加了 DoubleClick AnimSegmentsPanel 的功能,以便跳转到目标资源。您也可以 shift + 双击以在新窗口中打开它。

  • 添加了新的编译器注释和视觉警告,如果转换规则具有逻辑,但设置了基于自动规则的条件的标志,则状态机转换

起色:

  • 添加了一个新的帮助程序函数来查找所有外部可保存的包。

  • 向 Anim Notify 事件添加了当前时间访问器和库函数,以便轻松访问相对时间和比率。

  • 现在,可以采用与通知相同的方式管理同步标记。

  • 神经网络掩码曲线从动画蓝图节点和控制装备实现转发到 RigLogic。

崩溃修复:

  • 修复了重新加载控制绑定动画蓝图时可能导致崩溃的问题。

  • 修复了在异步任务正在传输时撤消或重做动画序列编辑时可能导致崩溃的问题。

  • 修复了在使用自定义 Anim 实例代理作为链接的 AnimGraph 时可能导致重新实例崩溃的问题。

  • 修复了从工作线程调用时可能导致崩溃的问题。UAnimInstance::GetAllCurveNames

  • 修复了在自动测试期间编译动画蓝图时可能导致崩溃的问题。

  • 修复了在动画蓝图模板中右键单击修改后的曲线节点时可能导致崩溃的问题。

  • 修复了在游戏功能插件中卸载编辑器缩略图引用的动画资源时可能导致崩溃的问题。

  • 修复了在自动测试期间可能导致推测崩溃的问题。

Bug修复:

  • 修复了由于曲线重构而可能导致曲线惯性混合回归的问题。

  • 修复了在使用同步组时可能导致忽略起始位置的问题。

  • 修复了在关机时取消注册属性类型自定义项时可能导致 ASan 问题的问题。

  • 修复了可能阻止在内容浏览器中创建子动画蓝图的问题。

  • 修复了在打开“曲线”选项卡的情况下打开模板动画蓝图时可能导致崩溃的问题。

  • 修复了在“引线姿势”点头时可能导致网格失真的问题。

  • 修复了在使用惯性混合曲线过滤时可能导致混合错误地跳过混合入和出的问题。

  • 修复了当多个节点绑定到同一动画蓝图节点时,可能导致在版本化构建中无法调用动画节点函数的问题。

  • 修复了可能导致缓存的姿势在后续评估 AnimGraph 时无效的问题。

  • 修复了因调用签名已更改的 Anim 节点函数而导致堆栈损坏的问题。

  • 修复了可能导致 Control Rig 曲线 I/O 中越界访问的问题。

  • 修复了在使用骨架兼容性分配资源时可能导致网格扭曲的问题。

  • 修复了可能导致熟食内容中间歇性错过曲线的问题。

  • 修复了可能导致骨骼 LOD 筛选在自动测试期间显示错误结果的问题。

  • 修复了可能导致每个骨骼节点的分层混合无法与每个骨骼曲线过滤正常工作的问题。

  • 修复了可能导致 PoseAssets 中具有其他姿势及其各自曲线的越界访问的问题。

  • 修复了通过钳制剩余时间进行循环时可能导致无法到达触发通知的问题。

  • 修复了在添加其他虚拟骨骼时可能导致虚拟骨骼菜单不显示的问题。

  • 修复了 Control Rig Anim Node 的问题,该问题可能导致后期处理 AnimBP 中的 Rigid Body Anim Node 停止工作。

  • 修复了通过降低 RigLogic 中内存分配的默认对齐要求,可能导致控制台上出现 OOM 问题的问题。

  • 修复了在游戏过程中加载多个面孔 (DNA) 时可能导致性能问题的问题。

  • 修复了尝试在蒙太奇中收集具有无效插槽轨道索引的同步标记时出现的问题。

  • 修复为默认为 true,即使动画资源没有任何同步标记也是如此。bCanUseMarkerSync

  • 修复了在过滤掉所有有效标记时关注者为 true 的问题。bCanUseMarkerSync

  • 修复了从 UGameplayAbility::EndAbility 链接/取消链接动画图层时出现的问题。

  • 动画编辑器现在可以正确应用兼容骨架中的预览网格。

  • 修复了在模板动画 BP 上过滤预览网格时出现的问题。

  • 修复了 Anim BP 资源定义正确显示用于创建子 Anim BP 的选项的问题。

  • 修复了向动画序列添加曲线并立即获取骨骼姿势时出现的问题。

  • 修复了 UBlendSpace::TickFollowerSamples 中由于硬编码 bLooping 标志而导致的问题。

  • 修复了 FAnimNode_LinkedInputPose::Evaluate_AnyThread 中的 NaN 崩溃。

  • 确保在混合空间赋值器中,钳制的归一化时间保持在 0-1 范围内。

  • 修复了当 bSkipFirstUpdateTransitions 标志设置为 false 时未触发状态机转换的“启动”动画通知事件。

  • 修复了可能导致链接动画图层或图形中重新实例崩溃的问题。

  • 修复了复制动画属性时可能导致使用后释放的问题。

  • 修复了在 SyncMarkers 窗口中删除同步标记时,在此过程中查找 AnimMontage 时可能导致崩溃的问题。

  • 修复了一个,但在考虑自动重要性计算的视点时,只会查看玩家控制器,而不是 AI 控制器之类的东西。

  • 修复了可能导致 GetLinkedAnimLayerInstanceByGroup tp 不适用于未分配实例的未实现层的问题。

  • 修复了在编辑曲线元数据时可能导致“详细信息”面板消失的问题。

  • 修复了在选择要调试的外部动画实例后,可能导致预览实例无法重新选择的问题。

  • 为 UAnimInstance 的函数 GetRelevantAssetPlayerInterfaceFromState 添加了一些缺失的定义。

  • 修复了可能导致 FMirrorSyncScope 崩溃的问题。

  • 修复了在更改示例动画时可能导致混合空间示例条目扩展的问题。

  • 修复了在加载具有姿势处理器节点的动画 BP 时可能导致崩溃的问题,该节点需要对其动画进行骨架更新。

  • 向 SkeletetonRemappingRegistry 添加了缺少的 ENGINE_API 标记,因为它需要从引擎外部使用它

  • 修复了在 UAnimationSequencerDataModel::GeneratePoseData 中使用不正确的骨骼索引类型用法时可能导致崩溃的问题。

  • 修复了在动画压缩期间转换骨骼索引时 ensure 可能出现的问题。

  • 修复了可能导致 SkeletalMeshComponent ComponentIsTouchingSelectionFrustum 出现问题的问题,因为它由于缺少检查而返回误报。

  • 修复了可能导致 FBX 导入出现问题的问题,因为名称限制不允许骨骼名称在 RigVM 层次结构中以数字开头。

  • 修复了一个问题,该问题通过向 SkeletalMeshComponent SetAnimationMode 函数添加一个参数(允许不重新初始化 AnimationScriptInstance)来,在使用设置为“在关卡序列中使用动画蓝图”的动画模式轨道时,可能会阻止动画序列器重复触发通知。

  • 修复了在使用 PoseableMeshComponent 时可能导致崩溃的问题,即当组件正在以增量方式取消注册并且取消注册过程花费的时间超过组件中设置的时间限制时。

  • 修复了在打开其他视口时关闭一个视口时使用其中一个动画编辑器时可能导致崩溃的问题。

  • 修复了将动画图层节点添加到动画图形中后,可能会阻止刷新 BlueprintEditor 的问题。

  • 修复了在以相反顺序播放时可能导致 AnimComposite 动画通知提取期间出现问题的问题。

荒废的:

  • 添加了位于模块中的弃用警告,因为文件已移动到 。AnimNode_StateResult.hAnimGraphRuntimeEngine/Animation

  • 从 SkeletalMesh 中删除了已弃用的镜像功能。

音序器

新增功能:

  • 添加了为子序列创建镜头的功能。

  • 您现在可以为镜头和Sequencer部分添加注释。

  • 添加了在 Sequencer 中复制和粘贴绑定时对标记的支持。

  • 添加了从Sequencer的轨道中选择材质参数集合资源的选项。

  • 重新分配给公众。LevelSequenceEditorSettings.h

  • 添加了用于合成叠加的命令绑定到电影视口。

  • 公开了访问音频部分循环、抑制字幕和衰减功能的 setter 和 getter 的功能。

  • Sequencer的键编辑器现在会编辑选定的键(如果已选择)。否则,它将像往常一样在当前时间进行编辑。

  • Take Recorder 中的绑定录制命令现在可以在世界空间中播放,以便它们在 Editor 和 PIE 中工作。

  • 现在,即使在子序列中,“时钟源”菜单也始终可见,但只有当“序列编辑器”聚焦在根序列上时才可编辑。

  • 对 Sequencer 的导入 EDL 进行了几项改进:

    • 新增 KEY CLIP NAME 支持

    • Sequencer 现在从行尾解析时间码。

    • 如果EDL包含多个镜头,则导入时将在Sequencer中创建后续镜头,与EDL镜头相对应。

  • 现在,您可以通过多选来更改多个文件夹的 Sequencer 文件夹颜色。

  • Sequencer Track 滤镜现在保存在首选项中。

  • 添加了用于切换全局显示标记帧的新事务。

  • 添加了对摄像机动画的起始偏移量的支持。

  • 升级音轨以使用新的 ECS 评估。

  • 将特定于电平序列器的编辑器代码移至 LevelSequenceEditor 插件。

  • 将 sequencer 自定义项移至编辑器视图模型。

  • 为部分添加以下改进的边缘交互:

    • 现在,您可以将绘制缓动手柄用作大小与夹点大小相匹配的圆角三角形,而不是以前的位图。

    • 缓动手柄更大,命中测试区域更大,使选择更容易。

    • 除了握把大小外,还通过部分界面公开了密钥大小。

  • 添加了对材质参数轨迹的混合类型和多行的支持(小组件和 MPC)。

  • 向详细视图公开相机动画参数。

  • String 属性和 String 轨迹现在使用新的 ECS 评估。

  • 添加在时间滑块上锁定标记帧的功能。

  • 从其自己的模块中注册/注销摄像机动画替身对象。

  • 向 Sequencer 添加了新的用户定义绑定。此更改添加了使用目录蓝图为对象绑定定义自定义逻辑的功能。它不会绑定到通常的 possessable 或 spawnable,而是可以选择运行用户定义的任意 BP 逻辑来解析绑定对象。例如,这使得绑定到玩家 pawn 或编辑时可能不存在的任何其他参与者成为可能。UI 类似于事件跟踪的 UI,因此可重用 director 蓝图端点选取器。然而,有一个新的蓝图扩展可以将这些函数编译为 spawnables 和 possessables,当然还有一个在适当的时候调用这些函数的位置。

  • 添加了一个新密钥,您可以使用它来允许关闭播放器。

  • 您现在可以将骨骼动画部分展开回左侧。

  • 新增功能:智能自动钥匙。

  • 用于约束烘焙、空间烘焙、鲷鱼、控制装备折叠和烘焙变换的智能烘焙。

  • 在轨道上交换根骨。

  • 动画模式:单击轴时禁用选择,避免在操作时丢失选择。

  • 曲线编辑器:使归一化模式可滚动和平移。这样可以确保,如果现在帧到规范化模式,它不会使用最大值/最小值,而是默认值。

  • 控制装备:Shift 现在可以移动摄像机,以便在移动时与控制装备保持同步。

  • 曲线编辑器:即使曲线被破坏,也要保持输出边界相同,以便您可以选择/取消选择并保留其曲线边界。

  • Take Recorder 现在支持多达 8 个音频输入源进行多轨音频录制。

  • 在Sequencer和Curve Editor中添加了时间拖拽,以匹配视口行为。

  • 为常见的浮点/色光属性添加了本机访问器,以提高在序列器评估后设置属性时的性能。

  • 曲线编辑器:添加了显示约束/空格条的选项。

  • 链接的动画序列现在仅供编辑器使用。

起色:

  • “录制器时间码”设置名称现在默认为与“动画序列”相同,以便对齐有效。

  • 删除了 Sequencer 的添加 (+) 按钮文本变换显示性。现在,文本是一个工具提示,因此不会与关键的编辑器按钮重叠。

  • 将 Sequencer 的 Browse to Actor 属性添加回 actor 的右键单击上下文菜单。

  • 默认情况下,Sequencer 中不再启用“控制装备控制”筛选器。您可以选择启用它,您的首选项将在会话之间保存。

  • 现在,“修剪”和“保留”(Trim and Reserve) 可在附加的组件不是根组件时计算正确的变换。

崩溃修复:

  • 修复了在加载时对部分进行排序时可能导致崩溃的问题。

Bug修复:

  • 修复了可能无法在镜头和子序列中打开或关闭标签的问题。

  • 修复了在尝试更新现有密钥时可能导致添加新密钥的问题。

  • 修复了可能导致组管理员在执行撤消或重做命令时无法刷新的问题。

  • 修复了可能导致组管理员选择无法在文件夹路径中正常运行的问题。

  • 修复了路径轨迹评估的问题,该问题可能导致当对象被路径轨迹移动时无法正确设置组件速度。

  • 修复了可能导致在播放期间重新生成波形无法正常工作的问题,方法是添加轻微延迟以消除卡顿。

  • 修复了可能导致属性菜单中出现重复条目的问题。

  • 修复了可能导致“全局显示标记的帧”未标记为 UPROPERTY 以便序列化的问题。

  • Take Recorder:固定了摄像机剪切部分的范围,以便在录制摄像机时适用于子序列。

  • 删除不必要的摄像机剪切轨道和截面创建,因为它们是在添加摄像机时创建的。

  • 修复了以下问题:如果序列正在计算,则由于生成对象被修改,可能导致动画序列被标记为脏。

  • 通过跟踪新旧节点路径,修复了层次结构更改时静音/独奏节点的问题。

  • 修复了小组件被替换且不再有效时的问题。

  • 修复了复制密钥不可撤消且无法正确更新 UI 的问题。

  • 修复了通过键入材质参数集合实例的当前值(如果存在)而不是始终只是默认值来键入的问题。

  • 修复了在将对象的转换添加到 Sequencer 时补偿转换原点的问题。

  • 修复了重新映射行索引或添加新行时的跟踪行名称。

  • 修复了粘贴 possessable 时可能发生的问题,即仅当 possessable 的类不是 actor(例如组件)时,才将其父级添加到粘贴的目标。这修复了一个 actor 可以粘贴到另一个 actor 中的问题。

  • 修复了以下问题:确保 CineCamera 演员在创建为可拥有时的名称是唯一的。通常这是在 actor 工厂中完成的,但在这里我们直接生成 actor。

  • 检查骨架动画 FBX 导出时的有效动画。

  • 修复了调用脚本函数(AddKeyInChannel、RemoveKeyFromChannel、SetDefaultInChannel、ReoveDefaultFromChannel、SetTimeInChannel、SetValueInChannel)不可撤消且无法正确更新 UI 的问题。

  • 修复了通过初始化生成的 actor 的层的问题。这修复了以下问题:如果将可生成对象添加到图层,隐藏该图层,然后在新关卡中重新打开序列,则该可生成对象将不可见,并且不会响应新关卡中的图层。

  • 修复了通过使用源时间码来防止时间轴中的对齐部分的问题,以便将刻度分辨率考虑在内

  • 修复了阻止在摄像机剪切菜单中选择所有摄像机演员的问题,即使该菜单已隐藏也是如此。

  • 修复了可能导致小部分导致负像素时间转换的问题。

  • 修复了以下问题:从先前播放的关卡序列(如果有)中继承上一个视图目标,以便上一个播放的序列还原实际的原始视图目标,而不是前一个序列的摄像机。这修复了当某些序列相互叠放时摄像机卡住的问题。

  • 修复了在使用“摄像机剪切”轨道中的上下文菜单尝试选择未生成的可生成对象时可能导致崩溃的问题。

  • 通过防止全局自定义访问器在关机时取消注册来修复一个问题。

  • 修复了在重建轨道布局时可能导致视图模型回收的问题。这修复了一些 UI 问题,即在轨道行之间移动键和部分。

  • 修复了在 Sequencer 或相机抖动预览器工具中预览抖动时可能导致崩溃的问题。

  • 修复了无法正确缓存初始材质参数值的问题。

  • 修复了在 Sequencer 打开时重新编译用户小组件时可能导致崩溃的问题。

  • 修复了在未选择“对齐到关键帧和部分”时可能导致“对齐间隔”工具不起作用的问题。

  • 修复了在序列播放期间关卡发生更改时直接在播放器上恢复纵横比轴约束的问题。

  • 通过在停止和暂停操作时正确恢复 Sequencer 编辑器播放速度来修复问题。

  • 修复了当轨道从 1 行变为 2 行或更多行时可能导致关键帧编辑器小组件无法正确清理的问题。

  • 修复了将项目从“放置 Actor”菜单拖动到子场景部分上时可能导致崩溃的问题。

  • 修复了一个 UI 问题,即显示的截面长度的预览仅与第一个子序列资源一样长,而不是拖放选择中最长的资源。

  • 修复了可能导致 Sequencer 运行器以交织方式分离并附加到链接器的问题。

  • 修复了可能导致 Additive From Base 混合类型在 UE5 样式中缺少图标的问题。

  • 修复了通过将播放速率考虑混合摄像机剪辑之间的混合时间的问题。

  • 修复了在 Sequencer 中使用时可能导致 Control Rig 组件不断重新初始化的问题。

  • 修复了可能导致序列器相机抖动模式混合不正确的问题。

  • 修复了粘贴轨道时不调用 NotifyMovieSceneDataChanged() 函数的问题。这修复了 Niagara 在粘贴轨道后无法正确设置其数据的问题。

  • 修复了可能导致正常轨道区域和固定轨道区域之间的交互处理不正确的问题。

  • 修复了 NVVM 刷新问题,该问题可能导致已有回收列表的视图模型无法回收其子项。这意味着,在使用新的基础数据重建之前,重用的轨道行视图模型不会清除其子模型。

  • 修复了 Sequencer 曲线编辑器中通道曲线模型的问题,该问题可能导致在添加新键时相邻键的跟踪插值类型无法正常运行。

  • 修复了可能导致 MovieSceneSequenceExtensions::GetBindingId 无法正确公开给 python 脚本的问题。

  • 修复了以下问题:当截面从时间 0 开始且没有缓出时,可能会导致缓入曲线无法正确显示。

  • 修复了未在正在拆除的实体上缓存预动画状态的问题。

  • 修复了可能导致 BOOL 和 INT 曲线无法绘制超过曲线编辑器中最左边或最右边键值的问题。

  • 修复了可能导致影片场景播放中出现空检查的问题。

  • 修复了可能导致子部分、音频部分和骨骼动画部分的自动调整大小无法正常工作的问题,因为考虑到开始或结束偏移,它们都丢失了。

  • 修复了可能导致在排序器期间覆盖可生成绑定的问题,生成的 actor 将被抛在后面,从而创建重复的角色。现在,当绑定失效时,我们检测到被覆盖的绑定,Sequencer 会检查是否注册了可生成对象,如果注册了,则销毁该可生成对象。

  • 通过在加法控制装备部分上设置零值来修复一个问题,因此它不会始终添加并使用默认插值。

  • 通过添加 sequencer 功能,在熟构建中将 SkeletalMesh 资源从 Skeletal Mesh 组件更改为 SkeletalMesh 资源,修复了此问题。

  • Snapper:设置密钥时使用默认密钥类型。

  • 通过平移热键更改时间时,首先获取所有更改,然后应用它们以避免使用空格/约束键进行双重转换。

  • 控制绑定:在寻找约束控制绑定的绑定时,它会考虑控制绑定,以便选择正确的 Actor 或其组件。对于某些设置,面和主体绑定都绑定到控制绑定上的同一组件,但在 Sequencer 端绑定不同。

  • 修复了使用 Take Recorder 录制时音频资产中存储的时间码值缺失或不正确的问题。

  • 约束烘焙:将补偿时关键帧的切线类型更改为默认值,以避免插入可能具有平切线的关键帧。

  • 控制装备:修复键控加权加法部分。

  • 修复了在Sequencer中复制子关卡中的Actor的问题,您最终可能会选择错误的Actor。

  • 如果我们没有曲线,则仅在更新树时同步曲线选择,否则这将破坏动画师正在处理的内容。

  • 修复了在低帧速率下拖拽音频时 Sequencer 中的静默故障情况。

  • 修复了在曲线编辑器中选择的关键帧数量不足的情况下应用 FFT 滤波器时发生的问题。

  • 从蓝图或 Python 调用 PasteBindings() 会正确返回新创建的绑定。

  • 链接的动画序列适用于嵌套序列。

  • 曲线编辑器:除非有空格,否则不显示空格或约束键条空格。

  • 捕捉器:捕捉时不要包含没有形状的控件,以避免出现问题。

  • 动画模式:离开/进入动画模式时恢复小工具比例。

  • 链接动画序列:仅在更改数据时变脏,而不是在刷新或更改序列时。

  • 控制装备:在处理初始化事件时确保它位于游戏线程上,修复程序装备可能存在的问题。

  • 修复了 Sequencer 播放器播放复制同步,每个周期仅发生一次。

荒废的:

  • 弃用了 GetBoundObjects,因为它与 Spawnables 不兼容。建议使用 ULevelSequenceEditorBlueprintLibrary::GetBoundObjects,因为它对编辑器中当前打开的序列进行操作,并且可以返回有效的可生成对象。

  • 删除 Matinee 的 PostInterpChange,因为它不经常使用或与项目兼容。

合成

新增功能:

  • 添加了创建和压缩变形目标时的进度条。

  • 添加了对将 Physics Blend Weight 与 Physics Control 组件一起使用的支持。

  • 向 BodyInstances 添加了一个新标志。这允许在使用异步物理场进行仿真时将运动学视为与动态对象相同的处理方式。该标志默认为 ,因此默认行为没有变化,除非使用物理控制组件,该组件默认设置该标志。UpdateKinematicFromSimulationfalse

  • 现在,您可以使用物理控制组件获取当前或目标变换。

  • 现在,您可以将物理控制组件设置为使用手动更新。

  • PhysicsControlMultiplier 结构中的 Physics Control 组件阻尼比现已公开。

  • 您现在可以批量编辑物理控制组件设置,例如目标位置和方向。

  • 现在,在使用物理控制组件时,您可以将物理变换重置为缓存的目标。

  • 添加了在使用 Physics Control 组件时使用性能分析标记的功能。

  • 从 ML 变形器、VertexDeltaModel 和 NearestNeighborModel 中删除了 NNI。

  • 修复了在 Linux 操作系统上初始化 ML Deformer 时可能导致崩溃的问题。

起色:

  • 改进了 ML Deformer 重建质量:

    • ML Deformer 重建方法现在使用平滑的 L1 损失函数,在训练设置中添加了新的 beta 平滑损失属性。

    • 重建方法现在还使用余弦退火学习速率调度器,该调度器删除了学习速率衰减设置。

  • 现在,ML Deformer 在使用 Vertex Delta 模型时会显示警告,指出不应在生产中使用该模型。

  • ML Deformer 现在使用额外的 Get 函数来获取私有成员。

  • 在不需要非详细日志记录的地方添加了详细日志记录。

  • 向 ML Deformer 添加了额外的 null 安全检查。

  • ML Deformer 现在可以在不需要时防止采样器重新取样。

  • ML Deformer 模型现在可以指定每块骨头的浮子数。

  • ML Deformer 现在可以检测顶点计数的变化,并在 Morph Target 部分显示警告,此时在重新训练后才能进行动态 Morph Target 更新。

  • 改进了外部变形目标的清理,这也清除了权重数据。

  • 通过减少单元数来改进组件重新调整。

  • 改进了 ML Deformer 资产编辑器中骨骼的渲染。

  • 初始化物理控制组件控制强度现在默认设置为,而不是 。01

崩溃修复:

  • 修复了可能导致崩溃的问题,该问题会阻止 ML Deformer 在无法更新动态变形目标时进行更新

  • 修复了当骨架网格组件上的局部骨骼变换为空时可能导致崩溃的问题。

  • 修复了在创建新的 actor 蓝图、将蓝图添加到骨架网格体和 ml 变形器组件、将神经变形模型设置为 ML 变形器资源以及在骨架网格体组件中选择顶点增量模型网格变形器时可能导致崩溃的问题。

Bug修复:

  • 修复了可能导致 ML Deformer 资产行为不正确的问题。在训练期间中止或在训练后更改资产并保存时,可能会发生这种情况。现在,编辑器在变形目标中正确设置了截面索引,而不仅仅是包括所有截面,并按顶点编号对变形目标增量进行排序。

  • 修复了在局部模型中使用曲线时可能导致意外行为的问题。

  • 修复了可能导致 ML 变形器编辑器在更改资产(例如骨架网格上的属性)的输入后进入时间线无法正常运行的状态的问题。

  • 修复了可能导致训练后兼容性检查失败的问题。

  • 修复了可能导致在调试模式下检查失败的问题。

  • 修复了使用 Physics Control 组件模拟物理时,默认将 Physics Blend Weight 属性设置为 1 的问题。这确保了使用运动学和动力学体的混合适用于骨架网格。

  • 修复了 ML 变形器时间采样不正确时可能发生的问题。

  • 修复了在 ML Deformer Vertex Delta Model 中呈现图形错误时可能发生的问题。

  • 修复了 ML Deformer Vertex Delta 模型推理可能出现的一些问题。

  • 修复了 VertexDeltaModel 可能出现的问题,该问题导致动画显示为冻结。

  • 修复了可能导致 ML Deformer 中的模块丢失的问题。

  • 修复了可能导致 MLDeformer 中出现不正确的顶点不匹配错误的问题。

删除:

  • 从 ML 变形器中删除了不再需要的子字符串重定向,并在日志中触发了警告。

编辑 器

API 变更:

  • Linux 上不支持 OpenGL,因此依赖于 OpenGL 的 imaging 和 usdImaging USD 库在该平台上被排除在外。

新增功能:

  • 添加了编辑器性能设置以控制 .r.VSyncEditor

  • 添加了对基于每个属性覆盖枚举值显示名称的支持。

    • 这可以通过枚举值显示名称覆盖元数据来指定,并且是以分号分隔的对列表,其中显示名称可以是原始字符串或 NS/LOCTEXT 样式的本地化值。Name=DisplayName

  • 为 10X 编辑器添加了源代码访问插件。

  • 在编辑器资源菜单中添加了“复制引用”和“复制路径”按钮。

  • 当编辑器进程在后台时禁用实时视口,并且 .bThrottleCPUWhenNotForeground

  • 通过降低运行其合并步骤的频率来优化高级拷贝。

  • 添加了用于 PNG 导入的新选项,以始终将 RGB 填充到透明的邻居中,即使在复杂的 Alpha 通道上也是如此。以前只在简单的二进制透明度上做RGB填充。这可在纹理导入设置中配置。

  • 添加了 Fixup Group Actors 函数。

  • 添加了对 Windows ARM64、Linux 和 Mac 的支持。

  • 在导入时将浮点纹理更改为默认为 BC6H 压缩纹理格式,而不是RGBA16F。现有纹理不会更改。默认选择的格式可以在纹理导入设置配置中设置;对于 VFX,用户可以将其设置为默认的 32 位纹理格式。

  • 添加了对从特定输出创建节点时自动连接输入的支持。

  • 启用了共享线性编码的简单命令行覆盖 ( )。 -ForceSharedLinearTextureEncoding=True/False

  • 修复了 32 位大小限制和阻止使用超大图像(例如文件大小超过 2 GB)的 bug。虚幻引擎现在应该能够导入非常大的图像,仅受内存使用和目标平台或 VT 大小限制的限制,目前非 VT 为 16k x 16k,VT 为 4 GB 构建大小。

  • 添加了“媒体板”按钮以浏览到材质资源。

  • 更新了“裂缝”编辑器,在凸工具中显示导入的碰撞形状(如果可用且已启用)。显示器支持凸形、方形、球形和胶囊导入形状。

  • Sound Cue 节点现在遵循类查看器过滤器。

  • 将 Plastic SCM 插件更新到了版本 1.8.0。

  • 修改了纹理上的高级颜色空间转换和源编码覆盖,以利用 OpenColorIO 库。

  • 添加了对内容浏览器文件数据源的基本 SCC 支持。这足以支持基本操作(添加、删除、移动、重命名)以及版本控制文件菜单(允许同步、还原、签入、历史记录和比较)。

  • 添加了一个上下文菜单项,用于对特定参与者执行资产验证。

  • 已将 OpenEXR 版本升级到 3.1.6。

  • 在引擎的 USD 构建中包含了 imaging 和 usdImaging 库。

  • 公开为可调用的蓝图并添加 .SetIgnoreBoundsForEditorFocusGetIgnoreBoundsForEditorFocus

  • 在 SGraphPanel 中公开的单击操作,以允许挂钩自定义逻辑。

  • 添加一个新的 Cook 元数据文件,该文件在开发资产注册表附近生成。这将是与资产前进无关的厨师元数据的主页。目前,这包含有关在烹饪时启用的插件的依赖关系信息,以及在暂存期间写入烹饪元数据文件的插件大小信息(如果启用)。

  • 升级 USD 版本至 v23.02。

  • 从 Sequencer 中提取的属性菜单现在遵循属性编辑器权限列表。

  • 更新了“签入更改”和“同步最新”状态栏按钮的图标。

  • 添加了在“提交文件”窗口中还原冲突文件的功能。

  • 添加了允许您选择写入资产注册表缓存文件的位置的选项。-AssetRegistryCacheRootFolder= commandline

  • 在裂缝编辑器中向统计数据微件添加了凸起数。

  • 使 Fracture 编辑器中的直方图 Set Inspected Attribute 方法对格式错误的几何集合更具弹性。

  • 如果用户单击签入更改时有任何未保存的更改,则触发自动保存。

  • 更新了调试焦平面边界,以便在编辑器中对焦于电影摄影机时不再考虑,使视口聚焦在实际摄影机本身上。

  • 改进了与填充条目相关的编辑器启动性能。FAutocastFunctionMap

  • 改进了编辑器资源扫描性能。

  • 更新了变体管理器属性列表,以包括静态网格和叠加材料属性。

  • 更新了 use const 数组并添加了 .SyncBrowserToObjectsSyncBrowserToObject

  • 在蓝图生成的类编辑器标签中添加了蓝图显示名称,以允许在熟编辑器中使用别名类名称。

  • 向场景大纲视图中的切换可见性按钮和场景大纲视图中的固定按钮添加了工具提示。

  • 将 Mobile Preview ES3.1 (PIE) 重命名为 Standalone Game Mobile。

  • 将 Vulkan Mobile 预览版 (PIE) 重命名为独立游戏 Vulkan Mobile。

  • 将“移动预览 (PIE)”重命名为“独立游戏目标设备移动”。

  • 将“预览渲染级别”重命名为“预览平台”。

  • 将 EditorViewport 中的 DebugText 从 Feature level: 重命名为 Preview Platform:。

  • 添加了一个回调,以便在垃圾回收完成清除对象时收到通知。UObject

  • 现在,当使用数据流生成几何集合资产时,加载的组件(包括蓝图中的组件)会正确更新。

  • 添加了参数,用于在断开编辑器中使用连通性数据时强制使用集群编号。

  • 阻止非服务器独立实例使用服务器映射名称覆盖。

  • 添加了对象从调色板中选取备用选择轮廓颜色的功能。

  • 添加了对静态和动态注册文档重定向的支持,以允许被许可人覆盖引擎级文档链接,而无需重复/添加样板菜单覆盖。文档重定向可以通过 INI 编辑器配置文件静态注册,也可以通过 IDocumentation 接口在代码中动态注册。

起色:

  • 更新了资产注册表导出器以输出为 CSV,以方便导入到通用数据库前端。此外,还支持基于一组主要资产类型根输出依赖项信息,以帮助分析构建大小的来源。

  • 更新了函数“UContentBrowserAssetDataSource::CreateAssetFilter”以提高性能。对于具有大量路径的大型项目,使用对所有文件夹进行递归搜索,此更改将创建筛选器所需的时间减少了约 86%。

  • 通过添加系统来缓存过滤器编译的某些部分,改进了资产视图的后端过滤器编译。

  • 改进了裂缝编辑器中的连通性工具可视化:

    • 现在显示中心。

    • 添加了线条粗细、点大小和颜色的控件。

Bug修复:

  • 修复了在编辑器关闭时访问空指针时崩溃的问题。

  • 更正了如果资源尚未加载到内存中,清除缩略图不起作用的问题。

  • 修复了它,因此“在编辑器中播放”选项中的“其他服务器游戏选项”适用于外部启动的专用服务器以及侦听服务器。

  • 更正了清除饼图复选框,使其通过输入正确的路径来工作。

  • 修复了编辑器在未定义统计信息时确保启动的问题。

  • 修复了当编辑器通过调用 关闭时,在停顿检测器线程中退出时崩溃的问题。RequestEngineExit()

  • 更新了技能系统组件功能,以在使用前检查规范的技能指针。

  • 修复了 Web 浏览器窗口打开时关机时崩溃的问题。

  • 修复了嵌套虚拟根(来自别名)无法在内容浏览器中正确解析的问题。

  • 修复了在保存后撤消已删除的每个参与者一个文件时的回归问题。

  • 修复了运行延迟操作时无法恢复扩展状态的详细信息面板。

  • 修复了内容浏览器并不总是显示路径过滤器的问题。确定是否应显示的 未初始化。SLATE_ARGUMENT

  • 修复了高级复制的崩溃错误,即两个同名的资源依赖项会变平以相互覆盖。

  • 修复了从数据表资产或任何资产创建参数时崩溃的问题。

  • 修复了软件包被严重脏污的几个问题:

    • 如果实际上是摄像机移动输入,则在事务上调用取消。

    • 当小部件拖动被取消时重置包脏状态(例如,使用转义键)。

  • 使标志可编辑,否则编辑者修改的框将与 CDO 相等,因此不会保存。FBoxesIsValid

  • 屏幕淡入淡出的 Usee,以便极值在编辑器和运行时之间保持一致。FLinearColor

  • 修复了变体管理器打开一个额外的空窗口的问题。

  • 修复了使用虚幻遥控器时虚幻编辑器崩溃的问题。

  • 修复了缩略图池在滴答时可能会被删除的崩溃,因为在生成缩略图时拥有它的资产视图被销毁。

  • 修复了编辑器关闭时崩溃的问题,即 ISM 类型化元素句柄的事务处理器被过于激进地清理。

  • 重新设计了组件可视化工具的可见性,以关闭绘制调试变量。禁用此功能后,如果直接选择了组件,则组件可视化工具仍将绘制,并允许以这种方式进行编辑。支持 PCG 工作流的帮助样条曲线,这些样条曲线默认对用户隐藏。

  • 修复了由删除资源窗口中的循环依赖项导致的内存泄漏。这也修复了由于资产选取器小组件泄漏而导致的删除资产时编辑器的一般性能下降问题。

  • 修复了以下问题:即使用户在小控件上选择了有效的轴,小控件也会在键绑定的轴上旋转。

  • 修复了 prtining 类型化元素调试 ID 时的崩溃问题。

    • 在类型化元素调试 ID 打印中出现一次崩溃的推测性修复。

  • 修复了在编辑器中将元素添加到映射或设置属性时错误报告重复项的问题,其中键类型是键,类名是已作为键存在的名称的子集。UClass*

  • 修复了鼠标跟踪重新启动时悬停/活动小控件命中代理不正确的问题 这会导致在按下新按钮时间接操作轴持续存在,这将导致错误的轴纵。

  • 更新了关卡编辑器放置 actor 菜单,以遵循类 DisplayName 覆盖。

  • 修复了无效可能导致类别路径查找断言的问题。FName

  • 修复了“转换为静态网格体”(Convert to Static Mesh)Actor的工具,使其现在可以正确处理实例化静态网格体组件(和HISM组件)。

  • 修复了无法在签入窗口中恢复级别文件删除的问题。

  • 修复了阻止在纹理上使用属性矩阵的问题。

  • 在 Subversion 设置中,将仅使用“可执行位置”设置的路径,并且将忽略路径之后的任何可执行文件名称。

  • 修复了在与同步扫描相关的某些情况下不会写入资产注册表缓存的 bug。

  • 实现了签入时的自动保存。

  • 修复了阻止在“全部还原”上还原已删除对象的问题。

  • 修复了导致在删除工作流期间未保存已删除文件导致同步后出错的问题。

  • 修复了导致添加和保存的文件在同步最新后消失的问题。

  • 修复了一个错误,即在加载资源之前,重命名的蓝图资源的类重定向器不会应用,从而导致UI选择中缺少新的类类型。

  • 修改为首先检查源代码管理是否支持删除包,仅当不支持时,才将其标记为本地删除。这修复了以下问题:删除其他人签出的文件(脱机工作时)并选择仅保存在本地,导致文件未在本地文件系统上删除。CleanupAfterSuccessfulDelete()

  • 软件包 Core Redirect 不再区分大小写(在以前的版本中引入了回归)。由于包名称以不区分大小写的方式存储,因此重定向器也应该不区分大小写。FNames

  • 修复了与 相关的内存损坏问题。UK2Node_EvaluateProxy

  • 修复了在内容浏览器中同时移动多个目录时,资源引用并不总是正确更新的问题,导致某些资源指向无效的资源路径。

  • 修复了在静态网格构建步骤中可能发生的崩溃。

  • 修复了以下问题:熟插件的资产注册表状态会从编辑器客户端资产注册表中已存在的资产中删除一些所需的开发标签。

  • 修复了由于 SharedPtr 循环而导致的关机期间 Cloth 编辑器崩溃的问题。

  • 更新了 Merge Actor 的 Approximate Actors 方法,以便在 Occlusion 方法删除近似网格中的所有三角形时正确检测并返回错误。

荒废的:

  • 删除了之前已弃用的 DDS Loader 和 HDR Loader 功能。

内容管道

新增功能:

  • 修复了许多图像导入器,以优雅地处理格式错误的文件,而不是崩溃。

  • OBJ 转换器将多个多边形组与组内的不同材料区分开来。

  • 虚拟纹理不再允许 NoMips MipGenSetting,因为 VT 在所有情况下都需要 mips。仅当提供了整个 mip 链时,才允许使用 LeaveExistingMips。这将生成纹理构建警告,并强制纹理生成 mips。

  • PSD 加载程序支持更加强大,并添加了对 RLE 压缩 16 位 PSD 的支持。

  • 优化了使用引用块数据库进行打包时的 I/O 使用率。

  • 当 CADKernel 网格划分器是默认网格划分器时,如果发生故障,则会使用 TechSoft 网格划分器重新启动文件的进程。

  • 导入期间静态网格的后处理已被禁用。可以通过设置 CVar 来重新激活它ds.CADTranslator.SewMeshIfNeeded = true

  • 添加了 CVar ds。CADTranslator.EnableUnsupportedCADFormats 启用所有不支持的 CAD 格式。

  • 改进了 OBJ 格式材料转换器的质量。现在支持大多数基本和扩展的参数集(以及相应的映射)。照明模式是外推的。

  • 添加了 CVar USD。SkipMeshTangentComputation 跳过静态网格的切线计算。当不需要切线时,这有助于导入性能。

  • USD:烘焙网格变形现在可以作为 GeometryCache 资源导入。

  • 在舞台上加载了几何缓存的文件现在将在 USD 级别序列中具有关联的轨道。

  • 关卡序列中的GeometryCache轨迹剖面参数现在会向蓝图公开。

  • AUsdStageActor 现在可以在 C++ 中从 USDImporter 以外的其他插件派生。

  • Alembic:面集名称(如果可用)现在用作几何体缓存(以及静态和骨架网格体)上的材质槽名称,并且可以与蓝图中的 SetMaterialByName 一起使用。

  • 添加了对从 Alembic UVsParam 中提取 RootUV 值的支持,而不是从 groom_root_uv 属性中提取值。

Bug修复:

  • 现在,通过资产工具导入资产可以验证目标路径是否已挂载,并避免在并非如此的情况下崩溃。

  • 修复了在构建/编译纹理时通过渲染目标更新纹理导致的问题。

  • 从USD/AxF/MDL/Datasmith导入器Dataprep的遥测中删除了冗余数据。

  • 修复了在缺少纹理时导入 obj/gltf/datasmith/mtlx 的问题。

  • 修复了 Autodesk Alias 格式 (.wire) 的矩阵问题。

  • 修复了设置了 LeaveExistingMips 的 longlat 纹理的问题。

  • 导入部分 mip 链会生成完整 mip 链的输出。

  • 使重新导入的对象上的 paper2D 可以安全地在熟编辑器中使用,并在缺少 SourceTexture 元数据时不会出现问题,从而使现有代码更加健壮。

  • 使 AssetTools 的函数 MigratePackages 的 Blueprint 节点变得非纯节点。这将添加此节点应具有的缺失执行引脚。

  • 修复了同时流式传输同一 GroomCache 的多个实例时可能出现的问题。

  • Alembic:修复了组合转换层次结构时可能的计算错误。

  • 修复了 GeometryCache 忽略延迟贴花材质的“接收贴花”设置的问题。

  • Alembic:修复了在导入带有“展平轨迹”的 GeometryCache 时导入不生成动画的问题,并跳过第一个轨迹的导入。

  • Alembic:修复了导入时可能导致计时问题的帧时间计算错误。

数据史密斯

新增功能:

  • 添加了 USD 阶段导入选项,以启用/禁用导入 Groom 和 Groom Binding 资源。

  • [美元进口商]添加了UnrealUSDWrapper函数,用于按路径注册USD插件。

  • [美元进口商]添加了 、 和 from USD API 的 UE 包装。UsdPayloadsUsdReferencesUsdVariantSets

  • 添加了对存储在 USD 资源缓存中的几何缓存资源的资源大小跟踪。

  • 添加了对在打开或导入引用 MaterialX 文件的 USD 阶段时使用 Interchange 的 MaterialX 转换器的支持。

  • [美元进口商]添加了配置设置和 API,用于设置 USD 默认解析器的默认搜索路径。

  • [美元进口商]添加了文件格式参数,用于查找/创建/导出 SdfLayer 包装器的函数。

  • 添加了对将具有动画约束的 LevelSequences 导出为 USD 的支持。

  • 添加了对打开或导入 USD 阶段时连接到 primvar 阅读器的 UV 变换着色器节点的支持。

  • [美元进口商]在 USD API 上添加了基于令牌的 API 架构函数 (、 和 ) 的包装。CanApplyAPI()ApplyAPI()RemoveAPI()UsdPrim

  • 为Datasmith API添加了对地理位置的支持。

  • 向 USD 舞台角色添加了新的 C++ 事件:和 。OnStageLoadedOnStageUnloaded

  • 每当在打开的 USD 阶段更新源 USD 素数时,实现 UAssets 的自动重新生成。

  • [美元进口商]添加了可选参数以镜像 USD API,允许选择性地加载底层 prim,而无需加载其任何后代。EUsdLoadPolicyFUsdPrim::Load()

  • 添加了对解析使用多个 UV 集 (primvars) 的 USD 材质的支持。

起色:

  • USD Stage Editor 的右侧面板现在可以显示原始关系、元数据和属性元数据(选择属性后)。

  • [美元进口商]暴露在包装器上。UsdStage::CreateClassPrim()UE FUsdStage

  • [固体]由相同零件制成的组件现在可以重用导出的网格。

  • 打开 USD Stages 时,默认情况下只会解析由至少一个 prim 绑定的材料。

  • [3ds Max 导出器]RailClone 或 ForestPack 实体的共享导出网格现在使用相同的网格。

  • 现在,您可以通过单击对话框中的“X”来取消加载 USD 阶段,为项目选择默认的 USD 资产缓存。

  • 从 USD Stages 生成的 StaticMesh、SkeletalMesh 和 GeometryCache 资源现在将使用默认材质作为后备,而不是完全未分配的材质槽。

  • 现在,您可以在从任何 LevelSequence 打开 USD 阶段时创建与瞬态 actor 和生成的组件的 LevelSequence 绑定。这些绑定将使用新的 Sequencer 动态绑定功能,在由于舞台关闭或重新加载而损坏时自动修复。

  • 现在,导入皮肤体重曲线的速度明显加快。

  • [固体]现在,每个配置的分解视图都可以导出为附加变体

  • 将 USD 预览曲面参考材质使用的半透明照明模式更改为“曲面前向着色”,以改善具有多个半透明对象的场景中的行为。

  • [速写]现在已导出地理位置信息。

  • 扩展了 USD 资源缓存,以支持将材质、骨架网格体和静态网格体持久化到磁盘。

  • [固体]大大缩短了对更大模型的材料更改的自动同步反应时间。

  • [固体]导出动画后,现在将切换“模型”选项卡。

  • [固体]在安装程序中添加了插件先决条件,以支持在干净的计算机上安装。

  • USD Stage Editor 现在在选择 prim 时显示内部 prim 引用。

  • 将材质烘焙为 USD 时,diffuseColor 现在将烘焙为黑色作为后备,以保持与 UE 中相同的视觉外观。

崩溃修复:

  • [固体]修复了启用自动同步导致的崩溃问题。

  • 修复了在某些情况下更改 USD 舞台编辑器上的折叠规则时会发生的崩溃问题。

  • [固体]修复了删除组件后可能导致无限重新导入的 bug。

  • 修复了从 USD 导入材质时可能发生的崩溃,该崩溃会覆盖先前导入的材质。

  • [固体]修复了重新启用 DirectLink 源时可能发生的崩溃。

  • 修复了在尝试打开或导入具有多个根骨的骨架素数的 USD 阶段时可能发生的崩溃。

  • 修复了在之前导入的 actor 和资产上导入 USD Stages 时与骨架网格体组件相关的崩溃问题。

  • 修复了在保存 USD Stage 更改的过程中退出引擎时可能发生的崩溃问题。

  • 修复了在某些情况下撤消转换轨道键添加时发生的崩溃,例如在操作通过打开 USD 阶段生成的 LevelSequence 时。

  • 修复了在没有指定导入选项的情况下通过自动化任务(如 Python 脚本)导入 USD 文件时发生的崩溃。

  • [犀牛]修复了导出具有多个 UV 集的网格时发生的导出崩溃问题。

  • 修复了在打开或导入 USD 阶段时,将 USD 点实例化器素数在其原型中转换具有意外素数时发生的崩溃。

Bug修复:

  • [固体]现在,如果在所选配置中禁止显示Actor可见性,则在导出时会在Datasmith场景树中适当设置Actor可见性。

  • [固体]现在,在导出的场景中可以正确处理未使用的材质。

  • 修复了在使用 USD 舞台编辑器上的“动作→导入”选项时,未从当前打开的舞台 actor 自动填充的 USD 舞台导入选项。

  • 如果源原型是通过 USD 资产缓存共享的,则在转换 USD Point Instancer prims 时生成的 HierarchicalInstancedStaticMeshComponents 将不再缺少其 StaticMesh 资产。

  • 在决定 prim 子树是否崩溃时,将不再忽略 USD prim 类型。

  • [固体]如果只有版本 2023 可用,导出程序现在将按预期安装。

  • 修复了在导入某些类型的 USD Stages 时会导致缺少静态网格体组件的问题,该阶段是通过导出具有多个 LOD 的 StaticMesh 资产的虚幻关卡生成的。

  • 修复了在打开或导入 USD 阶段时遍历网格素以生成几何缓存资源时出现的可见性处理问题。

  • 现在,在 USD Stage Editor 选项上切换渲染上下文(或其他类似选项)将按预期使用新的材质分配来更新关卡上的静态网格体组件。

  • 在未选择任何级别的情况下将级别导出为 USD 将不再生成文件。

  • 从 USD 生成的 AnimSequence 资源将不再无法驱动变形目标(混合形状)动画。

  • 如果 Static/SkeletalMesh/GeometryCache 资源通过 USD 资源缓存共享,则在生成的组件上设置材质覆盖将不再写入意外的 USD prims。

  • [Revit]修复了 Level 元素的重复 ID。

  • 当使用在其构造脚本中修改自己的拓扑的控制远程测试机组时,USD 舞台控制绑定集成将不再失败。

  • 修复了在打开具有可折叠子树的 USD 阶段时生成的组件上的材质覆盖相关问题。

  • 现在,在从 USD 折叠大型网格时,会检查网格顶点计数和 Nanite 材料折叠限制。

  • 直接链接现在可以在离线时工作。

  • 如果目标文件靠近引擎二进制文件,则在添加引用或有效负载时,USD Stage Editor 将不再生成无效的引用或有效负载路径。

  • [Datasmith导入器]修复了在更改了材质顺序的情况下重新导入 DirectLink 静态网格时发生的错误。

  • 修复了从 USD 完全导入阶段时如何将材质名称用于纹理资源相关的问题。

  • [速写]安装程序中将不再禁用可用的 SketchUp 版本。

  • [固体]修复了阻止 Solidworks 正常关闭的问题。

  • 现在,在打开 USD 阶段时,直接为生成的网格资产解析材料分配时,将使用所选的材料用途。

  • 修复了尝试在 USD 阶段编辑器中显示包含多个条目的数组属性时发生的速度变慢的问题。

  • [固体]移除了聚光灯刻度上的-1。

  • UDIM 纹理现在将按预期从 USD 阶段解析。

  • [固体]修复了手动启用插件(而不是在启动时)时发生的同步/导出错误。

  • 修复了一个 bug,在某些情况下,当将关卡导出到 USD 时,该 bug 可能导致材质覆盖图层为空。

  • 现在,添加和删除 USD 图层将按预期自动在生成的 LevelSequence 上重新加载动画。

  • 修复了与处理使用具有多个 LOD 的静态或骨架网格体资源将关卡导出为 USD 相关的问题,在某些情况下会导致引用损坏或缺少材质分配。

  • 在 USD Stage Editor 上切换 Stage 选项时,将不再显示“Save USD Layers”对话框。

  • 在打开或导入 USD 阶段时,没有 SkelBindingAPI 的网格素数将不再合并到生成的 SkeletalMesh 资产中。

  • Groom 和 Groom Binding 资源现在按预期从 USD 阶段导入。

  • 如果所选的导入选项与当前附加的 USD Stage Actor 使用的选项不同,则使用“导入操作→导入”选项导入打开的 USD 舞台将不再导致意外结果。

  • [Navisworks公司]现在,在停靠/取消停靠插件 UI 时,工具提示会按预期显示。

  • 修复了将虚幻关卡导出为美元时出现的问题。如果 actor 属于子级别,则导出器在导出“仅选定”时将不再无法检索这些 actor。

  • [固体]删除的子装配体现在会在同步时从Datasmith场景中移除。

  • 修复了可能损坏导入纹理设置的问题。

  • 现在,当按预期使用 Grooms 打开 USD Stages 时,将在 Groom 组件上设置 GroomBinding 资产。

  • 现在,在打开的 USD 舞台上添加或移除 USD 子图层时,生成的 LevelSequence 上的动画将刷新。

  • 现在,在将关卡导出为 USD 时,景观材质烘焙过程将生成一致的纹理。

  • [固体]修复了在多个配置中零件材料导出不一致的问题。

  • [Revit]修复了与Datasmith Exporter for Revit 2018.3相关的Direct Link错误。

  • [固体]修复了涉及删除子组件的子组件的问题。

  • 在某些情况下,带有动画网格(导致生成几何缓存资产)的 USD 阶段将不再永久打开。

  • [固体]修复了涉及子组件变体转换的错误计算。

  • 修复了在 Linux 上导出 USD 阶段时损坏的烘焙材质引用。

  • 在更新关卡上的组件属性时,USD Stage Actor 将不再写入 USD Stage,即使这些属性在当前打开的 Sequencer 上绑定为轨道也是如此。

  • 修复了在打开或导入具有 LOD 原型的点实例器素数的 USD 阶段时,可能导致 HISM 组件上缺少 StaticMeshes 的问题。

  • 修复了在打开或导入具有子网格素的轻质素的 USD 阶段时可能导致缺少静态网格体组件的问题。

  • UsdTransform2d在 Linux 上打开或导入 USD 阶段时,UV 变换着色器节点现在将按预期进行解析。

  • 通过 USD 舞台编辑器上的“动作→导入”按钮导入 USD 阶段时生成的 Actor 将不再标记为瞬态,并在加载到 PIE 或重新加载关卡时消失。

  • 更改舞台选项时,USD 舞台编辑器和 UsdStageActor 将不再使用旧生成的 UAsset。

荒废的:

  • FUsdPrim::HasPayload() 函数已弃用,取而代之的是 HasAuthoredPayloads() 来镜像 USD API。

  • [美元进口商]弃用了采用可选实例名称参数的函数,并将其替换为与 USD API 中 UsdPrim 上的单标记和双标记对应项匹配的 one-和 two-FName 参数重载。HasAPI()

框架

新增功能:

  • 将编辑器集合签入生成的更改列表描述中报告的路径数限制为 1000。您可以通过设置 Cvar 来控制它。Collections.MaxCLDescriptionPathCount

  • 添加了更改资源导入行为的功能,以便如果在重定向器上导入,则会在重定向器指向的资源上导入。将此行为的 CVar AssetTools.FollowRedirectorsWhenImporting 设置为 1。

  • 添加了与 Helix Swarm 的可选集成,为用户提供了一种从 UE 变更列表审查工具查看/发布评论的方法。

崩溃修复:

  • 修复了在 5.1 之前的编辑器中复制 actor,然后将 actor 粘贴到高于 5.1 的编辑器中时发生的崩溃。

  • 修复了复制包含关卡蓝图的关卡时崩溃的问题。

  • 修复了在更改列表审阅工具中加载某些更改时间歇性编辑器崩溃的问题。

Bug修复:

  • 修复了在不编辑更改列表文本的情况下提交时缺少“#changelist 已验证”标记的问题。

  • 添加到 Asset Reference Restrictions 编辑器插件中。如果为 true(这是新的默认值),则引用检查器将忽略对编辑器实用程序组件等内容的仅编辑器引用。bIgnoreEditorOnlyReferencesAssetReferencingPolicySettings

  • 输入轴事件现在转发到 Editor World 扩展集合,并为扩展提供使用输入的机会。

景观

API 变更:

  • FMaterialCachedHLSLTree 未更新,但已不支持与旧版 HLSL 材质转换器相同的功能(例如 AllowMultipleCustomOutputs)。

  • 现在,访问实例化景观上的景观 GUID 标识符的代码需要考虑到实例化景观会修改其景观 GUID。如果您需要景观资源的原始值,请通过 访问它。GetOriginalLandscapeGuid()

新增功能:

  • 添加了用于转储当前在景观组件上使用的所有景观草数据的报告的命令:草。DumpGrassData [可选:-csv -fullnames -showempty -detailed -byproxy -bycomponent -bygrasstype -full]

  • 添加了 UMaterialExpressionCustomOutput 限制最大输出数的可能性。当材料使用的数量超过允许的最大数量时显示错误。

  • 为脏景观纹理检测添加了阈值(CVars“landscape.DirtyHeightmapThreshold“/”景观。DirtyWeightmapThreshold“)

  • 添加了 CVar 景观。DumpDiffDetails(与 landscape 结合使用。DumpHeightmapDiff 和 landscape。DumpWeightmapDiff) 转储有关给定高度图/权重图上引入的差异的其他详细信息。

  • 将“包括边框”添加到横向工具的组件画笔中。由于边框是与邻居共享的,因此用户通常希望在组件的边界内绘制,而不是在边框上绘制。

  • 向 WaterMeshOverride 添加了蓝图 getter 和 setter。

  • 添加了新的碰撞高度场可视化模式,用于可视化每个顶点的混沌材料。

  • 添加了同步 LOD 级别和消除相邻地形中的几何接缝的功能,方法是将其 LOD 组键设置为匹配非零值。

  • 重新设计了景观属性共享和覆盖。

  • 添加了 LandscapeInherited 和 LandscapeOverridable 元标记以标记共享属性。

  • 在编辑和加载 ALandscape 和 LandscapeStreamingProxy 时强制执行共享属性之间的同步性。

  • 如果用作图层高度或粗细,则创建没有 mipchhain 的纹理。

  • 防止在景观纹理哈希更改时对其进行两次计算。

  • 从景观几何体中多线程构建 nanite 网格

  • 添加了以压缩表示形式存储横向高度图的功能,以节省磁盘空间,但代价是加载速度较慢。启用使用横向。ShowCompressHeightMapsOption 显示此选项。

  • “构建物理材质”命令可重建所有物理材质

  • 添加了新的 CVar 来控制高度图详细更改跟踪。拆分为 和 .landscape.DirtyHeightmapThresholdlandscape.DirtyHeightmapHeightThresholdlandscape.DirtyHeightmapNormalThreshold

  • 在绘画工具强度中添加了 Gamma 函数,使更多的滑块范围对绘画有用。

  • 添加横向 BP 画笔可见性图层编辑。

  • 添加了 FLandscapeBrushParameters 结构,该结构体应用于在渲染图层时传递参数。

  • 在 Landscape Editor 中添加了 BP Brush 可见性图层切换。

  • 添加了 LandscapeCircleHeightPatches 和 LandscapeTexturePatches 的可见性图层编辑功能。

  • 添加了帮助程序方法,用于确定图层信息对象名称是否为可见性图层。

  • 添加了为每个 Landscape Proxy 创建多个 nanite 组件(如果其组件超过 64 个)的功能。

  • 添加了通过关卡实例化创建景观的多个副本的功能。

  • 更新了M_ProcGrid材质以启用 nanite。

起色:

  • 景观草类型输出的最大数量从 18 增加到 32。

  • “保存修改的地形”现在可以修复由于差异而需要更新的每个地形参与者。

  • 添加了有关何时需要重新生成Nanite网格的视口消息。该消息现在指示需要更新的横向代理参与者的数量。

  • 景观高度字段现在使用未照亮的顶点颜色材质来更好地可视化物理材质。

  • 在风景画操作完成之前阻止更新水信息。

  • 修改了 ALandscapeProxy 详细信息面板,以反映属性的共享方式。

  • 将 ELandscapeToolTargetType 修改为一个枚举类,可供蓝图使用。

Bug修复:

  • 修复了开放世界地图景观法线。

  • 防止所有运行时虚拟纹理在进入横向模式时仅仅因为我们构建缩略图材质而失效。

  • 在用户执行操作后,在地图检查中禁用保存修改的景观超链接。

  • 修复了 Nanite 景观网格对象名称,这些名称不再保证是唯一的。

  • 从静态网格中删除了RF_Transactional标志,因为此数据不是事务性的。

  • 修复了各种景观公用设施的错误切线空间计算。

  • 景观中用于访问重量图/高度图数据的分解冗余代码。

  • 向 LandscapeTrace 添加了 CPU 跟踪。

  • 修复了使用大半径横向画笔时的重要减速问题。

  • 修复了与运行时虚拟纹理交互的非活动世界类型,该事件导致更改列表验证以创建新的虚拟纹理生产者。

  • 修复了使用景观图块时生成的可见性权重图。现在,只有在修补程序实际写入可见性时才会生成它们。

  • 修复了用于调试可视化日志的横向工具中缺少横向角色的问题。

  • 修复了启用 Nanite 的横向代理删除的撤消,该删除在重做时未正确使 Nanite 组件失效。

  • 使 bEnableNanite 和 NaniteLODIndex 共享横向代理的属性,因此在烹饪时,对于是否在给定代理上启用 Nanite 没有歧义。

  • 添加了映射检查代理上的共享属性何时不是最新的。

  • 修复了 ULandscapeInfo 中的 ModifiedPackages 系统。

  • 更改了Nanite静态网格的外部。

  • 创建了 NaniteComponent TextExportTransient。复制和粘贴不再导致网格在参与者之间共享。

  • 使 NaniteComponent 重复瞬态。另存为映射不再导致网格在包之间共享。

  • 修复了在删除横向 actor 后使用 listtextures 控制台命令列出纹理时崩溃的问题。

  • 修复了景观 Nanite 内容 ID,同时考虑了景观材质的 StateId,导致景观参与者在景观材质不在同一版本的 2 个分支上失效。

  • 修复了具有非基于哈希的 Guid 的横向 Nanite 静态网格,导致在网格失效时生成新的 DDC 密钥。

  • 修复了在构建景观 Nanite 网格时无偿生成导航数据并在生成后立即失效的问题。

  • 更正了从 Build All Landscape 启动时无法取消的 nanite 网格构建。

  • 修复了 CachedLocalBox 和高度图数据之间不同步的罕见情况。

  • 在复制/粘贴时,从 ALandscapeProxy 的 OwnedComponents 中删除了不正确的 ULandscapeNaniteComponent。

  • 修复了与使用静态绘制命令在 show collision 模式下的 landscape heightfield 相关的性能问题。

  • 防止横向高度场冲突组件因编辑器限制而失效。

  • 修复了单独复制水体组件时的崩溃问题。样条组件无效,并在 PostDuplicate 中崩溃。

  • 修复了选择流式代理时在编辑器中显示横向组件计数的问题。

  • 校正了不影响景观的水体,以仍在搜索景观。

  • 更正了新流入水体的问题,无法呈现为水信息纹理。在Actor中新流式处理时,会强制隐藏所有流式处理,直到所有流式处理完成。

  • 修复了 LandscapeComponents 中包含 null 条目时横向崩溃的问题。

  • 修复了即使检测到的差异小于检测阈值时景观也会变脏的问题。

  • 修复了 Sculpt 撤消操作后横向高度不正确的问题。

  • 重写 PostActorCreated,以便在使用 UWorld::SpawnActor 方法生成 actor 时正确构建 WaterInfoMesh。

  • 修复了“横向调整大小”未保留所有相关横向设置的问题。

  • 修复了使用横向编辑模式时罕见的崩溃问题。

  • 修复了按住 Alt 键拖动或复制横向小玩意儿 actor 时的崩溃问题。

  • 修复了在横向模式之外更新属性权限时崩溃的问题

  • 修复了将样条控制点添加到隐藏景观时的崩溃问题。

  • 修复了横向 LOD 计算有时导致横向边缘的 LOD 高于预期的问题。

  • 修复了导入横向 PNG 文件时可能出现的溢出安全问题。

  • 如果在横向模式下绘制或雕刻,则横向流式处理代理未正确卸载。

  • 修复了使用区域创建多个景观时崩溃的问题

  • 修复了将新 LayerInfo 添加到景观图层后撤消时的崩溃和其他意外行为。

  • 修复了具有某些可扩展性设置的不正确的水流速度。

  • 修复了使用“半径”选项时大型实例化植被画笔需要很长时间的问题。

  • 修复了沿地形边缘进行正常计算的问题。

  • 修复了双击横向样条控制点切线框时罕见的崩溃问题。

  • 修复了撤消创建景观时的崩溃问题。

  • 修复了在撤消蒙版绘制时纹理损坏的问题,该操作将蒙版绘制操作恢复为第一个蒙版绘制操作。

荒废的:

  • 移除了烘焙的风景 GI 纹理系统。

  • 删除了 BP 画笔的 Render 方法,现在应该使用 RenderLayer。

脚本

新增功能:

  • 添加了蓝图函数,用于将类和可变类引用转换为资产实用程序函数使用的 TopLevelAssetPath 结构。

  • 公开 、 和 编辑器脚本,返回包含类型信息的 TopLevelAssetPath。例如:GetClassPathNameGetStructPathNameGetEnumPathName

    • unreal.MyClass.static_class().get_class_path_name()

    • unreal.MyStruct.static_struct().get_struct_path_name()

    • unreal.MyEnum.static_enum().get_enum_path_name()

  • 在虚幻编辑器中暴露给脚本。FPlatformTime::Seconds()

  • 添加了一个函数,用于将普通控件蓝图转换为编辑器实用程序控件。

  • 现在可以在“类设置”中为可编写脚本的工具蓝图配置自定义图标。

  • 该类现在公开了一个蓝图可重写事件,当用户开始和结束 Gizmo 转换交互时,或者在撤消/重做此类交互时,会调用该事件。UScriptableInteractiveToolOnGizmoTransformStateChange

崩溃修复:

  • 修复了使用编辑器蓝图作为另一个编辑器控件蓝图的根目录时发生的崩溃问题。

Bug修复:

  • UE 现在仅在运行完整编辑器时生成 Python 存根代码。

  • 更改了 Python 远程执行,以绑定到 localhost 作为默认多播适配器。

用户界面

新增功能:

  • 在“放置 Actor”窗口中,体积对象和最近放置的元素现在已正确本地化。

  • 对 中的集合实施了深层复制。CopySinglePropertyRecursive

  • 向内容浏览器路径视图添加了一个图标扩展点,该扩展点允许将图标放置在项目文本的右侧。

  • 资产审计员现在会显示资产的暂存大小(如果资产注册表中存在资产),并确保标记显示所选资产注册表中的数据,而不是内存中的数据。 以前,资产审计器中显示的大小是通过查看炊具输出到磁盘的数据量来估计的未压缩数据。通过引入资产注册表写回(在项目打包设置中),可以将压缩的大小写回开发资产注册表。现在,在查看此类开发资产注册表时,会显示这些大小。

  • 在关卡编辑器工具栏中添加了一个浏览按钮。

  • 通过删除不必要的菜单选项并向工具提示添加指示器,改进了内容浏览器中不受支持的资产的用户体验。

  • SBlueprintActionMenu复选框文本不再被截断。

  • 将场景大纲视图和更改列表窗口中的名称排序更改为自然顺序,类似于操作系统文件菜单。

  • 内容浏览器在收藏夹中添加/删除文件夹时会立即刷新配置,以确保在编辑器崩溃时保存操作。

  • 在 DataflowGraphEditor 中,可以按 F 键进行缩放以适合所选节点或整个图形。

Bug修复:

  • 现在,在纹理查看器中打开纹理始终显示最终编码。

  • 修复了移动渐变停止点时颜色曲线编辑器不会更新的问题。

  • 修复了颜色曲线编辑器中的渐变预览。

  • 修复了引用查看器中阻止用户在地址栏中键入非包路径地址的问题。

  • 在 Actor 详细信息视图中,在主动选择原型实例时发生的原型编辑现在将正确同步“重置为默认值”状态。

  • 修复了 FMessageDialog 备注中的拼写错误。

  • 内容浏览器中的文件夹名称现在使用类似于资源名称的省略号正确换行。

  • 修复了无法拖放到已展开项目的行下方的问题。

  • 修复了输入映射上下文的拖放问题,该问题未将元素移动到所需位置。

  • 修复了可能出现在前台程序顶部的工具提示。

用户体验

API 变更:

  • 更改了消息日志操作令牌,使其在执行操作时不会消失,而是被禁用。可见性仅与操作的 Execute callback 有效性相关联。这会影响所有可以返回 false 的操作。CanExecuteAction

新增功能:

  • 添加了输出日志中不同详细程度的功能,以忽略类别过滤器并始终显示。

  • 添加了在版本控制还原窗口中自动选择项目的选项,以减少用户的冗余操作。

  • 在“将资源另存为”对话框中设置资产筛选器,这将使用工厂支持的类作为资产的筛选器。UAssetToolsImpl::CreateAssetWithDialog.

  • 将“编辑”、“窗口”和“工具”下的大多数主菜单项迁移到较新的 ToolMenus 系统。

  • 修复了用于导入 glTF 文件的工具中的拼写错误。

  • 从编辑器中删除了 Starship Gallery 测试套件。它不是为在编辑器内运行而设计的,因此可能会导致崩溃。

  • 按名称对视口的“透视”>“放置的摄像机”菜单进行排序,使其更易于使用。

  • 通过添加省略号并在悬停时显示全文,改进了通知上文本的溢出行为。

  • 重新设置了属性矩阵的外观,使其达到UE5风格的标准。

  • 对启动编辑器时显示的“恢复打开的资源选项卡”通知的 UX 改进。其中包括在您做出选择之前保持活动状态的通知,以及将来记住您的选择的能力。

  • 在关卡编辑器和所有资产编辑器中添加了“最近使用的资产”菜单,以便快速访问您最近打开的任何资产。

  • 在“大纲视图”上下文菜单中添加了一个选项,用于批量编辑“属性矩阵”中的组件。

  • 建模模式收藏夹现在保存在编辑器会话中。

  • 添加了模式功能,可在关卡编辑器工具栏下方添加辅助工具栏,以容纳特定于模式的工具。

  • 删除了用户可见的 ES31 编辑器引用,并将其替换为 Mobile。

起色:

  • 使用键盘快捷键(通常为波浪号键)在状态栏控制台输入和输出日志控制台输入之间切换时关闭了建议框。

  • 自动调整可编辑文本框大小,使长控制台命令的内容更加明显。

  • 优化了纹理构建路径中与实际图像编码无关的各种热点,包括源图像的解码和元数据生成。

  • 更新了“窗口>保存布局”>“将布局另存为”面板的文本溢出行为。

Bug修复:

  • 如果从色轮/光谱中拾取颜色时,如果颜色以前几乎是黑色或透明的,则将颜色调整为全亮度或不透明度。

  • 修复了某些表格中的标题文本可能相对于同一列的行文本水平漂移的 bug。

  • 视口工具栏现在可以根据需要正确折叠其按钮,即使在使用 DPI 缩放的显示器上也是如此。

  • 修复了在关闭选项卡时选项卡标题似乎在摆动的问题。

  • 更新了与主编辑器分开的窗口中的选项卡,在单击侧边栏中的 Dock 时不再丢失。

  • 修复了在卸载模块后,当项目尝试从其析构函数中的“不受控制的更改列表”模块中注销时,大纲视图中关机时崩溃的问题。

基础

新增功能:

  • 允许 UBT 构建单个插件,就好像它们是本地插件一样。

  • 在CQ Test中引入了网络组件。

  • 阻止将批准的参考图像复制到 html 测试报告以成功测试。

  • 介绍代码质量测试插件。扩展虚幻引擎FAutomationTestBase,提供测试夹具和常用自动化测试命令。

  • 避免在图像比较成功时显示缺少的参考。

  • 允许关闭垃圾回收群集的级别,以便可以删除参与者。

起色:

  • UAT addcmdline (RunCommandline) 现在在所有平台上启动应用程序期间传递,以前它可以嵌入到 UECommandLine.txt 中。它缩短了某些平台上的迭代时间,因为最终捆绑包不需要每次都重新构建。

崩溃修复:

  • 修复了在未加载 AutomationController 时在 BP 中使用 Automation Wait 节点时崩溃的问题。

Bug修复:

  • 避免了在 PIE 客户端网络模式下使用屏幕截图功能测试时崩溃。

新增功能:

  • 在BuildAndTestProject构建图中添加了“UnrealInsightsBuildConfiguration”选项,以便CompileTools步骤可以构建Unreal Insights的Shipping、Debug或Development配置。

  • 添加了当 DisablePlugins 列表中的插件被另一个插件的依赖项启用时抛出异常的选项。

  • 为UE5.3添加了EngineIncludeOrderVersion

  • 使 AutomationTool 在异常终止时发出错误代码。这将导致操作失败,而不是报告错误的成功。

  • BuildUAT.bat\BuildUBT.bat 将禁止文件比较中的所有消息。

  • 添加了对 Clang PCH 链接的支持:https://clang.llvm.org/docs/PCHInternals.html#chained-precompiled-headers。

  • 添加了支持在右键单击文件时使用“编译”菜单项在 VisualStudio 中编译单独的文件。

  • 向 LTO 和 PG_Instrumentation 的 CSV 元数据添加了标志。如果启用了链路时间优化,则 LTO 将为 true。如果按配置文件优化当前处于用于收集 PGO 分析数据的检测模式,则PG_Instrumentation为 true。此更改可用于在查看 CSV 性能报告时显示特定构建是否在这些参数下运行。

  • 打破了引擎模块之间几个隐藏的循环依赖关系。

起色:

  • 调整了引擎 PCH 以缩短编译时间。

  • 通过将 UBT 代码更新为线程安全并并行运行,缩短了整体 Visual Studio 项目生成时间。

Bug修复:

  • 以前,“-ini:”命令行参数在发送到 UBT 时可能已被忽略。现在将应用这些。

  • 以前,当多个“Target”命令行参数传递给 UBT 时,ConfigCache::ReadHierarchy 可以从其他 Target 参数中读取参数。它现在将仅从预期的“Target”命令行参数中读取。

  • 修复了公共依赖项未添加到包含路径列表的问题。

  • 修复了一些随机智能感知编译问题。

荒废的:

  • 已弃用 TragetInfo::bUseMallocProfiler 切换。它不再用作MallocProfiler2,并且FMallocProfiler运行时被删除,取而代之的是UnrealInsights。

核心

API 变更:

  • 这会破坏向后兼容性,其中 WriteToString 用作类型或在将要复制它的上下文中使用。

  • 弃用了按指针获取标题的 FMessageDialog 重载;请改用按值传递它的重载。

  • 将 FInterpCurve::InaccurateFindNearest 重命名为 FInterpCurve::FindNearest。

新增功能:

  • 添加了其他 FPackageName::ObjectPathToX 函数:

    • ObjectPathToPathWithinPackage,例如) “/Game/MyAsset.MyAsset:SubObject.AnotherObject” -> “MyAsset:SubObject.AnotherObject”

    • ObjectPathToOuterPath,例如) “/Game/MyAsset.MyAsset:SubObject.AnotherObject” -> “/Game/MyAsset.MyAsset:SubObject”

    • ObjectPathToSubObjectPath,例如)“/Game/MyAsset.MyAsset:SubObject.AnotherObject” -> “SubObject.AnotherObject”

  • ObjectPathToObjectName 的行为已修复为始终返回路径中最叶子的对象名称(例如,“/Game/MyAsset.MyAsset:SubObject.AnotherObject” -> “AnotherObject”)。任何依赖于旧行为的代码都应改用 ObjectPathToSubObjectPath。

  • 添加了 FParkingLot,这是一个用于构建锁和其他同步原语的框架,基于 WebKit 的 WTF::P arkingLot 添加了 FMutex,这是一个 1 字节互斥锁,既不公平也不递归,基于 WebKit 的 WTF::Lock 添加了基于 std::unique_lock 的 TUniqueLock 和 TDynamicUniqueLock。

  • 向 TStringBuilder 添加了UE_LIFETIMEBOUND宏,以捕获指针保留在临时字符串生成器中的某些情况。

  • 添加了 -DDC-VerifyFix 命令,用于在使用 -DDC-Verify 时覆盖与新生成的记录和值不同的现有记录和值。

  • 向 TStringBuilder 添加了 AppendV。

  • 将 TStringBuilder 的 WriteToString 从类型转换为函数。

  • 添加了 FMonotonicTimePoint 和 FMonotonicTimeSpan 作为 FPlatformTime::Cycles64 公开的单调时钟的 API。

  • PackageStore 后端现在用于解析 MemQuery 请求的依赖关系。

  • ReplicationGraph 通过允许一次收集一个连接的 Actor 列表来分摊休眠 Actor 清理的成本。

  • 添加了 FManualResetEvent,这是一个比 FEvent 更有效的 1 字节手动重置事件。

  • 添加了 FRecursiveMutex,一个构建在 ParkingLot 之上的 8 字节不公平递归互斥锁,作为 FCriticalSection 的直接替代品。

  • 添加了适用于 Linux 平台的 MemoryTrace 实现。

  • 在虚幻云DDC中添加了EnvOAuthSecretOverride参数,以允许在环境中提供身份验证密钥。

  • 重构了 ListTexture 命令,以输出有关 UTexture 派生类的更多数据。

  • 启用AGGRESSIVE_MEMORY_SAVING定义后,数组松弛增长因子将设置为 1.25 倍因子,而不是旧的 ~1.375 倍 这有助于在由页面分配器直接分配的大型数组的页面错误中没有内存提交的平台上节省内存,并且对于由更高级别的分配器(如 MallocBinned)分配的较小数组(通常最大为 64KB),它可以在所有平台上节省内存。

  • 添加了 TInstancedStruct 以提供类型安全的包装器,以便在 C++ 中使用 FInstancedStruct。

  • 为具有仅编辑器数据的目标添加了 FCompressedBuffer 的并行解码。

  • 添加了 FEventCount,这是一种事件类型,它提供了一种机制,通过使用信号计数令牌来避免等待和信号之间的竞争,并且比 FEvent 更有效。

  • 添加了 -ExportBuildOutput 命令,以在导出的派生数据生成中包含输出。

  • 为 NiagaraComponent 和 NiagaraSystem 添加了 GetResourceSizeEx 的部分实现。

  • 在 Logging/StructuredLogFormat.h 中添加了用于结构化日志格式的公共 API

  • 添加了升级现有稀疏类数据的方法。使用稀疏数据的对象现在可以覆盖 ConformSparseClassDataStruct 函数,以便在使用不再与其原型匹配的稀疏数据结构加载 BPGC 时执行自定义升级步骤。

  • 向 CppStandardEngine 添加了一个新设置,以便可以独立于引擎模块进行控制。

  • 使 AssetManager 需要引擎使用。如果 AssetManager 不存在,引擎启动将给出致命错误。

  • 添加了 ReverseIterate 范围适配器,用于对范围进行反向迭代。

  • 添加 ISaveGameSystemModule 模块,类似于平台块安装模块。示例用法添加到 Windows 平台,允许项目和 Windows 平台扩展覆盖默认保存系统。[PlatformFeatures] SaveGameSystemModule=MySaveModule

  • 将 enable-if/disable-if 重载替换为 if constexpr 块。

  • 允许任何引擎模块从其他模块访问内部包含路径。

  • 添加了 CBaseStructureProvider 概念,用于检测 TBaseStructure 是否支持某个类型。从 TStructOnScope 中删除了概念检查的第二个模板参数,该参数不适用于正向声明的类型。

  • 添加了常见智能指针类型的 TCallTraits::ConstPointerType 重写,以便您可以在映射中查找 TSmartPtr 或使用 TSmartPtr 键设置它们。修复了一些由后果引起的常量不正确。

  • Cooker 和 SavePackage:将对 BeginCacheForCookedPlatformData 和 ClearCachedCookedPlatformData 的调用从 SavePackage 移动到 cooker 中,以满足对象在 Save 完成之前不会调用 Clear 的协定。

  • 向 TOptional::Get 参数添加了生存期绑定注释,以便在右值参数绑定到左值引用时捕获悬空引用。

  • 升级到 PROJ 9.1.1 和 VS 2022

  • 添加了 SupportedTargetTypes 属性,允许将 ModuleRules 标记为仅支持特定 TargetType(编辑器、游戏、客户端、服务器)。

  • 添加了 SupportedPlatformGroup 属性,该属性将解析为包含该组中所有平台的 SupportedPlatform 属性。

  • 允许 ModuleRules 上的 SupportedConfigurations 属性。

  • 启用了对 Electra Media Player 的 tvOS 支持。

  • 添加了 Engine.ini:[AssetRegistry]:CommandletsUsingAR 来识别应该在启动时加载 AssetRegistry 的 commandlet。

  • 在收集垃圾时删除了旧式哈希表锁,因为它们不再使用。

  • 添加了对 Algo::P artition 的范围支持。

  • 更新了 MFW 的 PlayerFacade,重新设计了对 Electra 等“v2 计时”玩家的播放控制和计时处理。

  • 添加了一个 UE_REQUIRES 宏,它取代了 UE_CONSTRAINT* 宏,并且与概念兼容。

  • 在项目文件生成期间支持特定于项目的 BuildConfiguration.xml 和程序。

  • 允许在虚幻构建工具的每个模块上覆盖bWarningsAsErrors。

  • 在编译或分析虚幻构建工具时,可以选择编写MSVC SARIF文件以查找任何错误和警告。

  • 添加了 WeakObjectPtrs 的 Fwd.h 标头。

  • 有限的 Fastbuild 进程计数。

  • 添加了对侵入式 TOptional null 状态的支持。例如,向 TFunctionRef 和 TSharedRef 添加了侵入式 TOptional null 状态。

  • 将来自第三方 Eigen 库的未跟踪内存移动到 UE 分配器中,使其可跟踪。

  • FInterpCurve::InaccurateFindNearest 已得到改进。根据新算法结果的准确性,已重命名为 FInterpCurve::FindNearest。

  • 向 .natvis 中的容器添加了最大显示。

  • 改进了UE_DEPRECATED示例的注释,增加了类模板和函数模板的示例。

  • 添加了实现函数重写的功能,该函数覆盖可以决定在引擎接近达到 UObject 计数限制时强制进行垃圾回收。

  • 允许使用虚幻构建工具的TargetRules.WindowsPlatform.ApplicationIcon覆盖Windows应用程序图标。

  • UE_FNAME_OUTLINE_NUMBER内存优化。

  • 添加了 TargetRules.bWarnAboutMonolithicHeadersIncluded 以控制 UE_IS_?。

  • 更改 [Get|Set]WrappedUObjectPtrValues 采用一个标志,该标志指示指针是否“在容器中”。

  • 允许在 macOS 上使用 incredibuild。

  • 允许通过UE_ENABLE_TFUNCTIONREF_VISUALIZATION在全局级别设置 TFunction 的调试器可视化工具。

  • 添加了可零初始化的 FMRSWRecursiveAccessDetector,支持以递归方式将读取器访问升级为写入器访问,以及从访问内部进行销毁

  • 添加了对临时目录的子文件夹的覆盖,并允许指定要使用的目录,而不是UnrealBuildTool的BuildConfiguration.xml中的默认%TMP%。

  • 添加了WindowsTargetRules设置来控制UnrealBuildTool的内联函数扩展级别。

  • 更新了对 x64 平台的最低 cpu 架构的支持。替换 ModuleRules.bUseAVX。MinimumCpuArchitectureX64,有效值为 None、AVX、AVX2 和 AVX512。

  • 允许通过 中的宏启用 OpenVDB。生成.cs,而不是在平台级别硬编码。

  • 在编译器之间共享通用的 THIRD_PARTY_INCLUDES* 宏定义,而不是在平台之间共享。

  • 将 msvc 首选版本升级到 17.6-14.36。

  • 允许在循环中处理多个 DPCVar,以允许命令行中的多个条目。

  • 添加了在达到最大 UObject 数量限制时转储每个类 UObject 计数以记录的选项。

  • 已实现 -CookIncludeClass=Class1+Class2+。这只允许烹饪包含给定类或类的实例的包。这依赖于 assetregistry 依赖项来查找通常需要烘焙的所有包。通过依赖项找到的包仅在加载其引用器期间被发现,不保证会被烘焙。

  • 使用发布通道枚举而不是布尔值来检查工具链是否为预览,因此我们可以为虚幻构建工具支持其他发布通道。

  • 向 FString、TStringView 和 FName 添加了调试器成员扩展,以允许单个字符索引,并允许从 Referenced String 或 Name 数组访问原始 char 缓冲区。

  • 默认启用确定性msvc编译,以便为UnrealBuildTool的交付配置提供配置。

  • 添加了移动语义,并删除了对 TSlotBase::operator[] 声明性语法的其他不必要的 TSharedPtr 引用计数改动。

  • 添加了 ExecuteOnGameThread 作为 FTSTicker::GetCoreTicker 的包装器。

  • 添加了 UE::Tasks::MakeCompletedTask 方法,该方法生成具有给定结果值的已完成任务。

  • 更新了 RiderSourceCodeAccess。

  • 在 TMap 的键迭代器中添加了运算符。

  • 添加了密钥迭代器测试。

  • 添加了对位迭代器和位引用的UE_LIFETIMEBOUND,以便在发生生存期问题时发出警告(例如将迭代器保留为临时位数组)。

  • 添加了 UniqueBy,用于从投影中的区域中删除重复项以应用于元素,类似于 std::ranges::unique。

  • 将 FStringFormatArg 添加到 natvis。

  • 向 TBitArray 添加了 FindFrom 函数,以允许用户在搜索值时提供起始索引。

  • 允许作弊扩展添加 bugit 日志记录。

  • 添加了 FTopLevelAssetPathFastLess 和 FTopLevelAssetPathLexicalLess 函数对象,用于对 FTopLevelAssetPath 进行比较。

  • 添加了 TPagedArray 的序列化程序。

  • 添加了基于 std::includes 的 Algo::Includes。

  • 允许在 Windows 编辑器中使用 MallocStomp2 分配器。

  • Oodle 现已更新至版本 2.9.10b

  • 为 PriamryAssetLabels 添加了一个复选框选项,以不包含/跟随重定向器。

  • 添加了 FCoreDelegates::OnCommandletPreMain 和 FCoreDelegates::OnCommandletPostMain 这允许挂接,以便为可能运行的任何 commandlet 提供额外的初始化或关闭逻辑。

  • 添加了一种方法,使对象能够指定包保存上下文的本地属性覆盖。

  • 向 UAT 添加了两个新命令:

    • VirtualizeProject - 用于在整个项目上运行虚拟化过程。

    • RehydrateProject - 用于反转整个项目的过程。

  • 替换了 FInstancedStruct 版本控制实现以使用存档自定义版本控制。

  • 使序列化对称,以便在熟构建中序列化的结构可以加载到编辑器构建中。

  • 向新的 FPlatformProcess::GetApplicationSettingsDir 函数添加了新的 Settings 参数,用于在 Windows、macOS 和 Linux 中获取。%appdata%$HOME

  • 在共享引擎 PCH 中移动 #includes,以便 PCH 是分层的。这修复了删除或添加私有模块依赖项会大幅改变编译时间的问题,因为 PCH 中的包含不同。

  • StaticMesh 资源验证现在验证未处理的 StaticMesh 资源是否具有有效的 LOD0 SourceModel。

  • 虚拟化和解除冻结项目 commandlet 现在接受命令行参数“-PackageDir=”,将操作限制在给定目录内。

  • FEditorBulkData 现在是线程安全的。

  • 在“GeneratePayloadManifest”commandlet 中添加了新的命令行参数“-LocalOnly”。此新参数应用于生成仅包含本地存储在磁盘上的有效负载的清单。

  • 向 Actor 类添加了 FindComponentByTag 方法,该方法返回 Actor 中具有给定类型和标记名称的第一个组件。

  • 添加了对在 UBT 中赋予操作“权重”的支持。“权重”是操作使用多少内核和内存的平均度量值。将一个具有正常内存量的内核用于操作的值为 1。

  • 添加了一个简单的 S3 HTTP 客户端。

  • 引入了新的错误流。如果有效负载拉取失败,我们现在会阻止编辑器,并向用户显示一个对话框,允许他们重试操作或退出编辑器。我们不再允许编辑器继续处理丢失的数据,因为有损坏磁盘上现有软件包的危险。

  • 现在,当尝试使用早于 UE 5.0 的包版本虚拟化包时,会记录警告,因为需要重新保存包才能进行虚拟化。

  • 默认情况下,在静态网格体和音频资产上启用虚拟化,而不是选择加入。

  • commandlet 'ValidateVirtualizedContent' 现在验证项目中的所有虚拟化有效负载是否可以在持久性存储中找到。以前的功能已移至新的 commandlet“CheckForVirtualizedContent”。

  • 更新了确定共享 PCH 具有哪些依赖项的逻辑。这个新逻辑遍历了 pch 标头的所有包含,并查找实际使用的标头和模块。这将创建一个比以前更小的依赖项列表,稍后将用于确定其他模块使用的 PCH 是否安全。

  • 使用英特尔 ICX 编译器 2023.1 时启用按配置文件优化支持。

  • 默认情况下,为设置为 BuildSettingsVersion.V4 的项目启用 msvc 严格一致性模式。

  • 将 GetPropertyInstanceWithin 添加到 CPPStructOps,以便 FInstancedStruct 等类的内部属性可以由属性路径反映。

起色:

  • 改进了实例化结构实例的多重编辑行为

    • 现在,编辑多个实例化结构实例将编辑所有实例的公共结构的属性(如对象编辑),而不是仅使用与正在编辑的第一个实例相同的结构类型来编辑实例化结构实例。

  • 始终使用 C++20 编译引擎模块,除非平台不支持它。任何设置 bTreatAsEngineModule 的模块都将升级到 c++20,除非它已经将其覆盖为 c++17

  • 优化 StreamableManager::OnPreGarbageCollection。

  • 优化了 TFunctionRef 调用,因为它永远不会为 null。.

  • 删除了 FullLoadAndSave;它的效率已被 MPCook 取代,即使没有 MPCook 或 Incremental Cook,进一步的优化(并发保存、异步加载)也将超过它。

  • 改进了有关使用字符串转换类型和宏的弃用注释。

  • 改进了对 TBox 和 TIntRect 的注释,以指示其 Intersect、Contains 和 IsInside Of 函数如何处理其边框上的重叠。修复了 TBox::IsInsideOrOnXY 中的 FVector 参数。

  • 优化 TChunkedArray::Add 以提高速度。

  • 改进了 Clamp 代码生成。

  • 改进了 Swap 代码生成。

  • 优化 FScriptMapHelper::FindInternalIndex

    • FScriptSetHelper::FindInternalIndex 现在在用户提供的索引越界时返回INDEX_NONE。

崩溃修复:

  • 修复了从 DesktopPlatform 使用 OIDC 功能时的崩溃和错误。

  • 修复了在 CotF 服务器中查找请求失败后崩溃的问题。

  • 修复了关闭媒体播放器时崩溃的问题。

  • 修复了在组件实例数据缓存中使用 within 类复制对象时崩溃的问题。

  • 修复了在旧加载程序中执行递归异步加载时崩溃的问题。

Bug修复:

  • 更新了 FPaths::Combine 方法以使用 FStringView。

  • 如果稀疏数据属性与已弃用的对象属性的名称匹配,则它们将受到青睐。这样一来,当对象数据被移动到稀疏数据,并且原始对象属性被弃用时,蓝图就可以运行。

  • 添加了一些缺失的定义,这些定义阻止了禁用 GC 链接的项目的“调试编辑器”构建。

  • 修复了结构化日志记录以使用实时编码。

  • 将 ElementType 添加到 TSubclassOf。

  • 修复了 FMallocStomp 和 TConcurrentLinearAllocator 中的对齐和线程安全问题。

  • 修复了执行静态析构函数期间的错误报告,以避免在损坏的锁上崩溃。

  • 修复了派生数据缓存层次结构中部分记录的合并和筛选。

  • 将 vtable 构造函数修复为 UAssetRegistryImpl 以调用正确的基类构造函数。代码将在实时编码会话期间进行资产。但是,资产注册表不支持实时编码。

  • 删除后使用 TMap 元素进行了修复。

  • 修复了 SavePackage2 中的字符串格式不匹配参数。

  • 修复了调用 FScriptArrayHelper::MoveAssign 时在调试模式下触发断言的问题。

  • 修复了 FName == C 字符串错误,并添加了字符串视图比较。

  • 修复了 FStringView 的 operator!=,这可能导致循环重载解决方案。

  • 添加了委托 Execute 参数的完美转发。

  • 添加了将非 UObject 强制转换为 IInterface 时的静态断言。

  • 将生成的包的块设置为等于其生成器的块。

  • 修复了不匹配的用户定义的复制构造函数/赋值运算符及其相关 bug。

  • 修复了 CSV 解析器中潜在的无效引用计数,并为移动语义添加了重载构造函数。

  • 修复了 TSortedMap 的键迭代器无法编译的问题。

  • 修复了 Electra Media Player 在搜索后返回不正确的 HDR 信息的问题。

  • 使 FPlatformProcess::WritePipe 使用正确的 UTF-8 转换而不是截断。

  • 收集属性引用的对象时,将不再排除属性所有者对象,而是排除引用列表的所有者,以确保所有引用都是向垃圾回收器公开的属性。

  • 更改材质实例上的纹理现在会将新纹理添加到材质的垃圾回收器集群中。

  • 修复了 JsonSerializer 输出,其中当 NumberStrings 被写入为数字而不是字符串时发生数据丢失。

  • 确保条件可能时!DO_ENSURE。

  • 修复了 FBindingObject::IsA<> 中的反转逻辑。

  • 更新了 GenerateTLH,以使用一个命令生成和触摸输出文件,以防止 .tlh 不存在且未创建的情况。允许在使用 clang 编译器时生成 typelib 标头,方法是使用工具链的编译器来生成它们。

  • 修复了 TBitArray 可从另一个分配器的 TBitArray 隐式构造的问题,以便在构造具有错误分配器类型的常量位迭代器时阻止意外的悬空引用。

  • 修复了在具有不同分配器的位数组之间比较或执行按位运算时的隐式转换。

  • 通过为每个属性类型实现而不是顶级重写,从基于对象的 Copy*ScriptVM 属性函数中删除了 1 个额外的虚拟函数调用(如果 ArrayDim >为 1,则更多),还消除了对 FSoftObjectPtrProperty::Copy*ScriptVM 重载的需求。

  • 修复了 FCborReader::ReadNext 中的无效字符串长度处理。

  • 允许在多个项目中使用 AdditionalPlugins。

  • 修复了 Algo::Heap 方法中的倒置断言条件。

  • 修复了 FThreadSafeCounter64 的复制构造函数采用 FThreadSafeCounter。

  • Automation Tool 现在将遵循 commandlet 的指定错误级别。

  • 在 FScriptArrayHelper::Resize 中添加了对无效计数的检查。

  • 修复了 Windows 上 Clang 的THIRD_PARTY_INCLUDES_END。

  • UnrealBuildTool 不会传递 /Zm,除非被特别重写。

  • 在 TSet 中添加了对无效储备的检查。

  • 修复了 TMap::FilterByPredicate 在返回类型中丢弃模板参数的问题。

  • 修复了运算符中的 Clang 静态分析误报,通过禁用它们来删除覆盖它们。

  • 从 TDelegate 的析构函数中删除了冗余的 Unbind 调用。

  • 添加了防护装置以阻止属性大小计算溢出。

  • 修复了 Unreal.natvis 以允许在调试器中建立容器索引。

  • 使 FHeightField::FData::Serialize 避免使用 TArray>,因为 FBoxFloat3 是不可移动的,不应由可移动分配器使用。

  • 对象句柄将使用实际的全局 UObject 数组容量进行初始化,而不是 ini 中的最大 UObject 计数值,因为实际数组容量可能更大。

  • 修复了损坏的 bAddDefaultIncludePaths UBT 设置。

  • 修复了在沙盒环境中找不到数据文件的 GeoReferencing 问题。

  • 修复了 TArray 的溢出检查器报告的错误大小。修复了负 int32 大小被报告为大 uint64 大小的问题。

  • 修复了 EnumAddFlags 和 EnumRemoveFlags 以不需要枚举运算符。

  • 使 TIsCharType 适用于 cv 限定类型。

  • 确保无论是否启用检查,用完可用的 UObject 插槽都会崩溃,否则它将静默地导致踩踏或内存不足崩溃。

  • 在原型缓存中添加了弱指针,以防止返回过时的指针。

  • PostLoad 中解析的 FProperty 引用现在会将其引用的对象正确地添加到字节码所有者 UStruct 的引用列表中。

  • 修复了 rider 中工具箱 2 0 的 rsca。

  • 不可为 null 的对象属性现在应为其分配一个默认对象值,以防出现序列化错误。

  • 修复了核心测试中字符串格式不匹配的参数。

  • 替换了一些 TArray 运算符的新用法。

  • 修复了一个 bug,该 bug 在发出有关无效包名称的错误时截断了有效路径的丢失。

  • FMicrosoftPlatformString::Strupr 现在与其他平台实现一致,并适用于非 null 结尾的字符串。

  • FScriptMapHelper::Iterator 和 FScriptSetHelper::Iterator 后增量运算符是预递增的。

  • 制造 BuildU[A|B]T.bat 显式调用 Windows 查找.exe 实用工具。

  • 修复了 DrawDebugCircle 以绘制正确的段数。

  • 修复了 LLM 不设置程序大小的问题。

  • 修复了 UEngine::D rawOnscreenDebugMessages 函数返回错误值的问题。

荒废的:

  • 弃用了按指针获取标题的 FMessageDialog 重载;请改用按值传递它的重载。

  • 已弃用 Engine::FindAndPrintStaleReferencesToObject,因为它已移至 FReferenceChainSearch。

  • 弃用了 Engine::FindAndPrintStaleReferencesToObject,并将 PrintStaleReferencesOption 移动到其自己的文件中,以便更好地进行编译迭代。将 FindAndPrintStaleReferencesToObject 移至 ReferenceChainSearch。

  • 弃用了四个不再用于任何有用用途的 FBulkData 标志:BULKDATA_Unused、BULKDATA_ForceStreamPayload、BULKDATA_SerializeCompressedBitWindow 和 BULKDATA_BadDataVersion

  • 开始删除对委托策略的支持,因为它们与线程安全委托不兼容。

  • 删除了 TRemoveConst 的使用并弃用了它。

  • 删除了已弃用的变基 Actor 和对变基偏移量的依赖关系。

  • 弃用了哈希数组和带有 GetTypeHash 的 TCHAR*。

  • 已弃用 TScriptDelegate。

  • 将 TModels 特征类替换为 TModels_V。

  • 弃用了UE_GC_TRACK_OBJ_AVAILABLE宏,并简化了可用的 UObject 计数跟踪。

  • 将 FScriptSetHelper::HasElement 和 FScriptMapHelper::HasKey 移至编辑器。

  • 删除了DISABLE_DEPRECATION宏。

  • 删除了自迁移到 FProperties 以来已损坏的 UUnsizedIntProperty 和 UUnsizedUIntProperty。

  • 删除了 UE::Core::P rivate::FWrappedObjectPtr,因为现在我们有 FObjectPtr 就没有必要了。

  • 已弃用 TRemoveCV。

  • 将 TIsTArray trait 类替换为 TIsTArray_V。

  • 使 ApplicationWillTerminateDelegate 线程安全:弃用 FCoreDelegates::ApplicationWillTerminateDelegate(因为线程安全委托无法静态初始化),并为线程安全委托添加了 FCoreDelegates::GetApplicationWillTerminateDelegate 访问器。

  • 弃用了全局 Sort 和 StableSort 函数。它们仅支持 int32 的索引类型,并且由于使用 TDereferenceWrapper,可能会产生意外/不良行为。这些函数的使用已替换为 Algo 命名空间中的版本。

  • 无法再虚拟化引擎内容,因此不推荐使用以下配置文件选项:

    • 引擎:[Core.VirtualizationModule]:FilterEngineContent

    • 引擎:[Core.VirtualizationModule]:FilterEnginePluginContent

删除:

  • 删除了 GIsUCCMakeStandaloneHeaderGenerator,因为 C++ UHT 不再使用引擎类型。

  • 删除了 5.2 中弃用的核心委托。

  • 删除了 5.0 中弃用的旧 FTicker

  • 删除了 EGCOptions::WithClusters,以减少垃圾回收器代码中的模板实例排列数量并缩短编译时间。

开发工具

新增功能:

  • 删除了 C++ 虚幻标头工具 (UHT)。

  • 将 C# Unreal Header Tool 移植到使用 ArrayPool 的新对象。UhtBuffer

  • 将非持久性元数据添加到 .CsvProfiler

    • 默认情况下,csv 元数据在捕获之间保留,如果捕获具有特定元数据的不同模式,则可能会出现问题,因为先前的捕获可能会污染未来的捕获。

    • 此更改添加了一个宏,该宏设置在当前捕获结束后清除的元数据。CSV_NON_PERSISTENT_METADATA

  • [虚幻VS]

    • 添加了“生成程序集”菜单选项,要求UBT编译单个文件并生成程序集文件。

    • 已升级到版本 1.84.3UnrealVS.vsix

  • 添加了定义新文档策略和指定默认策略的功能。

  • 在 UHT 中添加了使用 调整数组大小的功能。static_cast

  • 添加了该目录作为 UBT 扫描 UBT 插件的位置。Build

  • [PerfReport工具]添加了对日期格式的支持和禁用列自动换行。

  • 添加了从数组切片计算哈希的功能。

  • 修改了 UHT 以不发出未使用的指令。#define

  • 将UBT项目代码分析更新到了4.2,将文本编码更新到了6.0。

  • 添加了直接在文件哈希器中设置的功能IoHash

  • [虚幻构建工具]

    • 添加了在编译 C++ 文件时生成程序集文件的选项。

    • 目前仅在 MSVC 编译器上受支持。

    • 生成的文件具有扩展名,并且与相应的 ..asm.obj

  • 添加了通用双缓冲区异步文件读取器,能够指定缓冲区大小。

  • [部落]在处理大型数据时对 Horde 存储进行了优化:

    • 添加了使用方法和 指定缓冲区大小的功能。FileNodeWriterCreateAsyncAppendAsync

    • 添加了将树直接复制到流中而无需创建节点本身的功能。FileNode

    • 读取数据时,如果未启用缓存,请避免为缓存创建缓存。byte[]

    • 在未启用缓存时,将默认读取大小从 15MB 减少到 1MB。

    • 使用数据调用回调而不是创建节点实例的新方法。ReadNodeAsync

    • TreeWriter使用当前数据包的完整内存缓冲区大小来检测是否需要将 indead 的大小调整为最大数据包大小。

    • 新的捆绑测试,用于直接流式传输到流。FileNode

  • 从发布版本中删除了注释和工具提示元数据。

  • 添加了 Apple Silicon 原生二进制文件。GitDependencies

  • 添加了允许在未找到指定文件时引发错误的选项。默认情况下,此选项处于禁用状态。ErrorIfNotFoundMoveTask

  • 优化了 Visual Studio 创建的项目,它们现在要小得多。

  • 在虚幻构建工具(UBT)中添加了验证逻辑,以确保插件不依赖于任何密封的插件。

  • [UGS]现在,当选择 UGS 窗口时,同步结束时显示的错误对话框(未解析的文件、需要删除的文件等)将得到关注。此外,UGS任务栏条目在显示这些模式对话框之前和同步结束时会闪烁,以尝试引起用户的注意。

  • 为桌面平台添加了一个新选项。bEnableLibFuzzer

起色:

  • 通过限制缓冲区大小来减少垃圾回收压力,改进了 C# UHT 文件读取。

  • 修改了哈希方法以提供文件大小提示,以便它可以默认为更大的缓冲区大小以提高性能。ComputeAsync

  • 修改了哈希方法以使用上面的双缓冲区读取器。ComputeAsync

  • 增强了 UHT,能够解析更多 C++ 属性。

  • 改进了对放置在无效条件块中的关键字的检查。

崩溃修复:

  • 修复了热重载和实时编码,以免打扰序列化委托和批量数据。委托序列化导致使用新的并发检查进行断言,并且过去可能导致崩溃。

  • 修复了实时编码关闭,以消除退出时崩溃的问题。

  • [UGS]禁用“打开项目...”在主窗口中单击鼠标右键时,除非上下文菜单是在有效选项卡上打开的。这样可以防止在尝试打开无效项目时崩溃。

Bug修复:

  • 修复了虚幻构建工具(UBT)日志事件级别检查导致记录器收到垃圾邮件的问题。

  • 修复了以下问题:当前未加载的模块可能会阻止实时编码修补已加载的模块。

  • 修复了将实时编码与 Clang 编译器一起使用会生成“未解决的外部”错误的问题。

  • 通过实时编码从 Unity 文件中删除源文件后,实时编码不再生成有关目标文件丢失的错误。

  • 删除了 UHT 中不必要的迭代。GetMaxEnumValue

  • 修复了 UBT 不是实际目标名称的问题。这导致热重载和实时编码在与非 Unity 版本一起使用时不再起作用。UE_TARGET_NAME

  • 修复了 C# UHT 以允许在块中具有参数的函数。WITH_EDITORONLY_DATA

  • 修复了对第一个标头包含的检查未报告为实际警告/错误的问题。

  • 修复了与 Clang 一起使用时实时编码失败并显示“未解析的外部符号”的问题。

  • 修复了实时编码控制台以处理协程的修补。

  • 修复了 C# UHT 对功能的严格文档测试。

  • 修复了实时编码的问题,即大型项目可能没有在库周围保留足够的内存,从而阻止修补。

  • 修复了 C# UHT 元数据未在元数据中发出值更改错误的问题。

  • 修复了实时编码预加载模块支持中的问题,即如果模块名称已知但当前未加载,则引擎将生成检查。

  • 修复了 C# UHT 在接口函数标记为 时无法生成错误的问题。BlueprintPure

  • 修复了 UBT 无法检测到游戏文件夹中的 C# UBT 插件的问题。

  • 修复了 C# UHT 中的一个问题,即如果结构引用自身,则它最终会陷入无限循环。

  • 修复了启动时罕见的线程崩溃问题。UnrealPak

  • 修复了以下问题:如果虚幻标头工具 (UHT) 导出代码引发异常,则构建不会显示错误消息或构建失败。

  • 修复了 UHT 问题,即如果类中的所有属性都标记为仅编辑器数据,则会生成无效代码。FieldNotify

荒废的:

  • [虚幻前端]已禁用旧 Profiler ()。UnrealFrontend/SessionFrontend/Profiler

    • 旧的Profiler在UE 5.0中已弃用。

    • 请改用。Trace/UnrealInsights

    • 添加了全局定义切换。默认情况下,此功能处于关闭状态。这允许您在需要时临时重新启用 Profiler;看。UE_DEPRECATED_PROFILER_ENABLEDUnrealFrontend.Target.cs

    • Profiler 模块/代码将在未来的 UE 版本中删除。

删除:

  • [虚幻前端]删除了已弃用的 run 命令。MEMORYDUMP

见解

新增功能:

  • 添加了 FInstallBundleSuppressAnalytics 类,以帮助禁止安装捆绑分析,从而避免在特定批量运算符期间发送垃圾邮件。

  • 为所有平台启用了Unreal Trace Server。

    • Unreal Trace Server现在支持所有桌面平台(Win64、Mac、Linux)。

    • 现在包括用于 Linux 和 Mac 的预编译二进制文件。这样就无需在这些平台上进行跟踪时运行Unreal Insights程序。

  • 添加了用于显示跟踪存储连接状态的用户界面。

    • 添加了在与存储服务器的连接丢失时重新连接的逻辑。

  • 在 TraceLog 中添加了面向用户的消息事件。以前,TraceLog 中的错误会以无提示方式停止跟踪,而不会向用户提供任何信息。这增加了一种接收这些消息并使用常规引擎日志记录来记录它们的方法。

  • 现在,在请求进程当前跟踪会话时,将使用新的会话 ID。这解决了当计算机同时运行多个实时会话时获取当前会话的问题。

  • 为Unreal Trace Server添加了持久性设置,允许在重新启动后保留设置更改。可以在不重新启动服务器的情况下更改设置。

  • 添加了 UE_TRACE_METADATA_RESTORE_SCOPE(MetadataId) 宏。

  • 在 Memory Insights 的 Callstack 列的工具提示中添加了 alloc 事件调用堆栈 ID 和空闲事件调用堆栈 id。

  • 除了现有的资产名称和对象类字段外,还向资产元数据范围添加了包字段。

  • 将“屏幕截图”跟踪通道添加到“默认”通道预设中。

  • 符号解析现在会自动尝试将已知打包的重命名二进制文件重新映射到其原始文件名。

  • xmake现在用于在所有平台上构建虚幻跟踪服务器。

  • 添加了对 TraceLog 内存使用情况的 LLM 跟踪。

  • 使 TimingView.AutoScroll 选项在 Timing Insights 的 ini 文件中持久化。

  • 在“计时视图”中,当在单击要选择的事件时按住 Ctrl 键时,还将选择同时包含旧选定事件(如果有)和新选定事件的时间间隔。

  • 添加了“项目名称”、“其他元数据”信息(如果可用),并添加了“TraceId”作为可选元数据。

  • 添加了 FD3D12Adapter::TraceMemoryAllocation 和 D3D12PoolAllocator 以在内存见解中解析符号筛选器。

  • 在 Memory Insights 中添加了对无限数量的堆规范的支持。以前,它限制为 256 个堆规范。

  • 现在,所有跟踪文件都包含一个元数据字段,该字段具有会话 ID 和全局唯一的跟踪 ID。可以从命令行设置会话 ID,以将来自多台计算机的会话组合在一起。如果未指定会话 ID,则会生成一个随机 ID。

  • Memory Insights / Mem Allocs 表: - 改进了查询信息、查询状态、分配数量的状态栏文本显示,并增加了过滤分配的数量。

  • 添加了所选项目的状态栏文本信息(包括所选项目的总分配计数和总内存大小)。

  • 在启用“stats”跟踪通道时,添加了对现有“Stats_GPU_*”浮点计数器的跟踪。

  • 在会话信息事件中添加了项目字段,与应用名称分开。以前,我们使用项目名称而不是应用名称(如果可用)。

  • 为所有提供程序添加了 Get*ProviderName 公共 API。重构了 IModule 派生类,以确保一致的实现。

  • 树表视图改进:

    • 增加了字体大小并更新了文本颜色(例如:当树节点悬停/选择/过滤时)。

    • 添加了树节点的默认图标和颜色。

    • 为 Callstack 和 Tags 分组创建的组节点添加了自定义颜色。

  • 将资产加载调试名称剪辑跟踪为 1024 个字符。

  • 将Unreal Insights版本更新到了1.04。

  • Memory Insights:添加了在 mem 查询中包含堆分配的选项。

  • Memory Insights:添加了对 NeverFrees 堆的分析支持。

  • 添加了对生成的日志警告数量的限制。

  • 添加了 EnterScope_TB / LeaveScope_TB(相对于 BaseTimestamp 的时间戳)事件和 EnterScope_TA / LeaveScope_TA(绝对时间戳)。

  • 网络见解 - 修改了筛选,以在筛选数据包内容事件时包含子事件。

  • 添加了所选数据包范围的增量时间显示。筛选现在支持结合使用 NetId 和 EventType 筛选,这对于突出显示特定实例的特定事件非常有用。

起色:

  • 用户现在可以在Unreal Insights中更改商店设置。目前用户可以更改:

    • 存储目录:存储新跟踪的目录。

    • 监视目录:一组监视跟踪文件的目录。例如,用户可以添加其下载文件夹,并在会话浏览器中自动查看下载的跟踪。

优化:

  • 重构了 Trace Services 的 IProvider / IEditableProvider 接口,以避免菱形问题。

崩溃修复:

  • 修复了尚未创建帧系列时帧轨道中的崩溃问题。

Bug修复:

  • 修复了在启用“在 Insights 中打开跟踪”选项的情况下停止跟踪时发生的死锁。

  • 避免在发出委托时锁定 TraceAuxilliary 目标和连接类型。

  • 恢复了跟踪的 Uri 功能(向后兼容当前/较旧的 UTS)。

    • 重命名跟踪会话后禁用了跟踪会话,在跟踪 ID 正确更新之前,跟踪名称的颜色将更改为灰色。

    • 修复了跟踪会话列表的焦点(初始焦点和重命名跟踪后)。

  • 改进了使用远程/慢速跟踪存储连接时会话浏览器 UI 的响应能力。

  • 修复了从远程跟踪存储打开跟踪的问题。新的UnrealInsights进程是通过指定存储地址和存储端口来启动的。现在可以将跟踪 ID 指定为十六进制编号(以 0x 为前缀)。

  • 在分配大小为零的情况下返回分配器结果。删除 Trace 的分配包装器中对零大小分配的检查,将其留给分配器实现来决定。分析已经支持零大小的分配(只要它们具有唯一的地址)。

  • 修复了计数器跟踪通道的延迟连接。

  • 更改了跟踪状态和跟踪目标的 TraceAuxilliary 内部管理。

  • Allocs 表、任务、包的树视图现在具有按层次结构筛选的分隔树视图节点筛选。异步操作的顺序已更改。首先应用节点过滤(即使用过滤器配置器进行高级过滤)。然后应用分组 + 聚合。然后应用排序。最后,应用层次结构过滤(即文本搜索)。

    • 这样就可以同时使用文本搜索(层次结构筛选)和高级筛选(节点筛选)。此外,聚合现在仅应用一次。这些更改使树操作的性能显著提高,尤其是在应用节点筛选时。

  • 禁用了使用远程跟踪服务器时重命名/删除跟踪文件。

  • 修复了更新跟踪列表的问题。如果列表在底部滚动,则在添加新跟踪时,它也将保持底部滚动。

  • 修复了初始通道示例(包括拼写错误)和“默认”预设的使用,以包括“区域”和“屏幕截图”通道(连接选项卡)。

  • 修复了跟踪记录器 IP 地址,以预填充(远程)跟踪服务器的正确 IP 或主机名(“连接”选项卡)。

  • 跟踪存储对 id 使用整个路径。仅使用主干会隐藏多个挂载中存在的同名文件。

  • 修复了缺少检查以确保发送整个数据包的问题。这样可以防止任何低级传输错误。

  • 更新了虚幻跟踪服务器自述文件,以反映使用的动态端口。

  • 修复了元数据还原范围缺少通道检查的问题。

  • 修复了 Trace.Screenshot 在不运行 PIE 或模拟时不起作用的问题。

  • 修复了视频内存分配的 realloc 范围。以前仅支持系统内存的 realloc 作用域。

  • 修复了对“stats”跟踪通道的后期连接支持。将批处理跟踪事件更改为始终以绝对时间戳值开始(而不是相对于上一个事件)。

  • 减少了未启用“stats”通道时统计信息跟踪的开销。

  • 修复了 TConcurrentLinearAllocator、FOsAllocator、FAlignedAllocatorInternal 和 FOutputDeviceLinearAllocator 的块分配器使用的块分配器的内存跟踪。

  • 修复了在创建模块提供程序之前尝试更新符号搜索路径的问题。以前,符号搜索路径字符串仅在重置面板时更新,这并不总是与创建模块提供程序的时间相对应,在重新创建面板之前将字符串留空。

  • 计数器:修复了“导出值/操作”错误地保存所选计数器的所有值/操作的问题,即使在时序视图中进行了时序选择也是如此。

  • 计数器:导出值/运算时,在默认文件名中添加了所选计数器的名称。

  • 更改了使用鼠标滚轮放大和缩小,以自动固定时序视图中的悬停轨道。

  • 从 Insights 状态栏小组件打开分析目录时,如果该文件夹不存在,则将创建该文件夹。

  • 修复了作用域跟踪事件的跟踪分析。

  • 添加了对具有动态名称的计数器的显式支持。

  • 添加了对分层清除和还原范围的支持。清除/还原作用域将当前元数据堆栈替换为空/保存的元数据堆栈,并在作用域末尾还原以前的元数据堆栈。

  • 修复了跟踪系统进行的 mem 分配的元数据和 mem 标记的范围(将范围扩展到原始分配器调用)。因此,堆分配将继承相同的“跟踪”标记。

  • 修复了在任务中应用的跟踪元数据范围。

  • 修复了内存分析中有关未启用 memalloc 通道时 TagTracker 错误的日志消息。

  • 修复了作用域内事件相对于运行时基本时间戳的时间。这允许在 8 个字节上打包(如跟踪协议 5 中所示)。

  • 默认情况下,在服务器上禁用级别流式分析。

荒废的:

  • 移除了 RenderCore 的 FTracingProfiler,该工具自 UE 4.26 起已弃用。请改用Trace系统和Unreal Insights。

  • 添加了UE_STATS_MEMORY_PROFILER_ENABLED,用于在 STATS 系统中打开/关闭与 MemoryProfiler 相关的代码。它仍然需要启用 STATS 并在 cmd 行中指定“-MemoryProfiler”。

    • 默认情况下,此功能处于关闭状态,因为 STATS 系统功能中的 MemoryProfiler 在 UE 5.3 中已弃用。对于内存分析,请改用 Trace/MemoryInsights 和/或 LLM。

  • 删除了已弃用的 MemoryProfiler 运行时:

  • 删除了已弃用的 MemoryProfiler2 工具。请改用Unreal Insights(Memory Insights;-trace=memory)。

删除:

  • 删除了分析线程上 MessageLog 的使用。通过此更改,分析引擎中 MessageLog 的直接使用被回调系统所取代,该系统允许 TraceAnalysis 的用户实现消息本身的显示。

框架

新增功能:

  • 将依赖于 Engine 模块的所有 FInstancedStruct 代码移动到新的 StructUtilsEngine 模块中。这允许不能依赖引擎的模块使用 FInstancedStruct。

  • 添加了对 PropertyBag (TArray>) 的嵌套容器支持,最大深度为 2。

  • 添加了一个 DisallowedPlugins 列表,用于限制可以使用哪些插件。

  • 添加了一个实验性的插件引用查看器工具,用于显示插件依赖关系图。默认情况下,实验工具处于禁用状态。您可以从插件浏览器窗口启用 PluginReferenceViewer 访问工具。

  • 添加了一个新的“密封”插件概念,可以防止其他插件依赖于插件。

  • 修复了使用包含资产的插件模板创建新插件时会导致包引用损坏的问题。

  • 添加了一个 NoCode 插件描述符属性,该属性可防止插件包含任何代码或模块。

  • 添加了插件模板属性,用于定义将在其中创建新插件的子文件夹。subfolder

  • 修复了以下问题:如果在插件创建期间资产寄存器扫描仍处于挂起状态,则创建新插件有时可能会失败。

人工智能

新增功能:

  • 添加了实验性插件 Learning Agents。学习代理允许您使用机器学习来训练 AI 角色。这使您能够增强或替换传统的游戏 AI,例如使用行为树或状态机编写的游戏 AI。特别是,该插件允许您使用强化和模仿学习方法。从长远来看,Learning Agents 旨在在一系列应用程序中发挥作用,包括基于物理的动画、游戏 NPC 和自动化 QA 测试。

  • 将与 AI 相关的资产操作转换为资产定义。这适用于状态树、行为树、黑板和环境查询。

Bug修复:

  • 修复了在“项目设置”中启用“编辑时构建区域图”标志时 ZoneGraph 会自动构建的问题。

荒废的:

  • 已弃用 UAvoidanceManager::bAutoPurceOutdatedObjects。请改用 bAutoPurgeOutdatedObjects。

AI 行为树

新增功能:

  • 为行为树添加默认 Blackboard 配置选项。

  • 公开的行为树编辑器功能可从其他模块继承和访问。还引入了一些较小的行为树编辑器 UX 改进。

  • 向“行为树”上下文菜单节点描述添加了工具提示。

崩溃修复:

  • 修复了在 UBlackboardKeyType_Object 的基类中将 KeyType 设置为 None 会导致崩溃的问题。

Bug修复:

  • 修复了 BehaviorTreeEditorModule 自定义工具栏扩展器未正确应用的问题。

AI调试

新增功能:

  • 现在,如果所有添加的项目都按类别详细程度过滤掉,则VisualLogger中新创建的行将被隐藏。

起色:

  • DebugDrawService 现在使用同步对象进行委托注销,以防止RecreateRenderState_Concurrent从多个线程注册和注销委托。

Bug修复:

  • 修复了UE_VLOG_OBOX的调试文本的位置。

AI导航

API 变更:

  • FZoneGraphPathFilter 现在在其构造函数中具有可选的第四个 FZoneGraphTagFilter 参数。

新增功能:

  • 将 FZoneGraphTagFilter 添加到 FZoneGraphPathFilter,以便 FZoneGraphAStarNode 可以使用给定的标签过滤器执行路径请求。修复了 UZoneGraphTestingComponent,以便在执行路径请求时正确使用 QueryFilter。

  • 超大脏区警告现在适用于活动磁贴生成(包括导航调用程序)。这修复了脏区未接触活动磁贴时出现的多个不必要的警告。

  • 将 AgentMaxStepHeight 添加到 FNavMeshResolutionParam。

  • 添加了导航网格版本兼容时显示消息,但不是最新版本。

  • 添加了导航调用程序优先级 (ENavigationInvokerPriority)。

  • 修复了以下问题:通过在 GatherNavigationDataGeometry 之后读取分辨率来使用 LazyModifiersGathering 会导致导航网格解析问题。

  • 向 CSV Profiler 添加了每个层的任务计数和任务等待时间。

  • 向 LogNavInvokers 添加了日志类别和详细说明调用程序注册的日志。

  • 向 CSV Profiler 添加了 NavInvokers CSV 类别和跟踪 CSV 中的调用程序计数。

  • 添加了 LogNavigationHistory 设置为 Log 时的磁贴生成历史记录和统计信息。

  • 增加了导航网格可以生成的高度(现在使用 29 位而不是 15 位,在使用 5 cm CellHeight 时允许 26000 公里的高度)。

  • 将 rcCompactSpan 更改为对 y 使用 rcSpanUInt。

  • 在按调用程序优先级排序时,提高了导航调用程序附近脏图块的优先级。

  • 在 UNavModifierComponent 中添加了对 Geometry 集合的支持。在此更改之前,Geometry Collection 上的 UNavModifierComponent 不会找到代理网格的物理场,也不会回退到任意 FailsafeExtent。

  • 添加了在执行异步导航数据收集时对导航网格解析的支持。

  • 添加了一个控制台变量来切换导航网格分辨率。

  • 向 UNavModifierComponent 添加了 NavMeshResolution。

  • 将导航控制台命令前缀从 n. 重命名为 ai.nav。

起色:

  • 添加了导航网格体生成优化,将其与分层实例化静态网格体一起使用时。这样可以避免在构建图块时收集不必要的几何图形。

  • 添加了对 UHierarchicalInstancedStaticMeshComponent::GetOverlappingBoxTransforms 的优化。

崩溃修复:

  • 修复了在垃圾回收期间(调用 FRecastTileGenerator::AddReferencedObjects)修改 NavigationRelevantData 数组会导致崩溃的问题。更改将清空 NavigationRelevantData 移动到主线程,以便它不会在任何时候发生。

Bug修复:

  • 修复了 FNavigationOctreeElement 运算符中的内存泄漏问题,并添加了移动运算符。

  • 修复了在没有导航系统的情况下会导致崩溃的问题。

  • 修复了 UGeometryCollectionComponent 中导出 UGeometryCollectionComponent 时未考虑 UNavCollisionBase 的 bIsDynamicObstacle 标志的问题。

  • 使 UWaterMeshComponent 与导航无关。这修复了在添加 UWaterMeshComponent 时数百个导航网格图块被弄脏的问题。

  • 修复了在没有可构建的位置时构建导航导致编辑器性能降低的问题。

  • 修复了使用 async 标志时使用 WorldPartitionNavigationDataBuilder 中的源代码管理保存文件会导致错误的问题。这修复了生成过程中可能发生的“MarkForAdd,错误:标记文件失败”问题。

  • 修复了由栅格化问题导致的陡峭斜坡上的导航网格孔(这也修复了楼梯中的导航网格问题)。还添加了 ai.nav.EnableSpanHeightRasterizationFix 控制台命令,以便在需要时禁用修复。

  • 修复了会导致 FRecastTileGenerator::MarkDynamicAreas 内存损坏的问题。

  • 修复了以下问题:在将包添加到源代码管理之前,使用 SAVE_Async 不会等待异步文件写入。

AI智能对象

新增功能:

  • 将游戏世界中使用的组件的注册移至 BeginPlay,将注销移至 EndPlay。这将允许条件依赖于完全初始化的 Actor,以防它们需要访问其他组件。它还将使使用 SmartObject 组件生成 Actor 并在完成生成之前设置其定义变得更加容易。

  • 向 API 添加了新方法,以通过评估选择前提条件来筛选请求结果或槽句柄列表。

    • 筛选器方法可以接受外部数据作为结构,其属性的名称和类型与 WolrdConditionContext 匹配。

    • 引入了 FSmartObjectUserContext,以涵盖将用户 Actor 传递到上下文的常见情况。

    • UserDescriptor 现在作为实例化结构存储在运行时槽中。

    • 声明方法现在接收用户描述符。

    • 删除了槽事件委托,并重用了运行时实例 1。

    • 侦听器现在可以使用 Event.SlotHandle 筛选给定的插槽。

    • 从 SmartObjectWorldConditionSchema 中删除了用户标记。用户标签是查询筛选器的一部分。需要用户标记的条件可以从上下文中传递的 Actor 中获取它们。

  • 依赖于 EvaluateConditionsForFiltering 的公共方法现在验证槽句柄是否已设置且未过时。在这种情况下,将发出一条日志消息,建议用户调用 IsSmartObjectSlotValid 以在调用站点上处理该方案并避免日志。

  • 将 IsBoundToSimulation 添加到 SmartObjectComponent 中,以区分已注册的组件(有效句柄)与绑定到模拟的已注册组件(链接到其运行时实例)。

  • 添加了对 IsBoundToSimulation、RemoveComponentFromSimulation 和 UnregisterSmartObject 序列的单元测试,以模拟 EndPlay 问题。

  • 删除了对 MassEntity 存储插槽的依赖。

  • 现在,SmartObjectPersistentCollection、SmartObjectComponent 和 SmartObjectDefinition 将使用一个新图标。

起色:

  • 改进了蓝图与智能对象子系统的集成。

    • 弃用了 FindSmartObjects 的纯版本,并添加了一个新的非纯蓝图包装器,允许对返回的对象进行适当的迭代。

    • 更改了子类参数以使用值而不是常量引用,以允许在类引脚上直接选择。

Bug修复:

  • 修复了容器删除的问题,即删除批处理中的多个顺序条目会导致不正确的重新计算边界。

  • RemoveComponentFromSimulation 现在可以正确解除组件的绑定。

  • 从模拟中取消组件绑定不会再使已注册的句柄失效;这由 FSmartObjectContainer 处理。

  • 删除了已过时的 RuntimeCreatedEntries,它已替换为注册类型。

  • DebugUnregisterAllSmartObjects 在使用以前的修补程序调用 EndPlay 时将不再导致 sure。

AI 状态树

新增功能:

  • 添加了禁用状态和任务的功能。此外,现在可以强制条件结果为 true / false。

起色:

  • 改进了属性名称更改时的协调方式。

    • 将 PropertyGuid 添加到 FStateTreePropertyPathSegment 以允许协调。

    • 更改了蓝图类和用户定义的结构体属性名称。

    • 更改了 FStateTreePropertyPath 以选择性地处理属性重定向和 BP/UDS 名称更改。

    • 将 UpdateInstanceStructsFromValue 重命名为 UpdateSegmentsFromValue 以更好地反映其使用情况。

    • 改进了状态树编辑器绑定,以便在 BP/UDS 属性更改时进行更新。

Bug修复:

  • 修复了在复制交易时会导致 ID 冲突的问题。此外,还添加了几个编辑器修复。

应用程序接口

New:

  • The plugin manager can now find plugins using a plugin descriptor.

  • Instance static mesh components API improvements.

  • Added array view version of batching transform updates.

  • Added option for passing sorted array to removal function.

Audio

New:

  • Added a function to override the runtime format in FSoundWaveData.

  • [Audio Modulation] Added AD Envelope Generator. This is useful for temporarily modifying the volume of a control bus.

  • [MetaSound] Added support for integral underlying types to TEnum.

  • Added Deactivate All Bus Mixes BP function. This is useful to clear out all active mixes when changing game state.

  • [MetaSound] Added the ListenerOrientation and SourceOrientation parameter interfaces.

  • The WaveTable plugin now supports fidelity and performance tuning and a more intuitive data usage mode for sampling and granulating.

  • Added Runtime MetaSound Builder to support building MetaSounds via code or Blueprint and auditioning in the MetaSound DSP graph in real-time.

  • Added functions to SynthComponent for setting pre-sends and post-sends for AudioBuses and SourceBuses.

Improvement:

  • The IsSeekable method in USoundWave is now virtual.

  • You can now get the values of non-audio outputs of playing MetaSound Sources. See UMetaSoundOutputSubsystem for more information.

  • Added Modulation Destinations to the Synth Component.

  • [MetaSound] TVertexAnalyzerForwardValue now remembers LastValue to prevent unnecessary data pushes.

  • [MetaSound] Added support for passing parameters.

  • Changed the address of audio parameter transmitters from using AudioComponentID to a hash derived from NodeWaveInstanceHash, PlayOrder, and the Component ID.

  • WaveTableBanks now support serialization as 16-bit assets and perform runtime bit-depth conversions where necessary.

  • Abstracted the Waveform Editor toolset into a utility collection to be used as generic sample sequence display tools.

  • Refactored Waveform Editor Widgets to remove the use of RenderData.

  • You can now re-import assets within the Waveform Editor.

  • Audio inputs now use WASAPI for device management on Windows operating systems.

  • [Sound Cues] When Override Attenuation is selected, Attenuation Settings will now gray out to better communicate the override.

  • Added a NumRepeats field to the TriggerRepeat MetaSound node.

Crash Fix:

  • Fixed a crash that would occur when reimporting an audio file over a Sound Wave marked as Ambisonic.

  • Fixed a crash that would occur when importing audio files.

Bug Fix:

  • [MetaSound] TVertexAnalyzerForwardValue now initializes LastValue on first execution as expected.

  • Fixed a bug where logging the default audio settings displayed 0 for max channels.

  • [Audio Modulation] Added a missing tooltip on the Control Bus Mix Stage Value parameter.

  • [Audio Modulation] Fixed a bug where Audio Component Modulation ignored inheritance from SoundWave.

  • [MetaSound] TVertexInterfaceGroup's variadic constructor arguments are ensured to be move-constructible to the group's base type.

  • Fixed a bug where a member could share a name with an existing namespace member already on the parent MetaSound Source.

  • [MetaSound] The WavePlayer node will now immediately fire OnFinished if no WaveAsset is passed in.

  • Wave file metadata chunks will now be preserved in USoundWave assets when converting bit depth of the source file.

  • Fixed an issue with bus and submix sends on muted Sound Waves.

  • Fixed a miscalculation related to a WaveTableBank's entry tail percent.

  • [Sound Cues] Fixed a divide by zero bug in the Enveloper node.

  • Fixed a bug that would cause audio to not play in sequences when cooked audio is referenced in the current level.

Deprecated:

  • Deprecated the Steam Audio Plugin.

  • Deprecated the Modulator parameter on the Modulation Destination Settings.

Blueprint

New:

  • Added facility to make explicit and validate UBlueprint and UBlueprintGeneratedClass subclasses. Subclasses can publish their mappings from the methods: IKismetCompilerInterface::OverrideBPTypeForClass, IKismetCompilerInterface::OverrideBPTypeForClassInEditor, and IKismetCompilerInterface::OverrideBPGCTypeForBPType.

  • Blueprint functions that take parameters by reference no longer require Blueprints that call the function to connect the pin corresponding to the parameter(s) that are passed by reference. This makes it easier to toggle a Blueprint parameter to be passed by reference.

  • Linear Color ToHex is now exposed to Blueprint.

  • Added a Blueprint callable function to shuffle an array using a 'random stream' for the source of randomness.

  • Added gather search data for BlueprintExtensions. This is used by the FindInBlueprint system.

Crash Fix:

  • Fixed potential crash when is enabled. bFavorPureCastNodes

Bug Fix:

  • Fixed a typo in the FGraphNodeCreator class description.

  • Fixed the asset loader to preserve component transform in the editor after a Blueprint has been reparented.

  • Fixed a bug that could cause sparse class data to be lost on load after reparenting a Blueprint.

  • Fixed a bug that prevented you from moving a Blueprint to a location that has a redirector that points to a Blueprint. This can often happen if you move a Blueprint then attempt to move it back.

  • Both Find-in-Blueprint and Blueprint namespace asset discovery are now deferred until after the initial asset registry file scan is complete.

  • 软件类对象现在包含在使用 CookSettings.SkipOnlyEditorOnly 蓝图字节码引用的资源集中。

蓝图编译器

起色:

  • 改进了对蓝图的重定向支持。现在,只要反射的蓝图类型存在自动投射功能,就可以在不破坏现有内容的情况下进行更改。

崩溃修复:

  • 修复了从组件中删除变量并进行编译后蓝图编译期间罕见的崩溃问题。编译器针对不同类型的原型进行增量序列化。

  • 修复了当其基于的本机类使用稀疏类数据时访问骨架类的 CDO 时崩溃的问题。

Bug修复:

  • 改进了对从类中移出并移入相应稀疏类数据的变量的处理。

  • 过时的 DelegateSignatureGraphs 现在在编译之前被移除,子蓝图不再不正确地改变其父级的委托属性。

  • 如果参数名称与枚举值匹配,则 ExpandEnumAsExecs 现在始终使用第一个 Exec(重新提交) ExpandEnumAsExecs 使用不明确的引脚查找。

  • 修复了基于浮点数的数学函数错误地弃用 BreakVector3f。

  • 修复了蓝图编译中的一个错误,该错误在蓝图具有垃圾子类时重新编译时发生。

  • 修复了在具有批次间依赖关系的批处理蓝图资产编译期间生成委托属性后对回收函数对象的引用。

  • 在蓝图超级图编译期间创建瞬态事件存根图构件时,避免与现有非瞬态对象发生潜在冲突。

删除:

  • 从 FVector3f 中删除了 HasNativeBreak。

蓝图编辑器

新增功能:

  • 添加了将自定义事件标记为私有的功能。添加了自定义事件需要说明符的默认 FunctionFlags 值。修改了 UI,以显示函数入口节点和自定义事件的访问说明符下拉列表。

  • 默认情况下,当将默认值更改传播到已与原型值匹配的实例时,编辑器将不再将外部级别/OFPA 资源标记为脏资产。如果默认值更改导致实例值与原型重新对齐,则实例仍将被标记为脏。

  • 添加了新的蓝图编辑器设置,用于控制在内容浏览器中选择的资源在调用蓝图图形上下文菜单时如何生成预绑定操作。默认设置现在禁用此功能,以提高菜单响应能力。

  • 默认情况下,编辑器在手动编译其底层蓝图类型后,将不再将外部关卡/OFPA资源标记为脏资源。

  • 现在,在蓝图图形编辑器中默认启用非阻塞上下文菜单UI模式。

起色:

  • 优化了异步蓝图上下文菜单构建,避免按所需顺序重新排序和插入节点。

  • 改进了蓝图调试器的性能,只填充可见属性的子属性,而不进一步递归。

崩溃修复:

  • 修复了从节点中删除引脚后 SGraphPin::GetPinLabel 中的崩溃。

  • 修复了在编辑器中调用撤消后编译蓝图时崩溃的问题。

  • 修复了在蓝图类默认值中编辑稀疏类数据字段时编辑器崩溃的问题。

Bug修复:

  • 减少了在蓝图编辑器中执行的图形刷新次数,减少了在蓝图图形编辑器中进行更改时的卡顿和闪烁。

  • 修复了私有函数和受保护函数不显示在子蓝图的上下文菜单中的问题。

  • 修复了导致对象的稀疏类数据中的属性在差异面板中不显示为已更改的 bug,即使它们已被更改也是如此。

  • 修复了由于使用稀疏类数据复制蓝图而导致的格式错误的资源。

  • 修复了将拖放到具有拆分结构引脚的节点的变量,使其无法添加。

  • 修复了断开孤立引脚会导致 Ensure 因图形引脚无效而触发的问题。

  • 修复了在编辑器中异步加载具有循环依赖关系的分层蓝图类资源时数据丢失的可能性。

  • 修复了当只有一个根项与搜索框过滤器文本匹配时,蓝图命名空间条目控件的树视图无法正常工作的问题。

  • 从 interface(output)->object(input) 拖动新连接现在将包含一个显式自动转换节点。此外,无法再将接口输出引脚数组连接到函数调用节点的目标输入引脚。这些更改仅适用于新连接;现有连接将继续像以前一样工作。

  • 修复了阻止删除复制粘贴的 Actor 组件的 bug。

  • 将引脚类型选择器列表中用户定义的结构类型的验证延迟到用户定义结构资产编辑器中成员变量类型小部件的选择时间。因此,现在,对成员变量的引脚类型选择器菜单的调用速度更快一些。

  • 在蓝图图形节点修复期间,如果这些引脚链接到自动转换节点或其他取代原始链接的隐式转换节点,则编辑器将不再孤立这些引脚。

  • 避免了在分析外部导入的蓝图资源时,在烹饪时对仅编辑器引用进行不必要的序列化。

  • 重新定位了我们从蓝图编辑器的MRU文档列表中清除过时引用的位置,以避免在异步资源加载期间尝试解析这些路径。

蓝图运行时

起色:

  • 优化 UUserDefinedStruct::InitializeStruct,避免STRUCT_IsPlainOldData宏实例的冗余操作。

Bug修复:

  • 修复了使用位字段构造结构文字时的内存涂鸦问题。

  • 在面向蓝图的脚本容器库 API 中添加了运行时容量检查,以缓解由于整数类型溢出而导致的崩溃。

  • 修复了在更改本机类的构造函数时导致循环组件连接的 bug。

游戏玩法

API 变更:

  • 现在可以安全地在子类中调用 Super::ActivateAbility。以前,它将调用 CommitAbility。

  • 这将使在增强输入中编写想要访问本地播放器的触发器/修饰符变得更加容易,如果他们想要访问用户设置对象以检查瞄准灵敏度或其他内容。

  • 这是游戏在 pawn 初始化期间使用的有用状态。

  • 命令以 AbilitySystem 为前缀。

  • GameplayTagEmpty 查询不明确,应由调用方根据具体情况进行处理。

  • 我们可以回到加载源纹理的旧方式,如果这破坏了“Paper2d.DisableSyncLoadInEditor”CVar 标志。

  • 将 nullptr 传递到 SDetailsViewBase::HighlightProperty 不再执行任何操作,而是取消突出显示所有属性

  • 如果您尝试使用输入设备子系统,这是一个关键修复。

新增功能:

  • 在瞄准系统的AOE瞄准任务中添加了一个选项,以基于相对空间而不是世界空间进行偏移。

  • 将 TargetingSubsystem 函数移到同一元数据类别中。

  • 将 ULocalPlayerSaveGame 基类添加到引擎中,该基类提供实用程序函数,用于保存和加载特定本地播放器的保存游戏对象。这将包装 GameplayStatics 上现有的保存/加载逻辑,并提供在非 PC 平台上正确支持保存/加载所需的功能。

  • OnAvatarSet 现在在主实例上调用,而不是每个 Actor Gameplay Abilities 实例化的 CDO。

  • 添加了 AOE 任务跟踪的源位置作为该任务返回的任何 FHitResult 的 TraceStart,以便用户在定位后可以使用该信息。

  • 输入槽现在支持枚举范围。

  • 更新了增强的输入设置,以允许延迟设置更新。

  • MatchAnyTags、MatchAllTags 和 MatchNoTags 标签查询现在已在蓝图中公开 make 节点。

  • 将 UTargetingTask 标记为 Abstract,因此无法为 EditInlineNew 属性选择它。

  • 添加了 AOE 目标任务使用的碰撞参数的数据存储。

  • 添加了钩子,用于覆盖 AOE 目标任务中数据存储中的冲突数据。

  • 在“执行定位”节点中公开了异步任务,以便我们可以在获取定位结果之前获取定位句柄。

  • 向 LocalPlayer 添加了 GetPlatformUserIndex 函数,并修复了注释以解释不同的索引。

  • 扩展了 AInfo 的构造函数以支持默认的 ObjectInitializer 参数,涵盖了派生类可能重写默认构造函数并错过特定于 AInfo 的初始化的情况。

  • 允许在同一游戏技能图中同时激活技能和从事件激活技能。

  • AnimTask_PlayMontageAndWait现在有一个切换开关,允许在 BlendOut 事件后完成和中断。

  • 摄像机抖动和摄像机动画的后期处理设置现在作为覆盖处理,而不是基本世界值。

  • 在相机组件上添加了纵横比轴约束覆盖。

  • 向 UPlayerInput 类添加了 GetOwningLocalPlayer 函数。

  • GAS:在 FGameplayTagRequirements 中添加了 GameplayTagQuery 字段,以便指定更复杂的要求。

  • 向 UPlayer 添加了一个 ReceivedPlayerController 函数,当拥有的 APlayerController 指针现在在该播放器上有效时,该函数从其拥有的播放器控制器调用。除此之外,向 ULocalPlayer 和 Local Player Subsystems 添加一个 “OnPlayerControllerChanged” 委托,以便于挂钩。

  • 引入了 FGameplayEffectQuery::SourceAggregateTagQuery 以增强 SourceTagQuery。

  • GAS:ModMagnitudeCalc 包装函数已声明为 const。

  • 在输入操作事件节点上将所有 exec 引脚标记为高级视图,但“已触发”除外。

  • 在增强输入中添加了连续输入注入。

  • 添加了对在 FPrimaryAssetId 函数参数上设置 AllowedTypes 的支持。要使用此功能,请将 UPARAM(meta = (AllowedTypes = “SomeAssetType”)) 添加到参数中。

  • 添加了对增强输入的 EKeys::AnyKey 支持。

  • GAS:扩展了功能,以从控制台命令执行和取消游戏技能和游戏效果。

  • 添加了对游戏玩法技能蓝图执行“审核”的功能,该蓝图将显示有关其开发和预期使用方式的信息。

  • FGameplayTagQuery::Matches 现在为空查询返回 false。

  • 将 FDateTime 的 To/From Unix 时间戳函数公开给蓝图。

  • 添加了对正确复制不同类型的 FGameplayEffectContext 的支持。

  • 更新了 FGameplayAttribute::P ostSerialize 以将包含的属性标记为可搜索的名称。

  • FGameplayEffectContextHandle 现在将在检索“Actors”之前检查数据是否有效。

  • 保留 Gameplay Ability System Target Data LocationInfo 的轮换。

  • 游戏能力系统现在仅在找到有效的 PC 时才停止搜索 PC。

  • 将 GetAbilitySystemComponent 更新为默认参数 Self。

  • 在比较资产时,其详细信息面板现在具有彩色突出显示,表示已更改的属性。

  • 更新了对“增强的操作键映射”和“输入操作”资源的注释,以明确应用修饰符的顺序。在各个键映射中定义的修饰符将先于在输入操作资产中定义的修饰符应用。修饰符不会覆盖在输入操作资源上定义的任何修饰符,它们将在评估期间组合在一起。

  • 在 FInstancedPropertyBag 上添加了带有元数据的回调选项

    • 添加了 TypeFilter 回调,用于在更改属性类型时过滤掉某些类型

    • 添加了 RemoveCheck 回调以取消属性的删除

    • 添加了通用的调用方式

  • 现在,您可以通过在内容浏览器中右键单击它们在版本控制中发生冲突并选择“版本控制/合并”来合并它们。

  • 实现了对更改 PropertyBag 详细信息视图中的默认类型的支持 此外,将元数据名称移动到单独的标头,以引用 StructUtils 的所有可用元数据值

  • 在播放器控制器输入模式中添加了“调试显示名称”字符串。这对于执行快速调试会话非常有用,可以快速调试为什么输入可能无法到达播放器,因为它可能被 UI 使用。

  • 添加了对 TouchInterface 说明的说明。

  • 在 AbilityTask_WaitTargetData 中将函数标记为虚拟函数。

  • 在输入操作上添加了输入累积行为的高级设置。此设置将允许您更改输入操作,以累积组合来自不同操作键映射的输入,而不是始终接受具有最高键值的映射。何时使用它的一个实际示例是用于 WASD 运动之类的东西,如果您想按 W 和 S 相互抵消。

  • 添加了对可与 StructUtils 的 Properties 一起使用的容器的筛选。

  • 添加了 SSourceControlReview::OpenChangelist 方法,以允许外部代码打开更改列表审阅对话框。

  • Diff 工具大修,允许异步比较并提高细节面板的差异精度。

  • 向硬件设备标识符添加了 EHardwareDeviceSupportedFeatures 和 EHardwareDevicePrimaryType 枚举。这些允许硬件设备标识符为自己设置标志,以识别它们具有的一些共同特征并检查它们具有什么样的支持。这些是配置标志,可为您的游戏提供一种方法来更改它们对给定输入设备的支持内容,并根据需要添加自定义硬件类型。

  • 添加了对 DataTable 和 DataRegistry 中实例化结构对象引用的支持。

  • 允许基于播放器键映射名称和 UInputAction 指针的输入注入。为此,我们可以通过跟踪与每个玩家映射关联的 UInputAction* 来实现此目的。跟踪每个玩家可映射密钥配置文件的拥有的平台用户 ID,以便您可以访问本地播放器,而无需获取配置文件的外部,这对于自定义配置文件子类很有用。

起色:

  • 重构了相机抖动的时间管理。

  • 改进了视图目标之间混合的后处理设置。

  • 添加了 ProjectileMovementComponent 选项,以避免在对象不相关时在某些帧上进行插值转换更新。默认版本基于最近未渲染的版本,但可以扩展。

  • 在 ProjectileMovementComponent 中围绕插值组件的移动添加了 FScopedMovementUpdate。这可以避免在价格变动期间再次模拟其子组件时多次移动其子组件。

崩溃修复:

  • 修复了在无缝旅行后尝试应用游戏提示时崩溃的问题。

  • 修复了使用实时编码时 GlobalAbilityTaskCount 导致的崩溃。

  • 修复了 UAbilityTask::OnDestroy 在递归调用时不会崩溃的问题,例如 UAbilityTask_StartAbilityState。

  • 修复了在处理条目时将条目添加到 AsyncTargetingRequests 时导致的崩溃(当异步目标请求节点与另一个节点链接时)。现在,我们将这些队列排入队列,并在价格变动结束时处理它们。

  • 修复了更改级别时 AddTimedDisplay 崩溃的问题。

  • 防止在尝试使用子对象数据子系统添加无效的子对象类类型时发生崩溃。

  • 修复了 AGeometryCollectionISMPoolActor 持有垃圾指针导致的崩溃。

  • 修复了区分动画蓝图时的崩溃问题。

  • 修复了在审阅工具中区分资产添加和删除时的崩溃问题。

Bug修复:

  • 使用现有的 GameplayCueParameters(如果存在),而不是 RemoveGameplayCue_Internal 中的默认参数对象。

  • 更改了编辑器中的游戏初始化,以在创建和初始化世界子系统之前创建游戏实例子系统,以匹配其在打包游戏和地图传输中的工作方式。

  • 修复了 GetInputAnalogStickState double-to-float 包装器调用错误函数的问题。

  • GameplayAbilityWorldReticle 现在面向源 Actor,而不是 TargetingActor。

  • 如果触发器事件数据是使用 GiveAbilityAndActivateOnce 传入的,并且能力列表已锁定,则缓存该数据。

  • 修复了 RawScores 在“目标系统任务”中不正确填充的问题。

  • 修复了蓝图调试“StepOver”命令在不正确的蓝图中停止的问题。

  • TargetingSelectionTask_AOE现在遵循源 actor 旋转,而不是轴对齐。

  • 跳过处理为 null 的 TargetingTaskSet 元素。

  • 修复了 SCS_Node Actor 场景组件在生成事件后无法正确重新注册的问题。

  • 修复了混合一些无限相机抖动的一些问题。

  • 修复了复合相机抖动模式持续时间信息,如sequencer所示。

  • 添加了对 FInheritedGameplayTags 的支持,以立即更新其 CombinedTags,而不是等到保存。

  • 修复了编辑器中加载 Actor 的问题,以便在本机根组件在重新设置父级期间更改类时正确设置转换。

  • 修复了在涉及时间膨胀时影响服务器强制棋子位置更新时间的问题。

  • 将玩家可映射名称的长度限制为 FName 的最大长度,以正确检查最大长度。这修复了使用名称太长时可能获得的可能确保。

  • 修复了在垃圾回收 USceneComponent 时会导致错误的“分离时 AttachChildren 计数增加”错误的回归问题

  • 阻止 AActor::RerunConstructionScripts 在转换未更改时调用 ExecuteConstruction 中的冗余 SetWorldTransform。这会导致具有附加父级的组件的相对变换和世界变换中出现错误累积。

  • 修复了字符移动问题,该问题可能会在时间延长时阻止客户端移动以预期的速率提交。

  • 修复了角色可能打算保持垂直(与重力对齐)但无法改变俯仰或滚动以到达那里的问题。

  • 将 ShouldAbilityRespondToEvent 从仅限客户端的代码路径移动到服务器和客户端。

  • 修复了存储在容器属性(TArray、TSet 和 TMap)中的子对象如果在运行时动态创建,则不会显示在详细信息面板中的问题。

  • 新创建的蓝图子类现在被标记为事务性,因此允许在创建时立即撤消,而不是在首次保存后撤消。

  • 修复了使用某些类型的数据资产和数据表时的路径警告。

  • 仅当项目具有名称时,才尝试自动升级到增强输入。这解决了一个问题,即你会从项目启动器获得关于 EI 的 toast。

  • 在开始/停止摇晃之前检查空世界指针。

  • 为组合步骤完成和取消状态添加了一些数据验证,以确保至少设置了一个状态。

  • 如果我们已经在 ASYNC 加载线程中,请不要尝试同步加载 Paper2D 精灵的源纹理。如果启用了熟内容,则在加载 Sprite 资源时,编辑器中可能会发生这种情况。

  • 修复了由于曲线简化而导致 FAttributeSetInitterDiscreteLevels 在 Cooked Builds 中不起作用的问题。

  • 在 GameplayAbility 中设置 CurrentEventData。

  • 在可能执行回调之前,请确保正确设置 MinimalReplicationTags。

  • 使摄像机动画子系统上的蓝图函数能够正常处理空指针。

  • 修复了 UPawnMovementComponent::AddInputVector 的注释。

  • 修复了 ShouldAbilityRespondToEvent 无法在实例化的 GameplayAbility 上被调用的问题。

  • 游戏玩法 提示通知 在 Child Actor 上执行的 Actors,在 gc 时不再泄漏内存。PendingKill 已禁用。

  • 将 AActor::SetActorTickEnabled 设为虚拟。

  • 修复了 GameplayCueManager 中GameplayCueNotify_Actors可能因哈希冲突而“丢失”的问题。

  • WaitGameplayTagQuery 现在将遵循其 Query,即使我们在 Actor 上没有 Gameplay 标签。

  • PostAttributeChange 和 AttributeValueChangeDelegates 现在将具有正确的 OldValue。

  • 最小视图信息已正确重置,以防止参数从一个视图目标“泄漏”到下一个视图目标。

  • 将电流刻度和缓动值应用于后处理设置权重

  • 修复了 FGameplayTagQuery 在结构由本机代码创建时不显示正确的查询说明的问题。

  • 当 bIgnoreAllPressedKeysUntilRelease 为 true 时,不要只忽略对上一个键映射中的键的按键,而是忽略每个键的按键。

  • 修复了无法在输入映射上下文中复制和粘贴映射列表的问题。

  • 仅当项目有名称时才修改配置文件,这样可以避免从项目启动器修改默认引擎 ini 文件。

  • 修复了在审阅工具中加载包含非资产文件的更改列表时的包加载警告。

  • 当当前映射中不存在操作值绑定时,重置操作值绑定的值。

  • 在 PIE 结束时设置的设备属性中添加了“强制重置”标志。这修复了一个小错误,即灯光颜色或触发效果可能会在 PIE 会话之间持续存在。

  • 更新了对象的文本导出(用于复制/粘贴),以清理包含特殊字符的属性名称,否则这些字符会在导入时破坏解析器

  • 将 FKey::KeyName 标记为 EditAnywhere,以便在子对象上更改其值时正确传播。否则,在确定子对象上的属性是否已更改时,将筛选出 KeyName 属性,从而导致 UPROPERTY 不可用。这在编辑器中没有视觉效果,因为 FKey 有一个自定义详细信息行。

  • 修复了烹饪期间与 SpawnActorFromClass 节点上的 Scale 方法固定相关的非确定性行为

  • 修复了导致 SDetailsViewBase::HighlightProperty 不支持 nullptr 的回归,从而删除了取消突出显示属性的任何方法

  • 修复了某些键映射在“showdebug EnhancedInput”命令中错误地显示为覆盖的问题。发生这种情况是因为对数组的 AddUnique 调用将始终添加新的映射,因为它正在比较修饰符和触发器的实例化数组。

  • 删除了循环中的无效“中断”,该循环为被阻止的和弦操作创建了顺序相关检查。

  • 修复了输入设备子系统在打包的 Windows 项目中找不到有效游戏世界的问题。该子系统正在寻找一个只有 PIE 的游戏世界,而不是一个熟食游戏世界。

  • 修复了在 RebuildControlMappings 期间比较增强的操作映射时的问题,因为修饰符和触发器数组的深度副本,因此每当我们将新实例与旧实例进行比较时,无论如何它都会返回 false。

  • 修复了一个 bug,该 bug 导致 OneFilePerActor 参与者始终将本地资产与自身而不是与以前的版本区分开来。

  • 如果正在使用能力系统,请确保调用 UAbilitySystemGlobals::InitGlobalData。以前,如果用户没有调用它,则游戏能力系统无法正常运行。

  • 修复了将游戏手柄路由到第二个窗口的问题。启用此设置后,如果将游戏手柄连接到编辑器,则所有游戏手柄输入都将路由到下一个 PIE 窗口。

  • 通过从差异中排除导出路径,减少了基于文本的资产差异中的误报。

  • 修复了导致 SKismetInspector 中的 RefreshPropertyObjects 无法进行垃圾回收的 bug。

荒废的:

  • 删除了未使用的函数 FGameplayAbilityTargetData::AddTargetDataToGameplayCueParameters。

  • 删除了残留的 GameplayAbility::SetMovementSyncPoint

  • 弃用了 UPlayerMappableInputConfig,取而代之的是 5.3 中的新 UEnhancedInputUserSettings。

  • 在 5.3 中弃用了 FPlayerMappableKeySlot 及其所有相关函数,以及所有旧播放器映射的关键函数,以支持 UEnhancedInputUserSettings。

删除:

  • 从游戏任务和技能系统组件中删除了未使用的复制标志

  • 删除了在不存在组合操作时确保。而是记录警告。

质量

新增功能:

  • 通过将 Post Actor 生成步骤从 SpawnActor 移动到 SpawnOrRetrieveFromPool,简化了 UMassActorSpawnerSubsystem 子类化。SpawnActor 现在调用 World->SpawnActor。

  • 向 FMassTransformsSpawnData 添加了 bRandomize 属性,以控制 UMassSpawnLocationProcessor 是随机分配转换(默认为 true 以保持当前行为),如果为 false,则按顺序分配转换。

Bug修复:

  • 修复了 FMassEntityManager::BatchDestroyEntities 中的一个 bug,即 ObserverManager 未收到实体删除的通知,从而导致片段析构函数无法运行。

  • 修复了 PIE 世界的处理器执行标志。

  • 修复了 FMassBatchedEntiityCommand 的 Add 方法中的多线程访问检测器。

联网

新增功能:

  • [网位数组]

    • 添加。IsBitSet

    • 添加了对 1 个循环中的两个常量位数组运行位操作。CombineMultiple

    • 添加了打印数组当前具有的设置位数的功能。稍微贵一点,不要滥用活动日志。ToString

    • 增加了实用功能。FNetBitArrayPrinter

  • [网络]

    • 添加了用户代码,以判断是否在真实网络 RPC 中。FNetContext

    • 在 Iris 和旧版中添加了对 的支持。FNetContext::IsInsideNetRPC

  • [网位数组]

    • 在 上添加了功能。用于从现有源(bitarray 或 bitarrayview)快速构造位数组。InitAndCopyFNetBitArray

    • 添加了用于用其他两个数组的字运算覆盖位数组的函数。Set

  • [子对象复制]

    • 添加了 cvar .net.SubObjects.DetectDeprecatedReplicatedSubObjects

    • 启用后,它将确保检测到在切换到新注册方法的类中实现的。这仅在开发版本中可用。ReplicateSubObjects

  • [网络驱动程序]添加了在创建 any 后调用的委托。FWorldDelegate::OnNetDriverCreatedNetDriver

  • [鸢尾花]从层次结构中某处具有自定义 Net Serializer 的结构派生的结构不再需要实现 Net Serializer 本身。自定义网络序列化程序会自动正确使用,并且将按预期复制其他复制属性。

  • 现在,当启用 Iris 时,客户端会因一堆错误而断开连接。这样可以防止尝试无限期地反序列化数据包。设置错误后,该错误是不可恢复的。

  • FNetBitArray现在可以在基于范围的 for 循环中使用。这将遍历设置位,并为您提供设置位的索引。

  • 在网络预测插件文件中添加了文档。README

  • 添加了支持。 允许属性在实例化 Actor/组件后决定其实际复制条件,而不是对所有实例都相同。ELifetimeConditionCOND_DynamicCOND_Dynamic

    • 可以使用宏更改条件:

    • DOREPDYNAMICCONDITION_INITCONDITION_FAST:在对象的实现中使用时GetReplicatedCustomConditionState

    • DOREPDYNAMICCONDITION_SETCONDITION_FAST:在适合更改条件的任何其他地方。

    • 如果条件从未被修改,因此保留 ,则该属性在更改时将始终复制。可以在具有此条件的属性上使用宏。COND_DynamicDOREPCUSTOMCONDITION_

  • [Iris] 现在可用于 Iris 复制。这可用于动态筛选对象以仅复制到某些连接。NetObjectConnectionFilter

    • 主要用例是,添加到此筛选器的对象也可能是依赖对象,因为依赖对象会覆盖动态筛选,但不会覆盖任何类型的静态筛选。

  • 在网络预测插件代码中添加了其他 Insights CPU 作用域。

  • 为网络预测插件添加了一个单元测试程序,该程序涵盖了前向预测和插值模式下的基本模拟滴答。

  • ReplicatedPredictionKeys现在显式复制并正确支持使用 preserved 进行初始化。ReplicatonIDReplicationKeysReplicationID

  • 网络驱动程序更新:

    • 收集每个连接、每个帧发送和接收的数据包数量。

    • 在 CSV Profiler 中输出每帧接收和发送的每连接数据包的平均数和最大数。

    • 添加了控制台变量以强制每个数据包包含一串。当两个参与者相互依赖时,这可用于调试罕见的排序问题,但不应这样做。net.ForceOnePacketPerBunch

  • 添加了控制台变量以始终更新具有对象属性的结构的条目,以防止在重新映射结构的对象引用时应用旧属性值的问题。net.AlwaysUpdateGuidReferenceMapForNetSerializeObjectStructGuidReferenceMapNetSerialize

  • CVarNetEnableDetailedScopeCounters现在缓存在全局变量中,以防止不必要的工作,获取每个条件作用域循环计数器的控制台变量值。 现在,仅当对象具有任何自定义增量属性时才会记录。ReplicateCustomDeltaPropTime

崩溃修复:

  • 修复了无缝旅行处理程序,以处理过渡地图的 PIE 重命名,其方式与处理目标地图的方式相同。这修复了多人游戏 PIE 尝试重用同一地图包时出现的崩溃问题

Bug修复:

  • 修复了在编辑器中播放中正常工作的功能,例如在世界启动中途调用,并修复了专用服务器 PIE 世界的相关问题。GetNetModeInitGameEnableListenServer

  • [复制图]添加了修复,以防止在正在关闭但尚未清理的通道上发送多播 RPC。

  • [复制子对象]修复了在删除迭代器后从迭代器访问无效内存而导致的引用计数中断的问题。TSet

  • [RepGraph]

    • 修复了由于参与者超出法律世界界限并保持 OOB 而导致的日志垃圾邮件。

    • 仅当执行组件进入 OOB 时记录一次警告。

    • net.ReplicationGraph.PrintGraph现在打印 Grid2D 节点监控的列表。DynamicSpatializedActors

  • 修复了以下问题:actor 通道因关卡被卸载/流出而关闭,从而销毁 NetStartupActors,除非该通道已被明确破坏。

    • 可以通过将控制台变量设置为以下变量来禁用此行为。net.SkipDestroyNetStartupActorsOnChannelCloseDueToLevelUnloaded 0

  • 修复了在没有自治代理时由网络预测插件控制的模拟代理的行为,例如当客户端取消拥有一个 pawn 并且没有立即拥有另一个 pawn 时。模拟代理的插值现在继续进行,而没有本地自治代理。

  • FastArraySerializer在初始化基态时,不再允许修改 Archetype 或 CDO 的状态,因为这会导致ReplicationID

  • 修复了缺少对标记为脏的项的检测的问题。

  • 修复了处理某些跟踪文件时崩溃的问题。NetTraceReporter

  • 修复了数组大小与存储大小不一致的返回索引越界的问题。FNetBitArray::FindLastZero

荒废的:

  • [网络驱动程序]

    • 弃用变量并将其替换为 / 函数。NetServerMaxTickRateGetSet

    • 添加了委托。注册以在服务器滴答率发生变化时接收回调。FOnNetServerMaxTickRateChanged

  • 已弃用过时的数据包处理程序组件。

删除:

  • 删除了对 and 和 redirect 的调用,以及使用内部连接指针。SetNetVersionsOnArchiveSetNetVersionsFromArchiveFInBunch::GameNetVerFInBunch::EngineNetVer

  • 删除以修复在某些情况下可能发生的具有较大的断言。FloatCastCheckedPreFrameReceiveDeltaTime

关卡设计和美术工具

几何核心

新增功能:

  • 添加了通过全局 C++ 函数存储和获取名为 FDynamicMesh 的临时调试实例的功能。必须将新 cvar 设置为 1 才能启用此功能。控制台命令可用于清除调试网格集。UE::Geometry::Debug::StashDebugMesh()FetchDebugMesh()geometry.DynamicMesh.EnableDebugMeshesgeometry.DynamicMesh.ClearDebugMeshes

  • 该类现在有一个仅合并的 API,可用于近似具有较少数量的凸包的输入集。FConvexDecomposition3

  • 在 Geometry Core 的 TPlane3 中添加了 Transform 和 Inverse Transform 函数。

  • 在 Geometry Core 的 VectorUtil 中添加了 Transform Normal 和 Inverse Transform Normal 函数。

  • 添加了一个概念,作为负空间的新可选表示形式。这可以用来引导凸分解的合并阶段,更准确地使凸包远离物体的负空间。提供了多种方法来生成有效覆盖负空间的球体覆盖,其设置允许一些余地忽略小间隙或物体表面附近的负空间。FSphereCoverFConvexDecomposition3

  • 几何算法模块中的 Clipper2 包装器现在支持取多边形数组的交集、并集、差分和排他 or。

  • 添加了 FindAllHitTriangles 函数,使所有三角形与射线相交(而不仅仅是最接近的三角形)。

  • 动态网格组件现在提供了选项,用于控制在从顶点颜色属性(SRGB 到线性、线性到 SRGB 或无转换)创建渲染缓冲区时将哪种颜色空间转换应用于顶点颜色。此选项作为类的“色彩空间模式”属性公开,并通过新的蓝图函数“设置顶点色彩空间转换模式”和“获取顶点色彩空间转换模式”公开。默认设置是不应用任何转换或转换。UDynamicMesh

  • DynamicMeshComponent 现在支持在 C++ 中指定自定义顶点颜色重新映射,方法是将 lambda 传递给新的 API 函数。还添加了 ClearVertexColorRemappingFunction 和 HasVertexColorRemappingFunction。SetVertexColorRemappingFunction

  • 添加了清除顶点颜色重映射功能。

  • 添加了具有顶点颜色重映射功能。

  • 添加了 Split Attribute Welder 功能。 可用于焊接父网格中共享相同顶点的分割属性。FSplitAttributeWelder

Bug修复:

  • 修复了 clang 的精确谓词浮点控制设置,使精确谓词在将 clang 配置为使用快速数学运算的平台上正常工作。

  • 使几何核心 AABB 类型在与核心 FBox 类型转换或从核心 FBox 类型转换时遵循该标志。IsValid

  • 如果引擎线框材质可用,动态网格组件现在可以在交付版本中渲染线框叠加层。

  • 防止了在网格转换期间确定 UV 通道数时编辑器可能崩溃的问题。

  • 修复了显式约束顶点可能导致忽略几何约束的折叠的问题。TMeshSimplification

几何脚本

新增功能:

  • 添加了两个计算网格点之间最短距离的函数:获取最短顶点路径(使用 Dijkstra)和获取最短曲面路径(使用固有网格边缘翻转)。

  • 添加了通过测地线函数在网格表面上跟踪直线的功能。

  • 添加了新的网格骨骼重量函数,用于获取有关存储在动态网格中的骨架的单个骨骼的信息:

    • 获取根骨骼名称

    • 获取 Bone Children

    • 获取所有骨骼信息

    • 获取骨骼信息

  • 添加了模糊网格顶点颜色功能,用于模糊网格顶点颜色。

  • 添加了从网格转移骨骼重量功能,用于将骨骼重量从一个网格转移到另一个网格。

  • 创建了新函数 Discard Bones From Mesh 和 Copy Bones From Mesh。

  • 现在,动态网格体在从骨架网格体转换时会继承骨架信息。

  • Create New Skeletal Mesh Asset From Mesh (LOD) 现在可以使用存储在输入动态网格中的骨骼比例。这是通过几何脚本创建新的骨架网格资源选项中的“使用网格骨骼比例”标志启用的。

  • 添加了从网格LOD创建新的静态网格体资源和从网格LOD创建新的骨架网格体资源的功能,用于从LOD数组创建静态和骨架网格体,而不仅仅是单个网格。

  • 新增 Append Bounding Box 函数,该函数采用一个而不是单独的 box 参数FBox

  • 在Generated Dynamic Mesh Actor中添加了“标记网格体重建蓝图”(Mark For Mesh Rebuild Blueprint)功能,该功能允许其他蓝图显式地将网格体重建事件排队,而无需重新运行Actor构建脚本。

  • 新增获取顶点连接三角形、获取顶点连接顶点和获取顶点处所有分割 UV 函数,可用于查询顶点的单环三角形或顶点,以及给定 UV 通道中顶点处的一组分割 UV

  • 添加了在一组输入点上运行 Delaunay 三角剖分的功能,以及保留指定边的约束 Delaunay 三角剖分(可选)。

  • 更新了动态网格体组件,以显示新的蓝图函数 Notify Mesh Updated 和 Notify Vertex Attributes Updated。这些函数可用于在使用延迟通知进行修改后强制更新组件的渲染缓冲区的完整或部分。UDynamicMesh

  • 添加了“重新计算网格选择的法线”功能,以允许将法线重新计算限制为网格选择。

  • 添加了计算网格局部 UV 参数函数该函数可以在网格的有界测地线半径区域上计算离散指数/对数映射 (ExpMap) UV 参数化。计算出的顶点/UV 对的子集作为输出返回,而不是在网格 UV 通道上设置。

  • 添加了一个通道包节点,该节点最多具有四个输入纹理,并创建一个输出纹理,其中 RGBA 通道来自输入。

  • 添加了一个新函数,使用 BVH 选择框中的网格元素,允许使用边界框和 AABBTree 对大型网格进行有效的范围查询。

  • 添加了“获取网格体积区域中心”函数,用于计算网格的质心以及体积和表面积。

  • 动态网格组件的“外部提供的切线类型”(Externally Provided) 切线类型设置已重命名为“动态网格”(From Dynamic Mesh)。

  • 添加了新的多边形和路径偏移函数。

  • 添加了用于在 2D 中管理简单多边形(无孔的多边形)和一般多边形(支持可选孔的多边形)列表的新函数和数据类型。

  • 添加了仅限编辑器的函数 Stash Debug Mesh和 Fetch Debug Mesh,可用于保存与字符串名称关联的对象的临时副本。必须设置 cvar,否则将忽略这些函数。UDynamicMeshgeometry.DynamicMesh.EnableDebugMeshes

起色:

  • 更新了多边形三角测量函数,以更好地处理错误和更强大的基于绕组数的回退模式,以便在输入多边形边重叠的情况下生成更好的结果。

  • 重新计算法线函数现在有一个选项。bDeferChangeNotifications

  • 更新了“从组件复制网格”功能以支持实例化静态网格体组件;静态网格的每个实例都会附加到输出网格中

  • 烘焙纹理函数已更新,以显示一个选项来控制应用的纹理过滤类型。

  • 更新了动态网格组件,默认使用其动态网格上提供的切线,并且控制此切线源的设置现在也会在 UI 的 Dynamic Mesh Component 属性下公开。

Bug修复:

  • 删除了“追加光盘”中“径向采样”参数的不正确夹紧。

  • 修复了将无效路径传递给 Geometry Script 的新资源实用程序函数可能导致崩溃的问题。现在,在由这些函数使用之前,软件包名称会自动清理。

  • 修复了“从网格创建骨架网格体资源”未正确分配材质的问题。

  • 修复了将具有重复常量点的样条曲线转换为多段线时的崩溃问题。

  • 更新了 GeometryScripting 插件中支持运行时加载的模块,这些模块可以在 PreDefault 加载阶段加载,然后再加载可能依赖于 Geometry Script 的用户构造脚本。

建模工具

新增功能:

  • 添加了网格拓扑选择机制,可在细节自定义中启用或禁用不同的选择模式。

  • 在“建模工具项目设置”面板的“新建网格对象”设置下添加了“生成光照贴图 UV”选项。如果启用,这将在建模模式下创建的任何新静态网格上启用光照贴图 UV。

  • 将烘焙 RC 工具从网格建模工具 Exp 移至网格建模工具编辑器仅 Exp 模块。

  • 添加双面顶点颜色材质。与“网格顶点颜色材质”(Mesh Vertex Color Material)相同,但选中了“双面”(Two Sideed)。在布料重量图绘制工具中使用了新的双面材料,这样我们就可以在 2D 面板的背面进行绘制。

  • 烘焙变换和编辑透视工具现在默认更新所有 LOD,而不仅仅是活动 LOD,并公开了“应用于所有 LOD”选项来控制此行为。

  • 更新了“简化为最小平面”(Simplify to Minimal Planar),以处理网格的边界。

  • 在“网格到碰撞”工具中添加了“从输入复制”选项,以将现有的简单几何图形传输到目标。

  • 添加了帮助程序方法,用于计算与目标要求匹配的 Actor 组件的数量,以帮助满足特殊工具需求。

  • 添加了帮助程序方法,用于测试“工具目标”中是否存在支持 UV 的体积组件和组件。

  • 更新了框查找代码,以优先定位框,使其更好地与世界框架对齐。MeshSimpleShapeApproximation

  • 强化和改进了动态网格和体积之间的各种转换,使建模工具在体积上更可靠地工作。

  • 向布料绘制工具添加了渐变交互类型。用户选择高顶点和低顶点,并自动计算它们之间的梯度。

  • 添加了网格顶点绘制工具,已添加到建模模式中。此工具可用于直接绘制资产顶点颜色(但不能覆盖每个实例的顶点颜色)。

  • 创建了用于绘制样条曲线和基于样条曲线的蓝图的绘制样条曲线工具。

  • 添加了“旋转样条曲线”工具。

  • 将各种设置从辅助工具栏移动到快速设置中的齿轮图标,因为在某些版本中默认情况下未启用辅助工具栏。

  • 向烘焙纹理和烘焙顶点颜色工具添加了 PolyGroupID 选项。

  • “镜像”和“平面切割”工具中的曝光网格简化选项,用于减少沿切割和镜像平面的多余三角测量。

  • 添加了一个可重用的几何选择可视化系统,旨在以最少的样板用于建模工具。

  • 将某些工具中的切换小工具操作与默认热键解除绑定,以防止用户不小心按下它并认为工具已损坏。如果用户的工作流程从中受益,用户仍然可以设置自己的热键。

  • 调整了组合变换小控件在只需要两个轴时显示缩放轴句柄的方式。旧方法让手柄始终对相机方向做出反应,这会导致 UV 编辑器出现问题,并且在只有两个轴的情况下,手柄相对于平面的方向不一致。新方法仅在一个或三个轴的情况下对相机做出反应,如果在小控件中恰好配置了两个轴,则将手柄锁定到单个平面中。

  • 添加了一个简单的碰撞编辑器工具,以帮助直接在静态和动态网格的建模模式中编辑简单的碰撞基元形状。

  • 添加了细分工具改进,用于处理具有开放边界的网格:

    • 从 PolyEd 中剔除额外的角查找代码,并在细分工具中添加对它的支持。

    • 添加了对网格边界圆角的支持。

    • 在工具使用期间覆盖细分方案,而不仅仅是在工具启动时,以允许额外的拐角来解决某些问题。

    • 添加了一些关于方案的澄清意见。

  • 将“立方体网格”工具中网格大小更改的 Mac 绑定更改为 Option + A/D,因为 Mac 会使用 Option + E。

  • 添加了对法线工具的几何体选择支持。

  • 向PolyEdit工具添加了边缘简化操作。

  • 添加了网格样条工具,该工具可根据所选样条组件创建网格。该工具支持样条曲线的三角测量和拉伸,以及样条形状的布尔组合。

起色:

  • 更新了“焊接网格边缘”工具,可以选择合并属性。

  • 改进了 SubDiv 工具中选项的文档。

  • BakeRC 工具现在输出一种材质,该材质配置为使用任何生成的纹理。

  • UModelingObjectsCreationAPI通过复制给定材料扩展到支持材料。

  • 更新了图案工具,使其具有在每个图案位置放置随机选定对象的选项,而不是始终将所有选定对象放置在每个位置。

  • 更新了“网格到碰撞”、“转换”和“传递”工具,以正确处理动态网格组件上的简单碰撞。

  • 更新了置换网格工具,以显示有关输出网格的顶点和三角形计数的反馈。

  • 将预览设置移至 BakeRC 工具中生成的纹理列表上方

  • 更新了“体积到网格”工具的工具提示,以更好地反映工具的行为。

Bug修复:

  • 修复了一个 bug,即当只有不透明度颜色 alpha 更改时,修剪工具会启动可能代价高昂的布尔计算。

  • 更新了“建模工具项目设置”下的“新建网格对象”选项,以便所有创建新网格对象的建模模式工具更一致地使用。

  • 阻止多个 UV 建模工具在不适用目标类型的体积目标上启动。

  • 修复了在接受“网格到碰撞”工具的结果后,视口级别的碰撞渲染无法正确显示更新的碰撞几何体的问题。

  • 修复了在某些情况下,静态网格到动态网格的转换不会使用重新计算切线选项集重新计算切线的问题。

  • 改进了针对可能在编辑器中烘焙的资产启动工具的检查。

  • 更新了图案工具,以发出上下文正确的静态网格体 Actor。

  • 修复了预览材料在适当延迟后启动的问题。GetElapsedComputeTime

  • 更新了转换工具,以便在禁用“传输材料”选项时不再将不正确的材质 ID 复制到输出网格。

  • 阻止多个工具在卷目标上运行,因为这些操作不适用于该目标类型。

  • 现在,当在视口中启用显示顶点颜色的设置时,动态网格组件会显示顶点颜色。

  • 修复了在某些情况下,“拉伸路径”工具生成的结果包含不正确拉伸的问题。

  • 改进了建模模式小控件中矩形缩放和平面平移手柄的命中测试。

  • 修复了烘焙顶点工具的曲率和环境光遮蔽的每通道烘焙问题。

  • 细分工具现在适用于 Mac 和 Unix 目标。

  • 修复了在 AutoLOD 工具中更改碰撞类型时先前碰撞几何体错误地保持可见的问题。现在仅显示活动碰撞类型的碰撞几何。

  • 修复了 AutoLOD 工具中的各种工具提示、编辑条件和重置按钮

  • 修复了以下问题:如果切割多边形是自相交的,PolyCut 工具会生成错误的结果。

  • 更新了变形工具中的折弯操作,以支持负折弯角度。

  • 修复了当多个工具目标由同一资源支持时编辑透视工具中的崩溃问题。

  • 修复了由建模工具创建的静态网格体组件默认设置为静态移动性,而不是可移动。

  • 改进了“项目”和“重新划分网格”工具的“目标边长”工具提示,解释了为什么它没有从硬编码到属性中的默认值开始。

  • 替换了“UV 布局预览”中的线框视觉效果,以使用网格元素可视化工具,以解决线框显示中抗 Z 轴的视觉伪影。

  • 修复了 Pivot Actor 工具中的一个问题,即使用小控件更改转换不会导致详细信息面板中显示重置为默认值箭头。

  • 修复了为某些网格启用额外角顶点时细分工具中的崩溃问题。现在,只能沿开放边界添加额外的拐角顶点。

  • 调整了投影工具的设置,以便在禁用平滑填充时正确禁用平滑填充选项。

  • 修复了当某些选定网格具有相同的源资源时烘焙变换工具中的崩溃问题。

  • 修复了“重新计算 UVs 操作”的问题,即当没有组件包含至少一个完整的三角形时,将触发 Sure。

  • 更新了简化工具,以有条件地禁用防止正常翻转和防止小三角形,具体取决于所使用的简化算法。这还可以在某些工具设置下支持“防止小三角形”和“防止正常翻转”。

  • 更新了“体素混合”和“体素偏移”工具,以在未启用“Vox Wrap Preprocess”选项的情况下,在处理具有开放边界的网格时警告可能出现的伪影。

  • 修复了边缘折叠 lerp 参数的计算,该参数可减少重新划分网格时 UV 层中的伪影。

  • 修复了网格统计信息显示中的可读性问题。

  • 调整了网格可视化工具设置的行为,以便在选中 Visible 属性时正确禁用。

  • 防止在资源重新加载期间关闭资源编辑器并进行本地更改时,由于静态网格工具目标错误地检查事务成功而导致崩溃。

  • 修复了使用 BakeTX 工具创建纹理时边框区域中的斑点。

  • “网格到体积”工具可自动简化具有太多面的模型,而 BSP 处理代码无法处理,从而防止在使用此工具将大型网格转换为体积时编辑器挂起。

  • 修复了“绘制贴图”工具中在没有属性的网格上绘画然后尝试撤消时发生的崩溃。

  • 禁用了“接缝雕刻”工具中指示器圆的渲染,因为工具的功能不需要它,并且会导致视觉混乱。

  • 修复了 中对纹理源格式 BGRE8 的错误处理。UE::AssetUtils::ReadTexture

  • 更新了网格切线工具,以便在尝试从没有切线的网格复制切线时向用户发出警告。

  • 在“孔填充”工具中将平滑权重方案更改为 IDT 余切。

  • 更新了“孔滤线”工具,以重新检查网格接缝,以在重新划分网格的迭代之间进行约束。

  • 从建模模式中删除了触控笔插件,因为启用触控笔插件时会出现性能问题。

  • 更新了 USkinnedAsset,以允许可能正在运行的 AsyncTask 在删除它之前完成它。

  • 更新了许多建模工具(包括“简化”和“重新划分网格”)使用的网格可视化组件,以正确区分法线接缝和切线接缝,而不是将这两种接缝类型视为法线接缝。

  • 更新了交互式工具框架中的编辑器 2D 鼠标滚轮缩放行为目标,使剪辑平面数学计算出相机是否具有负 z 坐标。

程序

新增功能:

  • 在 PCG 数据集合和 PCG 蓝图中创建了便捷函数,以删除一些样板。

  • 添加了子字符串/匹配搜索,该搜索支持字符串类型在 PointFilter 节点中的通配符。

  • 提供了一种将沿“横向样条”(Landscape Spline)的点转换为样条组件上的点的方法。最适合单路径或圆形景观样条。

  • 向“体积”、“样条曲线”和“网格采样器”节点添加了缺失的陡度控制。

  • 在内部添加了对软对象引用用户参数和软对象指针的支持。其行为类似于泛型软对象路径,但类型进行了适当的缩小。

  • 在“获取纹理数据”节点中添加了对可重写纹理的支持。

  • 添加了 Loop 节点,其行为类似于子图,但将从指定的 Loop 引脚(默认情况下仅第一个引脚)传递单个数据。

  • 将“属性操作”节点重命名为“复制属性”。

  • “复制属性”(Copy Attribute) 现在使用来自另一个“属性集”(Attribute Set) 源的“属性”(Attribute from another Attribute Set source)(带有额外的引脚)。如果未使用新引脚,则将新引脚标记为(并显示)未使用。

  • $Index现在是访问点索引的有效访问器。

  • 改进了 PCG 分区执行组件在单点情况下的“获取执行组件数据”节点的行为。

  • 添加了使用单点查询多个参与者数据时合并所有点的选项。

  • 在“获取执行组件数据”节点中添加了一个忽略 self 的选项。

  • 在 PropertyBag 中添加了 SoftPath getter 和 setter 支持,以便与 SoftObjectPtr 或 SoftObjectClass 属性进行交互。

  • PCG跟踪系统现在是集中式的,提高了性能。

  • PCG 静态网格体生成器现在遵循在组件描述符中选择的 ISM 组件类型,但如果选择的网格是 HISM 且网格使用 Nanite,则更改为 ISM。

  • 添加了一个 OneMinus 节点。

  • 添加了 Make Rotator 属性。

  • 某些本机节点现在在上下文菜单中有一个预配置的设置条目,用于快速添加具有所需设置的节点。

  • 在类设置中,预配置设置可用于自定义 BP。

  • 将 DensityNoise 更改为 AttributeNoise 节点,以支持所有属性上的噪声。

  • 在“设置”中添加了对可覆盖 PCG 参数的别名支持,以便于弃用。

  • 添加了在 Spawn Actor 节点中按属性生成 Actor 的功能。

  • 在 PCG 编辑器中添加了对子图的检查支持。

  • 通过传播第一个非参数引脚来改进属性操作。

  • 现在可以在设置中覆盖要传播的输入。

  • 为所有 Make 操作添加了默认值概念。

  • 现在,触发 PCG 重新生成的更改可以更有效地取消正在进行的生成。这应该会对使用 PCG 内容进行横向编辑产生积极影响,并确保不存在过时的数据。

  • 添加了@Last和@Source作为新的属性选择器。 获取最新修改的属性。@Source获取输入指定的属性。@Last

  • None 将成为有效的属性名称。

  • 添加了新的“点筛选器范围”节点,用于对范围进行筛选。

  • 现在,如果只读访问器用作输出访问器,则会引发错误。

  • 添加了 Is Cacheable Override,以便在需要时进行更精细的控制。

起色:

  • 改进了节点选项板中具有自定义名称的节点和蓝图节点的命名。

  • 改进了对名称冲突的支持,尤其是在 BP 公开的变量中。

  • 需要公开属性,才能使用“获取执行组件属性”节点将其添加到属性集。

  • 新节点的种子不是恒定的,而是取决于节点名称。对于现有节点,种子将保持原样,以免破坏现有图形。

  • “替换”在 PCG 蓝图中使用“可缓存”创建工件,以便更清晰。以前缓存的蓝图如果未选中 Creates Artifacts,则应手动更新,以将“Is Cacheable”标志设置为 true。

  • 在设置中按标签添加了输入/输出引脚属性的 getter。在数据收集上重命名了 getters,以澄清它是通过标签完成的。

  • 添加了 Get Target Actor,用于代替直接访问 Target Actor 变量。避免直接获取 PCG Spatial 数据上的 Target Actor 变量。请改用上下文中的 Get Target Actor 方法。

Bug修复:

  • 修复了 PCG 在获取布局代理时会访问待处理的杀戮布局的某些情况。

  • 在实例化地形的情况下,强制使用地形原始 GUID 作为地形缓存。

  • 修复了世界光线/体积查询参数无法正确覆盖的问题。

  • 修复了元数据分区中未解决的错误,即分区对于非字符串值的行为不正确

  • 修复了使用 2x2 子部分时景观混合图层未正确采样的问题。

  • 同一源和目标之间的固定距离检查将导致检查点与自身相对。

  • 修复了 PCG 分区参与者在完全刷新图形之前未对布局更改做出反应的问题。

  • 修复了 MakeTransform 和 MakeVector 不接受数值的问题。

  • 改进了元数据操作的日志记录,可以更轻松地了解操作失败的原因。

  • 修复了“创建样条曲线”节点忽略自定义切线的问题。

荒废的:

  • 支持(以前的行为 None = 创建与输入同名的属性)。不暴露。用于弃用。@SourceName

  • 支持(以前的行为 None = 获取输入中最新创建的属性)。不暴露。用于弃用。@LastCreated

UV编辑器

新增功能:

  • UV 编辑器现在支持 UV 失真可视化功能。启用后,它会计算三角形的 UV 与其世界空间位置的每条三角形失真值。然后,这在2D UV网格上显示为色盲友好的颜色叠加。该功能支持多个失真指标和一个网格上相对纹素密度指标。

  • 将UV编辑器插件从实验插件目录移至编辑器插件目录。

  • 对应用的选择转换进行了稍微的解包重构,使选择机制之外的代码区域更方便地执行转换。

Bug修复:

  • 更改了“变换”工具中的“快速翻译”选项,以便为角变换生成单个撤消条目。

  • 更正了将重点放在 3D 视口中的选区时改用未包覆的 2D 网格上的选区的问题。

  • 更正了由于未正确处理最小和最大 Y 轴边界而错误地绘制背景网格的问题。

  • 调整了变换工具工具提示中的语言,使其在不同方向按钮之间更加一致。

世界大厦

API 变更:

  • 在 PIE 中,UWorldPartitionLevelStreamingDynamic::RequestLevel 现在的行为类似于 ULevelStreaming::RequestLevel。

  • ULevelStreaming 设置 ULevel::StreamedLevelsOwningWorld,以便 ULevel::P ostLoad 现在可以设置级别 OwningWorld。由于 UWorldPartitionLevelStreamingDynamic 创建内存级别,因此它会在加载 OFPA 执行组件之前设置 OwningWorld。

新增功能:

  • 向分区世界的 AddToWorld 添加了延迟,如果同一分区世界尚未完成删除由先前的 RemoveFromWorld 触发的子关卡。

  • 添加了 LevelStreamingPersistence 实验性插件。LevelStreamingPersistenceManager 在流出/流入关卡时处理标记对象属性的持久性。即使未加载级别,也可以访问和修改标记为 public 的持久性对象属性。

  • 添加了 UDataLayerManager,它是每个 WorldPartition 的本地用户。实例化世界分区映射现在可以维护自己的数据层运行时状态。

  • 添加了帮助程序 UWorld::GetDataLayerManager 和 UWorldPartitionBlueprintLibrary::GetDataLayerManager,它们将自动查找关联的 DataLayerManager。

  • 在网格设置中添加了世界分区运行时网格原点,以帮助正确对齐运行时网格单元(例如横向代理 Actor)上的游戏内容

  • 添加了“预览网格级别”选项,用于预览网格的其他级别

  • 添加了在编辑关卡实例时编辑关卡实例的数据层的功能。

  • 在编辑关卡实例时,即使主世界没有分区,也添加了编辑关卡实例的数据层。

  • 添加了在编辑关卡实例时将关卡实例设为当前实例 DataLayerInstances 的支持。

  • 虚幻引擎现在在FLevelStreamingDelegates中花费的时间包括在FLevelStreamingDelegates中花费的时间:OnLevelBeginMakingVisible/OnLevelBeginMakingInvisible和ULevelStreaming::BroadcastLevelVisibleStatus,计入各自的时间预算。

  • WorldPartitionSubsystem 现在负责对单元格进行排序,并对所有已注册的世界分区执行单元格加载和激活。

  • 添加项目设置作为默认值以分配给新的关卡实例

  • 现在,如果打包结果保持不变,打包关卡 Actor 会避免更新蓝图。

  • DirtyFilesChangelistValidator 现在输出在更改列表验证期间需要保存的资产。

  • 新增了 IsMainWorldOnly actor 属性,用于在关卡实例中使用 actor 时筛选 actor。

起色:

  • 优化了 Server 流式处理的 UpdateStreamingState,它现在为所有已注册的世界分区计算一次 ClientsVisibleLevelNames。

  • 添加了 wp.Runtime.UpdateStreamingStateTimeLimit 命令,用于对已注册的世界分区进行增量更新(缺省情况下禁用)。仅当存在大量已注册的分区世界时,这才有用。

  • 降低了 HLOD 参与者 (AWorldPartitionHLOD) 的净更新频率,以防它们被设置为复制。

  • 任何从 AWorldPartitionHLOD 继承并启用复制的执行组件都将受到影响,因为现在默认的 NetUpdateFrequency 为 1,而不是默认的 100。

  • 更改了 wp 的默认值。Runtime.UpdateStreaming.EnableOptimization 设置为 true。

  • 将 UDataLayerManager::SetDataLayerInstanceRuntimeState 设置为 BlueprintAuthorityOnly。

  • 将导入数据层菜单选项替换为将级别实例数据层拖放到主世界 AWorldDataLayers 中。

  • 禁用了编辑级别实例的 DataLayerInstances 的更改可见性和编辑器加载。

  • 在包含编辑器选择的一部分的 actor 的 DataLayerInstances 上将字体从粗体更改为粗体 + 斜体。

  • 着色并附加 (Current) 到 DataLayer Outliner 中编辑关卡实例的 WorldDataLayer。

  • 优化了世界分区 UpdateStreamingSources。使用 >300 个分区世界实例节省 1 毫秒的项目时间。

  • 将游戏实例化世界分区的初始化移至在关卡开始添加到世界时进行,而不是在加载关卡时进行。

  • 将游戏实例化世界分区的取消初始化移至关卡开始从世界中移除时发生,而不是在关卡完成从关卡中移除时发生。

  • 将初始化/取消初始化逻辑集中到 WorldPartitionSubsystem 中

  • 实例化世界分区 IsServerStreamingEnabled/IsServerStreamingOutEnabled 现在在使用项目默认模式时将逻辑转发到其父世界分区(如果有)。

  • 在为世界分区流式处理单元创建的级别上禁用了 WorldSettings 的复制。

  • 添加了其他缺少的已弃用的 UDataLayerSubsystem 方法。

  • World Partition 现在依赖于 World 的 NumStreamingLevelsBeingLoaded,而不是计算自己的加载单元数。

  • 修复了加载 WorldPartitionActorDescs 时的数据层资产路径。

  • 具有 bEnableStreaming=true 的关卡实例现在在单独加载时将充当常规 World 分区。大型实例现在可以部分加载到其自己的世界之外。

Bug修复:

  • 修复了 UDataLayerManager::SetDataLayerRuntimeState 帮助程序,以避免必须解析数据层资产的 DataLayerInstance。

  • 修复了将实例化世界分区添加到世界中,然后从世界中移除,然后重新添加到世界中而不先卸载的情况。

  • 修复了已弃用的 UDataLayerSubsystem::GetDataLayerInstances 以正确映射到 UDataLayerManager::GetDataLayerInstances。

  • 修复了待加载和添加到环境中的待处理单元格,而不更新其单元格排序信息。

  • 修复了 UWorld::CanAddLoadedLevelToWorld 以使用多个世界分区。

  • 正确挂钩的“数据层”菜单扩展器,并将选择传递给委派。

  • 修复了删除实例后树叶实例选择中断的问题

  • 更正了 FInstanceUpdateCmdBuffer ctor 中缺少的初始化

  • 取消初始化分区环境应始终触发所有单元的卸载,无论是否启用/禁用了服务器流和/或服务器流出。

  • 修复了重播回放未将运行时数据层状态重置为其初始状态的问题。

  • 在 PIE 中,UWorldPartitionLevelStreamingDynamic::RequestLevel 现在的行为类似于 ULevelStreaming::RequestLevel 的行为。ULevelStreaming 设置 ULevel::StreamedLevelsOwningWorld,以便 ULevel::P ostLoad 可以设置级别 OwningWorld。由于 UWorldPartitionLevelStreamingDynamic 创建内存级别,因此它会在加载 OFPA 执行组件之前设置 OwningWorld。

  • 在更新流式处理状态哈希中添加了服务器的客户端可见级别名称。

  • 修复了 WP 流式处理单元包含执行组件的罕见情况,并且此执行组件也是此单元格的另一个执行组件的仅编辑器引用。在这种情况下,仅编辑器引用不得是 WP 流式处理单元的一部分。

  • WorldPartitionSubsystem 不再更新服务器上的流式处理源,如果其已注册的世界分区均未启用服务器流式处理。

  • 在对世界分区单元格进行排序时,世界分区不依赖于单元格网格级别,而是使用格网单元格范围对多个网格之间的单元格进行排序。

  • 修复了 MaxCellsToLoad 按 World Partition 计算的方式,以限制加载和待处理加载流式处理单元的总数。

  • 修复了由于 UWorld::RemoveFromWorld 在首次以增量模式启动且未重置 CurrentLevelPendingInvisibility 后以非增量删除移动完成而导致的关卡流式处理中的无限循环。

  • 防止在激活世界分区单元时异步加载刷新。

  • 修复了垃圾标记关卡未被赋予唯一名称,导致它们被重新加载的 bug。

  • 附加了 Actor Pre/PostSaveRoot 转换修复。

  • 修复了 WorldPartition 映射未发现已煮熟的 FunctionalTest 的问题

  • 清除 SimpleConstructionScript 后重新编译骨架类,以避免在将新组件添加到 Packed Level Actor 蓝图时发生组件名称冲突。

荒废的:

  • 删除了 DataLayerSubsystem,因为 DataLayerManager 取代了其功能。

  • UWorldPartitionRuntimeCell::IsLoading、UWorldPartition::UpdateStreamingState 和 UWorldPartition::CanAddLoadedLevelToWorld 已弃用。

  • 删除了 CanBeUsedByLevelInstance。启用了世界分区的关卡实例仍会嵌入到其父世界网格中,而与 bEnableStreaming 的值无关。

删除:

  • 删除了菜单选项“在 DataLayer 下创建数据层”,因为 DataLayerInstanceWithAsset 永远不会允许它,因为它是在没有任何有效 DataLayerAsset 的情况下创建的。

  • 删除了后缀 - DataLayer Outliner 中 DataLayerInstances 的父节点上的 WorldDataLayers

地方化

API 变更:

  • 实现了本地化数据的异步加载,并扩展了动态加载以处理显式加载的插件。

    • BeginInitGameTextLocalization并已作为此更改的一部分被删除。EndInitGameTextLocalization

    • 您现在只需使用(异步),后跟 .InitGameTextLocalizationFTextLocalizationManager::WaitForAsyncTasks

新增功能:

  • 为 实现。MinimumGroupingDigitsFastDecimalFormat

  • 默认启用西班牙语的“最小两个”分组。

    • 这可以通过控制台变量禁用。Localization.SpanishUsesMinTwoGrouping

    • 启用后,“1234”的格式为“1234”而不是“1 234”,但“12345”的格式仍为“12 345”。

  • 添加了一个重载,可让您控制回退词法比较模式。FTextProperty::Identical_Implementation

  • 实现了本地化数据的异步加载,并扩展了动态加载以处理显式加载的插件。

    • 此更改采用了为游戏本地化数据添加的对异步加载的现有支持,并将其扩展为涵盖所有本地化数据。

    • 异步本地化任务作为依赖项链接在一起,以保留现有的操作顺序,并且可以在任何时候(例如,在加载屏幕之后)通过调用来等待(尽管引擎初始化流负责等待您,除非您正在加载其他插件/分块本地化数据)。FTextLocalizationManager::WaitForAsyncTasks

    • 此更改采用了对在 PAK 块加载上动态加载分块本地化数据的现有支持,并将其扩展为支持动态加载任何其他本地化数据。

    • 引擎使用它来支持动态加载与显式加载的插件关联的本地化目标。这些负载都是异步的,因此如果需要阻塞它们,则必须等待它们。

  • 添加了将当前实时表状态转储到日志的命令。可以选择使用以下任何通配符参数进行筛选:Localization.DumpLiveTable

    • Namespace:要筛选的命名空间。

    • Key:要筛选的键。

    • DisplayString:要筛选的显示字符串。

  • 用于确保本地化资产不包含悬空重定向器的验证器现在会正确考虑本地化和非本地化资产都是指向相同相应路径的重定向器的情况。

Bug修复:

  • 使用 RAE 样式的西班牙语数字时,请始终使用空格和逗号作为组和小数点分隔符。

  • 修复了从已加载为编辑器世界的世界分区世界收集本地化数据时的断言。

  • 修复了在语言更改时,使用空源字符串创建的文本无法正确解析的问题。FText::FindText

在线

新增功能:

  • 将 Join in Progress 添加到社交调试命令列表中。

  • MPA 活动现在设置/取消设置与可加入性隐私同步。如果不需要,请设置为 。setMpaActivityInPrivateSessiontrue

  • 添加了已弃用的 IAP 蓝图节点的替换项:

    • 进行应用内购买 v2 已被新的“开始应用内购买”节点所取代。

    • 处理任何新的未处理的购买 v2 已替换为新的“获取已知的应用内收据”节点。

    • “自有购买的查询”已替换为新的“自有应用内商品查询”节点。

    • 恢复应用内购买 v2 已被新的“恢复拥有的应用内产品”节点所取代。

    • 新节点允许重用验证/授予逻辑,因为它们在其输出上共享收据的通用类型。

    • 此外,还添加了“完成应用内购买交易”,因此被许可人可以在处理后使用收据完成交易。

    • 所有交易都应完成。任何未在本地或服务器端完成的交易都将由 GooglePlay 退款,而未在本地完成 iOS 上的交易可能会导致性能不佳

    • 游戏中的建议流程应为:

    • 在启动/登录后“查询自有应用内产品”,然后验证/授予缺失的产品并最终确定这些收据。

    • 当用户使用“开始应用内购买”发起购买时,验证/授予产品并最终确定收据。

    • 每当游戏可能需要检查产品的更新时,如果游戏需要完整更新,它可以“查询自有购买”,或者如果对从商店服务器更新数据不感兴趣,则可以“获取已知的应用内收据”。

    • 之后,可以验证/授予产品,并应最终确定收据。

    • “恢复自有应用内商品”与 Android 上的“查询自有购买项目”相同。

    • 在 iOS 上,它在付款队列上调用 restoreCompletedTransactions,从而为非消耗易提供所有已处理的收据。

  • 在系统中添加了一个条件,以确定目标文件系统当前是否受到限制,如果是,则停止文件写入。BuildPatchServices

  • 转换在线子系统定义为全局 FNames,以避免每次使用时都进行查找。

起色:

  • 改进了POSIX ICMP代码,并添加了控制台命令以直接测试ICMP。

  • 移至受保护,以便可以被子类覆盖。USocialDebugTools::PrintExecCommands

荒废的:

  • 标记已弃用的 IAP 蓝图节点并创建了替换节点:

    • 进行应用内购买 v2 已被新的“开始应用内购买”节点所取代。

    • 处理任何新的未处理的购买 v2 已替换为新的“获取已知的应用内收据”节点。

    • “自有购买的查询”已替换为新的“自有应用内商品查询”节点。

    • 恢复应用内购买 v2 已被新的“恢复拥有的应用内产品”节点所取代。

HTTP协议

新增功能:

  • 添加了对 http 请求的非游戏线程支持。

  • 新增 http 推流下载接口。

  • 添加了新的测试项目 WebTests 和相应的 Web 服务器来测试 HTTP。

  • 在 http 请求中添加了 64 位长度的文件下载支持。

  • 将 LLM 标记添加到分配挂钩中。CurlHttp

Bug修复:

  • 允许使用空协议列表创建 websocket,这会导致未添加相应的标头。WinHttp

在线子系统

新增功能:

  • 向 OnlineServices 大厅界面中的方法添加了 LobbyId 覆盖选项。添加了使用新选项的逻辑。CreateLobbyLobbiesEOSGS

  • 添加了宏,使联机错误能够在命名空间之外定义。UE_ONLINE_ERROR_EXTERNALUE::Online::Errors

  • 添加了对 OSSv2 大厅的状态跟踪。

  • 添加了在 OSS EOS 上触发委托的逻辑。OnQueryUserInfoComplete

  • 添加了对命令行上用引号括起来的支持。BuildIdOverride

  • 添加了访问器,以允许通过基本 .GetInterfaceIOnlineServicesIOnlineServices

起色:

  • 修改了登录参数,以允许使用除身份验证票证之外的更多参数。OnlineBeaconClient

Bug修复:

  • 修改了OSS EOS使用的Switch的默认缓存目录。

  • 延迟回调执行,以匹配 OSS EOS 会话搜索代码中的备用流路径。

  • 重构了 OSS EOS 好友状态更新处理程序方法,以触发相应的相应 UE 委托并保持连贯状态。

  • 重构了EOS大厅创建逻辑,以便在更新步骤失败时销毁大厅。

  • 在 周围添加了关键部分。FOnlineSubsystemModule::OnlineSubsystems

    • 这修复了当多个线程访问时的竞争条件,观察到这是多线程反序列化的一部分。FOnlineSubsystemModule::GetOnlineSubsystemFUniqueNetIdRepl

  • 重构了 OSS EOS 会话界面中的会话更新代码,以确保非所有者大厅成员可以更新自己的大厅成员设置,以匹配 API 功能。

  • [在线服务]添加了对处理更多操作缓存设置的支持,基于持续时间,并提供缓存错误结果的设置。

    • 限制飞行中的并发操作。

    • 修复了一些操作在完成时没有被删除/销毁的问题。

删除:

  • 删除了 类型: 和 的不受支持的成员。LobbyMemberPlatformAccountIdPlatformDisplayName

  • 删除了 OSS EOS 方法中的提前退出,以便通过 EOS 覆盖处理已接受的好友邀请。FriendStatusChanged

像素流送

新增功能:

  • 添加了捆绑的 get_ps_servers 脚本从 Github 拉取版本的功能。

  • 添加了一个新框架,允许将任意配置设置传递到流式处理基础结构。

起色:

  • Linux 上 PixelStreaming 的默认查看器端口现在是 8080。端口 80 在 Linux 上需要 root 权限,因此可以避免提升权限。

Crash Fix:

  • Fixed a crash caused by using UPixelStreamingSignallingComponent Blueprint types.

  • Fixed a crash that occurred when using OfferToReceive on Firefox.

  • Fixed a crash that occurred on shutdown.

  • Fixed a deadlock that occurred when using DX11 on AWS instances.

  • Fixed a crash that occurred when running with -onethread and encoding VPX.

  • Fixed a crash that occurred when a port was not provided for -PixelStreamingURL.

Bug Fix:

  • Fixed a bug where the embedded signaling server would not serve the images directory as expected.

  • Fixed a bug where showcase.html would not display images when using an embedded signaling server.

  • Fixed a bug where the embedded signaling server could not connect to the frontend.

  • Server targets can now build with PixelStreaming Blueprints enabled.

  • Fixed a race condition that could occur during stats collection.

  • Fixed a bug where the minimum bitrate could be set higher than the maximum bitrate.

平台

Bug修复:

  • 添加了一项检查,以防止使用 IoStore 创建压缩或加密的内存映射内存。

  • 修复了当前版本的 MSVC 上的地址清理程序编译错误。

桌面

崩溃修复:

  • 修复了使用 WindowsMoviePlayer 播放 2 部启动电影时发生的崩溃问题。

Linux操作系统

新增功能:

  • 添加了 sigaction 失败检查。

  • 提供了一个选项,用于在需要迭代速度的情况下禁用。( 或设置 )。dump_syms-NoDumpSymsbDisableDumpSyms

Bug修复:

  • 阻止在窗口拖动期间弹出工具提示。

  • 替换为 。如果在 中指定,则指定信号处理函数而不是 。sa_handlersa_sigactionSA_SIGINFOsa_flagssa_sigactionsa_handler

  • 在计算位置时开始考虑 Linux 扩展坞尺寸。

  • 修复了“TWeakObjectPtr”在 LLDB 中未正确索引的问题。

  • 修复了从 Windows 编辑器在远程 Linux 机器上启动的问题。

  • Fixrf DPI 比例在 Linux 中的 Odyssey G9 5120x1440 显示器上不正确。这些显示向窗口系统报告无效的显示信息,从而导致非常高的比例值。

  • 修复了由于配置变量被意外覆盖而导致的崩溃报告器并不总是显示在 Linux 上的问题。

  • 修复了 Linux 上的模态窗口行为与其他平台不匹配的某些情况。

  • 更正了 FramePro 中一些不正确的事件重置代码。

苹果电脑

新增功能:

  • 将一些 MacMenu 调用移至 MainThread,以避免在主线程检查器中创建错误,这在将来的 MacOS 版本中将是致命的。

  • 添加了编码器故障跟踪以帮助诊断 GPU 崩溃。

崩溃修复:

  • 修复了由于缺少视口而导致 Mac 上的 Dump GPU 崩溃的问题。

  • 修复了在Mac上显示某些弹出窗口时可能发生的冻结问题。

Bug修复:

  • 修复了 Apple Silicon 上不正确的时间戳查询计算。

  • 在 Mac 上,UE 将不再在每次按键时重建缓存菜单。这可以防止当用户按下键盘上的键时编辑器/预览中的 FPS 下降。

  • MacSystemIncludes现在取消定义,因此可以由 UE 为 pixelformat 而不是 .这是长包含链的结果,其中从 拉入网络代码,这反过来又导致定义而不是 UE。PF_MAXsocket.hCocoa.hPrintCore.hsocket.hPF_MAX

  • 添加了对 CRC 的一些检查,以确保它确实存在并且是可执行的。

XR光谱仪

新增功能:

  • 在 IOpenXRExtensionPlugin.h 中添加了一个用于访问 StereoLayers 的接口。

  • 添加了对XR_FB_composition_layer_alpha_blend扩展的支持。

  • 在 OpenXR 插件中添加了对圆柱体和等效层的支持。

  • 添加了对 XR_FB_foveation OpenXR 扩展的支持。

  • 添加了启用/禁用 OpenXR 注视点的设置。

  • [ARSession配置]添加了候选图像删除方法。

  • [OpenXR的]您现在可以通过 cvar 禁用深度图层。

  • [PSVR2系列]可调整的最大眼睛纹理大小现在允许 PixelDensity > 1.0,并设置以控制限制。

起色:

  • 默认情况下,Hololens 设备检测现在将在编辑器启动后进行,以减少启动时间。可以在 Hololens 项目设置中更改此设置。

  • 适用于 Android 的 ARCore SDK 更新到 1.37 版本。

  • [OpenXR的]现在,如果非 Oculus Android 平台上的 Android 应用未针对 Oculus 移动设备进行配置,则可以通过更改为 false 来启动 OpenXR。vr.DisableOpenXROnAndroidWithoutOculus

  • 减少 XR 电子手的使用。

  • 通过将 HeadMountedDisplay 模块移动到 XRBase 插件,减少了这些模块的总内存使用开销。

  • [OpenXRHand跟踪]改进了对将手部跟踪与控制器一起使用的支持。

  • Meta Quest 设备的打包设置已从设备列表更改为一个复选框,用于为所有 Meta Quest 设备启用打包功能。

  • OpenXR 标头已更新至 OpenXR SDK 1.0.27 (2023-03-21)。

  • 向 MotionControllerComponent 的 MotionSource 添加了工具提示。

  • [PSVR2系列]消除了对预先注册缓冲区进行重新投影的依赖。

  • [OpenXR的]现在将记录运行时支持的扩展。

  • [OpenXR的]优化了图层和旁观者屏幕使用的 CopyTexture 操作。

崩溃修复:

  • 修复了与 SteamVR 上的平面反射相关的崩溃问题。

  • 修复了访问 vr 时发生的崩溃问题。SpectatorScreenMode CVar,未连接控制器。

Bug修复:

  • [AR引脚]修复了错误,并且更新不正确。TrackingToWorldTransformWorldScale

  • [方舟]现在,当删除 ARPin 时,将释放 ARKit 锚点。

  • StereoLayerManager 不再使用无效的 FLayerData。

  • 控制台变量现在仅在下一次 VRPIE 重新启动时获取运行时更改。xr.OpenXRForceStereoLayerEmulation

  • 现在,当立体图层的 actor 被销毁时,立体图层会被正确移除。

  • 修复了与 HMD 和旁观者屏幕上模拟立体声图层的 alpha 相关的 bug。

  • 修复了 XRDeviceVisualizationComponent 无法正确启动设备模型可视化的 bug。

  • 修复了移动预览 VRPIE 比 HMD 中显示的更暗的问题。

  • 修复了使世界锁定图层渲染在面锁定图层之上的排序功能。

  • 修复了与线程安全相关的错误。FOpenXRHMD::UpdateLayer

  • 修复了在 ARLineTrace 期间发生的未知 ARCore 可跟踪类型断言。

  • [ARCore 可追踪]修复了未释放 ArTrackable 句柄的情况。

  • [OpenXR的]模拟层交换链现在将使用规定的层格式。

  • 修复了涉及平台 RHI 禁用检查的 bug。

  • [OpenXR的]修复了禁用并重新启用立体声时发生的错误。

  • [VulkanRHI] (英语)LLM 标记现在已提前初始化。

  • [方舟]暂停和恢复后,将不再处理无效的相机图像。

  • [方舟]将不再在委托线程上访问相机纹理资源。

  • [OpenXR的]四层现在按预期遵循组件比例。

  • 修复了与 MotionControllerComponent 速度相关的几个问题。

  • [XR抄写]姿势回放现在将与原始时间刻度匹配,而不是尽可能快地回放姿势。

  • 修复了 OpenXRHMD SystemProperties 在 OnStereoStartup 之前未初始化的问题。

荒废的:

  • EnableAutoLoadingSplashScreen 功能已弃用。

  • [ARCore]已弃用和UGoogleARCoreFrameFunctionLibrary::GetCameraMetadata

  • 已弃用 ARCore AR 可跟踪渲染组件。

删除:

  • 删除了已弃用的相机元数据 API。

  • 删除了已弃用的 ARCore 功能。

  • 删除了 HoloLens“Multi”包装。

  • [ARBlueprint库]删除了 4.22 和 4.26 中弃用的函数。

  • 删除了该属性,使可变速率着色行为在移动设备和桌面设备上保持一致。GetMobileVariableRateShadingImage

平台 移动端

新增功能:

  • 优化了移动端的定向光均匀缓冲区更新。

  • 添加了对移动设备上 TAA 上采样的像素着色器版本的支持。

  • 在启用移动 GpuScene 时,添加了对像素着色器中实例自定义数据的支持。

  • 将光栅数据缓冲区更改为 StructuredBuffers。

  • 添加了对移动设备上带有网格绘制顶点颜色的 ISM 的支持。

  • 检测 ARM 平台上的硬件循环冗余校验 (CRC) 指令支持。根据编译环境的不同,这可以是运行时检测或编译时检测。CRC 用于引擎中任何地方的哈希计算,此更改将在支持的设备上提供 ~7 倍的性能改进。

  • 将 RHICommandListImmediate 替换为 RHICommandList,以在移动平台上启用 RDG 传递并行性。

  • 在 Android 和 iOS 上,UE 现在将仅更新用户请求收到的收据列表。由于调用 ,使用 检索到的收据将更新。成功调用 后,成功购买的收据将添加到该列表中。收到的异步事务更新仅触发委托。iOS 上恢复的事务会自动完成,因此最终用户无需执行此操作。IOnlinePurchase::GetReceiptsIOnlinePurchase::GetReceiptsIOnlinePurchase::QueryReceiptsIOnlinePurchase::CheckoutIOnlinePurchase::UnexpectedPurchaseReceipt

  • 添加了对处理 OnlinePurchaseGooglePlay 和 OnlineSubsystemIOS 上的订阅的支持。订阅产品类型现在也会查询到商店。订阅是否有效只能通过对存储的服务器到服务器调用来处理。

    • 您可以通过从文件中设置 [OnlineSubsystemGooglePlay.Store]部分来禁用本地确认和使用。这支持 Google 推荐的服务器到服务器验证。bDisableLocalAcknowledgeAndConsume_`_ in the .ini

    • 引擎为订阅产品使用的产品 ID 应由商店中定义的实际产品 ID 组成,并以“s-”为前缀。

    • 当应用程序使用订阅产品 ID 调用“IOnlinePurchase::QueryOffersById_”_ 时,将收到订阅产品的多个产品条目。收到的产品上的产品 ID 将包含:

    • ++ 带前缀的产品 ID

    • ++ 基本计划

    • ++ 基本方案中的报价

    • ++ 不同的价位。

    • 例如,这可能是由“_IOnlinePurchase::QueryOffersById”_ 创建的 ID 列表,该列表请求“s-test_subscription_1”的信息(在存储中仅标识为“test_subscription_1”)。

  • r.Mobile.EarlyZPassOnlyMaterialMasking现在按着色器平台进行处理。

  • 增加 Shader在不使用 .MaskedInEarlyZ

  • r.Forward.LightLinkedListCulling对于未从中受益的平台,现在设置为 0。这在 GPU 上节省了大约 0.1 毫秒。

  • 在 Vulkan 上添加了对 Inline RT Shadows 的支持。

  • 色调映射 LUT 通道现在仅在需要时运行。

  • 在支持距离场的移动平台上添加了对 CollisionMode 的支持。PCM_DistanceField

  • 删除了 ,因为 GL ES 3.2 标准具有 .SupportsCopyImageglCopyImageSubData

  • 默认情况下,在设备平台中禁用对移动设备的容量支持。从 DataDrivenPlatformInfo 中删除了 bSupportsVolumetricFog。

  • 添加了一种新模式,用于在移动前向渲染器中渲染局部光源。您可以通过设置为 2 和 1 来启用此模式。r.Mobile.Forward.EnableLocalLightsr.Mobile.EarlyZPass

  • Mobile Light Prepass 现在默认处于禁用状态。

  • 已从“移动的全局距离字段”中的 DDSPI 中删除。bSupportsMobileDistanceField

崩溃修复:

  • 修复了在移动设备上启用定向光和聚光灯阴影传输时发生的崩溃问题。

Bug修复:

  • 移动渲染现在在启用全深度预处理时对 SceneDepth 进行采样,而不是提取 SceneDepthAux。

  • 修复了在禁用静态照明的情况下使用移动延迟渲染器时贴花缺少天光的 bug。

  • 光通道为无 (0) 的定向光现在可以延迟在移动设备上投射阴影。

  • 修复了移动设备延迟时缺少简单光线的 bug。

  • 修复了在编辑器中拖动静态网格体时缺少局部光的 bug。

  • 修复了失真通道未使用与基本通道相同的像素格式的问题。

  • 以前,即使启用了全深度预传递,带有蒙版的对象仍会在像素着色器中执行蒙版剪裁。此问题已解决。

  • 修复了在移动延迟渲染器上执行 DrawMaterialToRenderTarget 时启用 DepthStencilState 时,depthRT 在传递期间为空的 bug。

  • 修复了在移动设备上呈现黑色的薄半透明材质的错误。

  • 修复了 Surface LightingVolume 的 IBL 反射。

  • 修复了 IOS 13 以及某些 PowerVR Android 设备上由 Niagara Mesh Renderer 着色器导致的 GPU 崩溃问题。

  • 修复了 GPUScene 上传器大小限制检查。

  • 间接光阶现在可以在移动设备上正确应用。

  • 将时间抗锯齿移回后处理链的末尾以节省带宽。它现在过滤了光晕输入,以去除闪烁的白点。

  • 修复了移动设备上的调制阴影渲染问题。

  • 修复了 GenerateGlslShader 中的一个 bug,当一个字符串是 ReflectData 中另一个字符串的子字符串时,该 bug 会发生。

  • 修复了在移动预览版中对目标设备的处理。

  • Quad Complexity 现在可正常用于移动预览。

人造人

新增功能:

  • 添加了一种使用 adb shell 向 Android 应用提供命令行的方法。现在,您可以从 adb shell 启动 Android 应用,并使用参数 提供命令行参数。-cmdline "arguments"

  • 现在允许在 OnlineSubsystemGooglePlay 中在一次交易中购买多个产品。

  • 将 Java 1.8 设置为 sourceCompatibility 和 targetCompatibility。

  • 在Android上,低级内存跟踪器(LLM)的总统计信息上限不低于总跟踪量,因为在某些设备上,UE无法读取进程分配的总内存中的GPU部分。然而,LLM在GPU相关分配方面也依赖虚幻引擎。

  • 现在,Android 上默认启用高级二进制压缩。

  • 升级了 Android Studio (Flamingo 2202.2.1) 和 Gradle(7.5 并使用 2202.2.1 中的 OpenJDK 17)。

  • 添加了对 Lumen Diffuse Indirect 的支持,而无需在桌面渲染器中使用双源混合。

  • 更新了 Android 上的力反馈支持:

    • 使用 VibrationEffect 进行强度控制。

    • 如果值不是零(默认为 1),则将反馈转发给控制器。Android.UseControllerFeedback

    • 当应用程序在后台运行时,不会继续反馈。

  • 为 Android OBB 文件添加了 Overflow 3 和 4。使用 OverflowOBBFileLimit 项目设置来设置允许的数量。OverflowOBBFileLimit 的默认值为 2,但最多可以将其设置为 4。

  • 更新了适用于 Firebase 的 Google-Services 插件。

  • 将 Swappy 更新为 Android GoogleSource 的最新版本。修改为始终使用 Java DisplayManager 和刷新率选择,因为它在某些设备上更可靠。

  • 添加了额外的Razer Kishi游戏手柄识别。

  • 添加了 WebViewTextureSize CVar 来控制 Android WebBrowser 中的纹理大小。DefaultEngine.ini

崩溃修复:

  • 修复了从 UMG 播放时崩溃的问题。.mp4

Bug修复:

  • 修复了阻止在 OpenGL 上渲染自定义深度的 bug。

  • 修复了在 OpenGL 上调度间接计算着色器时缺少 CommitComputeResourceTables 的 bug。

  • 修复了在 Android 设备上进入后台后媒体无法恢复的 bug。

  • 更改了 Gradle 生成的位置,以避免用于重定向该位置。.apkoutputFileName.apk

  • 修复了在较新的 Gradle 版本中使用 / 而不是手动删除生成时的争用条件。.apkcleanPackageDebugcleanPackageRelease.apk

  • 前进键按下 UI,即使屏幕上显示虚拟键盘。这将允许将硬件键盘与 EditText 字段一起使用。

  • 删除 Android 上的表情符号过滤。现在可以从Android屏幕键盘输入表情符号。

  • 修复了带硬件键盘的 IME。

  • 修复了导致指纹扫描仪被错误地检测为控制器的问题。

  • 仅当为 Android 启用了 App Bundle 时,才会归档 AAB。

  • 通过降低设备振动器强度的更新频率来纠正性能问题。

  • 修复了 Android 12+ 上的 Xbox 和 Razer 有线控制器。

  • 将 /sdcard/Android/obb 用于所有构建类型的 OBB。由于存储访问限制,不再使用 /sdcard/obb。

  • 清除 SetupAndroid 脚本中的环境变量。这不应该使用新工具进行设置。ANDROID_SDK_HOME

  • 对 Android 文件系统中的 GetEntryLength 略有改进。

  • 如果 Android 后台下载器插件断开连接,它现在将监控网络状态并在重新连接时恢复后台下载。

  • 修复了 Android 定位服务的 OnLocationChanged 广播,以正确使用游戏线程。

荒废的:

  • libc++_shared.so默认情况下不再包含在 Android 上的包中,因为虚幻引擎不再支持针对 ..apklibc++_shared.so

iOS、Apple tvOS 和 iPadOS

崩溃修复:

  • 重构了 Metal 上的资源转换。删除了 PrologueEncoder,因为它未正确同步。这修复了启用移动 GPUScene 的 iPhone14 上的闪烁和崩溃问题。

Bug修复:

  • 修复了在 IOS 移动设备上的 SunMask 中对 SceneDepthAux 进行采样延迟时发生的错误。

荒废的:

  • 基于 NSUrlConnection 的 IHttpRequest 实现已标记为已弃用。此功能将在 5.4 中删除。

奎克塞尔

新增功能:

  • Quixel Bridge 2023.0.3改进了MetaHuman导出的版本处理。

渲染

API 变更:

  • 如果着色器引用 GPUScene 或场景统一缓冲区中的其他字段,则 RHI 验证需要场景 UB 的有效引用。如果未设置此项,您可能会看到如下错误:Shader 期望在插槽 5 处有一个统一的缓冲区,但结果为 null (Shader='' UB='Scene')。呈现代码需要为此插槽设置有效的统一缓冲区。这可以通过将 SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneUniformParameters, Scene) 字段添加到着色器参数结构并使用 FSceneView 中的帮助程序方法设置其值来解决。如果无法识别缺少引用的着色器,可以使用“-rdgimmediate -rdgdebug -onethread”运行,并在调用堆栈中查找着色器。

新增功能:

  • 添加了体积云控制台变量“r.VolumetricRenderTarget.MinimumDistanceKmToEnableReprojection”,以帮助隐藏由于云深度作为单个前表面的不完美近似而导致的重新投影问题。这在飞过云层时尤为明显。这并不能隐藏所有问题,但在很多情况下会有所帮助。使用这种方法的问题是,当靠近该距离时,云看起来会更嘈杂。

  • 通过正确使用 CloudSampleNormAltitudeInLayer 优化了体积云阴影。这可以使性能优势提高 5% 到 10%。

  • 添加了对 Groom 流式传输的支持。这允许您根据使用情况加载和卸载内容。这是实验性的,默认情况下是禁用的。您可以使用控制台变量“r.HairStrands.Streaming”来启用它。

  • 向 Grooms 添加了 AutoLOD 设置。这允许它根据屏幕覆盖范围动态调整活动曲线的数量。这样就不必使用手动离散的LOD进行设置,而是在更精细的颗粒上调整曲线计数。结合流式处理,它降低了 GPU 时序/内存使用率。这是实验性的,可以按资产选择加入。可以使用“r.HairStrands.AutoLOD.Force”对所有新郎强制执行 AutoLOD。

  • “WPO Disable Distance”材质表达式现在适用于非Nanite静态网格体。

  • 避免不必要的光线追踪:对发丝进行阴影追踪,在具有许多灯光的测试用例中节省 25% 的阴影成本。

  • 添加了属性视图模式处于活动状态时的头发属性值选择。

  • 确保将 GPU 场景实例计数限制为最大 GPU 可表示索引 (16M),以防止溢出崩溃。

  • 新增 ShaderPrint GPU 字符串,允许将字符串上传到 GPU(例如,资源名称)

  • 在实例静态网格体组件上为“NumCustomDataFloats”添加了蓝图公开的 setter 函数。

  • 在头发 LOD 面板中添加了 LOD 曲线/点计数。

  • 将 Groom RootUV 更改为可选。如果导入的新郎没有导入 RootUV,我们将不再生成球面映射。

  • 将 FAtlasTextureInvalidationScope 设为公共,以便外部代码(插件)可以使特定纹理失效(例如,用于 CPU 数据上传)。

  • 添加了命中代理的覆盖率阈值,以控制可以选择的覆盖率。

  • 添加了指南类型,以简化对不同类型指南的理解/操作。这允许直接从 Groom 编辑器编辑绑定。

  • 在物理设置中添加了一个选项,以强制 Niagara 组件可见。这允许用户在使用自定义求解器时利用 Niagara 渲染。

  • 改进了远场场景管理,支持超过 4M 的实例。

  • 添加 Groom Memory Stats。

  • 在体积云渲染中添加了从 / 到工作色彩空间的必要转换。

  • 更改了在 groom 上处理模拟缓存的方式,以修复动态分配。梳理资产现在需要选择加入以支持梳理缓存。这种选择加入可确保插值数据是为新郎资产构建的属性。在属性网格中分配修饰缓存时,会自动启用此选项。启用了模拟缓存支持的 groom 资源现在可以在运行时通过蓝图获得 groom 缓存。这避免了在使用模拟缓存运行时生成实际模拟。

  • 除了位置之外,新郎变形器(实验性)现在还可以写出属性(CV 颜色、半径等)。属性和指南数据也是可读的。

  • 在 Groom 资产编辑器中添加导入属性的可视化效果。

  • 添加了第二个虚拟阴影贴图分辨率偏差,用于移动灯光,并跟踪正在移动的灯光。当光线停止时,会逐渐过渡到原始偏置。添加了可扩展性控制台变量 r.Shadow.Virtual.ResolutionLodBiasLocal、r.Shadow.Virtual.ResolutionLodBiasDirectional 和 r.Shadow.Virtual.ResolutionLodBiasDirectionalMoming,以配置当前正在移动的光源的 LOD 偏差。

  • 将 VRAM 信息附加到 AppendStaticClientPerformanceAttributes。

  • 添加了每个基元枚举 (ShadowCacheInvalidationBehavior),使用户能够覆盖影子失效的默认引擎行为。这对于防止例如静态 WPO 的失效非常有用。

  • 更改了 GPU 场景数据以缩小和增长。控制台变量“r.GPUScene.UseGrowOnlyAllocationPolicy”可用于禁用新行为。

  • 防止实例过度分配导致编辑器/引擎崩溃,将 GPU 场景大小限制为 MAX_INSTANCE_ID,即 16M。添加了日志记录 + 屏幕消息以显示问题。

  • 添加了控制台变量“r.CaptureNextDeferredShadingRendererFrame”以触发捕获以下延迟场景渲染。例如,RenderDoc 或 PIX。

  • 添加了在 Nanite LOD 流更改时触发虚拟阴影贴图失效的功能。这是实验性的,使用“r.Nanite.VSMInvalidateOnLODDelta”(默认值:off)进行控制。

  • 添加了一个新的全局统一缓冲区,范围限定为场景而不是视图,并将 GPUScene 从视图移动到此缓冲区。场景 UB 使用 RDG(与 View 不同),并且是模块化的。

起色:

  • 减少了修饰群集资源大小 (~ -15%)。

  • 将每 CV 的修饰颜色精度从 8/8/8 位提高到 11/11/10 位。

  • 改进了游戏视口和场景捕获中场景视图扩展调用的一致性。

  • 将群集剔除更改为在单次传递中完成。这节省了大约20%的插值工作成本。聚类不是基于第一条曲线计算的,以避免昂贵的聚类绑定计算。

  • GPU 皮肤缓存更新渲染线程优化。由于工作批处理,渲染多个启用了皮肤缓存的骨架网格现在应该处理得更快。

  • 改进了 Groom Cache 更新其数据的方式。插值现在在 GPU 上运行,并且 GPU 资源现在被缓存,以避免每帧不断重新上传数据。

  • 改进了像素检查器的命名,固定了透明度,允许负值,并确保亮度也符合工作色彩空间。

崩溃修复:

  • 修复了导入仅限 groom 的指南缓存时崩溃的问题。还修复了导入半径为零的参考线时崩溃的问题。

  • 修复了使用nDisplay时头发崩溃的问题。

Bug修复:

  • 修复了在进出云层时可能发生的体积云的跟踪中断。

  • 现在,如果关闭了遮挡查询,我们将确保将其从内存中清除。

  • 现在,当使用异步计算生成 LUT 时,云阴影评估适用于 SkyAtmosphere。

  • 修复了“GeForceNOWWrapper::GetClientCountryCode()”未将输出参数写入国家/地区代码的问题。(2 字符国家/地区代码)。

  • 修复了一段时间后发生的体积云闪烁的问题。额外的摄像机剪辑逻辑既不安全又不稳定。

  • 修复了当起始距离大于或等于 1 时体积云上的高度雾不起作用的问题。

  • 修复了天空大气 SkyLightLUT 不考虑覆盖的光线方向的问题。

  • 修复了在太空中从远处观看时闪烁的 SkyViewLUT 纹理。

  • 修复了异步构建时静态网格体在加载时被标记为脏的问题。

  • 固定的头发用缩放转换和考虑头发宽度,使大宽度正确地增加束缚尺寸。

  • 修复了使用两个以上的 RayTracingScene 图层时导致崩溃或 GPU 挂起时不正确的暂存缓冲区地址。

  • 修复了 Groom 缓存(指南/链)渲染和指南缓存调试可视化

  • 修复了在蓝图中刷新修饰细节的问题。

  • 修复了在附加到骨架网格时如何计算 groom 的 CPU 边界。

  • 通过避免加载资源,修复了在 Groom 资产编辑器中缓慢打开 Groom 绑定选项卡的问题。

  • 修复了使用路径追踪器同时启用“隐藏在游戏中”和“隐藏阴影”设置时缺少新郎阴影的问题。

  • 修复了 MediaTexture 的 Rect Light 支持。当这些纹理被分配给矩形光源时,缺少无效以刷新其图集内容。

  • 修复了新郎没有组 ID 映射时组名称不正确的问题。

  • 使用立体渲染修复了发丝渲染。

  • 修复了当场景没有天空组件时头发场景散射不运行的问题。

  • 修复了头发物理设置在自定义重置时正常工作的问题。

  • 修复了以下问题:当预览指示器由于缺少材质而未实际渲染时,阴影蒙版纹理被错误地标记为由于预览阴影指示器而已使用的问题(例如,在熟构建中)。

  • 修复了某些主机平台上 Nanite 自定义深度渲染的 bug。

  • 修复了画布“半透明”混合选项的 Alpha 通道输出不正确的问题。它现在在内部使用“AlphaBlend”。

  • 修复了级联阴影贴图中的定向光预示,该预示在最近更改为大世界坐标的WORLD_MAX后被破坏。

  • 修复了蓝图封装组件上的“绘制调试胶囊”选项以不正确的比例渲染的问题。

  • 在创建 SceneProxy 之前,请验证我们是否具有 InstancedStaticMeshes 的当前 MinLOD 的顶点数据,以防止在某些情况下崩溃。

荒废的:

  • 已弃用对 groom 和 groom 绑定成员的直接访问。

  • 弃用了光线追踪天光,并将其从项目设置中移除。

建筑

新增功能:

  • 将所有不可变的几何体集合渲染数据移动到几何体集合资源中。这是作为几何集合 DDC 内容的一部分构建的。场景代理已重新设计以使用此数据。

  • 添加了从实例化静态网格体组件中删除实例时“交换时移除”的可选用法。还添加了一个控制台变量,以强制使用“r.InstancedStaticMeshes.ForceRemoveAtSwap”的行为。RemoveAtSwap 应该比以前的行为更快,但可能会破坏依赖于当前行为的任何代码。

  • 从 RenderResourceViewer 中隐藏 MarkedForDelete 资源

  • 在 DX12 缓冲区上添加了 Insight 资产元数据跟踪

  • 添加了 DECLARE_UNIFORM_BUFFER_STRUCT API 宏,以允许解耦统一缓冲区参数结构声明和定义。统一缓冲区参数结构可以向前声明,因此可以由第三方使用,而无需公开完整定义。

  • 如果变形顶点缓冲区尚未更新此帧或某些帧,请对以前的变形数据使用上次更新的变形缓冲区,以便抵消运动矢量。这修复了使用变形滑块预览编辑器中“变形目标预览”选项卡中的抖动问题。

  • 添加了 Insight 内存跟踪 DirectX12 内存分配器跟踪。

  • 根据用户反馈更改了“渲染资源查看器”(Render Resource Viewer) 的标志复选框的行为。取消选中后,设置了该标志的资源现在将隐藏在显示中。此外,默认情况下,删除“无”标志复选框并隐藏瞬态资源。

  • 添加了“r.SceneCapture.DepthPrepassOptimization”以加快场景捕获的预通道深度渲染。这是一项短期优化,用于支持某些需要深度预传递的功能,目前只能利用 SceneCapture 来实现它。请注意,打开它意味着在深度预传递(例如 SingleLayerWater)之后的渲染将被忽略,因此结果与控制台变量关闭时不同。

  • 向 rhi 添加了输出所有者名称。DumpResourceMemory 命令。

  • 在 DX12 纹理上添加了 Insight 资产元数据跟踪

  • 在 IRendererModule 中公开了 CreateSinglePrimitiveSceneUniformBuffer,以便可以使用公共接口创建 Scene UniformBuffer。

  • 添加了所选资源的上下文菜单,以及用于在内容浏览器(快捷键 CTRL+B)中查找资源的上下文命令到渲染资源查看器。

崩溃修复:

  • 修复了在加载边框小于 2 的流式虚拟纹理时,仅编辑器 GPU 在未对齐的纹理复制时崩溃的问题。

  • 修复了尝试使用空几何集合网格数据进行渲染时的崩溃问题。

  • 修复了“r.SkinCache.RecomputeTangents=0”在使用皮肤缓存渲染骨架网格体时导致崩溃的问题。

Bug修复:

  • 修复了在运行时虚拟纹理资源上更改材质类型时可能发生的 GPU 挂起问题。

  • 修复了以前未绑定 HZB 的移动设备上每个实例的 GPUScene HZB 实例剔除问题。

  • 修复了为某些实例化对象生成的错误运动矢量。

  • 修复了虚拟纹理池设置的哈希计算错误。这可能会导致我们无法正确检测池大小设置何时更改的问题。

  • 从 FVirtualTexture2DResource 中删除了父 UTexture 的渲染线程访问。这修复了在翻转虚拟纹理 sRGB 标志时触发争用条件检查的问题。

  • 在 check() 中通过一个逻辑修复了静态网格体 LOD 计数。如果我们使用的 LOD 比最大值少 1,这将触发 check()。

  • 修复了在加载线程中实际加载仍在进行时,在 Niagara 的游戏线程上调用骨架网格体后加载的问题。

  • 修复了当多个视口打开时,只有焦点视口在骨架网格体上具有有效速度的问题。通过切换到使用 GFrameCounter 可以解决此问题,GFrameCounter 在每次引擎滴答时递增一次,因此同一帧的多个视图共享相同的值。

  • 修复了外观缓存编辑器调试可视化模式看起来与控制台变量等效模式不同的问题。修复了阴影差异和调试文本无法正确显示的问题。

  • 修复了调试版本中的实例化静态网格体松散参数警告。创建一个松散的参数统一缓冲区来捕获这些参数。

照明

新增功能:

  • 体积雾缓冲区分配现在独立于动态分辨率缩放。

  • 默认情况下,从环境光混合器创建的天空光使用实时捕获。

  • 添加了对 Rect Light Volumetric Fog light 功能的支持。

  • 修复了当光线为大气光时半透明阴影体积的颜色错误的问题。

  • 添加了曝光作为新的照明单元。

  • 改进了与顺序无关的透明三角形排序精度。

  • 添加了虚拟阴影贴图,用于 Substrate 和传统路径的半透明表面的高质量阴影过滤。这是一项全局选择加入功能 (r.Shadow.Virtual.TranslucentQuality)。

Bug修复:

  • 固定的次表面轮廓在特定角度使用光线追踪照明时会产生橙色边缘。该问题是由于对屏幕空间双边滤波的深度没有进行足够的惩罚所致。

  • 修复了聚光灯图集中缺少体积雾灯功能的问题。

  • 修复了纹理流入/流出时不正确的图集打包,并且需要完整的图集重新调整。还修复了启用矩形灯图集力更新且灯被打开和关闭时的崩溃问题。

  • 修复了潜在的光线追踪性能问题,即追踪无效的阴影光线。

  • 修复了从 Rect Light 纹理管理器中删除纹理时不正确的参考计数递减的问题。

  • 修复了点光源/聚光灯的松开半径/长度,导致视觉伪影。

  • 修复了计算 Rect Light 纹理 MIP 时导致图集打包不正确的溢出问题。

流明

新增功能:

  • 现在部分支持 Lumen Reflections 中的高度雾(仅支持高度雾,不支持体积雾)。

  • 半透明的流明反射现在考虑了粗糙度并经历了去噪过程。

  • 带有命中照明的流明反射现在支持多重反射,由后期处理音量中的“最大反射反射”设置控制。

  • Lumen 硬件光线追踪路径现在与异步计算完全兼容,并且在支持的平台上默认启用该路径以提高性能。

  • 为材质添加了布尔值“允许前层半透明”,允许控制给定材质是否应该写入前层半透明。这对于禁止使用“前层透明度”或解决分拣问题非常有用。

  • 改进了基元的流明场景跟踪。现在,只有当基元可以通过当前活动的跟踪方法进行跟踪时,它们才会包含在流明场景中。

  • 在 Lumen HWRT 和光线追踪调试可视化中添加了对 Nanite 光线追踪的支持

  • 将“r.Lumen.Reflections.MaxBounces”限制增加到 64。它控制启用多反射流明反射时的最大反弹次数。

  • 添加了“r.Lumen.Reflections.VisualizeTraces”调试实用程序。它可视化了从当前光标位置追踪的专用反射光线。

  • 在 Lit->Lumen->Overview 可视化模式下,将 Lumen Scene 可视化替换为 Geometry Normals 可视化。“几何法线”视图可用于发现距离场或光线追踪设置的任何问题。

  • 添加了对 Lumen 命中照明路径中双面和薄树叶着色模型的支持。

  • 默认启用光线追踪剔除,以简化初始设置。

  • 改进了全局距离场光线命中评估,降低了对靠近命中点的被遮挡物体表面进行采样的可能性。

  • 进行了重大的 Lumen HWRT 优化,从而影响了针对 PC 的照明优化。

崩溃修复:

  • 修复了将世界空间辐射缓存探测分辨率设置为低于支持值时崩溃的问题。

Bug修复:

  • 修复了 Lumen 正面半透明时未发生不透明度剪切的问题。

  • 修复了使用命中照明反射时具有负比例(翻转剔除)的网格上的几何法线。

  • 修复了由于表面缓存中的自动基元合并而导致 Lumen 无法与 ISM/HISM 一起使用的问题。

  • 修复了启用 Substrate 时“r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.SkipFoliageHits”的问题。

  • 修复了由于 EmbreeRay 问题导致 EmbreeRay.ray.tnear 最终可能比 EmbreeRay.ray.tfar 更远导致无限循环而导致网格卡生成在特定网格上挂起的问题。

  • 修复了在不使用异步流明时错误地应用于自发光之上的材质环境光遮蔽,以及使用异步流明时错误地应用于自发光和直接照明之上的问题。

  • 修复了在将 Nanite 网格捕获到曲面缓存中时,时间材质节点始终设置为 0 的问题。

  • 修复了在仅支持 64 线程宽的 waveop 的 GPU 上运行时的伪影。

  • 修复了由于双边滤波器中硬编码的 1000000.0 截止值而导致远处的反射缺失的问题。

  • 修复了在曲面缓存图集调整大小或压缩设置更改后曲面缓存损坏的问题。

  • 修复了网格 SDF 和高度场的 SWRT 反射迹线反馈

  • 修复了具有大量几何细节(树叶、树木)的场景中的辐射缓存滞后问题。此类场景每帧请求的新探测器过多,导致缓存的探测器无法获取任何更新。

材质和着色器

API 变更:

  • 请改用更高效的 UMaterialExpression::GetInputsView()。

  • 显式使用 FShaderCompilerInput::bGenerateDirectCompileFile 的任何代码都应替换为 EnumHasAnyFlags(Input.DebugInfoFlags, EShaderDebugInfoFlags::D irectCompileCommandLine)。

  • FShaderCompilerEnvironment::GetDefinitions 现已弃用;现在,只有内部着色器预处理代码才能访问预处理器定义的值。以前按值检索定义的任何代码都应通过 FShaderCompilerEnvironment::SetCompileArgument(或通过帮助程序 SetDefineAndCompileArgument,可用于预处理器和编译代码使用的值)设置此类值,并通过 FShaderCompilerEnvironment::GetCompileArgument 检索这些值。

  • 删除 FShaderPipelineCompileJob::bFailedRemovingUnused 的任何用法;在引擎代码中的任何位置都不再需要或使用它。

  • 在极少数情况下,如果存在引用 FShaderCompilerEnvironment::RemoteServerData 的代码,应尽可能将其删除。如果某些用例的其他机制(例如新的编译参数功能)不够用,请联系 UE 开发团队。

新增功能:

  • 优化了有关回路检测的材料表达式。这删除了对 UMaterialExpression::ContainsInputLoop() 的单个调用,而是在 HLSLTranslator::Translate() 中移动了图形循环搜索。由于可以对所有输入进行一次访问,因此可以共享访问的节点集,从而使循环搜索算法 O(n) 恰好访问每个节点一次,而不是 O(n^2) 独立地为每个节点执行循环检查。这种优化与其他优化相结合,可以将昂贵的材料从 5.6 秒转换为 0.9 秒(此测试中使用了 Fortnite 的材料)。

  • 在材质接口序列化函数中添加了代码,用于验证关联的 EditorOnlyData 名称是否为“规范”(材质名称后跟“EditorOnlyData”)。如果名称不是规范名称,则可能会导致编辑器在熟内容上运行时出现问题。验证代码将尝试将 EditorOnlyData 重命名为正确的名称。

  • 添加了对单层水材质后面的虚拟纹理反馈的支持。我们随机地将一些写入内容丢弃到反馈缓冲区中,这样我们就不会覆盖下面表面的所有内容。

  • 删除了旧的 MCPP 预处理器,现在使用新的“stb_preprocess”库完成所有着色器预处理。

  • 进行了更改,修改了该机制并使其面向未来,该机制确定应为特定着色器编译输入转储哪些调试输出。现在不再使用布尔标志的临时集合,而是使用位域枚举类。

  • 在 FShaderCompilerEnvironment 类上添加了新的“编译参数”功能。这旨在用于 IShaderFormat 实现所需的任何泛型参数,作为实际编译过程的输入;以前,预处理器定义被滥用于此类参数。这是即将开展的工作的要求,它改进了作业缓存和重复数据删除机制。

  • 添加了用于验证着色器作业缓存一致性的功能。如果启用,将对所有着色器作业运行编译,即使是那些本来是缓存命中的作业,然后将生成的输出与现有缓存值进行比较。任何不匹配的输出都将转储到 Saved/ShaderDebugInfo/CacheMismatches,其中文件根据输出不匹配的输入哈希命名,以及指示不匹配和关联文件名的日志警告。 由于这通过始终编译作业有效地禁用了作业缓存机制,因此只有在怀疑缓存冲突的情况下才应在本地启用此功能(当 DDC 在着色器映射中报告非确定性时,可能会出现这种情况)。

  • 为光线追踪阴影实现了“GetShadowReplaceState”。

  • 在新的预处理器库的着色器源中实现了对显式 #error 指令的支持。

  • 修复了着色器编译器中不匹配的字符串格式参数(用于 hlslccflags)。

  • 现在,在编辑器中将立方体贴图纹理拖动到网格上会生成一个编译材质。

  • 为对象、actor 和粒子材质表达式添加了摄像机相对原点选项。在相机空间中执行计算更精确,并且通常通过避免材质中的双精度数学运算而更快。

  • ODSC + 暂存构建 — 能够启动暂存构建并仅使用 COTF 服务器处理命令。recompileshaders

    • 添加 cmd 行选项,该选项允许游戏直接连接到 COTF 服务器,但只能发送 ODSC recompileshaders 命令。-odschost=127.0.0.1

    • 如果我们没有默认的 COTF 连接(用于烹饪资产),我们会创建自己的与 COTF 服务器的连接。

    • 重构代码以将命令发送到 COTF 服务器到函数中。这样,如果我们没有“特殊”的 ODSC 连接,我们就可以以这种方式使用命令。

    • 修复了“RecompileShaders material”命令的问题。它只会搜索并找到一种材料并重新编译它。这忽略了任何实质性实例。现在,代码考虑查找所有依赖实例并为它们发出重新编译命令。

  • 添加了烹饪统计信息以跟踪关键路径,游戏线程时间以提交材质编译作业。在 Lyra 上,这占全煮的 ~10.4%,其他所有内容都有热缓存。在 CitySample 上,这占了 ~8.9% 的完全烹饪和其他所有内容的热缓存。-noshaderddc-noshaderddc

  • 将 EffectiveParallelization 添加到用于着色器编译的 cook 分析中。此统计信息显示为“Shaders_EffectiveParallelization”。

    • NewGatherAnalytics 应该抓取 CompileStatsLock,因为它正在读取统计信息 -

  • 添加了控制台变量 r.SSProfiles.Transmission.UseLegacy 以使用旧传输配置文件。默认情况下,此功能处于启用状态。禁用传统传输时,传输配置文件在物理上更准确。启用后,可以通过调整 ExtinctionScale 获得更多艺术许可。

  • 添加了 ComputeAllStateCRC()。这提供了一种更快速地检测材质更改的方法,包括对任何材质函数或材质实例参数的更改。

  • 添加了“材料”选项“始终评估世界位置偏移”。启用后,将始终为材料评估世界位置偏移,并且不能通过组件上的“评估世界位置偏移”或“世界位置偏移禁用距离”来禁用。此覆盖适用于不应禁用“世界位置偏移”(World Position Offset) 的材质,即使出于性能目的也是如此。

  • 添加了着色器编译统计信息以进行烹饪分析。这会将 GatherAnalytics 添加到各种着色器编译类中,允许每个着色器将自己的统计信息传回给厨师。这些统计信息以基本名称“Shaders_”作为前缀。目标是捕获高级统计信息,这些统计信息是性能的良好指标,对于捕获回归很有用。还添加了:

    • 着色器作业缓存统计信息,用于跟踪查询命中、NumInputs、NumOutputs 和 MemUsed。

    • MemBudget 统计信息,包括 ShadersCompiled、TotalThreadTimeForAllShaders 和 TotalThreadPreprocessForAllShaders。

  • 添加了编译器选项标志 CFLAG_CullBeforeFetch 和 CFLAG_WarpCulling,以控制翘曲剔除和提取前剔除硬件优化。

  • 添加了控制台变量 r.MaterialLogErrorOnFailure,当材质编译失败时会发出错误(而不是警告)。此变量默认为 false,但您可以使用以下命令从命令行启用它:-dpcvars=“r.MaterialLogErrorOnFailure=1”

  • 添加了 cook 统计信息以提供 UMaterialInstance::P ostLoad 的路径时间指标。在烹饪某些项目时,这占关键路径时间的 7%。

起色:

  • 材质翻译代码的优化速度提高了 50%。优化函数 UMaterialExpression::GetInputs(),在材质转换期间具有最高的独占运行时间,从 19.79% 增加到 1.79% 独占运行时间。默认情况下,此更改会在创建表达式时缓存输入,并返回 TArrayView,而不是始终创建新的瞬态动态数组。该优化还简化了某些表达式类型的代码。还优化了 ContainsInputLoopInternal() 以使用堆栈分配节点的链表,而不是动态数组中的 Pushing/Popping。

  • 如果我们对虚拟纹理进行采样,但不进行任何虚拟纹理反馈,请不要设置 EarlyZ。对于使用运行时虚拟纹理进行渲染而不使用反馈的情况,这是一个小的优化。通常,这种情况可能发生在景观草上。

  • 实现了对每个材质(而不是每个着色器作业)一次的哈希和计算材质调试名称的更改。FString 在 PrepareMaterialShaderCompileJob 中通过引用传递,而不是复制它们。

崩溃修复:

  • 添加了一个检查,如果材质中的参数绑定到不同的值,则会报告错误,而不是以静默方式尝试编译材质。当在同一材质中使用两个包含绑定到不同值(例如,不同纹理)的共享参数的材质函数时,这会导致崩溃。

  • 修复了“ItemPropertyNode.cpp”中对从弱 ptr 构造的共享 ptr 的访问。代码未测试该对象是否仍然存在,导致在将链接材质混合图层重置为默认值时崩溃。

  • 修复了 MaterialX Luminance 中的一个 bug,该 bug 导致编辑器在从同一连接节点拖动额外的 Luminance 变量后崩溃。

  • 修复了由材质复制代码中的错误导致的崩溃。

  • 实施了更改,以防止当用户选择其 ShaderMap 包含空着色器的材质时编辑器崩溃。此更改只会使编辑器更加健壮并防止崩溃;由于外部问题,ShaderMap 中的着色器在加载后可能为 null。

  • 修复了将材质参数节点重命名为空字符串时编辑器崩溃的问题。现在,重命名“材质编辑器”节点时会忽略空字符串。

Bug修复:

  • 通过将 ExtinctionScale 从 1 扩展到 100,修复了地下剖面着色模型中透射强度过强的问题。当刻度大于 1 时,这会缩短传输距离。

  • 解决了 CompileFXC.bat 的几个问题,这些问题导致其无法正常工作。

  • 解决了 FRHIDispatchIndirectParameters 大小的问题,该问题可能会在某些平台上不必要地导致完全着色器重新编译。

  • 修复了在半透明通道中第二次渲染贴花的问题。对于某些景深设置,包括电影摄影机视图,可能会发生这种情况。

  • 修复了由于着色器代码拼写错误使用 DECAL_RENDERTARGET 而不是 DECAL_RENDERTARGETMODE 导致自发光 GBuffer 贴花过度饱和的问题。

  • 修复了交付版本中的线框颜色问题。

  • 修复了在蓝图编辑器中创建的 MaterialInstanceDynamics 未标记为公共的 bug。这阻止了关卡的保存。

  • 修复了地下透射错误,即透射查找表 (LUT) 基于地下剖面的单位比例错误地构建。

  • 修复了阻止某些材质移动到内容浏览器中的其他文件夹的 bug。该问题是由 Material EditorOnlyData 的无效状态引起的。

  • 禁用了覆盖导致材质实例在为受限(非基础游戏烘焙)父级设置父级时创建新着色器排列的参数的功能。在限制模式下,材质实例无法从不在基础模块中的熟料继承。现在,材质实例可以从这些受限材质继承,只要它们不引入新的静态参数排列,从而引入新的着色器。为了防止出现这种情况,用户界面会禁用会触发创建新着色器的复选框,并在烹饪时执行完全验证,因此即使用户设法创建具有静态排列的材质实例,内容工作者也会拒绝此操作。

  • 修复了在不释放内存的情况下剔除相机视图外的平面反射时发生的内存泄漏。

  • 解决了在烹饪过程中生成不正确的 Material EditorOnlyData 名称消息的问题。

  • 修复了 Clear Coat 着色模型中当基色的某个分量正好为 0.0 时出现的伪影。

  • 修复了 DistanceFieldApproxAO 在材质指定输入 Normal 时返回错误结果的 bug。

  • 修复了一个 bug,即具有不同静态参数值和其他标志集的材质实例会争先恐后地打印出调试信息,从而导致一次运行到下一次运行的调试信息集不同。

  • 解决了作业缓存命中率的回归问题,这是因为调试信息路径始终包含在作业输入哈希的计算中。此信息现在已从哈希值中排除,从而恢复并可能提高命中率。

  • 修复了着色器参数解析器功能中的一个小错误,该错误假定行指令中的行号之间只有一个空格 #line。

  • 修复了 Material Analyzer 中存在 StaticComponentMaskParameter 时发生的崩溃问题。

  • 修复了 UMaterialInterface::GetFontParameterValue 中的枚举错误。

荒废的:

  • 在 UMaterialExpression 中重新引入(并弃用)旧版本的 ContainsInnerLoopInternal()。

  • FShaderPipelineCompileJob::bFailedRemovingUnused 字段已弃用。此字段的唯一用途是将一些信息附加到被确定为不必要的日志消息中。

  • FShaderCompilerEnvironment::RemoteServerData 字段已弃用。由于删除了一些特定于 IShaderFormat 的远程编译功能,因此仅用于将不必要的 ifdef'd out 调试信息添加到关联的着色器。

删除:

  • 从 GatherAnalytics 中删除,因为它现在需要获取锁并调用 GetTimeShaderCompilationWasActive。const

纳尼特

新增功能:

  • 在 WPO 的静态网格上添加一个选项,以不写入速度。我们默认使用写入速度,但如果我们知道我们有“静态”WPO,例如我们不希望它生成运动矢量的面向相机的冒名顶替者,则该选项可能很有用。

  • 添加了对使用 Nanite 的样条网格组件的支持。这是实验性的。

  • 改进了编辑器中Nanite选择轮廓的视觉质量。不再有抖动或遮挡问题。

  • 实现了实例剔除层次结构,并基于此对Nanite实例剔除的支持。默认情况下,该功能处于禁用状态 (r.SceneCulling),并且可能被视为此版本的 Beta 版。

  • 添加了一个新的显示标志,以启用/禁用 Nanite 流数据的可视化 (Show -> Nanite -> Streaming Geometry)。禁用后,Nanite网格将仅以始终驻留在内存中的质量级别进行渲染。

  • 在Nanite网格设置中添加了新的“显式切线”(Explicit Tangents)选项。启用后,切线显式存储在磁盘上,而不是在运行时隐式派生。虽然这需要少量的额外存储成本,但在隐式切线不够精确的情况下,它可能更可取。

  • 优化了 Nanite streamer 的 CPU 开销

起色:

  • 实现了对 NaniteStreamOut 的性能改进。

  • 新的滑动窗口顶点缓存,用于像素可编程。森林场景中的蒙版树叶光栅化速度提高 20%。

崩溃修复:

  • 修复了在构建 Nanite 时,如果网格没有三角形时会发生的崩溃。

  • 修复了 Nanite streamer 在关机时可能发生的崩溃问题。

  • 修复了 Nanite streamer 中可能因 IO 错误而发生的崩溃问题。

Bug修复:

  • 修复了编辑器中的一个错误,即选择 ISM / HISM actor 或组件不会呈现 Nanite 实例的选择轮廓。

  • 修复了Nanite材质上世界位置偏移、像素深度偏移和不透明度蒙版的“阴影通道开关”材质节点。

  • 修复了“相机位置材质表达式”节点,该节点使用Nanite可编程光栅化返回阴影视图的错误位置。

  • 修复了在编辑器中选择和删除 Nanite Foliage 实例的问题。

  • 修复了某些 Nanite 可见集群的标志可能会被清除,从而导致 WPO 被禁用的问题。

  • 修复了主机上 Nanite 的自定义深度渲染问题。

  • 修复了以下问题:在 Nanite 材质中将自定义数据作为向量读取以计算世界位置偏移始终会导致使用默认值。

  • 修复了使用多个视图(例如,分屏和 VR)渲染 Nanite 自定义深度的问题

  • 添加了生成过程何时内存不足并打印更好的日志信息(PartGraphRecursive 失败时的错误代码和 Graph->Num)的检查。

  • 修复了不遵循编辑器中设置的“允许蒙版材质”的客户端问题

  • 修复了在加载 Nanite 网格但场景中没有 Nanite 网格时可能触发的确保。

神经网络引擎 (NNE)

新增功能:

  • 引入了 NNEModelInstance 来准备权重共享优化。运行时现在创建一个模型,并从模型创建一个或多个可推断的模型实例。

  • NNE 运行时已移至自己的插件,除了 NNE 之外,还需要启用这些插件才能使用。

起色:

  • NNERuntimeORTCpu 已更新为使用 ORT 1.14.1 库。

  • UNNEModelData 资产有一个允许列表,用于从烹饪中排除某些运行时。可以通过双击资产来访问它。该功能默认为空列表,该列表将针对与先前行为匹配的任何运行时进行烘焙。

  • UNNEModelData 资产可以重新导入并在编辑器中打开(使用 netron)。

荒废的:

  • 旧的 NeuralNetworkInference (NNI) 已被删除,请改用 NeuralNetworkEngine (NNE)。

尼亚加拉

新增功能:

  • Niagara不透明粒子现在可以与深度缓冲区碰撞,而不会与自身碰撞。可以使用新的 PartialDepthBufferCollisionQuery 节点来实现它。这是实验性的。

  • 实现了 Summary View 2.0,允许用户为发射器创建自定义视图。主要用例是公开复杂发射器(如流体)的特定输入。但是,这是一个有用的功能,可以强调发射器的特定部分。

  • 现在,我们允许 Python 转换脚本将值重置为默认值,并在新模块上设置隐藏输入。

  • 向蓝图公开了定时Niagara效果属性。

  • 在系统编辑器中添加了对发射器资源的拖放支持。

  • 使转换节点的视觉对象更加紧凑。

  • 在曲线数据接口中添加了对曲线资产的支持。

  • 添加了对堆栈的折叠类别支持。如果数据接口(任何对象,但主要使用者是数据接口)具有该标志,则跳过根级类别,而是使用其子级类别。

  • 改进了堆栈类型的 UI(更紧凑、更多颜色、更好的视觉效果)。

  • 添加了一个设置,通过在每次输入更改后更新SIM卡,使数字输入感觉更快捷。

  • 改进了模块输入的元数据。

  • 添加了 True 参数,以允许在没有静态开关再引用静态开关变量时删除该变量。

  • 向 Niagara 添加了对静态开关的内联枚举支持。

    • 要使用它,请将静态交换机节点设置为整数模式。案例标签现在是可编辑的。如果进行编辑,则在编辑模块输入时,整数的显示将像 Niagara 堆栈中的枚举一样显示。

    • 要更改此设置,请访问变量设置中的 Widget Customization 条目。Default 是默认的整数视图,Enum Style 是类似枚举的视图。

    • 这对于保存在单个模块中且不需要创建和维护整个枚举资产的一次性静态开关非常有用。

  • 添加了对堆栈输入(滑块、最小/最大、音量)的小部件支持。

  • Niagara渲染器现在可以通过上下文操作进行移动。

  • 将整个发射器从一个系统粘贴到另一个系统时,用户参数现在会与它们一起复制并添加到新系统中(如果它们尚不存在)。

  • 在生命周期跟踪中添加了年龄更新模式下拉列表。

  • 在将 Niagara Actor 添加到音序器时,默认添加了组件和生命周期轨道。

  • 添加了一个警告,如果生命周期跟踪未正确设置用于 sim 缓存。

  • 添加了对已弃用模块更改的 Python 脚本支持。

  • 更改了“重置模拟”命令(点击空格键),以便在当前暂停时也恢复播放。

  • 重新排序了系统属性。

  • 用户参数现在支持通过用户参数层次结构编辑器自定义小组件。这包括设置 Min 和 Max、将浮点数或整数显示为滑块等。

  • 为发射器添加了默认 UI 状态选项,用于确定在添加到系统或创建新发射器时,发射器是显示在“摘要视图”还是默认视图中。

  • 将“行为示例”标签更改为“学习示例”。

  • 添加了逻辑,以确保在发射器后加载或初始化时存在发射器编辑器数据。

  • 简化的发射器特性:

    • 删除了 Combine Event Spawn 选项。

    • 删除了系统中发射器的“脚本类别”属性。

    • 删除了系统中发射器的资产选项属性。

    • 将要保留的属性移动到高级视图。

    • 如果模式为自动估计,则隐藏预分配计数现在处于隐藏状态。

    • 将 Max Delta Time Per Tick 移至插件设置中。

  • 为贴花渲染器添加了贴花图标。

  • 将Niagara系统编辑器中的“选择”和“选定的发射器”选项卡名称更改为“详细信息”,包括图标,以便与引擎更加一致。

  • 修复了常量值 make 节点的引脚着色。

  • 添加了曲线资产的缩略图。

  • 添加了一个上下文菜单选项,可以一次记录多个缓存轨道。

  • 添加了新的暂存器操作,并将参数设置为菜单中的建议。

  • 在“用户参数”选项卡中重命名“用户参数”时,现在已实现名称验证。

  • 添加了重复的脚本变量验证和修复逻辑。验证和修复可以通过编辑器中的命令行运行。commandlet 可以通过项目启动命令行运行,并将打印出所有具有给定 guid 冲突的脚本。

  • 添加了一个自定义搜索框,用于在 NPC 编辑器中添加参数筛选。

  • 现在,每个资产(视图位置、视图旋转和动态观察模式)或配置文件中都保存了更多视图设置,以跨会话维护 Niagara 视口设置。

起色:

  • 改进了 UX 以公开函数脚本输入节点的选项。

崩溃修复:

  • 添加了当静态交换机节点通过重命名引用不同的预先存在的脚本变量时重新分配引脚。这修复了视觉对象期望在新的静态开关变量下创建引脚的崩溃。

  • 修复了尝试在堆栈中设置 uobject-attributes 时崩溃的问题。

  • 重构了临时的瞬态堆栈条目数组,这些条目可能随时收集垃圾并导致各种崩溃。这些堆栈条目管理注释节点的堆栈条目,因此现在我们有一个正确的注释集合堆栈条目。

Bug修复:

  • 对静态交换机节点添加了各种小修复。

  • 修复了在 Niagara 脚本详细信息中编辑任何 FText 字段时触发的 sure。

  • 修复了 sim 缓存可能导致大量粒子出现长达一分钟的故障的 bug。

  • 修复了禁用的模块可能生成编译警告的 bug。

  • 当应用发射器/系统中使用的模块时,该模块不再被取消选择,并且 UI 会刷新,因此我们可以获得实时更改。

  • 修复了一个 bug,即当另一个发射器独立运行时,组件渲染器仍然可见。

  • 修复了禁用节点和数据接口的编译错误。

  • 删除了 NPC 编辑器的“详细信息”面板中的搜索框。

  • 修复了滚动条未出现在 Niagara 参数集合中的问题。

  • 修复了模块的复制粘贴未正确粘贴静态开关链中静态开关值的问题。

  • 修复了完成空 SIM 卡缓存时出现的问题。

  • 删除了显示为“无”的不正确默认引脚。

  • 修复了暂存器参数面板错误,即如果使用的函数与拥有它的脚本资源具有相同的参数,它将覆盖资源自己的参数。由于名称 + 类型相同,它在 UI 方面看起来不错,但选择它不起作用,因为 guid 不匹配。- 删除了子图,添加了用于脚本参数面板的脚本变量 - 重构为直接使用图的脚本变量,而不是使用参考映射。参考地图现在仅用于参考计数,而不用于项目创建。

  • 修复了模块的复制粘贴未正确粘贴静态开关链中静态开关值的问题。

  • 修复了系统参数面板在暂存器中通过名称而不是通过 guid 选择参数的问题。

  • 修复了在层次结构编辑器中使用与 FNiagaraHierarchyDragDropOps 不同类型的拖放操作的问题。

  • 修复了在选择自定义部分时添加新用户参数时出现的问题。

  • 修复了在缓存 Niagara 模拟时未正确评估生命周期轨迹长度的问题。

  • 修复了相机 DI 中的 LWC 问题。

  • 修复了发射器将参数面板打开为“有源模块”而不是“有源概述”的问题。

  • 修复了仅编辑器参数未标记为RF_Transactional的问题。这修复了交易未在 Niagara 中正确记录的问题。

  • 修复了将一个模块替换为另一个使用相同名称的模块导致其丢失静态开关输入的问题。

  • 修复了堆栈中未正确显示 HLSL 编译错误的问题。

  • 修复了使用 LWC 结构时的崩溃问题。

  • 修复了 SWC 结构出现在 UI 中的问题。

  • 修复了使用 LWC 结构作为模块输入不会使用正确的结构转换器的问题。

  • 修复了脚本变量自定义,以同时考虑与输出节点断开连接的参数引脚。这修复了以下问题:如果值模式设置为“custom”,断开连接的参数引脚不会显示其自定义引脚。此外,在将参数添加到参数映射获取节点后,不再需要重新选择参数以使其显示默认值

  • 添加了额外的调用,用于替换发射器上的用户参数引用,并修复了重命名用户参数时未修复的渲染器属性绑定引用。

  • 修复了使用错误资产初始化音序器录制的问题。

  • 修复了发射器资产在禁用模拟阶段时不脏的问题。

  • 修复了在模块中更新输入参数名称时参数引用丢失的问题。“BoundPinNames”数组使用不正确的参数句柄进行更新,这使得后续重命名的查找中断

  • 修复了更改版本化属性不会弄脏脚本/发射器的问题。

  • 修复了异步光线追踪数据接口不发出追踪的问题。

  • 停止考虑将 get 节点的输入引脚作为参数引用 这修复了以下问题:仅在 get 节点中引用的引脚将计入 2 个引用,这将阻止它从 pin 正确重命名,因为它会复制新参数

  • 修复了相机 DI 中的变换函数说明。

  • 修复了 Niagara 脚本中的“应用”按钮,该按钮仅检查公开的版本 guid,而不是当前编辑的版本。

  • 修复了更改用户参数名称时缺少堆栈刷新的问题。

  • 修复了以下问题:在树刷新后,“详细信息”视图无法正确显示可见性已更改的行。

  • 修复了撤消发射器添加事务时的问题。

  • 修复了参数面板中不必要的刷新,导致修改变量值后选择丢失的问题。

  • 添加了元数据以允许 python 脚本输入多行文本。

  • 修复了 sequencer 缓存 bug。

  • 修复了“带参数的生成系统”函数的蓝图 API。

  • 修复了在打开参数菜单时输出和瞬态参数出现在其自身舞台之外的问题。

  • 修复了自定义 HLSL 引脚不可修改的问题。此外,还添加了操作“重置为默认值”和“提升为参数”的可见性委托。还更改了 Niagara 中使用的 Pin 部分名称,以使用父部分名称,因此我们不再有 2 个称为“Pin Actions”的部分

  • 清理旧的快速迭代参数,只使用名称,不类型。这导致与不同类型的新参数使用相同名称的旧参数不会被清理。

  • 修复了合并管理器中的多个查找仅按名称而不是名称 + 类型进行查找的问题。这与上述修复相结合,可以产生更稳定的差异过程。所有这些都修复了某些流体发射器错误地显示或不显示“重置为父发射器”箭头的问题

  • “幻影条目”不再出现,即使更改堆栈中的值,堆栈搜索结果也会保留。

  • 在创建新的暂存器时聚焦暂存器管理器选项卡,以便您可以立即重命名它 将 toolkitmodebase 公开,以便插件中的其他部分可以正确访问选项卡名称

  • 修复了“参数”节点。

  • 修复了多行 HLSL 注释的突出显示。

  • 修复了模拟在更改后始终重置的问题,即使在暂停时也是如此。

  • 异构卷:根据局部空间步长因子引入每个卷的步长。现在,步长在局部空间中计算为体素宽度的函数,沿射线方向投影。将全局步长值切换为 -1(禁用)。将默认 MaxStepCount 更改为 512 步。

  • 修复了使用 Niagara Baker 时异构体积的 alpha 合成问题。

  • 按摄像机深度对异构体积进行排序,并调整合成以匹配。

路径追踪器

新增功能:

  • 添加了与光栅器路径行为相匹配的路径追踪的深度通道。输出是 DepthZ 的,因此后期处理景深现在可以作为奖励。您可以使用相同的深度后期处理材质在影片渲染队列中输出。如果要禁用路径追踪深度缓冲区并改用栅格化器中的深度,则可以使用“r.PathTracing.Override.Depth 0”。此外,材质中的“输出深度”已重命名为“输出深度和速度”。

  • 添加了对路径跟踪缓冲区的后期处理材质和影片渲染队列支持。这意味着后期处理可以使用“路径跟踪缓冲区纹理”材质表达式访问具有独特材质的路径跟踪缓冲区(原始/去噪辐射、反照率、法线、方差)。并且,访问意味着支持影片渲染队列中的输出。

  • 增加了对 Substrate 的基本支持。路径追踪器现在可以处理基板材质,包括多层材质。Substrate 的 MFP 映射到不透明材料的随机游走次表面散射和半透明情况下的吸收。我们预计在许多情况下会看到相当接近的协议,尽管这种支持仍应被视为实验性的。对半透明和薄着色模型的支持预计将在未来版本中得到改进。

  • 使用路径跟踪器时,光线跟踪应包含天空网格体 现在,当路径跟踪器处于活动状态时,将忽略控制台变量“r.RayTracing.ExcludeSky”。

  • 在 Path Tracer 中实现了对 DBuffer 材质表达式功能的支持

  • 添加了蓝图调用以使路径跟踪输出失效。此调用的目的是控制无法通过自动失效处理的案例。

  • 现在,当骨架网格体变形目标发生变化时,路径跟踪图像将自行失效。

  • 更改了折射光线,使其在“影响间接”基元设置方面更像相机光线。这使得折射和透明行为更加一致。

  • 添加了对异构卷路径跟踪的支持。这使用体素网格管道创建全局加速结构,以表示路径跟踪器中的异构卷。全局加速结构的创建会占用大量内存。请参阅相应的 Voxel Grid Pipeline CL 25170595,了解有关参数调整以控制内存和质量的说明。r.PathTracing.HeterogeneousVolumes(默认值 = 0) 在路径跟踪器中启用异构体积呈现 r.PathTracing.HeterogeneousVolumes.RebuildEveryFrame(默认值 = 1) 每帧重新生成加速结构。

  • 将体积发射添加到路径跟踪器。

起色:

  • 改进了 SSS 随机游走采样。

  • 改进了局部光源的体积光采样。

  • OpenImageDenoise 传输速度加快。对像素回读进行了一些优化,从而节省了一些降噪时间。

Bug修复:

  • 修复了散射半径较小时次表面散射变暗的问题。现在,代码可以更无缝地融合到漫反射行为。

  • 修复了在某些情况下使用非切线空间法线的材质可能会翻转法线的问题。

  • 修复了在掠过角度下粗略漫反射模型中可能出现的萤火虫。

  • 修复了材质中的“路径跟踪质量开关”节点在贴花材质中不起作用的问题。

删除:

  • 删除了用于抗锯齿的“滤镜宽度”的“路径跟踪后处理体积”设置。我们发现默认值 (3.0) 实际上是最佳值,并且没有太多理由更改它。如果仍需要此属性,可以使用控制台变量“r.PathTracing.FilterWidth”进行调整。

后处理

新增功能:

  • 添加了“使用锐化”为图像效果添加后期处理设置。这将控制在色调映射期间应用的图像锐化强度。

RHI型

新增功能:

  • Vulkan Bindless:推送使用 VK_EXT_descriptor_buffer 的 FVulkanBindlessDescriptorManager 的草稿实现。为每种类型的资源使用一个描述符集,每个描述符集都由描述符缓冲区提供支持。所有内容都绑定并对每个着色器可见,但每次绘制/调度都绑定的统一缓冲区除外。对所有内容使用单个管道布局。每个描述符类型的初始缓冲区大小可以通过 CVars 进行配置(它们尚未自动增长)。仍然非常具有实验性,并且需要禁用多个其他功能。

  • VulkanRHI:使用数组进行动态缓冲区分配,并删除了硬编码的“NUM_BUFFERS=3”值。使用围栏管理缓冲区可用性。当暂存缓冲区用于复制时,不要轮换动态缓冲区使用情况。

  • VulkanRHI:Vulkan SDK 升级到 1.3.239

  • 删除完整类型RHI_API使用,并将其添加到需要它的成员。这减少了导出计数,并且是即将到来的编码标准更改的一部分。

  • 将 D3D12 扩展包含移动到其自己的标头中。

  • 更新到 Agility SDK 1.610.2

  • 将几个 DDSPI 字段移动到仅编辑器代码块,并将仅编辑器的 DDSPI 类型移动到 cpp 文件中,以使编辑器包含不在全局范围之外。

  • VulkanRHI:将引擎最低核心版本移至 Vulkan 1.1。

  • VulkanRHI:添加了VULKAN_SM6。移动了功能和要求,以匹配 D3D12 SM6 上执行的操作。

  • 使 FRayTracingGeometryInitializer 不再是内存布局类型,因为不再需要这样的东西了。

  • VulkanRHI:在调用 CreateRHI() 之前,使用 Vulkan 配置文件在启动时验证对功能级别的支持。

  • VulkanRHI:添加了对着色器编译的Vulkan_1_3支持,用于VULKAN_SM6。

  • 改进了 DX12 GPU 痕迹导航,用于跟踪 GPU 上所有活动、已完成和未启动的作用域。新实现会记录 GPU 上当前计划或活动的所有作用域。

  • RHI:尽可能避免在 RHIRead*SurfaceData 中重新分配 OutData 数组。

  • 默认情况下,在 NVIDIA Ampere 和更新卡上的 D3D12 中启用异步计算。

  • 命令行参数 “-vulkandebug” 允许在 Windows 和 Linux 上使用我们的分布式 vulkan 验证层。

Bug修复:

  • 将 nVidia 最低版本提升至 527.27。已知地形工具的随机问题对于低于版本 526.67 的驱动程序是有问题的。确切原因尚不清楚,但似乎已在 527 个版本之一中做出了解决方案。第一个没有出现问题的版本是 527.27。

  • 修复了 FRHIGPUTextureReadback 以处理子矩形以及体积和纹理数组。

  • 修复了 Vulkan RHI 中的 init 结构。

删除:

  • 删除 5.0 中不推荐使用的 RHI 代码。

  • 删除已弃用的 RHI 符号。

  • 从公共 RHI 标头中删除了 CoreMinimal 包含。

  • 移除了已弃用的 RHISetComputeShader。

酶作用物

新增功能:

  • 恢复了可以在材质和材质实例上切换的正确预乘 alpha。选择 Alpha 复合混合模式时,可以从根节点覆盖背景覆盖范围。如果未插入电源,则背景覆盖将关闭,并使用常规混合。

  • 添加了对基板材质贴花的支持。

  • GPU Lightmass 现在支持基板材质。

  • 添加了对 Substrate 的 glint BSDF 的支持。

  • 光线追踪材质着色器使用完全简化的材质来减小有效载荷。

  • 优化了 Substrate 着色器编译时间。

  • 在 Slab 节点上的材质编辑器复杂性中添加了功能。

  • Substrate 现在使用渐进式材料简化来适应内存。首先在材料拓扑的底部简化板坯。

  • 对“材质编辑器”(Material Editor)的“基板”(Substrate)选项卡进行了多项改进。

  • 添加了对平面反射到基板的支持。

  • 流明卡捕获现在使用完全简化的 Substrate 材料。

  • 添加了失真覆盖模式,以兼容基板材质中的传统失真。

  • 修复了使用基板材质时由于位字段宏错误而导致的一些编辑器弹出消息的问题。

  • MFP 在前进时不再被夹在 fp111110 上,以便能够获得更接近 identity=1(不可见表面)的透射率。

  • 现在,在使用 Substrate 时,tiletile列表缓冲区的分配独立于动态分辨率。

  • 使用Substrate创建新材质时,将使用类似于UE4的简单光照着色模型材质函数,而不是Slab。这表明 Substrate 与材质功能一起工作,并且默认使材质创作更简单。

  • 添加了 Substrate 节点,用于将折射率转换为 F0 和旋转各向异性正切。

  • 添加了 Substrate Standard Surface 节点。

  • 将镜面轮廓添加到基板。这允许艺术家提供自定义 LUT,描述视图和光线角度的镜面反射行为。LUT 可以按程序生成,也可以从纹理提供。

  • 添加了材料缓冲区分配策略。这允许控制材料缓冲区的分配方式。这是通过“r.Substrate.BytesPerPixel.Mode”控制的。设置为 0 时,根据视图要求分配材质缓冲区。设置为 1 时,根据视图要求分配材质缓冲区,但只能在帧上增长,以最大程度地减少缓冲区重新分配和卡顿。设置为 2 时,根据平台设置分配材质缓冲区。

  • 为 Substrate 添加了 Byte Per Pixel 视图模式。

  • 将 Substrate Cloth / Sheen 型号更改为 From Charlie to Disney LTC。

  • 添加了基于法向曲率的粗糙度支持。

  • 在材质编辑器的基板节点上添加了基板拓扑预可视化。

起色:

  • 改进了 Substrate 漫反射颜色 sRGB 编码。

崩溃修复:

  • 修复了将材质功能分配给稍后重新打开的新材质时出现的崩溃问题。

  • 修复了当基板材质的共享切线基数超过允许值时的崩溃问题。

Bug修复:

  • 修复了节点上的基板材质预览,以仅考虑预览节点中的基板树。这个固定的材料函数输入/输出、重新路由节点以及介于两者之间的所有内容都不直接连接到 FrontMaterial。

  • 修复了使用基板材质的虚拟阴影贴图和次表面散射。

  • 修复了半透明书写速度的不透明度剪切问题。

  • DXC 和 SPIRV-Cross 修复了在 D3D11 中启用 Substrate 的问题。

  • 修复了灰度的体积云消光问题。

  • “未点亮着色模式”现在也适用于折射。

  • 修复了启用 Substrate 时表现出不同行为的发射问题。

  • 现在,贴花在效果范围内不会影响其他基材的外观。

  • 修复了 Substrate 在深度和速度方面的错误不透明度。

  • 修复了“UseDiffusion”影响简单体积板外观的问题。

  • Slab 现在支持加法混合模式。

  • 修复了通过垂直层操作员和 2 层以上进行遮罩时透光率差的问题。

  • 修复了 Substrate 与响应式抗锯齿交互的问题。

  • 修复了微观包围/F0/F90 的使用。

  • 恢复了对根节点上“自定义 UV”的支持。

  • Substrate 现在可以正确考虑“允许负色”。

  • 修复了启用 Substrate 时 Lumen ScreenProbeGather ReferenceMode。

  • 修复了使用多 BSDF 的 Lumen ScreenProbeGather 和 Lumen Reflection 时间过滤。

  • 修复了当基板“最大 BSDF 计数”更改时,LumenScreenProbeGather 和 LumenReflections 上的流明历史记录被重置的问题。

  • 修复了使用基板进行传统眼部材质转换的问题。

  • 避免不必要的初始化导致大规模着色器停滞。将复杂材料的基础通过成本降低~50%。

  • 使用 Substrate 修复光线追踪阴影

  • 固定流明镜面反射与基板。

  • 修复了 Lumen ScreenProbe/反射历史重新投影,启用后具有动态分辨率缩放功能。还修复了 Lumen ScreenProbe 正常遮挡的问题。

  • 修复了启用 Substrate 的 Lumen.Visualize.IndirectDiffuse。

  • 添加了对具有 Lumen HWRT 路径的短距离环境光遮蔽的支持。

  • 修复了对 SSS 扩散和 SSS 轮廓扩散的“IsThin”支持(现在它按预期工作,并且扩散不再错误地缩放) 还修复了“IsThin”以支持半透明情况的表面。

  • 修复了使用虚拟纹理输入进行基板旧材质转换的问题。

  • 修复了使用参数混合时基板缺少切线帧的问题。

  • 固定了由于不正确地归一化相位函数而启用透光时能量增加的问题

  • 修复了 Substrate 对具有亚表面的像素进行不正确的 VSM 背面剔除的问题。

  • 修复了带有基板的头发材质上缺少自发光输入的问题。

模拟

物理

API 变更:

  • GlobalMatrices 已弃用,应改用 ComponentSpaceTransforms。如果需要获取FMatrix类型,虚幻引擎提供了从FTransfom类型转换为FMatrix类型的简单方法。

新增功能:

  • 添加了在几何体集合上为每个粒子、每个关卡以及废弃粒子添加碰撞轮廓覆盖的功能。

  • 添加了簇联合,这些联合在功能上等同于焊接,但用于几何集合。这最终将扩展为支持静态网格体。

  • 引入了新的外部上下文安全有效负载,可用于混沌加速结构。

  • 改进了带有模板的场景查询接口,以便能够接受其他类型的场景查询覆盖。

  • 在基元组件上公开了一个 ComponentOverlapComponent 函数,该函数也返回重叠结果。

  • 几何集合不会尝试复制空的内部集群。

  • 添加了对 OverlapQuery 和 SweepQuery 中隐式对象联合的支持。

  • 添加了一个选项 (p.Chaos.DebugDraw.ConnectionGraphLevelOffset) 来更改在 Chaos Debug Draw 中绘制的连接图的级别。

  • 当团簇粒子不再有子粒子时,会禁用它们。

  • 几何体集合粒子现在设置了调试名称。

  • 在物理对象接口中添加了函数,使 UPrimitiveComponent 上的线迹、重叠和扫描可泛化到静态网格之外。

  • 修改了 K2 重叠函数以返回命中结果

  • 引入了新的 FPhysicsObjectId 别名,以便为 IPhysicsComponent 上处理此 ID 的各种函数添加一些类型清晰度。

  • 将 ChaosSQTypes 从 PhysicsCore 迁移到 Chaos。

  • 几何粒子上 XR 和 Velocities 属性的曝光 getter。

  • 即使我们击中没有人脸索引的隐式对象,也会在扫描中使用 FaceNormal。

  • 向 FReadPhysicsObjectInterface 添加了访问器函数,以将物理对象句柄转换为适合上下文的原始粒子。

  • 物理对象接口和场景查询类型现在应该能够静态选择要操作的形状实例。

  • 为 OnSyncBody 中的各种路径添加了其他跟踪范围。

  • 在物理对象接口中添加了函数,用于查询粒子的层次结构级别并在粒子之间生成连通性边缘。

  • 修改了各种连通性图函数 API,使其更加灵活,并支持基于“from”和“to”粒子集的过滤。

  • 物理对象接口现在尽可能使用 const 句柄。

  • 添加了一个函数,用于从给定原始游戏线程粒子的组件中获取正文 ID。

  • 添加了对与匹配求解器时间一起出现的接触对的合并碰撞的支持。这样就消除了在具有相同速度数据的单个帧中接收接触对的多次命中的情况(因为 delta-V 是每帧更新的)。包括有关在同一求解器帧中命中的多个接触对的信息,以允许用户仍使用相同的数据。

  • 增加了扭矩单位 Nm 和 kg cm^2 / s^2,以及力单位 kg cm/s^2。

  • 添加了转换实用程序。

  • 优化了 FPhysInterface_Chaos::SetMaterial 通过重用以前的临时分配。

  • 添加了通过线性偏移衰减对物理场重新仿真产生的偏移量进行渲染插值。

  • 添加了缓存基于 FPhysicsObject 的对象的物理状态的功能。缓存状态由状态复制使用,并解锁基于 FPhysicsObject 的集群联合等对象的状态/移动复制。

  • 添加了通过物理对象预设覆盖 Actor 的物理复制模式的选项。

  • 添加了一个几何集合数据流节点,以简化集合上的现有凸包,并提供使用基于网格的简化或新的二面角阈值方法的选项。

  • 更改了缓存集合对象,使其在蓝图中可用。

  • 几何体集合现在向蓝图公开 IsRootBroken 函数。

  • 对 Dataflow 进行了以下更改:

    • 添加了新的数学库节点。

    • 将 make 节点移动到单独的文件中。

    • 将转换节点移动到单独的文件中。

  • 已确保 Geometry Collection 自定义渲染器系统正确处理 bHiddenInGame 标志。

  • 直接物理 Actor 上公开的重力设置。

  • 在上下文中添加了内部调用堆栈的概念,以允许检测数据流中的循环。

  • ISM 池优化:确保从 ISM 池中实例化的静态网格不会创建其物理状态。

  • 向 Dataflow 添加了覆盖节点。

  • 向“几何集合”资产添加了“覆盖”属性。

  • 添加了对 Geometry Collection 资源的 AssetUserData API 的支持。

  • Chaos:通过避免数组分配来优化 SpatialAccelerationCollection RemoveFrom。

  • 添加了为几何集合设置重力组索引的功能。

  • 更新了几何体集合,以报告其根代理静态网格中的套接字(如果可用)。

  • 添加了一个 Dataflow 节点,用于从浮点数组中读取特定的浮点值。

  • 优化了物理线程和游戏线程之间几何集合物理结果的数据编组。

    • 从有效负载中删除了全局转换。

    • 仅发送已更改的转换索引(减少副本和内存分配)的数据。

  • 优化了几何集合物理场结果的处理,方法是使用参考计数指针,而不是复制整个数据。

  • 在 EnableNanite UProperty 上添加了一个 setter to Geometry Collections。

  • 添加了 Chaos 调试命令 p.Chaos.DebugDraw.ColorShapesByInternalCluster,以显示哪个物理粒子是内部集群。

  • 添加了对 LevelSet 的支持,用于生成连接图。

  • 在断开模式下,向自动聚类工具添加了新选项,用于基于格网的聚类和最小聚类体积选项。

  • “断开模式”中的“微小地理”工具现在具有“微小聚类”模式,该模式可合并微小聚类。这包括用于控制所考虑的聚类是否应限制为当前裂隙级别、当前层次结构中的同级聚类或通过当前邻近度图连接的聚类的选项。

  • 添加了新的 Fracture 插件项目设置,以控制在 Fracture 模式下创建的新几何体集合资源的默认位置。

  • 在 Fracture Editor UI 中添加了“快速设置”部分,允许用户轻松控制新资源的默认文件夹,并跳转到 Fracture 项目和编辑器设置。

  • 添加了一种方法来控制在哪个级别复制聚类的几何集合位置和速度。

  • 添加了对几何集合资源中自定义基元数据的支持。

  • “断裂模式”(Fracture Mode)现在显示关卡中第一个选定的几何体集合(Geometry Collection)的“休息集合”(Rest Collection),从而可以更轻松地访问资源。

  • 向托管数组集合的 Dataflow 添加了“获取根索引”节点。

  • 添加了几何集合数据流节点:“选定的集群”、“合并集群”和“选择目标级别”。

  • “几何体集合”的“拆分组件”设置已重命名为“拆分网格”,以减少与不相关的UE组件概念的混淆。

  • 在“几何体集合”资源中添加了物理材质选项。

  • 添加了使用指定材料(或组件上覆盖的材料)的密度的功能。

  • 在编辑器属性中添加了将“从资源应用默认值”作为按钮的功能。

  • 添加了 BranchCollection Dataflow 节点。

  • “断裂模式材料工具”现在显示和更新“几何体集合”资源(“余点集合”)的材料,而不是“几何体集合组件”上的覆盖材料。

  • 现在,在切换到该工具时,“裂缝模式”设置“移除”、“状态”和“凸”工具会自动将“裂缝模式”的“大纲视图柱模式”分别更改为“移除”、“状态”和“碰撞”。

  • 混沌布 XPBDSpringConstraints 已在内部重新缩放为与分辨率无关。现有约束会根据其当前分辨率(弹簧长度)更改其行为。这些约束没有通过任何现有的 cloth 插件公开,因此预计影响最小。

  • 现在,“断裂模式邻域分析工具”可以基于骨骼凸包的接触面积的测量值来设置几何集合邻域。这样可以更好地过滤骨骼几乎没有接触或仅沿尖角接触的连接。

  • 添加了浮点比较 Dataflow 节点。Int 和 Float 比较节点现在位于 Math > Compare 类别中。

  • 为几何体集合添加了新的基于材质的损伤模型。它使用材料抗拉强度和部件之间接触的表面积来计算损伤阈值。

  • 添加了一个节点,用于获取给定几何集合骨骼选择的凸包体积总和。

  • Create Leaf Convex Hulls Dataflow 节点现在公开了在 Geometry Collection 的叶节点上运行凸分解的选项,从而实现更精确的凸碰撞。

  • 添加 Uncluster Geometry Collection Dataflow 节点。

  • 添加了通过以下控制台变量控制服务器和/或客户端 Chaos 调试绘制的功能:p.Chaos.Solver.DebugDraw.ShowServer 和 p.Chaos.Solver.DebugDraw.ShowClient。还添加了 p.chaos.debugdraw.seethrough 控制台变量,用于控制是否在对象上绘制线条。

  • 布料到动态网格:将所有模拟三角形的默认材质 ID 设置为零。

  • 布料编辑器:如果渲染网格中的任何三角形的材质 ID 无效,请对其应用默认的 WoldGridMaterial。

  • 添加了新的 Dataflow 节点,以支持将几何集合曲面、凸包和球体覆盖物导出为 OBJ 网格文件,并将字符串写入文件以进行调试。

  • “断裂模式凸工具”(Fracture Mode Convex Tool) 现在仅显示当前“断裂水平”(Fracture Level) 的碰撞形状。

  • 向 FNetworkPhysicsCallback 添加了委托 InjectInputsExternal。这将在InjectInputs_External期间播出。

  • 混沌缓存:现在允许蓝图访问观察到的组件的 EnablePlayback 和 CacheCollection 属性。

  • 添加了一个 GetBoxLengths 数据流节点,该节点可以获取 Geometry 集合中每个转换的边界框长度,其中长度可以沿所选轴、最小或最大轴或对角线进行测量。

  • 添加了一个 SelectFloatArrayIndicesInRange Dataflow 节点,该节点可以选择浮点数数组中的索引,其中浮点数与指定的值范围匹配。

  • 添加了一个 CollectionTransformSelectionFromIndexArray Dataflow 节点,该节点可以选择索引与整数数组中的值匹配的 Geometry Collection 转换。

  • 使服务器权威的 Geometry Collection 粒子在客户端上牢不可破 -

  • 在混沌聚类粒子 SOA 中添加了牢不可破的标志。

  • 添加了一个新的 Merge Convex Hulls Dataflow 节点,该节点可以减少用于表示几何集合骨骼上的碰撞的凸包。

  • 添加了 GetAccumulatedTime 函数,用于在固定步长模式下获取物理求解器的 AccumulatedTime。

  • 为物理资源添加了新的实验性蒙皮关卡集基元类型。此基元将 Level Set 嵌入到格子中,该格子通过将蒙皮权重从关联的网格顶点转移到格子来蒙皮。此基元只能由布料模拟使用,并且是实验性的。它尚未优化。

  • 将材料强度信息添加到混沌物理材质中。

起色:

  • 修改了基元组件唤醒/睡眠事件,使它们不依赖于 BodyInstance 的存在,这使得它们更具通用性。

  • 几何集合不再在运行时为移除要素相关的立面类构造 FName 类型。

  • 通过删除要素运行时执行来优化几何集合。还减少了每个 Geometry Collection 实例的内存占用。

  • 将渲染和导航更新从 Geometry Collection Component TickComponent 方法移至 PostPhysicsUpdate 方法。此外,在 Geometry 集合资产中缓存了 RootIndex,以避免每次扫描所有转换以找到它

  • Geometry Collections 的 bool 类型的托管数组现在使用 BitArray 而不是 TArray 来节省内存

  • 几何体集合优化:仅当需要移除特征时(根断裂后)才启用主几何体集合组件滴答功能。

  • 优化了 Geometry Collection 聚簇粒子标志的内存存储。

  • Chaos 现在尽可能使用较小的数据类型来存储聚类粒子属性,并在填充连接图时更好地管理内存分配。

  • 几何集合 ISM 池渲染优化:现在使用新的 API,通过减少数组分配来更高效地传递转换。

  • 通过执行以下操作改进了几何集合的凸碰撞生成:

    • 新增 Dataflow 节点,从叶节点生成 Geometry 集合簇凸碰撞。

    • 改进了裂缝编辑器凸可视化(当父凸缺失时显示凸并集)。

    • 在“裂缝编辑器大纲视图”(Fracture Editor Outliner) 中添加了一列,用于显示凸起的数量以及父项何时使用并集。

  • Geometry 集合优化:将 FMatrix 的 GlobalMatrices 数组更改为 FTransform 的 ComponentSpaceTransforms 数组。这减少了 FTransform 和 FMatrix 之间的来回转换次数。

崩溃修复:

  • 修复了一个崩溃问题,即清除混沌属性标志会导致它在代理仍然具有脏形状时尝试删除该代理。

  • 修复了布料模拟的问题,即设置新的骨架网格体资源有时会导致崩溃。

  • 修复了在集群联合中使用 LevelSets 时的混沌单元测试崩溃。

  • 修复了在未设置 Rest 集合的情况下创建物理状态时几何集合中可能出现的崩溃问题。将几何体集合组件添加到蓝图,同时在编辑器中打开该组件进行编辑时,可能会发生这种情况。

  • 修复了从蓝图中评估 Dataflow 终端节点时使用图形中不存在的名称时出现的崩溃问题。

  • 修复了加载调试材料时 FClothVisualization 中的 Chaos Cloth 崩溃问题。

  • 修复了使用其他骨架将现有骨架数据添加到骨架网格体资源后,骨骼映射索引无效导致骨骼网格体布料绘制工具崩溃的问题。

  • 修复了在 PIE 使用布料模拟运行时使用 Take Recorder 时可能导致崩溃的几个 bug。

  • 修复了以下问题:Landscape 可能会调度新创建的物理 Actor,然后随后在下一次物理更新之前销毁它使用的几何体,从而导致因释放后使用而崩溃。

Bug修复:

  • 修复了禁用 Geometry Collection 粒子可能会使粒子处于加速结构中的问题。

  • FReadPhysicsObjectInterface::AreAllShapesQueryEnabled 现在适用于外部和内部上下文。

  • 即使没有要调度的事件,混沌事件调度也不再遍历所有侦听器,从而略微提高了性能。

  • 碰撞转换现在会根据内部形状类型进行检查,以处理转换并集的情况。

  • 现在,即使几何体集合粒子没有子粒子,也应应用外部应变。

  • 用于查找最接近的物理对象的蓝图库函数现在将根据粒子是否启用进行过滤。

  • 修复了混沌场会使所有动态粒子也启用的问题,这会导致几何体集合粒子与其根粒子发生碰撞。

  • 删除了在绘制具有单个形状的并集时确保。

  • 修复了 OnComponentPhysicsStateChanged 未正确调用 Geometry 集合的问题。

  • 修复了在构造脚本重新注册组件后,几何集合事件无法正确注册的问题。

  • 修复了以下问题:从内部群集中删除子群集时,无论删除来自哪个路径,都不会清理内部群集的属性。

  • 修复了几何集合复制依赖于 bFirstUpdate 来确定是否复制群集的问题。改用粒子水平仪。

  • 修复了以下问题:几何集合无法正确从 PrevData/NextData 中提取某些具有不可插值属性的粒子的状态。

  • 修复了几何体集合粒子未添加到外部场景查询队列的问题。这可确保它们始终位于外部场景查询中,即使在交换后也是如此。

  • 修复了以下问题:几何集合聚类粒子在作为根粒子(没有其他父粒子)时设置了聚类组索引。

  • 修复了 RewindData 和 MarshallingManager 具有不同大小的数据历史记录的问题。

  • 修复了使用未分配休息集合的几何集合模拟物理时发生的崩溃问题。

  • 修复了在具有许多 Actor 的关卡中填充物理复制缓存会消耗大量 CPU 时间的问题。

  • 修复了从倒带数据中的重复几何集合粒子缓存触发确保的问题。

  • 修复了当一个岛屿触发重新模拟时,所有岛屿都会重新模拟的问题。

  • 修复了 Geometry Collection RestTransform 与 RestCollection 转换不同步,从而导致资源缩略图不正确的问题。

  • 在布料与环境碰撞期间未找到支持的碰撞类型时,将 ensure 替换为不间断的详细日志。

  • 修复了 Chaos Cloth 编辑器中预览场景中变换小控件和数字输入不同步的问题。

  • 修复了 Geometry Collections 中作为 Double 而不是 Float 访问的 Mass 属性导致潜在越界访问的问题。

  • 修复了在循环中连接节点时失效代码中的数据流堆栈溢出的问题。

  • 使 Dataflow 节点的序列化对输入和输出更改更加可靠。

  • 通过添加一个小的法线偏移,修复了布料绘画材质与源渲染部分的 z 冲突偏移。

  • 修复了与 TUserDataManagerPT::SetData_GT 中重复的求解器符号相关的编译错误。

  • 修复了在骨架网格体编辑器的“服装”窗口中撤消蒙版目标时混沌布崩溃的问题。

  • 新的几何体集合现在默认将顶点颜色从线性转换为sRGB空间进行渲染,以匹配静态网格体渲染的行为。默认情况下,旧资产会保留以前的行为以保持兼容性。使用几何集合资源上的新 ConvertVertexColorsToSRGB 复选框来切换此行为。

  • 修复了在某些情况下几何集合数据无法持续更新的问题,这会导致确保在断裂模式下按下“重置”。

  • 从事件分派器基类中删除了不必要的刻度函数,这可能会导致 Post Physics 刻度组中的几何集合组件累积无操作刻度。

  • 删除了 GetPendingCollisionForContactPair 中多查找数组的分配。

  • 修复了高度场重叠且未考虑整个材质的问题。

  • 在场景查询中将堆栈保留的命中缓冲区大小从 64K 减少到 16K,在堆分配之前仍为查询保留 128 次命中。

  • 修复了物理线程 Geometry Collection Active 属性未正确初始化(并且需要一个更新周期才能完成)的问题。

  • 修复了断裂模式问题,即当几何集合断开时,几何集合顶点颜色上的 Alpha 通道将重置为 1。

  • 修复了在对所需的破碎粒子进行分类时多次考虑父项的破碎模型。

  • 修复了当父簇中断时未处理菌株的子项。

  • 修复了当高度字段中不存在任何材质时,用于高度字段的 IsHole 返回 True 的问题。

  • 禁用了 Geometry Collection 事件处理程序中的休眠事件处理。这样可以避免在场景处理相同睡眠事件时多次调度这些事件。

  • 修复了在“断裂模式”(Fracture Mode) 中对几何体集合资源所做的更改不会传播到使用同一资源的其他几何集合组件的问题。

  • 更新了混沌缓存管理器,如果它们正在观察属于缓存管理器本身的组件,则现在可以在可生成时正常工作。特别是,如果它们是通过向场景添加破坏缓存集合来创建的,则它们现在将起作用。观察其他组件(例如布料)的缓存管理器仍然无法生成。

  • 修复了 FRewindData::RewindToFrame 每次倒带都会弄脏粒子/关节的问题。如果游戏不断倒带,这将导致 FRewindData::D irtyParticles 数组的大小变得太大。

  • 修复了 Geometry Collection 渲染与静态网格体渲染不匹配的问题,因为静态网格重新计算了切线,而几何集合没有。

  • 修复了 GeometryCollectionComponent 隐式生成计算框群集大小不正确的问题。

  • 更新了 Chaos Cloth 缓存,以存储必要的转换,以便使用正确的转换进行播放。现有缓存将继续像以前一样工作(例如,如果它们不需要额外的转换信息,它们将继续工作)。

  • 修复了以下问题:撤消创建新几何体集合会留下损坏的资源,如果使用,可能会使编辑器崩溃。我们不再处理 Geometry Collection 资产的创建,因此该资产将保持有效状态。

  • 修复了以下问题:微小的三角形可能会使具有自碰撞的布料模拟速度非常慢。

  • 修复了在几何集合代理初始化期间重复调用以更新 Geometry Collection 粒子视图的问题。

  • 修复了以下问题:更改的刚性聚类推进考虑所有顶级粒子的断裂,而不是仅考虑应变的粒子。这大大降低了中断模型的稳态成本。

  • 修复了 Geometry Collections 中移除随机生成的计时器值在客户端和服务器之间不一致的问题。

  • 修复了 Geometry Collection 缓存的问题,即如果未在 Geometry Collection 上设置中断事件通知,则缓存无法正确录制和重放。

  • 修复了一个混沌布料错误,即共享配置所有权阻止在将骨架网格体的服装数据添加到另一个骨架网格体后保存骨架网格体资源。

  • 修复了当所选几何体集合位于蓝图中时,“分解量”滑块不起作用的问题。

  • 修复了使用镜像变换时的混沌布变形器。

用户界面

新增功能:

  • UE 在使用 Visual Studio 源代码访问器打开文件时尝试选择最佳解决方案。

Bug修复:

  • 修复了使用控制器导航时忽略 MinValue 和 MaxValue 的钳制问题。现在,使用鼠标或控制器时,此行为是一致的。SAnalogSlider

  • 修复了一个 bug,即导航超过 的最小值或最大值会使小组件失效,并在不更改值的情况下调用值更改委托。SSlider

  • 在 中,修复了从代码更改值时未调用的 MVVM 通知和委托。USlider

石板

新增功能:

  • 将实现从 CommonUI 移至 Slate。STextScroller

  • 添加了缓存功能,用于昂贵的 AllowDrop 操作。默认情况下,此功能处于关闭状态。默认情况下,OnAllowDrop 每帧调用一次,这是用户绑定的。设置为 将在首次调用 AllowDrop 时缓存它。每当拖放操作开始时,缓存都会被清除。SDropTargetbUseAllowDropCachetrue

  • 为小部件添加了功能OpenComboBoxSObjectPropertyEntryBox

  • 在 Slate 中向 ListView、TitleView 和 TreeView 添加了 ObservableArray 模式。TreeView 实现仅支持根项的新模式,因为这是更改时性能提高最多的地方。当在数组中添加/删除项时,可观察数组会自动通知视图。

  • 大型元素集的 Slate 批处理改进:

    • 在编译时使用元组对相似的元素进行分组。

    • 在相同类型的元素存储桶中合并相似的渲染批次(目前仅适用于框和线)。

    • 在使用之前,批量保留顶点/元素。

  • Slate 元素的创建现在是按元素类型批处理的,以提高指令一致性。

  • 现在可以通过向新参数提供 type 值来指定文本溢出模式。SHeaderRowETextOverflowPolicyOverflowPolicy

  • UE 现在会重新保存具有不正确 sRGB 配置文件的 Slate PNG 文件,并在 libpng 警告和错误期间记录 PNG 文件名。

  • 添加了小组件状态,该状态旨在由外部系统用于对小组件更改做出常规响应,而不管其类型如何。

  • 为了避免每次绘制时临时分配数组,Slate 现在尽可能对文本和整形文本使用静态索引。

  • 保留的小组件现在按元素类型分组。

  • 您现在可以在全局窗口覆盖中添加小部件。

Bug修复:

  • 当 UE 使用 创建模态窗口时,如果找不到 Slate 虚拟窗口,它会回退到非模态窗口。FSlateApplication::AddModalWindow

  • Slate 仅在启用目标小部件时才允许显式导航。

  • SlateFontInfo 现在将 Outline 限制为 1024。

  • 修复了滚动框中的小组件可能卡在悬停状态的问题。

  • 修复了拖动滚动区域时无法正确计算鼠标位置的问题。

  • 将变体选择器字符添加到需要全文整形的字符列表中。

  • 修复了用鼠标按住滚动条进行滚动时出现的滚动框滚动延迟的问题。

  • 修复了导致省略号出现在多行文本的多行上,以及多行 + 富文本或多行 + 双向文本组合的每一行中的每个文本块上出现省略号的问题,而不是按预期使用单个省略号。

  • 修复了导致省略号在多次运行的文本(如富文本或双向文本)上不显示或错位的问题。此错误更有可能发生在从左到右的文本上。

  • 修复了省略号不显示或显示多行右对齐文本或从右到左对齐的文本的错误一侧的问题。

  • 修复了当列表视图为空时阻止在列表视图中选择项目的 bug。

  • 组合框在打开时不再总是触发值更改事件。

  • 添加了对所有独立 Slate 应用程序的命令选项的支持。-nullrhi

  • 修复了在不使用鼠标时可能生成工具提示的问题。

  • 现在,当重新编译蓝图时,PropertyViewer的容器会重新构建。根据UE是执行蓝图的完整重建还是骨架重建,它们并不总是被标记为“存在较新的类”。

  • 修复了 SlateTextureAtlas 在空槽列表中创建可用节点的问题,这些节点的尺寸小于字形可以使用的尺寸。代码以前创建了两个节点,只要其中一个节点超过最小维度即可。在实践中,这会导致每次添加字形时迭代超过 94+ 个未使用的元素。在此更新中,它应该仅在超过最小值时创建较小的节点。

荒废的:

  • 删除并弃用了 Slate 元素。相反,相关数据被内置到子类中,以避免间接。例如,不要使用 ,请使用 。FSlateDataPayloadFSlateBoxPayloadFSlateBoxElement

UMG公司

新增功能:

  • 将 Desired Focus 小部件添加到 UserWidget。此新属性使用户小组件在接收焦点时可以将焦点转发到其子项之一。它可以在运行时和 UMG Designer 中设置为默认值。

  • URichTextBlock::ClearAllDefaultStyleOverrides现在是 BlueprintCallable。

  • 向列表视图添加了委托。OnIsItemSelectableOrNavigable

  • UListViewBase:添加了纯虚拟功能。 检查是否绑定,如果绑定,则返回其值。OnIsItemSelectableOrNavigableOnIsSelectableOrNavigableInternalOnIsItemSelectableOrNavigable

  • IMPLEMENT_TYPED_UMG_LIST:添加。这 oiverrides 并返回 .OnIsItemSelectableOrNavigableDelegateOnIsItemSelectableOrNavigableOnIsItemSelectableOrNavigableDelegate

  • 添加了对指定 BP 中可激活小部件的输入配置的支持。

  • 在 CommonUI 中添加了几个调试 CVars:

    • CommonUI.Debug.WarnDesiredFocusNotImplemented– 在未实现 GetDesiredFocusTarget 的情况下激活小部件时提供警告。

    • 添加了 CVars 来跟踪输入配置更改:

    • CommonUI.Debug.TraceConfigChanges

    • CommonUI.Debug.TraceConfigOnScreen

    • CommonUI.Debug.TraceInputConfigNum

    • CommonUI.Debug.CheckGameViewportClientValid– 在没有 CommonGameViewportClient 的情况下使用 CommonUI 时提供警告。

    • CommonUI.Debug.WarnAllWidgetsDeactivated– 停用所有小部件时发出警告。

    • Slate.Debug.TraceNavigationConfig– 记录 Slate 中导航配置更改时的记录。

  • 将视图模型的 UMG/FieldNotification 文件移至 FieldNotification 模块。

  • 添加了对蓝图定义变量上的视图模型 FieldNotify 广播的支持。

  • 添加了 UMG 小组件的 Editor Utility 版本,以防止序列化冲突。

  • 添加了 Viewmodel 绑定被世界勾选的延迟时间。如果小部件更改了世界,则绑定可能不再被勾选。

  • 筛选每个类的 Viewmodel 上下文创建类型。使用 或 允许或禁止类型。MVVMAllowedContextCreationTypeMVVMDisallowedContextCreationType

  • 添加了 中的一些相关功能。COMMONUI_APIFUIInputActionUCommonUIInputSettings

  • 视图绑定选取器现在按显示名称和关键字筛选转换函数。

  • 在“视图绑定”面板中,“添加”按钮现在添加用户在 UMG 设计器中选择的小部件。您可以更改此行为,并将其保存在设置(添加绑定模式)中。

  • 添加了对 FontFaces 的上升和下降覆盖的支持,您可以在 Font Face 编辑器中对其进行编辑。

  • 添加了在字体编辑器预览中缩放字体大小的功能。

  • 如果没有绑定,则不再将视图添加到 WidgetBlueprintGeneratedClass 中。

  • 在 AssetSearch 中添加了蓝图视图。默认情况下不会添加该模块,因为它依赖于 AssetSearch 插件。

  • 向视图模型编辑器添加了菜单扩展。“绑定”面板现在为“MVVM.ViewBindings.Toolbar”,视图模型面板为“MVVM.Viewmodels.Toolbar”

  • 当小部件有效时,返回其世界。添加了无法将小部件添加到世界时的消息。

  • 将 Viewmodel 标记数据添加到 UserWidget 生成的类中。它存在于蓝图资产上,但该数据在熟构建中不存在。

  • 添加了一个回调,用于将标签数据添加到小组件生成的类资产中。

  • 添加了 Viewmodels 的自动执行模式。Auto 将在编译时决定是立即运行绑定还是延迟运行绑定。如果可以从多个字段触发绑定,则绑定将在延迟模式下运行。

  • 添加了扩展,用于从蓝图扩展插入设计器DetailView的自定义设置。

  • 删除了在视图模型中为 ComplexConversionFunction 提供 SourcePath 的需要。源数据位于函数本身内部,并且 fieldnotify 名称已保存在类绑定中。

  • 更新了 GetBindingInfoFromFieldPath,以支持将一个 Viewmodel 嵌套在另一个 Viewmodel 中。

  • 添加了 GetBindingInfoFromFieldPath 函数的单元测试。

  • 在 View 类上添加了 DoesInitializeAtConstruction 以支持手动初始化。当标志为 false 时,用户负责初始化视图。

  • 为视图模型添加了 ReevaluateSourceCreator。如果路径包含通知,则可能需要评估在编译时发现并添加到 SourceCreator 列表中的源。此函数类似于 SetViewModel,但从 SourceCreator 中查找新值。

  • 向“详细信息”面板公开了 Viewmodel 属性。现在,您可以使用对象检查器检查视图模型。然后,您可以看到哪个视图模型附加/绑定到视图。

  • 添加了对在视图模型中嵌套视图模型的支持。

  • 添加了对非 UserWidget 属性的 Viewmodel 源的支持。编译器生成缺少的路径。

  • 视图模型现在用于比较 .FText::IdenticalFText

  • 将视图模型性能统计信息添加到运行时视图。

  • 添加了一个选项,用于在编译后记录所有 Viewmodel 绑定。启用 CVar 以记录此信息。MVVM.LogViewCompliedResult

  • 添加了一个虚拟方法,以便可以重写 CommonInputProcessor。

  • 可以选择抽象类作为 Viewmodel 类,但不能从抽象 Viewmodel 类创建实例。

  • 添加了 Resolver,这是一种选择视图模型的新方法。您可以扩展解析器,并可以自行实现自己的逻辑来查找/创建视图模型。

  • 更新了 UMG 小组件上的样式默认值,以使用默认样式缓存。

  • 添加了在 UMG 设计器中隐藏 BindingWidget、NavigationSimulation、Pallets 和 Hierarchy 窗口的选项。

  • 将 CommonUI 重命名为 .FUICameraConfigFActivationMetadata

  • 在编译时添加了一条消息,通知何时在运行时使用 2 个视图。

  • 为 Viewmodels 的 FieldNotificationDelegate 添加了单元测试。

  • 添加了对复杂转换函数的自定义引脚的支持。

崩溃修复:

  • 修复了在加载屏幕结束前单击 X 窗口按钮时加载屏幕崩溃的问题。

Bug修复:

  • 修复了在禁用和重新启用时,CommonUI 按钮上可能会出现多个默认操作提示的问题。

  • 更正了 UMG Designer 中的收藏夹功能,以允许在显示库窗口时收藏多个控件。

  • “设计视图构件”将所需大小的选择边框设置为 0,以防止 UMG 设计视图错误地表示 0 大小构件的布局。

  • 修复了当激活的根不支持激活焦点时阻止 CommonUI 操作更新的问题。

  • 对模拟光标功能进行了修复,以支持游戏手柄驱动的光标移动。

  • 在小组件初始化之前设置视图模型时,不再被覆盖。

  • 修复了阻止 Blutility 类包含在其他模块中的问题。

  • Viewmodel 系统现在在访问绑定库之前测试它是否已加载。

  • 修复了阻止用户从详细信息面板重命名 Viewmodels 的问题。

  • 将全局视图模型集合移至 GameInstance 子系统,以允许 PIE 和分屏。

  • 修复了固定器小部件未在编辑器中呈现的问题。这些现在可以通过“Slate.EnableDesignerRetainedRendering”进行配置。

  • 修复了删除视图绑定时未返回绑定的正确状态的 bug。

  • 修复了在执行委托时添加和删除委托时 Viewmodels 中委托的顺序。

  • 在删除 Viewmodel 之前,UMG 现在将通过查找其绑定和转换函数来检查 Viewmodel 是否正在使用中。

  • 更新了找不到字段时 Viewmodels 的编译器错误消息,很可能是由于缺少 FieldNotify。

  • 修复了使用 AllowPrivateAccess 在视图模型中访问私有 UFunctions。

  • 修复了 ViewModel IsBindingValid 错误消息,该消息不包含完整的属性类型。

  • 修复了在没有筛选器时不显示函数的 Viewmodel 字段选取器。

  • 添加了对 Viewmodels 中对象绑定数组的支持(与 BP 相同)。

  • UMG 现在在编译时检测小部件树中的循环引用。

  • 修复了阻止小组件注册多个增强输入操作的问题。

  • 修复了在蓝图的构造脚本中修改时导致视口子系统中缓存槽无法更新的问题。

  • 修复了 CommonUI 操作域在编辑器重新加载时未重置配置的问题。

  • 更改了某些 Viewmodel 属性的 displayname。

  • 更改了 Viewmodel 字段不存在时的错误消息,以包含问题的可能解决方案。这将测试该字段是否存在于向下转换结构上,而不是上一个属性所有者结构上。

荒废的:

  • 删除了专门的视图模型编辑器,转而使用蓝图基础编辑器。

虚拟制片

IO的

新增功能:

  • 添加了一个工具,用于手动对节点偏移进行微调。

  • 添加了变形畸变模型,并支持校准变形镜头到相机校准插件。

  • [远程控制]在项目设置中公开了 websocket 服务器绑定地址。

  • [阿贾]添加 HDR 支持选项。

  • [河最大]Rivermax的新增功能:

    • 在输出流中为缺少的区块添加了更多日志。

    • 更改了检测到停顿时的 rivermax 输出调度。

    • 添加了 Rivermax TRO 覆盖控制台变量。

  • 添加了对blackmagic media output的HDR支持。

  • 添加了其他去隔行方法,并能够为视频输入提供自己的去隔行扫描器。

  • [远程控制]添加了一个设置来控制允许的来源。

  • 在 Rivermax 捕获中添加了新的帧锁定模式。

  • [远程控制]默认情况下,对 localhost 外部的客户端强制使用密码。

  • 添加了对 Aja 和 Blackmagic 媒体源的 OCIO 支持。现在,您可以选择一个OCIO配置,在SDI源中显示之前将其应用于SDI源。

  • 添加了媒体捕获标记以跟踪帧。

  • 默认情况下,在任何新创建的媒体纹理上启用新样式输出。

起色:

  • 更改了 Rivermax RTP 时间戳,以减少分析器看到的媒体延迟。

  • 将媒体捕获同步点移至其自己的线程以进行帧锁定工作。

崩溃修复:

  • 添加了在不满足先决条件时在 Rivermax 初始化期间防止崩溃的保护。

  • 修复了对 中的属性调用 setter 方法时发生的远程控制崩溃。CreateRCCall

Bug修复:

  • 修复了场景捕获中的媒体板块和 mips 支持。

  • 修复了预缓存的 EXR 磁贴错过媒体板更新的问题。

  • [远程控制]修复了 Websocket 服务器在更改端口后保持端口打开的问题。

  • [远程控制]修复了远程控制预设有时在 Play-In-Editor (PIE) 中找不到对象的问题。

  • 修复了阻止播放 Rivermax 输入流的争用条件。

  • 修复了遥控器崩溃的问题:

    • 访问 GEditor 时未测试 nullptr。

    • PropertyWatchers现在仅在 Transform 属性之外使用。-game

    • 在 中,在没有首先检查最后一个帧值中是否有任何数据的情况下被调用。 如果在创建属性观察程序时无法完成,则现在应正确初始化。PropertyWatcher->CheckForChangeIsIdenticalLastFrameValue.GetDataLastFrameValue

  • 修复了在垃圾回收期间媒体捕获池渲染目标在渲染线程中变得无效的问题。

荒废的:

  • 已弃用,其功能已完全被媒体板取代。UImgMediaPlaybackComponent

  • [媒体捕获]已弃用,取而代之的是 。FMediaCaptureOptionsResizeSourceResizeMethod

n显示器

新增功能:

  • 在 ICVFX 面板中添加了一个新选项卡,以显示舞台演员的详细信息面板和组件列表。这允许用户编辑舞台演员上的任何属性,而无需转到关卡编辑器窗口。

  • 添加了在nDisplay编辑器的树视图中按字母顺序对nDisplay群集节点和视口进行排序的功能。

  • 为nDisplay舞台演员添加了全局色度键设置,可用于任何ICVFX摄像机,以及启用时用于任何重叠色度键。

Bug修复:

  • 已正确处理介质板材料实例常数。

  • 修复了 OpenColorIO 显示视图转换在 nDisplay 节点上不起作用的问题。

  • 修复了以下问题:如果拆分器向左拖动得太远,则颜色分级抽屉左侧面板上的按钮会与其他 UI 元素重叠。

  • 修复了在解析过程中可能损坏命令行参数的问题。如果带引号的参数包含空格(如路径),则其他常见序列(如 和 或八进制转义)处理不当。UDisplayClusterGameEngine::Init\n\t

荒废的:

  • 弃用了自定义色度键启用标志,该标志已替换为父色度键设置中的组合框,用于确定用于 ICVFX 摄像机的色度键类型。

渲染

API 变更:

  • 必须重新保存资产才能提高效率。如果配置更改或库版本更新,也必须重新保存资源。

新增功能:

  • 公开的 OpenColorIO CPU 颜色将纹理转换为编辑器蓝图。

  • 向编辑器蓝图公开了 OpenColorIO 活动视口配置控件。

  • 通过将生成的资源缓存到 UAsset 中,缩短了 OpenColorIO 资产加载时间。

  • 向 OpenColorIO 公共渲染接口添加了预乘和 alpha 反转控件。

  • 添加了 OpenColorIO 支持,以便在配置具有定义的交换色彩空间时自动与引擎工作色彩空间进行转换。

起色:

  • 将 Composure 中的默认媒体板材质更新为新样式输出(常规颜色纹理采样器)。

Bug修复:

  • 修复了游戏中的 OpenColorIO,以确保它在拍摄高分辨率屏幕截图时保持活动状态。

  • 修补了 OpenColorIO 库以禁止 1D 纹理资源。

  • 添加了在 OpenColorIO 配置中选择文件的选项。.ocioz

  • 修复了高级源颜色和编码设置的纹理派生数据缓存 (DDC) 失效问题。

工具

新增功能:

  • CineCameraRigRail更新:

    • 添加了复选框选项以一次设置所有继承选项。

    • 添加了在上下文菜单中可视化和操作点旋转的选项。

    • 在钻机导轨中实施了驱动模式。

    • 在钻机轨道中实现了速度可视化。

  • 禁用由Sequencer驱动的速度热图。CineCameraRigRail

  • 为多用户添加了一种机制,使客户端能够请求预加载关卡序列资产。

  • 将新的多用户级序列预加载功能集成到Sequencer播放列表中。

  • 重新引入了编辑器设置。舞台操作员使用它来防止在快节奏环境中长时间运行操作。bCheckReferencesOnDelete

  • 渲染网格插件:

    • 将渲染网格蓝图设置为编辑时蓝图,以支持仅编辑者蓝图。

    • 使渲染网格资源中的非瞬态变量再次工作。

起色:

  • 修复了切换驱动模式时的跳跃电流位置。

  • 修复了渲染网格插件中的几个 bug 和问题:

    • 添加了多个新蓝图。

    • 添加了其他 python 示例脚本

    • 清理了渲染网格 UI。

Bug修复:

  • [虚拟球探]修复了用户在双手握住交互工具时卡住且无法取消选择演员的问题。如果激活了上下文菜单,则第二个工具现在回退到导航工具。

  • [虚拟球探]阻止用户在VR取景器中选择变焦镜头。如果在编辑器会话期间通过编辑“电影摄影机”>“项目偏好设置”更改了镜头选项,则VR取景器将遵循新添加的镜头。

  • [虚拟球探]在取景器工具中禁用了相机网格上的碰撞。

  • UDP 消息处理器在引擎启动的 PostDefault 阶段之前不会开始处理消息。用户不应在启动时依赖 UDP 消息处理器。

  • 修复了使用 Live Link Face Importer 插件导入 Live Link Face iOS 应用程序录制的 30 FPS ARKit 镜头时缺少关键帧的问题。

升级说明

动画

运行

升级说明:

  • 添加了动画压缩库 (ACL) 插件作为引擎插件,并将 ACL 插件设置为默认动画压缩编解码器。已经使用虚幻商城中的ACL插件和引擎二进制版本的被许可人将自动升级到新版本。那些使用 ACL 插件源版本的人将不得不删除他们的旧版本并手动进行任何代码更改。新动画将使用 ACL 插件,而旧动画将继续使用其当前编解码器。

音序器

升级说明:

  • [音序器]现在,复制镜头或创建新镜头会保留镜头的色调。

编辑 器

API 变更:

  • 添加了 API,以便在将输入/输出节点连接到测试图时显式定义自定义名称。NodeTestGraphBuilder

基础

核心

升级说明:

  • 已弃用,因为它使用旋转等待,这可能会导致优先级反转,随后在某些平台上出现死锁。使用代替 .TDepletableMpmcQueueTConsumeAllMpmcQueueTDepletableMpmcQueue

开发工具

升级说明:

  • 在启用蓝图的函数参数中,不再允许将 LazyObjectPtr 和 ObjectPtr 作为 TMap 键。使用带有 ObjectPtr 作为键的 TMaps 的函数必须更改为使用原始指针。

框架

蓝图编辑器

升级说明:

  • 动画蓝图事件图中不再允许使用输入事件节点。相反,请在动画蓝图上设置属性值,并在启用输入的Actor中设置该属性值。

游戏玩法

升级说明:

  • [模块化游戏效果 - 游戏能力系统(GAS)]将一些游戏效果功能移至可选组件中。如有必要,所有现有内容将在 PostCDOCompiled 期间自动更新以使用组件。

  • 更改了默认纵横比约束以保持 Y FOV,因为相机 FOV 现在始终作为水平 FOV 处理。如果保留给定窗口大小的精确框架很重要,则可以在 DefaultEngine.ini 中指定旧设置值(保持 X FOV)。

  • 添加了增强的输入用户设置,该设置将玩家可映射的键和其他输入设置存储在保存的游戏对象中。默认情况下,此功能处于关闭状态,可以在增强输入开发人员设置或配置文件中启用。

  • 使刷新按下的按键时增强输入的行为与旧系统一致。此行为为默认打开,但可以在“项目设置”>“增强输入”中关闭。

关卡设计和美术工具

几何核心

API 变更:

  • 添加了一个新类以提供一种算法来局部简化连接到一组指定边的三角形,这对于在操作倾向于仅在网格的已知区域(例如平面切割和多组边插入)中添加额外顶点后提高网格质量非常有用。FMeshPlaneCut 算法现在使用它来提高生成的网格质量。FLocalPlanarSimplify

建模工具

升级说明:

  • 现在,MatEd 工具会警告用户是否移除了网格使用的材料。如果用户接受结果并激活此警告,则使用移除材质的面将被重新指定为有效材质,因此 MatEd 工具现在无法创建具有无效材质分配的网格。

程序

升级说明:

  • 样条采样器现在有一个切换开关,可以在有界采样和无界采样之间进行选择。为了保持行为,以前的样条采样器将保持无界状态。默认情况下,新创建的采样器将受到限制。

  • 现在,差异节点可以更好地遵循通用标准。在操作发生之前,将迭代源输入,并将差值输入组合成一个联合。先前的节点将沿其输入边接收注入的联合节点,以保留较旧的行为。

  • 重构了 TargetActor 的使用,使其用于执行项目定位。在PCG蓝图中,请不要在PCGSpatialData上使用TargetActor变量,而是在PCGContext上使用GetTargetActor调用,并将之前使用的PCGSpatialData传递给它。检索目标参与者时,请使用 Context->GetTargetActor(SpatialData) 而不是 SpatialData->TargetActor。

在线

在线子系统

升级说明:

  • 重构了 OSS EOS 在创建和搜索时为会话和大厅设置 BucketId 的逻辑。现在,可以通过添加具有以下键 FOnlineSessionSettings::Settings 的设置,从游戏端设置任何 BucketId:OSSEOS_BUCKET_ID_ATTRIBUTE_KEY

  • 添加了 OSS EOS 的配置切换,以使用EOS_Achievements_UnlockAchievements而不是通过统计数据解锁成就。添加了用于统计信息实现的弃用标记,将在 5.4 中删除。要添加到相关的引擎配置文件中:[OnlineSubsystemEOS] bUseUnlockAchievements=True

  • 在OSS EOS Sessions and Hallbbies中添加了bUsesPresence作为属性,以便可靠地检索它,而不是从其他数据中推断它。将新逻辑包装在配置选项 bUseSessionPresenceAttribute 中。要添加到相关的引擎配置文件中:[OnlineSubsystemEOS] bUseSessionPresenceAttribute=True

像素流送

升级说明:

  • 一个信令服务器支持多个像素流送流处理器。这需要唯一设置主播 ID,并从 Github 更新像素流送基础设施。

渲染

照明

Bug修复:

  • 修复了与体积雾渲染的光域相关的 bug。

模拟

物理

升级说明:

  • 添加了预测插值,这是一种新型的物理复制。预测插值是一种复制方法,它复制从服务器上次接收的状态(插值),同时仍允许局部物理操作(预测)。这种复制是实验性的,仍在进行中。可以通过在项目设置中打开物理预测,然后在actor上将物理复制模式设置为预测插值来访问复制。确保将 actor 设置为复制、复制运动和根组件以模拟物理。

  • [几何集合]“骨骼选定材料”已从几何体集合组件上面向用户的材料列表中删除,从而简化了用户体验,并消除了用户通过更改此材料来破坏“断裂模式”选择可视化的功能。

用户界面

石板

升级说明:

  • 将控制台变量公开给发布版本。确保控制台变量不在 .ini 文件中,以保留以前的行为。Slate.EnableInvalidationPanels

UMG公司

升级说明:

  • 在实现通知界面的所有蓝图上添加了视图模型功能,并从构建中删除了隐藏的视图模型编辑器。如果您使用的是旧编辑器,则常规蓝图编辑器应该会接管,但您需要手动将属性标记为 FieldNotify。

虚拟制片

工具

升级说明:

  • 启用了对程序内容生成 (PCG) 参与者的多用户支持。

  • GPU 内存和 CPU 内存统计信息已添加到舞台监视器工具中。

  • 已为多用户启用 Landscape Actor 支持。

  • 多用户会话信息已在仅编辑器蓝图中公开。

  • 改进了Live Link Face App在Switchboard工具中的显示。

  • 添加了多用户自定义事件排序。

  • 环境变量现在仅在编辑器构建中受支持。UE_ADDITIONAL_PLUGIN_PATHS

  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
开启AI新纪元,对于华西证券来说,意味着将整个证券行业与人工智能相结合,创造出更高效、更智能的投资和交易环境。 首先,开启AI新纪元可以提高华西证券的投资决策能力。AI技术可以通过分析大量的市场数据,帮助华西证券实现更准确的风险评估和股票走势预测。AI还可以快速发现市场中的套利机会,提供更优质的投资建议,帮助客户获得更高的投资收益。 其次,AI技术可以提高华西证券的交易效率。以“量化交易”为例,通过建立复杂的算法模型,结合大数据分析,AI可以以更高的速度、更精准的方式进行交易,避免市场波动对交易的影响。这将大大提高华西证券的交易执行能力,同时降低交易成本。 此外,AI技术还可以改善华西证券的客户服务体验。通过自然语言处理、机器学习等技术,华西证券可以开发智能的客户服务系统,可根据客户的需求自动回答问题、提供投资建议,并实现更加个性化的服务。这将为客户提供更为便捷、满意的服务体验。 最后,开启AI新纪元将进一步推动华西证券的创新与发展。在AI技术的引领下,华西证券可以不断优化和创新现有产品和服务,不仅提高市场竞争力,还能够发掘新的商机和模式。 总之,通过开启AI新纪元,华西证券将能够在投资决策、交易效率、客户服务以及创新发展等方面实现巨大的进步,为投资者提供更优质、智能化的证券服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸法空性

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值