UNIGINE 2.18.1: 升级器、优化预设、应用内视频流、MATLAB 集成
主要变化
- 升级器支持:NVIDIA DLSS 3 和 AMD FSR 2.2(实验性)
- CUDA 集成 Vulkan 和 DirectX 12
- 优化质量预置高达80-90%的性能提升
- 通过 ROS 桥连接更新了 MATLAB 集成
- 应用内视频流播放
- 改进的表面分析器工具
- 运行时节点的依赖跟踪
- 编辑器和 SDK 浏览器中的多语言 UI
- 简化了从 Unity 项目导入场景的过程
- 免费学习课程已更新
高级升级:DLSS 和 FSR(实验性)
我们继续增强引擎的性能,以整合新功能,支持更高的分辨率,并为最终视觉效果添加更大的真实感,所有这些都在同样严格的帧预算内。在这种情况下,升级器的重要性很难被夸大:它们减少了为更高分辨率渲染更多像素的需要,从而释放资源用于其他关键增强功能并保持可接受的性能水平。为此,我们集成了对 NVIDIA DLSS 3(Deep Learning Super Sampling)和 AMD FSR 2.2(Fidelity FX Super Resolution)的支持。这些技术可以在不同制造商的各种设备上进行升级,并满足静态和动态场景的各种质量预设。
此功能目前处于实验阶段,仅支持使用 Windows 和 DirectX 12 的配置。随附文档中概述了每个升级器的详细要求和兼容性限制。
优化的质量预设
UNIGINE 引擎包含大量旨在控制渲染的设置和参数,其中许多设置和参数特定于某些情况和场景,而在其他情况下可能不需要。为了适应各种场景,我们提供了广泛的优化选项。我们对 UnigineScript 示例包以及 SDK 中作为演示包含的 C++ 和 C# 示例包的质量预设进行了微调。无论是高端系统还是功能较弱的平台,这些优化都能确保平稳运行,提供最佳性能所需的所有必要选项和设置。
此优化为 C++、C# 和 UnigineScript 示例提供的平均性能增益为80-90%(测试配置为1920x1080分辨率:Intel i3-4160;NVIDIA GTX 1050 Ti (4GB);8GB RAM)。
虚拟现实改进
UNIGINE Core VR系统进行了一系列增强和修复,以提高其稳定性和可靠性。这些改进包括:
- 修复了单独视口不共享自动曝光和白平衡级别的问题,导致 Varjo HMD 上外围显示器的视觉不一致
- 修复了使用 Varjo VR API 时多次切换 vr_foveated_rendering_enabled 时发生的崩溃
- 修复了 VR 中外围渲染模式默认禁用的问题(返回默认状态为启用)
- 修复了一些 Varjo 警告消息
- 修复了 vr_mirror_mode 1 和 2 的问题,导致在 Vulkan 上的视频调试模式下出现大量有关错误剪刀矩形的调试消息
我们还优化了 VR 项目模板的质量预设,以确保每个质量级别的最佳性能。
从版本 2.18 开始,Vulkan 是 Linux 上主要的全功能图形 API,而版本 2.18.1 标志着对 VR 的 OpenGL 支持的终止。 OpenGL 上的 VR 唯一剩下的选择是使用已弃用的插件,例如 OpenVR、Varjo 和 Oculus。
ROS + MATLAB 集成
我们添加了使用 MATLAB 开发的高级驾驶员辅助系统 (ADAS) 模型的基本示例,该模型通过 ROS(机器人操作系统)桥与 UNIGINE 驱动的车辆仿真进行通信。本质上,MATLAB 脚本用于通过使用 ROS 通信协议的网络来控制基于实时 3D UNIGINE 的应用程序中的虚拟车辆。此类模拟有助于制造配备 ADAS 的车辆或完全自动驾驶的车辆。
该示例可作为UNIGINE 2 Sim SDK中的模板项目使用。
Vulkan 和 DirectX 12 的 CUDA 集成
UNIGINE Sim SDK 现在包含一组新示例,演示如何使用 UNIGINE API 中的新 ResourceExternalMemory 和 ResourceFence 类与外部图形 API 进行交互。尽管示例显示了与 NVIDIA CUDA Toolkit 的交互,但您可以使用它们作为将 Engine GAPI(Vulkan、DX11、DX12)与其他可以接受句柄并导入同步原语(例如 CUDA 中的外部信号量)。
这种方法允许使用不同 GAPI 的各种 API 进行交互,例如使用 DX11 的 Media Foundation 与使用 DX12 或 Vulkan 的 Engine 进行交互。
这些示例还说明了如何直接从视频内存获取数据而无需 CPU 往返,并使用非引擎图形 API 对其进行处理。
通过 CUDA 12.3 和引擎实现的 GPU -> CPU 纹理传输性能的差异如下表所示(在我们的操作配置上进行了测试)。 根据视口分辨率的不同,CUDA的平均性能提升从10倍到24倍不等。
您只需启动新的 CUDATextureTransfer 示例并启用 Profiler 即可在 PC 上检查结果。
样品清单包括:
- CUDAMeshDynamic:共享动态网格的顶点使用 CUDA 在 GPU 上进行处理
- CUDAStructuredBufferWrite:共享结构化缓冲区中的粒子使用 CUDA 在 GPU 上更新,并使用 Unigine Material 和计算着色器手动光栅化
- CUDATextureTransfer:使用 CUDA 处理共享纹理,并将其从视频内存复制到 RAM 中的 Unigine Image
- CUDATextureWrite:使用 CUDA 处理共享纹理,并将其作为立方体上的纹理显示在 Unigine Object 上
应用内视频流播放
现在,可以通过新的 UnigineVideoTexture 插件对基于 UNIGINE Sim SDK 版本构建的应用程序中来自在线源的低延迟视频流进行硬件解码,您可以从 Add-On Store 下载该插件。
该插件当前支持 DirectX 11 GAPI 和 Windows 10+ 操作系统,并允许您将视频从 VP9 编码的在线 RTSP/RTP 源流式传输到 UNIGINE 纹理(忽略声音数据)。该纹理可用于任何材质并应用于场景中的各种对象(例如,将视频输出到虚拟演播室中的背景电视面板或创建多摄像机监控系统)。
这不是应用内视频解码的通用解决方案,并且应用范围有限。
该插件包还包含一个带有纹理的示例场景,您可以将视频流式传输到其中,以及有关如何启动自己的流以进行快速测试的指南。
其他引擎改进
- 修复了 SystemProxyQt 类导致调用 EngineWindow::minimize() 后窗口画布变白的问题(Viewer 演示、ViewportQt 示例,以及受影响的Qt-Based 项目模板)。添加了 Minimized, Maximized 和 Restored 窗口事件处理程序。
- 修复了对 90 度及以下角度的粒子与物理形状之间的碰撞的检测。
- 修复了启用 Fast Shutdown 选项时关闭时基于 QT 的项目崩溃。
- 修复了创建 EngineWindow 时忽略指定 gui_path 的问题。
- 修复了加载包含 NavigationMesh 的 NodeReferences 时导致崩溃和冻结的问题。
- 修复了 Mesh Clutter 对象(作为 Landscape Terrain 对象的子对象添加)在相机超出其边界时启用 Intersection 选项的闪烁问题。
- 修复了在 C# 组件中使用 ParameterFile时引发异常的问题(从属性创建组件时添加的 Unigine.File 类型检查)。
- 修复了创建 Shoreline 纹理后启用 Field Shoreline 时 AMD RX 6800 (DX11) 上的崩溃。
- 修复了DirectX12 上 LightWorld / LightOmni / LightProj 源的镜头光晕渲染问题。
- 修复了渲染 ObjectText 的问题,以防其轴心超出相机的视锥体。
- 修复了与纹理缓存相关的视觉伪影。
简化从 Unity 导入场景
切换技术是一个重大决定,主要是因为在新环境中复制项目需要时间。得益于我们的一位社区爱好者开发的新工具,从 Unity 到 UNIGINE 的过渡现在变得更加容易。该工具有助于自动传输整个场景层次结构,其中包括:
- 蒙皮和静态网格体:传输所有网格体及其细节级别 (LOD)。
- 材质分配:将所有材质应用于对象,包括所有使用的纹理。
- 物理设置:集成物理配置,例如 RigidBody、原始碰撞器和凸碰撞器以及碰撞矩阵。
- 预制件和 C# 组件:迁移附加到对象的预制件和 C# 组件。
虽然该工具处理大部分机械传输,但仍然需要手动干预来微调参数并将自定义代码迁移到 UNIGINE。该工具的开发人员承诺在未来的更新中提供更多功能,以进一步简化流程。这一增强功能不仅节省了时间,还最大限度地减少了与切换开发环境相关的挑战,使您能够轻松地利用 UNIGINE 的强大功能。
该工具包括两个插件:
- Unity 编辑器插件 (Unigine Exporter),可将 Unity 场景导出到 JSON 文件(从 Unity Asset Store 获取)。
- UNIGINE 编辑器插件 (Unity Importer)采用此 JSON 文件并在 UNIGINE 中生成类似的场景(从UNIGINE Add-On Store 获取)。
UnigineEditor
运行时节点的依赖性跟踪
有时跟踪运行时节点之间的依赖关系可能是有用的,即当前存在于 UnigineEditor 中打开的世界中的节点,包括那些仅存储在RAM中且未保存到磁盘上的文件 (*.world / *.node) 的节点。这可以帮助避免意外删除被其他人使用的节点,以及分析/验证节点交互的逻辑(例如,检查组件中是否使用了正确的节点,等等)。
现在,要查找使用所选节点或节点组的所有运行时节点,请在 World Nodes Hierarchy 中右键单击它们,然后选择 Show World Nodes Using This One。请参阅这篇文章了解更多详细信息。
表面分析器
表面分析器现在变得更加方便,使您能够监视当前世界中的所有表面,而不仅仅是在视口中看到的表面。只需在 Location 下拉列表中选择新模式 From World。
其他 UnigineEditor 改进
- 修复了Particles Field Mask 值的保存问题,消除了从 NodeReference 加载 Particle System 后重置此选项默认值的问题。
- 修复了烘焙 LandscapeTerrain 蒙版以及在 Landscape Paint Mode 中编辑它们的问题。
- 修复了通过 Replace Asset Links 替换某些资源后对基于图表的材质应用更改的问题,此类材质现在会自动重新加载。
- 现在,在支持 VR 的情况下运行时,VR Viewport 在编辑器中可用(-vr_app 参数)。
- 修复了将发射数据错误烘焙到单面材质光照贴图中的问题。
- 修复了更改 Materials 窗口大小以及在过滤器中切换 State 时发生的崩溃。
- 修复了删除资源后重新导入资源时编辑器崩溃的问题(Debug 二进制文件)。
- 修复了地形绘制模式下 TerrainGlobal 对象的笔刷编辑问题。
- 修复了在 Tracker 工具中保存轨道时发生的崩溃问题。
- 修复了在 Content Profiler 工具中应用 Filter by Mask 时发生的崩溃问题。
- 修复了在与状态刷新相关的Texture Paint Mode中工作时发生的崩溃(例如,为ObjectMeshSkinned创建子材质等)。
- 修复了在 Texture Paint Mode 中分配新创建的纹理导致纹理无法被编辑的问题。
- 修复了在压缩纹理上绘画时释放鼠标左键后画笔释放时间增加的问题。
- 修复了保存 Mesh Clutter 的 Mask Terrain 参数值的问题,消除了在重新加载世界后选择节点时将蒙版重置为 None 的问题。
- 修复了在材质设置中为 Detail UV 映射选择 Base 选项的问题。
- 修复了禁用 RagDoll 物体骨骼的 Frame-Based 选项后的崩溃问题。
- 修复了无法设置关节参数值的问题。
- 修复了将 DynamicMesh 对象的网格替换为表面较少的对象(Debug 二进制文件)时发生的崩溃问题。
- 修复了编辑 NodeReference 后更改组件 GUID 和 NodeReference 内节点 ID 的问题。
- 修复了在 Vulkan 和 DirectX12 上编辑 ObjectTerrainGlobal 画笔的问题。
- 修复了在 Material Editor 中工作时视口中对象闪烁的问题。
- 修复了将纹理从 AssetBrowser 拖动到 Material Editor 区域导致缓存错误的问题。
- 修复了打开 *.sworm 项目时压缩值显示不正确的问题,以及在 Sandworm 工具中显示地形生成所需内存量的问题。
- Cluster Editor 工具已升级,修复了所有与释放RAM资源相关的问题,这些问题导致在 Cluster Paint Mode 中选择 Single Object 选项时过度消耗内存和崩溃。
- 修复了一些DPI缩放问题,导致在Windows和Linux上不正确的界面渲染。
- 编辑器本地化:UnigineEditor界面现在支持中文,德语和俄语,更多的语言遵循。
- 修正了启动时编辑器控制台的错误(Community 版本)。
- 根据缓冲区的当前命名更新了渲染调试项。
- 修正了在改变图像位深度后,VideoGrabber 工具无法抓取图像的问题。
- 包资源现在以特定的顺序导入,消除了 Material Graph 加载和生成错误。
- 修复了在粘贴禁用节点时自动启用副本的问题。
- 修复了在某些情况下保存编辑器配置文件导致无法应用配置或重新创建丢失的配置文件的问题。
- 修复了在 WorldSplineGraph 中编辑样条时的崩溃。
- Scale 操纵器不再适用于 WorldSplineGraph 分段。
图像生成器更新
此版本还为 IG Application Template 带来了许多更新和修复,扩展了其功能,使其更加稳定且更易于使用。 IG Configuration 文件 (ig_config.xml) 现在可以存储在数据文件夹外部,使您能够在不同项目之间共享相同的配置。
扩展 DIS 连接器
我们扩展了对 DIS(Distributed Interactive Simulation 分布式交互式模拟)协议的支持,这是一种 IEEE 标准,用于跨多个主机的不同模拟之间进行实时平台级通信。 DISConnector 类的 API 现已更新,您可以:
- 使用自定义用户连接初始化 DISConnector,并关闭 DISConnector 而不停止此自定义连接
- 动态管理应用、网站和练习 ID
- 发送自定义用户数据包
- 为数据包和实体设置自己的自定义过滤
有关更多详细信息,请参阅API 迁移指南。
编辑器中的地理坐标
当在应用程序中使用地理参考地形来构建真实世界的模型时,就像在UNIGINE中使用 IG Template 一样,根据它们的地理坐标(纬度,经度,海拔)而不仅仅是(X, Y, Z)来放置物体是很自然的。这个功能现在可以在编辑器中使用,并且可以在 Geodetic 插件加载的情况下可视化大地原点。
免费学习课程更新
我们的免费学习UNIGINE入门课程已更新到最新的UNIGINE 2.18.1 SDK!更新的附加组件可在我们的 Add-On Store。C++版本的课程正在进行中,敬请期待!
本课程旨在与免费的 UNIGINE Community SDK 一起使用,可供所有人使用,无需注册!
准备好开始了吗?立即注册免费 Community SDK,访问 https://learn.unigine.com/, 开始您的UNIGINE学习之旅!
文档
添加了一组新的超短HowTo英语、中文和俄语快速提示视频:
- 添加了新的云和容器部署部分。
- 更新了表面分析器文章。
- 添加了新的 VR 和 XR 开发 部分并更新了 VR 入门文章。
- 添加了一篇关于节点依赖项的新文章。
- 添加了一篇关于如何使用 IG + VR 应用模板创建项目的文章。
- 更新了许可部分。
- API 更改的完整列表可在 API 迁移指南中找到。
- 控制台命令更改的完整列表可在控制台迁移指南中找到。
2.19+ 正在进行中的工作
版本 2.18.1 主要侧重于稳定性,为即将完成的 2.19 分支中即将推出的功能铺平道路。以下是您可以预见的情况:
- 显着增强 CPU 性能的多线程渲染器
- 升级的角色动画系统
- 减少 RAM 使用量的重大优化
- 异步节点加载以提高效率
- 引擎启动速度更快
- 与 .NET 8 集成
- 支持 OpenXR
- 简化的云部署
- 此外,还有更多功能即将推出!
感谢您的阅读,跟上更新,我们将继续努力让 UNIGINE 变得更好!
您的 UNIGINE 团队