This page has been translated automatically.
Recent news:
Table of contents:

UNIGINE 2.18.1: 升级器、优化预设、应用内视频流、MATLAB 集成

主要变化

  • 升级支持:NVIDIA DLSS 3 和 AMD FSR 2.2(实验性)
  • Vulkan 和 DirectX 12 的 CUDA 集成
  • 优化的质量预设,性能提升高达 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 中的新ResourceExternalMemoryResourceFence类与外部图形 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 的平均性能增益包括x10x24,具体取决于视口分辨率。

您只需启动新的CUDATextureTransfer示例并启用Profiler即可在 PC 上检查结果。

样品清单包括:

  • CUDAMeshDynamic:共享动态网格的顶点使用 CUDA 在 GPU 上进行处理。
  • CUDAStructuredBufferWrite:共享结构化缓冲区中的粒子使用 CUDA 在 GPU 上更新,并使用 Unigine Material 和计算着色器手动光栅化。
  • CUDATextureTransfer:使用 CUDA 处理共享纹理,并将其从视频内存复制到 RAM 到 Unigine Image中。
  • CUDATextureWrite:使用 CUDA 处理共享纹理,并将其作为立方体上的纹理显示在 Unigine对象上。

应用内视频流播放

现在,可以通过新的UnigineVideoTexture插件对基于 UNIGINE Sim SDK 版本构建的应用程序中来自在线源的低延迟视频流进行硬件解码,您可以从附加商店下载该插件。

该插件当前支持 DirectX 11 GAPI 和 Windows 10+ 操作系统,并允许您将视频从 VP9 编码的在线 RTSP/RTP 源流式传输到 UNIGINE 纹理(忽略声音数据)。该纹理可用于任何材质并应用于场景中的各种对象(例如,将视频输出到虚拟演播室中的背景电视面板或创建多摄像机监控系统)。

这不是应用内视频解码的通用解决方案,并且应用范围有限。

该插件包还包含一个带有纹理的示例场景,您可以将视频流式传输到其中,以及有关如何启动自己的流以进行快速测试的指南。

其他引擎改进

  • 修复了 SystemProxyQt 类导致调用 EngineWindow::minimize() 后窗口画布变白的问题(Viewer 演示、ViewportQt 示例,以及受影响的基于 Qt 项目模板)。添加了最小化、最大化恢复窗口事件处理程序。
  • 修复了对 90 度及以下角度的粒子与物理形状之间的碰撞的检测。
  • 修复了启用Fast Shutdown选项时关闭时基于 QT 的项目崩溃的问题。
  • 修复了创建EngineWindow时忽略指定gui_path的问题。
  • 修复了加载包含 NavigationMeshNodeReferences 时导致崩溃和冻结的问题。
  • 修复了启用 Intersection 选项的 Mesh Clutter 对象(作为 Landscape Terrain 对象添加为子对象)在相机位于其外部时闪烁的问题界限。
  • 修复了在 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 附加商店获取)。

UnigineEditor

运行时节点的依赖性跟踪

有时,跟踪运行时节点之间的依赖关系可能很有用 - 当前存在于在 UnigineEditor 中打开的世界中的节点,包括仅存储在 RAM 中且尚未保存到文件中的节点 ( *.world / *.node )在磁盘上。它可以帮助避免意外删除其他人以某种方式使用的节点,以及分析/验证节点交互的逻辑(例如,检查组件中是否使用了正确的节点等)。

现在,要查找使用所选节点或节点组的所有运行时节点,请在 World Nodes Hierarchy 中右键单击它们,然后选择 Show World Nodes Using This One。请参阅这篇文章了解更多详细信息。

更好的表面轮廓仪

表面分析器现在变得更加方便,使您能够监视当前世界中的所有表面,而不仅仅是在视口中看到的表面。只需在 Location 下拉列表中选择新模式 From World

其他 UnigineEditor 改进

  • 修复了Particles Field Mask值的保存问题,消除了从NodeReference加载粒子系统后重置此选项默认值的问题。
  • 修复了烘焙LandscapeTerrain蒙版以及在Landscape Paint Mode中编辑它们的问题。
  • 修复了通过Replace Asset Links替换某些资源后对基于图表的材质应用更改的问题,此类材质现在会自动重新加载。
  • 现在,在支持 VR 的情况下运行时,VR Viewport 在编辑器中可用(-vr_app 参数)。
  • 修复了将发射数据错误烘焙到单面材质光照贴图中的问题。
  • 修复了更改 Materials 窗口大小以及在过滤器中切换 State 时发生的崩溃。
  • 修复了删除资产后重新导入资产时编辑器崩溃的问题(Debug 二进制文件)。
  • 修复了地形绘制模式下 TerrainGlobal 对象的笔刷编辑问题。
  • 修复了在 Tracker 工具中保存曲目时发生的崩溃问题。
  • 修复了在内容分析器工具中应用按掩码过滤时发生的崩溃问题。
  • 修复了在与状态刷新相关的Texture Paint Mode中工作时发生的崩溃(例如,为ObjectMeshSkinned创建子材质等)。
  • 修复了在 Texture Paint Mode 中分配新创建的纹理导致纹理无法被编辑的问题。
  • 修复了在压缩纹理上绘画时释放鼠标左键后画笔释放时间增加的问题。
  • 修复了保存 Mesh ClutterMask Terrain 参数值的问题,消除了在重新加载世界后选择节点时将遮罩重置为 None 的问题。
  • 修复了在材质设置中为DetailUV映射选择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 进行绘制时导致内存消耗过多和崩溃已选择选项。
  • 修复了一些导致 Windows 和 Linux 上界面渲染不正确的 DPIScaling 问题。
  • 编辑器本地化 - UnigineEditor 界面现在支持中文、德语和俄语,后续还会支持更多语言。
  • 修复了启动时编辑器控制台中的错误(Community 版本)。
  • 根据缓冲区的当前命名更新了渲染调试项。
  • 修复了更改图像位深度后导致 VideoGrabber 工具无法抓取图像的问题。
  • 包资源现在按特定顺序导入,消除了 Material Graph 加载和生成错误。
  • 修复了粘贴已禁用节点时自动启用其副本的问题。
  • 修复了在某些情况下保存编辑器配置文件导致无法应用配置或重新创建丢失的配置文件的问题。
  • 修复了尝试在 WorldSplineGraph 中编辑样条线时发生的崩溃。
  • Scale 操纵器不再适用于 WorldSplineGraph 段。

图像生成器更新

此版本还为IG Application Template带来了许多更新和修复,扩展了其功能,使其更加稳定且更易于使用。 IG Configuration 文件 (ig_config.xml) 现在可以存储在数据文件夹外部,使您能够在不同项目之间共享相同的配置。

扩展 DIS 连接器

我们扩展了对 DIS(分布式交互式模拟)协议的支持,这是一种 IEEE 标准,用于跨多个主机的不同模拟之间进行实时平台级通信。 DISConnector 类的 API 现已更新,您可以:

  • 使用自定义用户连接初始化DISConnector,并关闭DISConnector而不停止此自定义连接。
  • 动态管理应用、网站和练习 ID。
  • 发送自定义用户数据包。
  • 为数据包和实体设置您自己的自定义过滤。

有关更多详细信息,请参阅API 迁移指南

编辑器中的地理坐标

当在使用地理参考地形构建的应用程序中处理现实世界的模型时,就像您使用 IG Template 在 UNIGINE 中制作的应用程序一样,很自然地通过地理坐标(纬度、经度)来放置对象、海拔)而不仅仅是(X、Y、Z)。现在,在加载 Geodetic 插件时,编辑器中可以使用此功能以及大地测量原点的可视化。

免费学习课程更新

我们的UNIGINE免费学习入门课程已经更新到最新的UNIGINE 2.18.1 SDK了!更新后的附加组件可在我们的附加组件商店上找到。该课程的 C++ 版本即将推出 - 敬请期待!

本课程专为与免费的 UNIGINE Community SDK 结合使用而设计,所有人均可使用 - 无需注册!

准备好开始了吗? 注册免费社区 SDK,请访问 https://learn.unigine.com/ 立即开始您的 UNIGINE 学习冒险!

文档

添加了一组新的超短HowTo英语、中文和俄语快速提示视频:

2.19+ 正在进行中的工作

版本 2.18.1 主要侧重于稳定性,为即将完成的 2.19 分支中即将推出的功能铺平道路。以下是您可以预见的情况:

  • 显着增强 CPU 性能的多线程渲染器
  • 升级的角色动画系统
  • 减少 RAM 使用量的重大优化
  • 异步节点加载以提高效率
  • 引擎启动速度更快
  • 与 .NET 8 集成
  • 支持 OpenXR
  • 简化的云部署
  • 此外,还有更多功能即将推出!

感谢您的阅读,跟上更新,我们将继续努力让 UNIGINE 变得更好!

- 您的 UNIGINE 团队

Build: ()