找回密码
 立即注册
查看: 406|回复: 0

在虚幻引擎UE5中GPU光线追踪碰撞(试验性)

[复制链接]
发表于 2022-9-22 12:10 | 显示全部楼层 |阅读模式
GPU光线追踪碰撞(试验性)

在Unreal中,你可以设置一个设置粒子系统,使用Collision模块来与关卡中的对象发生碰撞。在以前的Unreal版本中,当使用GPU发射器时,你在此模块中有多个选项。通常,大多数使用距离场(Distance Fields)选项生成环境的模拟。这是一种低成本但精度较低的解决方案。形状没有准确地描绘出来,并且当粒子离开屏幕会即刻消失。



在UE5中,我们为Collision模块添加了一个选项,以在GPU上使用光线追踪。无论发射器及其粒子在屏幕上还是离开屏幕,或是隐藏在物体后面,碰撞都会使用光线追踪来计算出准确的结果。

性能预算

构建游戏时,根据场景的构成,FX工作负载可能会有很大变化。有时你可能希望采取措施来帮助管理性能,例如剔除超出特定范围的实例,或剔除超出预算使用量的实例。


输入映射和平台支持





点击输入设备上的按钮将自动切换"通用动作(Common Action)"控件显示的图标。
Common UI提供了多种用于跨不同平台映射UI输入的实用工具,包括:

  • UI输入动作映射(UI Input Action Mapping)– 创建输入动作数据表以将抽象UI动作映射到特定按钮。
  • 每个平台的动作覆盖(Per-Platform Action Overrides)– 为特定的UI动作创建覆盖,例如在需要交换特定游戏主机上的确认和返回按钮时,便可使用此功能。
  • 控制器图标管理(Controller Icon Management)– 使用特定控制器的图标集创建 控制器数据资产(Controller Data Assets),然后将它们与UI输入动作关联起来。通用动作(Common Action) 控件将根据选定的动作以及用户用于控制应用程序的任何设备来显示相应的图标。
请注意,输入动作数据表中列出的动作专门用于Common UI用户界面,并且与旧版输入或高级输入系统中用作游戏内动作的动作无关。
Common UI控件和UI样式

Common UI添加了一个新的控件库,相关控件列在虚幻示意图形的控制板中的 Common UI插件(Common UI Plugin) 分段下。其中许多是通常在大量游戏和应用程序中出现的UI功能元件。这些控件包括:

  • 用于 日期/时间数值 的专用文本块。
  • 导航和可视性辅助工具(如 轮播动画切换器)。
  • 平台辅助工具(如 加载防护硬件可视性边框)。
  • 提供基本功能(如按钮和文本)但使用样式数据资产进行样式设置的控件。
Common UI的样式数据资产是蓝图类,其中包含通常在标准虚幻示意图形控件中出现的材质、纹理、字体和其他样式元素。Common UI的控件使用对这些资产的引用,而不是将样式数据保存在控件本身上。因此,UI设计师更容易在许多不同的菜单和HUD中创建一致的样式。
此外,你可以提供适用于任何Common UI控件新实例的全局默认样式。在 项目设置(Project Settings) > 插件(Plugins) > Common UI编辑器(Common UI Editor) 菜单中的"模板文本(Template Text)"、"模板按钮(Template Button)"和"模板边框(Template Border)"下可以找到这些选项。当为其中任何一个提供样式时,它们的更改都将传播到所有没有不同样式集的Common UI控件。
项目设置(Project Settings) > 插件(Plugins) > CommonUI框架(CommonUI Framework) 中,还可以选择更多专用元素的资产,包括用于加载防护的 默认动态浏览图示材质(Default Throbber Material),以及可充当UI中未加载元素的占位符图像的 默认图像资源(Default Image Resource)
Slate和UMG性能

在虚幻引擎5.0中,我们改进了Slate和虚幻示意图形的性能。主要改进是使用了 全局无效Slate属性,从而避免了每帧多次更新TAttributes。有关"Slate属性"的详细信息可以在 Engine\Source\Runtime\SlateCore\Public\Types\SlateAttribute.h 中找到。"全局无效"(在4.24版中引入)仅更新/绘制无效的控件。
现在更容易将你的项目切换到"全局无效",因为启用"全局无效"时,SlateAttribute会正确更新。出于性能原因,最好不要将SlateAttribute/Attribute用于游戏控件。默认情况下不会启用"全局无效",且一些小的SWidget仍然需要转换到新系统。
已添加多个验证功能来测试SWidget层级的完整性。从 控件反射器(Widget Reflector) 中可以启用它们。

输出映射中的视口旋转

以前,要将变换操作应用于nDisplay视口,你必须提供具有自定义UV贴图的静态网格体或外部.obj文件。你现在可以直接在nDisplay配置编辑器的输出映射(Output Mapping)面板中将变换操作(如旋转和缩放)应用于视口。



故障转移支持

现在,你可以为nDisplay群集启用故障转移策略。目前可用的故障转移策略是 故障时删除S节点(Drop S-node on fail),即如果某个辅助节点断开连接或超出网络超时设置,则会从群集中删除该节点。一旦故障节点被删除,群集便在没有故障节点的情况下继续运行。如果主节点被删除,群集仍将终止。
新的控制台变量编辑器插件(测试版)

控制台变量编辑器(Console Variables Editor) 是一个面板,显示有关项目中设置的所有控制台变量和命令的信息,并提供了一个查看和修改所有变量的中心位置。你可以创建预设,在多个项目中使用相同的控制台变量和值。控制台变量编辑器还支持在多用户会话中跨多台计算机对控制台变量和命令进行控制。



新的OpenCV插件

在以前的版本中,OpenCV包含在虚拟制片工具集中。在这个版本中,它现在是一个独立的插件。该插件使用OpenCV版本4.5.5,并添加了新的蓝图节点,例如用于ArUco标识追踪和棋盘追踪。
远程控制改进

我们添加了一些方法来减少在新场景中设置远程控制预设(Remote Control Preset)和Web应用程序所花费的时间:

  • 重新绑定: 现在你可以打开之前创建的远程控制预设(Remote Control Preset)并将其重新绑定到新场景中的Actor以重新链接功能按钮。
  • 模板: 当你想要多个具有相似控件的Actor实例时,你现在可以在远程控制Web应用程序中将一组功能选项设置为Actor的模板。在Web应用程序中切换Actor实例以使用该实例上的功能选项。
相机镜头校准的改进

在此版本中,我们评估了两种用于校准镜头畸变和节点偏移的新算法,并对镜头校准过程进行了改进,包括:

  • 校准镜头后手动调整图像中心。
  • 在镜头文件资源编辑器(Lens File Asset Editor)的视口中添加覆盖,例如十字准线。
  • 使用一种新算法校准节点偏移,该算法可找到镜头的光轴和入瞳位置。
  • 使用新算法校准镜头畸变,你可以手动捕获一组3D-2D点对应关系。
  • 镜头信息现在自动保存到镜头文件中。
  • 以JSON格式导入和导出到ulens文件
DMX改进

我们继续改进了DMX工具集,包括:

  • 使用Take Recorder显著提高了DMX轨道的保存速度。
  • 输出端口可以延迟。
  • 输出端口现在支持许多的单播地址。
  • 输出端口每秒重新发送一次未更改的数据。
  • 可在Fixture类型中分配矩阵。
  • 增加了对GDTF标准的支持。

我们为 关卡快照(Level Snapshots) 插件添加了对以下功能的支持:

  • 删除了 用于nDisplay的关卡快照(Level Snapshots for nDisplay) 插件,并为 关卡快照(Level Snapshots) 插件添加了nDisplay支持。
  • 添加了对植被的支持。
  • 现在,可以从关卡快照中恢复父/子关系和组件。
  • 提高了保存和加载关卡快照的性能。
Switchboard的改进

此版本中,我们专注于改善Switchboard的用户体验,包括:

  • 改进了主Switchboard窗口和"设置(Settings)"窗口中的UX。
  • 现在可以在主Switchboard窗口的底部访问多用户服务器,并添加用于控制多用户会话的操作。
  • 你可以在节点启动时启用Unreal Insight收集。
  • 现在可以从Switchboard以zip文件的形式收集日志。
Sequencer播放列表

使用新的 Sequencer播放列表(Sequencer Playlist) 功能,可动态实现关卡序列的准备、排队和触发。在与虚拟制片、广播和现场活动阶段的动画内容交互时,回放列表提供了更高的灵活性和敏捷性,无需提前为在编辑器中回放的所有子序列预先设置时间。
Sequencer播放列表包括以下功能:

  • 对关卡序列单独或全部同时播放和停止。
  • 回放时对序列进行修剪、循环和时间缩放。
  • 根据需要对关卡序列静音,以跳过指定剪辑片段的回放。
  • 无限保持序列的第一帧进行预演和对齐。
  • 使用Take Recorder录制由回放列表触发的动画,以捕获实时回放以进行发布。




移动平台

开发要求和兼容硬件

以下是虚幻引擎5.0支持的移动设备所支持的操作系统版本和最低硬件要求。有关所需SDK和IDE的更多信息,请参阅平台SDK升级部分。
iOS、iPad OS和tvOS

UE 5.0支持iOS、iPadOS和tvOS设备,其各自的SDK支持版本14或更高版本,并使用Apple A8处理器或更高版本。以下是最低兼容设备型号:

  • iOS 14

    • iPhone 6S或更新机型
    • iPod Touch第7代

  • iPadOS 14

    • iPad 5代或更新机型
    • iPad Air 2或更新机型
    • iPad Mini 4或更新机型
    • iPad Pro(所有型号)

  • tvOS 14

    • Apple TV HD
    • Apple TV 4K(第一代)
    • Apple TV 4K(第二代)

Android

UE 5.0支持符合以下规格Android设备:

  • Android 8或更高版本
  • 基于64位ARM的CPU
  • 兼容的GPU

    • Mali T8xx、G71、G72、G76、G77、G78和G710系列
    • Adreno 5xx、6xx或7xx系列
    • PowerVR GM9xxx
    • Xclipse 920

  • 兼容的图形API

    • OpenGL ES 3.2
    • Android 10或更高版本的设备(具有兼容驱动程序)支持的Vulkan

移动平台的Turnkey支持

当你使用Turnkey设置 Android SDK 时,Turnkey将自动执行大部分设置步骤,包括下载所需版本的Android Studio并运行其他设置步骤和脚本。虽然你仍然需要手动运行安装向导,但这减少了许多出错的可能性。手动SDK设置仍然可用,但建议使用此流程。
Turnkey目前在适用于Android的macOSX上不可用,但将在以后的版本中提供这一支持。
由于iOS、tvOS和iPadOS的配置有严格的控制,Turnkey尚不支持iOS的任何自动设置。但是,它支持Xcode设置和SDK检查。
Android文件服务器插件

UE 5.0引入了 Android文件服务器(Android File Server,AFS) 插件,它可以在编译时将文件服务器嵌入到项目中。默认情况下,在发布版本中会禁用嵌入操作。你可与设备的AFS实例进行通信来进行以下操作:

  • 通过WiFi、USB或同时使用这两者来推送文件,进而提高安装速度
  • 直接更改命令行文本文件,无需推送完整的构建版本
  • 显示设备上任何文本文件的内容
  • 执行ADB中可用的许多其他操作
AFS提供了一种无需外部存储权限或作用域存储(Scoped Storage)即可处理文件操作的方法。默认会启用AFS,但如果你想改用ADB,则可以在 项目设置(Project Settings) > 插件(Plugins) > AndroidFileServer 中禁用AFS。

启用该插件后,开发和调试版本将使用AFS将文件推送到Android设备。你可以使用USB连接或通过WiFi将文件推送到已连接局域网的设备。为了加快部署,也可以使用 USB和网络组合(USB and Network Combined) 同时通过这两种连接方式推送文件。每当一条连接正在传输一个文件或一批文件时,另一条连接将接替这条连接。此功能会融入部署过程。
AFS也有自己的命令行工具,你可以在引擎的安装目录中的Engine/Binaries/DotNET/Android/UnrealAndroidFileTool下找到它。此目录包含适用于Linux、MacOS和Windows的可执行文件版本。



通过命令行运行这个可执行文件时,将显示一个包含所有可用函数的菜单。

如果将help命令与一些带参数的命令添加到一起,它将输出有关该命令的更多信息。
最后,可以使用蓝图库从虚幻应用程序内部启动和停止AFS。

虽然AFS可以使用为项目生成的唯一安全令牌来实现基本安全性(请参阅"项目设置"菜单中的"安全令牌(Security Token)"参数),但相较于使用默认广播接收器,使用这种方式可以更安全地启动和停止AFS。
请注意,Android文件服务器需要Android SDK 26或更高版本。
Android二进制文件大小的改进

在UE 5.0中,我们引入了许多优化,显著降低了Android应用程序的二进制大小。这些优化包括用于启用无用代码消除、相同代码折叠和代码膨胀清理的编译器和连接器标记。这些优化将Fortnite的二进制文件大小减小了大约50%。此外,这些优化还可以略微提高代码效率。
还有一组必须手动激活的高级二进制文件优化,它们仅适用于最低Android SDK版本23或更高版本。
你可以在*Engine.ini文件中更改最低SDK版本:
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]MinSDKVersion=23要启用高级优化,请添加以下设置:
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]bEnableAdvancedBinaryCompression = true使用SDK 23或更高版本的项目将使用新的GNU哈希ELF部分而不是旧格式,从而提供更好的性能。除此之外,你的项目还将利用 APS重定位表压缩(APS relocation table compression),这是一种Android特有的压缩格式。例如,在我们的测试中,大小为62 MB的重定位表可减少到约8MB。
对于使用不低于SDK 28版本的项目,可利用 RELR重定位表压缩,它甚至比APS更高效。这会使二进制大小减少约两个数量级。例如,我们的62 MB表减少到大约600KB。
将MinSDKVersion升级到23或更高版本还有另一个好处:Android操作系统现在能够直接从应用程序的APK加载.so二进制文件,无需解压后再安装到设备上。
通过Google Play商店发布的项目将从中受益,因为商店可以在用户下载你的应用程序时提供更好的动态APK压缩。但是,不保证在其他应用商店中也是如此。虚幻引擎默认强制执行APK压缩。如果要禁用,可以使用以下配置变量执行此操作:
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]bExtractNativeLibs = falseDXC成为虚幻引擎5.0 Vulkan和GLES 3.2的默认选择

在UE5中,我们将Vulkan和OpenGL ES3.2的着色器编译器工具链从HLSLcc改为Microsoft的 DirectX Shader Compiler (DXC)。该编译器直接生成SPIR-V,无需生成GLSL高级源来提高性能,它使用SPIRV-Tools优化通道来生成高效的SPIR-V代码。DXC还提供了对最新HLSL语言功能的访问,你可以通过庞大的在线社区获得支持,其中包括来自Microsoft、Google和AMD的开发者。
对于Vulkan,DXC是UE 5.0中唯一可用的着色器编译器。HLSLcc编译器已从Vulkan后端完全删除,不再可用。
对于OpenGL ES3.2,HLSLcc仍可作为备用方案,它在禁用模拟统一缓冲区时提供了唯一支持OpenGL ES的方法。
UE 5.0的移动渲染管线中提供以下渲染功能:
预集成次表面散射着色模型(测试版)





从左到右:无SSS,在PC上启用了SSS,在移动平台上启用了SSS。
Mobile Forward渲染器现在支持 次表面轮廓(Subsurface Profile) 着色模型,使移动应用程序能够以更详细的细节和光照精度来表示皮肤、蜡和塑料等材质。为提高效率,漫反射配置文件已预集成为查找表,你可以在运行时对其进行调整。移动平台的次表面模型需要曲率贴图,但除此之外,与桌面平台和游戏主机上用于次表面轮廓的所有相同参数均兼容。
距离场阴影支持(试验性)





在UE 5.0中,移动渲染器支持 距离场阴影。在具有动态光照的移动项目中,启用此功能可提供距离场阴影以及级联阴影贴图。级联阴影贴图为靠近相机的对象提供阴影,而距离场阴影将填充距离相机较远的阴影。对于需要动态光照且渲染阴影的距离超出了级联阴影贴图允许范围的游戏,这非常有用。
距离场阴影在大多数移动硬件上都是试验性的。要使用距离场阴影,请在Engine/Config/Android或Engine/Config/IOS下找到DataDrivenPlatform.ini。然后,在相应的[ShaderPlatform ...]部分中,将bSupportsMobileDistanceField、bSupportsDistanceFields和bSupportsByteBufferComputeShaders设置为true,并将r.DistanceFieldShadowing设置为1。之后,只需在关卡中的光源上启用距离场阴影即可。
请注意,距离场阴影需要深度预通道,这将使你的绘制调用数量大致翻倍。这会对移动游戏的性能产生严重影响,因此你应该在目标硬件上进行性能测试,然后再确定是否在你的游戏中使用。

级联阴影贴图缓存(试验性)

对于严重依赖动态光照的大型世界,由于要在较长的绘制距离上生成多达数百个静态网格体物体的动态阴影,其渲染性能可能开销很大。这在移动设备上尤其难以承担。虚幻引擎5.0提供了一个用于缓存静态网格体物体的级联阴影贴图(Cascaded Shadow Maps,CSM) 的系统,可节省绘制调用并潜在提高这些环境中的性能。要使用此功能,请通过"项目设置(Project Settings)"菜单启用 启用CSM缓存(Enable CSM Caching) 设置并重新启动虚幻编辑器。
此功能是试验性的,并不保证性能会得到改善。虽然CSM缓存确实节省了绘制调用,但也添加了一个阴影贴图复制通道,从而增加了带宽成本。你应始终对目标硬件进行比较,以确定CSM缓存是否有助于你的项目。
SkinCache

移动项目现在支持 SkinCache,它会在帧开始时预计算一次骨骼网格体蒙皮,然后将该计算重用于同一帧内的不同渲染通道。对于使用大量骨骼网格体的移动项目,可以显著提高性能。
默认情况下,所有平台上都禁用SkinCache。若要启用,请打开"项目设置(Project Settings)"并启用 支持计算蒙皮缓存(Support Compute Skin Cache)
GPU场景实例化和剔除的改进

在UE 5.0中,我们改进了移动设备上的动态实例化和GPU实例剔除。GPU场景实例化和剔除可以显著减少项目的绘制调用,从而提高渲染性能。效率方面收效将取决于你的项目内容。使用大量具有相同材质的网格体的项目,将最大程度受益于此功能的启用。
默认情况下,移动平台上禁用GPU场景实例化和剔除。若要启用,请打开DefaultEngine.ini,找到或添加 [/Script/Engine.RendererSettings] 类目,然后添加r.Mobile.SupportGPUScene=1。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 05:55 , Processed in 0.095703 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表