Поддержка кроссплатформенных HDR-дисплеев в Unity 2023

DAMIAN NACHMAN / UNITY TECHNOLOGIESSenior Technical Product Manager
Aug 15, 2023|10 Мин
Поддержка кроссплатформенных HDR-дисплеев в Unity 2023
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Приветствую вас от команды Unity Graphics. Мы рады сообщить, что начиная с версии Unity 2023.2.0a18 (и 2023.2 beta), редактор Unity и автономные плееры теперь обеспечивают кроссплатформенную поддержку вывода HDR и полную совместимость с конвейером рендеринга Universal и High Definition Render Pipeline.

Дисплеи с высоким динамическим диапазоном (HDR) становятся все более доступными. Они способны воспроизводить изображения с более высокой пиковой яркостью и более широкой цветовой гаммой для достижения лучшей контрастности (блики/тени) и насыщенности цветов. Это приводит к более реалистичным изменениям яркости в разных сценах, повышению детализации поверхности и улучшению восприятия глубины.

Просмотр гаммы HDR: Больший треугольник представляет цветовое пространство Rec.2020

Прежде чем мы расскажем о том, как включить отображение HDR в вашем проекте, а также о поддержке платформы и полезных рекомендациях, давайте кратко рассмотрим концепции рендеринга и отображения HDR.

Рендеринг и отображение HDR

При включении HDR-рендеринга камера рендерит сцену в фреймбуфер с плавающей точкой, что позволяет конвейеру рендеринга хранить больший диапазон цветовых значений и лучше сохранять детали. Шейдерные расчеты, такие как освещение и постобработка, выполняются с использованием более точных значений (по сравнению с SDR-рендерингом), что приводит к более убедительным и реалистичным результатам.

Хотя рендеринг HDR уже много лет используется по умолчанию, отсутствие дисплея с поддержкой HDR ограничивает глубину цвета изображения максимум 8 битами на канал. Это ограничивает максимальное количество цветов, которые может отображать пиксель (16 777 216 различных цветовых значений), и максимальный диапазон яркости. Тоновое отображение HDR в SDR используется для преобразования HDR-значений буфера цвета в низкий динамический диапазон и, по желанию, для гамма-коррекции, а затем результаты записываются в изображение цепи подкачки для представления.

В Unity 2022.1 появилась поддержка HDR-дисплеев для конвейера рендеринга высокой четкости (HDRP), ориентированного на настольные и консольные платформы. Для этого при создании цепочки подкачки задается родное для устройства цветовое пространство, а для перераспределения содержимого цветового буфера в родной для дисплея диапазон HDR используется пользовательское тоновое отображение HDR. Кодирование HDR применяется на заключительном этапе перед записью в изображение цепочки подкачки HDR.

При включенном выводе HDR формат изображения цепи подкачки устанавливается таким образом, чтобы обеспечить более высокую глубину цвета (10 или 16 бит на канал). Это позволяет каждому пикселю представлять гораздо более широкий диапазон возможных значений цвета (около 68 миллиардов различных значений) и значительно увеличить диапазон яркости.

С выходом Unity 2023.2 редактор Unity и автономные плееры теперь обеспечивают полную поддержку тонового отображения HDR во всех конвейерах рендеринга и на всех платформах.

Включение отображения HDR в вашем проекте

Новые настройки отображения HDR можно найти в настройках проигрывателя проекта в меню Edit > Project Settings > Player > Other Settings:

  • Разрешить вывод на экран HDR
  • Использование вывода HDR на экран

Эти настройки позволят включить вывод HDR для автономных игроков Unity и редактора при работе на поддерживаемых платформах.

Захват движущегося редактора для включения настроек HDR Player

При включенном выводе HDR вы можете дополнительно настроить битовую глубину цепи подкачки, чтобы установить более низкую (10 бит на канал) или более высокую (16 бит на канал) предпочтительную глубину цвета для представленного изображения. Примечание: Не все устройства поддерживают 16-битные форматы буферов, и вместо них могут использоваться 10-битные.

При использовании универсального конвейера рендеринга (URP) убедитесь, что используемые активы конвейера рендеринга настроены на включение HDR-рендеринга. Выберите активы RP, включенные в проект (обычно они находятся в папке Assets > Settings ), затем перейдите в инспектор проекта и включите Quality > HDR.

Включение отображения HDR в настройках игрока в редакторе Unity

И наконец, убедитесь, что отображение тонов HDR включено, добавив компонент Tonemapping в том постобработки, который влияет на ваши камеры. Если выход HDR включен, следующие настройки Tonemapping должны определяться возможностями HDR дисплея:

  • Минимальная поддерживаемая яркость
  • Максимальная поддерживаемая яркость
  • Бумага белого цвета: Это значение представляет собой яркость бумажно-белой поверхности, представленной на дисплее, которая определяет общую яркость дисплея.

Вы можете получить доступ к диапазону HDR дисплея и значению бумажной белизны с помощью API на языке C#.

Доступ к настройкам тонального отображения HDR через переопределение громкости

Для оптимального восприятия зрителями мы рекомендуем обеспечить контроль над этими параметрами во время работы через специальный интерфейс калибровки HDR. В ближайшее время мы выложим новый пример проекта калибровки HDR, который вы сможете использовать в качестве эталонной реализации для начала работы.

Более подробную информацию о тоновом отображении и выводе HDR см. в обновленной документации по выводу HDR в URP и выводу HDR в HDRP.

Поддержка платформы

Чтобы использовать вывод HDR во время выполнения, устройство должно быть подключено к дисплею с поддержкой HDR, а графический процессор должен иметь необходимую поддержку для включения цепочки подкачки и презентации HDR.

При работе на несовместимых устройствах вывод HDR автоматически отключается во время выполнения. Вы можете узнать, поддерживается ли отображение HDR на основном дисплее и включен ли вывод HDR, используя HDROutputSettings.available.

В дополнение к существующей поддержке настольных компьютеров и консолей, доступной в Unity 2022, в Unity 2023.2 появилась поддержка мобильных устройств для следующих платформ:

  • Плееры для iOS (iOS 16+, iPadOS 16+)
  • Игроки на Android, использующие Vulkan и GLES (Android 9+, в зависимости от возможностей устройства)

Среди распространенных мобильных устройств с поддержкой HDR-дисплеев - iPhone X и более новые, Samsung Galaxy S10 и более новые, Galaxy Note 10 и более новые, Galaxy Tab S6 и более новые...

В этом выпуске также реализована поддержка XR для платформ с поддержкой возможностей. Для определения поддержки HDR-дисплеев обратитесь к документации платформы XR.

Рекомендации и ограничения

Обработка HDR выполняется в два этапа: Тоновое отображение и кодирование HDR. Оба этих шага обычно применяются во время последнего прохода рендеринга с постобработкой.

Единственное исключение - введение дополнительных проходов в URP, которые будут выполняться после постобработки. В этих случаях HDR-кодирование применяется отдельно в процессе "финального блайта", который всегда вызывается в конце конвейера рендеринга.

Пользовательские передачи наложения, вводимые в событие RenderPassEvent.AfterRenderingPostProcessing, требуют специальной обработки для вывода HDR. Если активен вывод HDR и включена постобработка, то в предыдущих проходах будет применено тоновое отображение и преобразование цветового пространства. В результате вам придется создавать собственные эффекты для работы с ожидаемым динамическим диапазоном и цветовым пространством.

При использовании HDR-вывода мы рекомендуем включить HDR-рендеринг для всех отображаемых камер. Вы можете отключить HDR-рендеринг для каждой камеры, но при этом вам нужно убедиться, что после постобработки не выполняются проходы рендеринга или эффекты, которые вставляют проходы после постобработки. При использовании SDR-рендеринга с HDR-выходом следующие функции не поддерживаются:

  • Увеличение масштаба
  • FXAA
  • Режимы отладки HDR
  • Пользовательские проходы после постобработки

В 2D-рендере убедитесь, что постобработка отключена, если вы собираетесь использовать SDR-рендеринг с HDR-выходом.

Для получения более подробной информации об указанных ограничениях и рекомендациях обратитесь к официальной документации:

Протяните руку помощи

Пожалуйста, попробуйте новую поддержку HDR в своем проекте и сообщите нам, что вы думаете по этому поводу.

Ваши отзывы играют важную роль и помогают нам определять приоритеты наиболее значимых решений. Ознакомьтесь с нашей публичной дорожной картой, чтобы проголосовать за функции, которые лучше всего соответствуют вашим потребностям, и посетите наши графические форумы для получения дополнительной информации. Если вы хотите увидеть какие-то дополнительные изменения, не стесняйтесь отправить запрос на функции или связаться с командой напрямую.

Если вам понравилось это глубокое погружение, следите за дальнейшими техническими разборами от разработчиков Unity в рамках продолжающейся серии серии Tech from the Trenches.