UNIGINE 2.18.1: Апскейлеры, оптимизированные настройки, потоковое видео в приложениях, интеграция MATLAB
Ключевые изменения
- Поддержка апскейлинга: NVIDIA DLSS 3 и AMD FSR 2.2 (экспериментальная)
- Интеграция CUDA для Vulkan и DirectX 12.
- Оптимизированные настройки качества с повышением производительности до 80–90%
- Обновлена интеграция MATLAB через ROS
- Воспроизведение видеопотоков в приложении
- Улучшенный инструмент «Профилировщик поверхности».
- Отслеживание зависимостей для runtime-нод
- Многоязычный интерфейс в Редакторе и Браузере SDK
- Упрощенный импорт сцен из проектов Unity
- Обновление бесплатного учебного курса
Апскейлинг: DLSS и FSR (экспериментальный)
Мы продолжаем повышать производительность нашего движка, добавляя новые функции, поддерживая увеличивающееся разрешение и повышая реалистичность конечного изображения, и все это в рамках того же строгого бюджета кадров. В этом контексте важность апскейлеров невозможно переоценить; они уменьшают необходимость рендеринга большего количества пикселей для более высоких разрешений, тем самым высвобождая ресурсы для других важных улучшений и поддерживая приемлемый уровень производительности. С этой целью мы интегрировали поддержку NVIDIA DLSS 3 (Deep Learning Super Sampling) и AMD FSR 2.2 (Fidelity FX Super Resolution). Эти технологии позволяют повышать разрешение изображения на широком спектре устройств разных производителей и использовать различные настройки качества как для статических, так и для динамических сцен.
Эта функция в настоящее время находится на экспериментальной стадии и поддерживает только конфигурации с использованием Windows и DirectX 12. Подробные требования и ограничения совместимости для каждого апскейлера изложены в сопроводительной документации.
Оптимизированные настройки качества
UNIGINE Engine включает в себя широкий набор настроек и параметров, предназначенных для управления рендерингом, многие из которых специфичны для определенных случаев и сцен и могут не понадобиться в других. Для реализации различных сценариев мы предлагаем обширные возможности оптимизации. Мы доработали настройки качества для нашего пакета примеров UnigineScript, а также для пакетов примеров C++ и C#, включенных в качестве демонстраций в SDK. Эти оптимизации обеспечивают плавную работу как высокопроизводительных систем, так и менее мощных платформ, предоставляя все необходимые параметры и настройки, необходимые для оптимальной производительности.
Средний прирост производительности от такой оптимизации для сэмплов C++, C# и UnigineScript составил 80-90% (тестовая конфигурация при разрешении 1920x1080: Intel i3-4160; NVIDIA GTX 1050 Ti (4 ГБ); 8 ГБ ОЗУ).
Улучшения VR
В систему UNIGINE Core VR был реализован ряд улучшений и исправлений, призванных повысить ее стабильность и надежность. Эти улучшения включают в себя:
- Исправлена проблема, из-за которой отдельные окна просмотра не использовали общий уровень автоматической экспозиции и баланса белого , что приводило к визуальной несогласованности периферийных дисплеев на шлемах Varjo HMD.
- Исправлен сбой при переключении vr_foveated_rendering_enabled несколько раз при использовании Varjo VR API.
- Исправлена проблема с отключенным по умолчанию режимом периферийного рендеринга в VR (возвращено включенное состояние по умолчанию).
- Исправлены некоторые предупреждающие сообщения Вархо.
- Исправлены проблемы с vr_mirror_mode 1 и 2, вызывающие множество отладочных сообщений о неправильном прямоугольнике отсечения в режиме отладки видео на Vulkan.
Мы также оптимизировали настройки качества для шаблонов проектов VR, чтобы обеспечить оптимальную производительность на каждом уровне качества.
Начиная с версии 2.18, Vulkan является основным полнофункциональным графическим API для Linux, а версия 2.18.1 знаменует прекращение поддержки OpenGL для VR. Единственный оставшийся вариант для VR на OpenGL — использовать устаревшие плагины, такие как OpenVR, Varjo и Oculus.
Интеграция ROS + MATLAB
Мы добавили базовый пример модели усовершенствованной системы помощи водителю (ADAS), разработанной с использованием MATLAB, которая взаимодействует с симуляцией транспортного средства на базе UNIGINE через ROS (Robot Operating System). По сути, сценарии MATLAB используются для управления виртуальным транспортным средством в 3D-приложении реального времени на базе UNIGINE через сеть с использованием протокола связи ROS. Подобное моделирование играет важную роль в создании транспортных средств, оснащенных ADAS, или полностью автономных транспортных средств.
Этот пример доступен в виде шаблона проекта в UNIGINE 2 Sim SDK.
Интеграция CUDA для Vulkan и DirectX 12
UNIGINE Sim SDK теперь включает новый набор примеров, демонстрирующих, как взаимодействовать с внешним графическим API с использованием новых классов ResourceExternalMemory и ResourceFence в UNIGINE API). В примерах показано взаимодействие с NVIDIA CUDA Toolkit , но вы можете использовать их в качестве основы для интеграции графических API Движка (Vulkan, DX11, DX12) с другими графическими API (OpenGL, DX, CUDA и т.д.), которые могут принимать дескриптор и импортировать примитив синхронизации (например, внешний семафор в CUDA).
Этот подход позволяет взаимодействовать различным API с использованием разных графических API, например взаимодействие Media Foundation использующего DX11 с Движком, который использует DX12 или Vulkan.
В примерах также показано, как получать данные непосредственно из видеопамяти без обращения к процессору и обрабатывать их с использованием графического API, не связанного с движком.
Разница в производительности передачи текстур GPU -> CPU , выполняемой через CUDA 12.3 и средствами Движка, показана в таблице ниже (проверено на наших рабочих конфигурациях). Средний прирост производительности с CUDA составил х10 до х24 в зависимости от разрешения окна.
Вы можете проверить результаты на своем ПК, просто запустив новый сэмпл CUDATextureTransfer и включив Profiler .
В список сэмплов входят:
- CUDAMeshDynamic : вершины общей динамической сетки обрабатываются на графическом процессоре с использованием CUDA.
- CUDAStructuredBufferWrite : частицы в общем структурном буфере обновляются на графическом процессоре с помощью CUDA и растеризуются вручную с помощью материала Unigine с вычислительным шейдером (Compute Shader).
- CUDATextureTransfer : общая текстура обрабатывается с помощью CUDA и копируется из видеопамяти в ОЗУ в Unigine Image .
- CUDATextureWrite : общая текстура обрабатывается с помощью CUDA и отображается ны объекте Unigine.
Воспроизведение видеопотоков в приложении
Новый плагин UnigineVideoTexture делает доступным аппаратное декодирование видеопотоков с низкой задержкой из онлайн-источников в ваших приложениях, созданных на базе UNIGINE Sim SDK. Плагин можно скачать с Add-On Store.
В настоящее время плагин поддерживает графическое API DirectX 11 и операционные системы Windows 10+ и позволяет передавать потоковое видео из онлайн-источников RTSP/RTP в кодировке VP9 в текстуру UNIGINE (звуковые данные игнорируются). Эту текстуру можно использовать в любом материале и применять к различным объектам вашей сцены (например, для вывода видео на фоновую ТВ-панель в виртуальной студии или для создания системы видеонаблюдения с множеством камер).
Обращаем ваше внимание, что данное решение не является универсальным для декодирования видео в приложении и имеет ограниченную область применения.
Пакет плагина также содержит пример сцены с текстурами, на которые вы можете транслировать видео, и руководство о том, как запустить собственный поток для тестирования функционала.
Другие улучшения
- Исправлена проблема с классом SystemProxyQt, из-за которой содержимое окна становилось белым после вызова EngineWindow::minimize() (затронут демо-проект Viewer , сэмпл ViewportQt и шаблон проекта Qt-Based). Были добавлены обработчики событий окон Minimized, Maximized и Restored.
- Исправлено обнаружение столкновений между частицами и коллизионными формами под углами 90 градусов и меньше.
- Исправлен сбой проектов на основе QT при завершении работы при включении опиции Fast Shutdown.
- Исправлена проблема с игнорированием указанного gui_path при создании окна EngineWindow .
- Исправлена проблема, приводившая к сбоям и зависаниям при загрузке NodeReferences, содержащих Navigation Mesh .
- Исправлена проблема с мерцанием объектов Mesh Clutter (добавленных в качестве дочерних элементов Landscape Terrain) с включенной опцией Intersection в случае, если камера находится за их пределами.
- Исправлена проблема, приводившая к исключениям в случае использования элемента ParameterFile в C#-компоненте (добавлена проверка типа Unigine.File при создании компонента из свойства).
- Исправлен сбой на AMD RX 6800 (DX11) при включении Field Shoreline после создания текстуры береговой линии.
- Исправлена отрисовка бликов для источников LightWorld/LightOmni/LightProj на DirectX12.
- Исправлена проблема с отрисовкой ObjectText, если его точка поворота находится за пределами усеченной пирамиды видимости камеры.
- Исправлены визуальные артефакты, связанные с кешем текстур.
Упрощенный импорт сцены из Unity
Смена технологии — важное и непростое решение, в первую очередь из-за времени, необходимого для воссоздания вашего проекта в новой среде. Переход с Unity на UNIGINE теперь стал значительно проще благодаря новому инструменту, разработанному одним из энтузиастов нашего сообщества. Этот инструмент облегчает автоматическую передачу всей иерархии сцен, которая включает в себя:
- Меши Skinned и Static: перенос всех мешей вместе с их уровнями детализации (LOD).
- Назначение материалов: применение материалов к объектам, со всеми используемыми текстурами.
- Настройки физики: объединение настроек физики, таких как RigidBody , примитивные и сложные коллайдеры, а также матрицы коллизий.
- Префабы и C#-компоненты: переносит префабы и компоненты C#, назначенные объектам.
Этот инструмент выполняет основную часть механической работы по переносу контента, однако, для точной настройки параметров и переноса пользовательского кода в UNIGINE по-прежнему не обойтись без ручного вмешательства. Разработчик инструмента обещает дополнительные функции в будущих обновлениях для дальнейшей оптимизации процесса. Этоит инструмент не только экономит время, но и сводит к минимуму проблемы, связанные со сменой платформы, позволяя вам использовать мощные функции UNIGINE с меньшими усилиями.
Инструмент включает в себя два плагина:
- Плагин к редактору Unity ( Unigine Exporter ), который экспортирует вашу сцену Unity в файл JSON (можно скачать на Unity Asset Store).
- Плагин к редактору UNIGINE ( Unity Importer ), который берет этот JSON-файл и генерирует аналогичную сцену в UNIGINE (можно скачать в магазине дополнений UNIGINE).
Редактор UnigineEditor
Отслеживание зависимостей для runtime-нод
Иногда может понадобиться отслеживать зависимости между runtime-нодами — нодами, которые на данный момент существуют в мире, открытом в UnigineEditor, включая те, которые хранятся только в оперативной памяти и еще не были сохранены в файл ( *.world/*.node ) на диске. Это поможет избежать случайного удаления нод, которые так или иначе используются другими нодами, а также проанализировать/проверить логику взаимодействия нод (например, проверить, правильные ли ноды используются в компонентах и т.д.).
Теперь, чтобы найти все runtime-ноды, которые используют выбранную нодлу или группу нод, щелкните по ним правой кнопкой мыши в иерархии World Nodes и выберите Show World Nodes Using This One. Более подробную информацию можно найти в этой статье.
Улучшенный Профилировщик поверхностей
Профилировщик поверхностей стал более удобным, позволяя вам отслеживать все поверхности в текущем мире, а не только те, что в данный момент видны в окне просмотра. Просто выберите новый режим From World в выпадающем списке Location.
Другие улучшения Редактора UnigineEditor
- Исправлено сохранение значения Particles Field Mask , устраняющее проблему со сбросом значения по умолчанию для этой опции после загрузки системы частиц из NodeReference .
- Исправлены проблемы с запеканием масок Landscape Terrain и их редактированием в режиме Landscape Paint Mode .
- Исправлена проблема с применением изменений к материалам на основе графов после замены некоторых ассетов с помощью инструмента Replace Asset Links, такие материалы теперь перезагружаются автоматически.
- Теперь в Редакторе доступно Окно просмотра VR при запуске с поддержкой VR (аргумент -vr_app ).
- Исправлено некорректное запекание данных об освещении в карту освещения для односторонних материалов.
- Исправлен сбой при изменении размера окна Material и переключении состояний в фильтрах.
- Исправлен сбой редактора при повторном импорте ассета после его удаления (Debug-сборки).
- Исправлены кисти для редактирования объекта Terrain Global в режиме Terrain Paint Mode.
- Исправлен сбой при сохранении трека в инструменте Tracker .
- Исправлен сбой при применении фильтра по маске в инструменте Content Profiler.
- Исправлены сбои при работе в Texture Paint Mode , связанные с обновлением состояния (например, при создании дочернего материала для ObjectMeshSkinned и т.д.).
- Исправлена проблема с назначением вновь созданной текстуры в Texture Paint Mode, из-за которой текстуру нельзя было редактировать.
- Исправлена проблема с увеличением времени отпускания кистей после отпускания левой кнопки мыши при рисовании на сжатых текстурах.
- Исправлено сохранение значения параметра Mask Terrain для Mesh Clutter , устраняющее проблему со сбросом маски при выборе ноды после перезагрузки мира.
- Исправлена проблема с выбором параметра Base для маппинга Detail UV в настройках материала.
- Исправлен сбой после отключения опции Frame-Based для костей тела RagDoll.
- Исправлена проблема с невозможностью установить значения параметров соединения.
- Исправлен сбой при замене сетки объекта Dynamic Mesh на объект с меньшим количеством поверхностей (Debug-сборки).
- Исправлены проблемы с изменением GUID компонентов и идентификаторов нод внутри NodeReference после его редактирования.
- Исправлена проблема с редактированием ObjectTerrainGlobal кистями на Vulkan и DirectX12.
- Исправлена проблема с мерцанием объектов во вьюпорте при работе в Редакторе материалов .
- Исправлена проблема с перетаскиванием текстуры из Asset Browser в Редактор материалов, приводившая к ошибкам кэширования.
- Исправлена проблема с некорректным отображением значений сжатия при открытии проекта .sworm, а также с отображением объема памяти, необходимой для создания ландшафта в инструменте Sandworm .
- Обновление инструмента Cluster Editor исправило все проблемы, связанные с освобождением ресурсов оперативной памяти, приводившие к чрезмерному потреблению памяти и сбоям при рисовании в Cluster Paint Mode с выбранным параметром Single Object.
- Исправлен ряд проблем с масштабированием DPI, приводивших к некорректной отрисовке интерфейса в Windows и Linux.
- Локализация редактора. Интерфейс UnigineEditor теперь поддерживает китайский, немецкий и русский языки.
- Исправлены ошибки в консоли редактора при запуске ( версия Community ).
- Обновлены элементы отладки рендеринга в соответствии с текущими именами буферов.
- Исправлена проблема, приводившая к невозможности захвата изображения инструментом VideoGrabber после изменения битовой глубины изображения.
- Ассеты из пакета теперь импортируются в определенном порядке, исключая ошибки загрузки и создания графов материалов.
- Исправлена проблема с автоматическим включением копии отключенной ноды при ее вставке.
- Исправлена проблема с сохранением файлов конфигурации Редактора в некоторых случаях, приводившая к невозможности применить конфигурацию или восстановить отсутствующие файлы конфигурации.
- Исправлен сбой при попытке редактирования сплайна в WorldSplineGraph .
- Манипулятор масштабирования больше недоступен для сегментов WorldSplineGraph.
Обновления шаблона IG
Этот релиз также содержит ряд обновлений и исправлений для шаблона приложения IG, расширяющих его функциональность, делая его более стабильным и простым в использовании. Файл Конфигурации IG ( ig_config.xml ) теперь можно хранить вне папки вфеф, что позволяет использовать одну и ту же конфигурацию в разных проектах.
Расширение DIS Connector
Мы расширили поддержку протокола распределенного интерактивного моделирования DIS (Distributed Interactive Simulation) — стандарта IEEE для связи на уровне платформы в реальном времени между различными моделями на нескольких компьютерах. Интерфейс API класса DISConnector был расширен, что теперь позволяет вам:
- инициализировать DISConnector с помощью пользовательского подключения, а также выключить DISConnector , не останавливая это пользовательское соединение.
- оперативно управлять идентификаторами App, Site и Exercise.
- отправлять пользовательские пакеты.
- устанавливать собственную фильтрацию для пакетов и сущностей.
Более подробную информацию можно найти в Руководстве по миграции API.
Геокоординаты в редакторе
При работе с моделями реального мира в ваших приложениях, построенных с использованием ландшафтов с географической привязкой, например тех, которые создаются в UNIGINE с помощью Шаблона IG, вместо (X, Y, Z) логично размещать объекты по их географическим координатам (широта, долгота, высота). Эта функция теперь доступна в Редакторе вместе с визуализацией геодезического начала координат в случае загрузки плагина Geodetic.
Обновление бесплатного обучающего курса
Наш бесплатный вводный курс по UNIGINE обновлен до последней версии UNIGINE 2.18.1 SDK! Обновленное дополнение доступно в нашем магазине дополнений . Версия курса для C++ уже в разработке — следите за обновлениями!
Этот курс предназначен для использования с бесплатным UNIGINE Community SDK и доступен для всех — регистрация не требуется!
Готовы начать? Зарегистрируйтесь на бесплатный Community SDK, перейдите на https://learn.unigine.com/ прямо сейчас и отправляйтесь в обучающее приключение UNIGINE!
Документация
Добавлен ряд коротких обучающих видео Подсказки и советы на английском, китайском и русском языках:
- Добавлен новый раздел Облачное и контейнерное развертывание.
- Обновлена статья Профилировщик поверхностей .
- Добавлен новый раздел VR и XR разработка и статья "Начало работы с VR".
- Добавлена новая статья Зависимости нод .
- Добавлена статья о том, как создать проект с помощью шаблона приложения IG+VR.
- Обновлен раздел Лицензирование.
- Полный список изменений API доступен в Руководстве по миграции API .
- Полный список изменений консольных команд доступен в Руководстве по миграции консоли.
2.19+ В работе
Версия 2.18.1 преимущественно сфокусирована на стабилизации открывая дорогу новому функционалу, разработка которого уже на финишной прямой в ветке 2.19. Вот список того, что можно ожидать:
- Многопоточный рендерер, который значительно повышает производительность процессора.
- Улучшенная система анимации персонажей.
- Крупные оптимизации для сокращения объема использования оперативной памяти.
- Асинхронная загрузка нод для повышения эффективности
- Ускоренный запуск движка
- Интеграция с .NET 8
- Поддержка OpenXR
- Упрощенное облачное развертывание
- Плюс еще много новых функций!
Спасибо, что прочитали, и не пропустите обновления, поскольку мы продолжаем работать над тем, чтобы сделать UNIGINE еще лучше!
- Ваша команда UNIGINE