Почти под ёлочку состоялся минорный релиз 2.16.1, который, однако, содержит пару крутых фичей - например, SSHGI (глобальное освещение дымки в экранном пространстве), добавляющее сразу +100 к атмосфере и возможность из любой сцены сделать Сайлент Хилл. А еще мы усовершенствовали API импорта ассетов в процессе работы приложения, добавили опцию для еще более реалистичных динамических отражений, оптимизировали рендеринг теней - об этом и остальном читайте ниже.
Глобальное освещение дымки в экранном пространстве
Правдоподобный туман или дымка могут стать приятным дополнением игрового проекта, но в симуляторах и проектах, где визуальная достоверность является требованием, они просто необходимы.
Представляем вашему вниманию эффект глобального освещения дымки в экранном пространстве (Screen-Space Haze Global Illumination, SSHGI) — новый скринспейсовый эффект, благодаря которому обеспечивается соответствие цвета дымки и тумана текущему глобальному освещению. Готовое решение обеспечивает реалистичный результат и легко настраивается.
Доработанный API для импорта ассетов в процессе работы приложения
Мы усовершенствовали API для импорта, чтобы упростить создание пользовательских модулей импорта. Теперь можно регистрировать несколько модулей импорта от различных поставщиков для импорта файлов с одинаковым расширением (модули теперь идентифицируются парой Vendor + Name). Также для каждого модуля импорта можно задать приоритет его использования при обработке файлов с определенным расширением.
Новый API доступен для языков C++, C# и UnigineScript. Более подробная информация по этим изменениям представлена в руководстве по миграции API.
Еще более реалистичные динамические отражения
Иногда попадание бликов от глянцевых поверхностей в динамический Environment Probe может создать слишком яркое мерцание света. Новая опция Roughness Offset позволяет сделать так, чтобы Environment Probe воспринимал окружающие материалы более матовыми, чем они есть на самом деле, устраняя таким образом эффект мерцания.
Оптимизированный рендеринг теней
Мы добавили возможность использования дополнительного отсечения по каскадам теней для объектов Mesh Cluster и Clutter, чтобы не отрисовывать повторно в последующих каскадах тени, которые уже отрисованы в ближайшем каскаде. Это уменьшает количество полигонов в проходе отрисовки теней, повышая производительность. Однако в некоторых случаях производительность может и снизиться, поэтому по умолчанию данная опция отключена.
Улучшения для VR
Доработка интеграции с Varjo
При разработке XR- и MR-приложений вам может понадобиться маскировать определенные объекты так, чтобы они выполняли роль "окна" в реальный мир. Это может быть особенно полезным, если вам нужно видеть объекты реального мира, такие как измерительные приборы или элементы управления, в виртуальной среде (например, окна в симуляторе автомобиля).
Мы добавили поддержку масок, чтобы дать вам полный контроль над границами смешанной реальности, объединяющей VR-изображение из пользовательского приложения и изображение с видеокамер (VST). Есть несколько режимов маскирования, позволяющих задать способ обработки динамических и статических масок в смешанной реальности, включая использование настроек хромакея. Маска смешивания может быть использована для расширения или ограничения маски хромакея или для проверки глубины в сравнении с оценкой глубины по видео.
VR-шаблон на базе Qt
Теперь можно создавать собственные плагины на базе Qt с использованием VR-шаблона — при создании нового проекта просто выберите VR Template и C++ (Qt-based) в качестве API+IDE.
VR-плагин для редактора
Теперь в редакторе доступен вывод из VR через новый VREditorPlugin. Плагин автоматически определяет, что редактор запущен с VR-плагином, и добавит новые окна в меню Windows, чтобы можно было открыть вьюпорт, куда будет выводиться изображение из VR-шлема. Как и при работе с любым другим вьюпортом, есть возможность переключения между любыми доступными в текущий момент камерами, дополнительное управление (например, суперсэмплинг для фокусных экранов или режим вьюпорта) добавляется автоматически в зависимости от типа оборудования (Oculus, OpenVR или Varjo).
Улучшения в UnigineEditor:
Ускоренный запуск.
Улучшения в валидации ассетов и рантаймов.
Усовершенствование инструмента Cleaner.
Управление компонентами/свойствами для нескольких выбранных нод одновременно.
Одновременное назначение множества элементов в параметры свойств, имеющие тип массива.
Четкое отображение структуры: заголовки групп и вложенность.
Копирование нод в буфер обмена.
Новые вспомогательные инструменты.
Иконки для получения справочной информации.
Проверка совместимости плагинов.
Обновления визуального редактора материалов.
Оптимизация кильватерного следа
Мы оптимизировали и доработали кильватерный след для авиационных приложений, и теперь у вас есть возможность создавать большое количество длинных кильватерных следов от множества судов для обзора на дальнем расстоянии (с самолета высоко над уровнем моря) практически без ущерба для производительности.
Новые примеры использования API
Мы добавили новые примеры кода в C++ Samples, которые демонстрируют ряд типовых случаев использования, включая следующие:
Вид с разделенным экраном.
Комбинация основных видок, как в САПР-приложении.
Управление объектами с видом сверху.
Манипуляторы для управления трансформациями объектов.
Виджет целеуказателя.
Пример генерации кластера.
Преобразование из клаттера в кластер.
Анимация на основе физики.
Некоторые из этих примеров также реализованы на C# и добавлены в набор примеров C# Samples.
Как всегда, мы рассказали лишь о малой части того, что было сделано в релизе 2.16.1, все подробности в нашем девлоге — полный список изменений, улучшений и нового функционала.