HDR режим монитора.
В Vulkan один из распространенных форматов на мониторе - RGBA16F + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR.
В документации про него нет информации, но удалось найти аналогичный формат в EGL, для которого есть документация: EGL_EXT_gl_colorspace_scrgb_linear.
В нем сказано, что этот формат обратно совместим с sRGB на диапазоне (0,1), но также позволяет использовать и значения более 1.
Цвет (1.0, 1.0, 1.0) соответствует яркости в 80 нит, что очень мало, зато доступен диапазаон до 125.0, что будет соответствовать 10 000 нит.
У меня монитор на 1000 нит и экспериментально выянилось, что цвета сохраняются до 12.0-13.0, после чего плавно уходят в белый цвет. Чисто белый появляется после 500.0.
Какие преимущества это дает:
* намного больший диапазон цветов.
* точное управление яркостью, то есть 1000 нит в игре будет в реальности светить в игрока на 1000 нит.
* можно отказаться от тонемапинга, если не использовать значения за пределами 500.0 или если нужно выводить физически корректную картинку.
Есть и минусы:
* нужно знать яркость монитора для правильного тонемапинга или экспозиции.
* много разных HDR форматов и под каждый нужно настраивать рендер.
* скриншоты от сторонних программ чиают только диапазон (0,1).
Поддержка в игрых и программах.
За 2 года пользования монитором я ни разу не смог воспользоваться HDR режимом. В играх этот режим помечался как неподдерживаемый, возможно больше рассчитывали на HDR TV под консоли, где другой режим.
Только в Doom Enternal есть возможность включить HDR, но картинка была в диапазоне (0,1), а это очень тусклые цвета, то есть они это не тестировали.
Без HDR режима монитор сам подстраивал яркость, что давало хорошую имитацию HDR.
#HDR
В Vulkan один из распространенных форматов на мониторе - RGBA16F + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR.
В документации про него нет информации, но удалось найти аналогичный формат в EGL, для которого есть документация: EGL_EXT_gl_colorspace_scrgb_linear.
В нем сказано, что этот формат обратно совместим с sRGB на диапазоне (0,1), но также позволяет использовать и значения более 1.
Цвет (1.0, 1.0, 1.0) соответствует яркости в 80 нит, что очень мало, зато доступен диапазаон до 125.0, что будет соответствовать 10 000 нит.
У меня монитор на 1000 нит и экспериментально выянилось, что цвета сохраняются до 12.0-13.0, после чего плавно уходят в белый цвет. Чисто белый появляется после 500.0.
Какие преимущества это дает:
* намного больший диапазон цветов.
* точное управление яркостью, то есть 1000 нит в игре будет в реальности светить в игрока на 1000 нит.
* можно отказаться от тонемапинга, если не использовать значения за пределами 500.0 или если нужно выводить физически корректную картинку.
Есть и минусы:
* нужно знать яркость монитора для правильного тонемапинга или экспозиции.
* много разных HDR форматов и под каждый нужно настраивать рендер.
* скриншоты от сторонних программ чиают только диапазон (0,1).
Поддержка в игрых и программах.
За 2 года пользования монитором я ни разу не смог воспользоваться HDR режимом. В играх этот режим помечался как неподдерживаемый, возможно больше рассчитывали на HDR TV под консоли, где другой режим.
Только в Doom Enternal есть возможность включить HDR, но картинка была в диапазоне (0,1), а это очень тусклые цвета, то есть они это не тестировали.
Без HDR режима монитор сам подстраивал яркость, что давало хорошую имитацию HDR.
#HDR
Фото монитора.
Выводится чистый красный цвет от 0 до 1000.
UI выводится в диапазоне (0,1) и выглядит очень тускло.
Формат: RGBA16F + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR.
#HDR
Выводится чистый красный цвет от 0 до 1000.
UI выводится в диапазоне (0,1) и выглядит очень тускло.
Формат: RGBA16F + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR.
#HDR
HDR color grading and display in Frostbite
Как переделали Frostbite для поддержки множества HDR дисплеев.
#HDR
Как переделали Frostbite для поддержки множества HDR дисплеев.
#HDR
smartphone.jpg
114.3 KB
Сравнение формата RGBA16F + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR на разных устройствах:
* VA монитор на 1000 нит
* Смартфон с AMOLED экраном на 800 нит
Особенности:
* Переход в белый цвет зависит от яркости, зеленый самый яркий и раньше становится белым.
* На мониторе диапазон 0..100 примерно совпадает с 0..24 на смартфоне.
* На мониторе используется аналог ACES тонемапинга, поэтому синий переходит в розовый, а потом в белый.
* На смартфоне используется более простой тонемапинг, который некорректно работает с чисто синим цветом.
Нет способа программно узнать характеристики встроенного тонемапинга, поэтому лучше использовать свой, а значениями > 1.0 регулировать яркость экрана.
#HDR
* VA монитор на 1000 нит
* Смартфон с AMOLED экраном на 800 нит
Особенности:
* Переход в белый цвет зависит от яркости, зеленый самый яркий и раньше становится белым.
* На мониторе диапазон 0..100 примерно совпадает с 0..24 на смартфоне.
* На мониторе используется аналог ACES тонемапинга, поэтому синий переходит в розовый, а потом в белый.
* На смартфоне используется более простой тонемапинг, который некорректно работает с чисто синим цветом.
Нет способа программно узнать характеристики встроенного тонемапинга, поэтому лучше использовать свой, а значениями > 1.0 регулировать яркость экрана.
#HDR
HDR экраны
Изначально экраны отображали цвета в диапазоне [0,1], а для имитации более ярких цветов использовался тонемапинг, где например чисто красный плавно переходил в белый, тем самым яркость самого цвета увеличивалась. С появлением HDR экранов появились и новые возможности.
Так монитор с QLED подсветкой на 1000 нит в цветовом пространстве
Здесь 12.5 расчитывается как
В этом году NV обновили драйвера и использование свопчейна с
Стоит помнить, что формат RGBA16F + sRGB_nonlinear не включает HDR режим, так как не поддерживает значения за пределами 1.0, поэтому используется только для повышения точности.
#HDR
Изначально экраны отображали цвета в диапазоне [0,1], а для имитации более ярких цветов использовался тонемапинг, где например чисто красный плавно переходил в белый, тем самым яркость самого цвета увеличивалась. С появлением HDR экранов появились и новые возможности.
Так монитор с QLED подсветкой на 1000 нит в цветовом пространстве
Extended_sRGB_linear
позволяет задавать яркость цвета в диапазоне [0, 12.5], далее используется встроенный тонемапинг, цвет плавно переходит в белый и общая яркость еще увеличивается, но это уже неконтролируемое искажение цвета и его стоит избегать.Здесь 12.5 расчитывается как
1000 нит / 80
, а максимальная яркость берется из NvAPI, DXGI или из характеристик монитора.В этом году NV обновили драйвера и использование свопчейна с
Extended_sRGB_linear
не включает HDR режим на мониторе, теперь это делается либо заранее в настройках Windows, либо программно через DXGI или NvAPI.Стоит помнить, что формат RGBA16F + sRGB_nonlinear не включает HDR режим, так как не поддерживает значения за пределами 1.0, поэтому используется только для повышения точности.
#HDR
HDR экраны на Android
Тут все сложнее. Цветовое пространство
Для OLED экранов легко сделать эмуляцию HDR - выставить яркость экрана на максимум и выделить диапазон, например, 0.5-1.0 для особо ярких эффектов. Сами экраны поддерживают от 10 бит точности, то есть уменьшив диапазон цветов в 2 раза останется еще 9 бит точности.
На некоторых смартфонах пространство Extended sRGB искажает цвета - красный на всем диапазоне смещается в красно-оранжевый, этого не происходит в sRGB пространстве, а так как цвета более 1.0 не используются, то нет смысла в Extended sRGB.
#HDR
Тут все сложнее. Цветовое пространство
Extended_sRGB_linear
работает не по стандарту - значения более 1.0 не увеличивают яркость, а сразу срабатывает встроенный тонемапинг и смещает цвета в сторону белого. На Android 14 добавили HDR режим, но для Vulkan ничего не изменилось. Display.HdrCapabilities
содержит некорректную информацию, а значит не получится расчитать цвет, после которого включается тонемапинг, если бы Extended_sRGB_linear
работал по стандарту.Для OLED экранов легко сделать эмуляцию HDR - выставить яркость экрана на максимум и выделить диапазон, например, 0.5-1.0 для особо ярких эффектов. Сами экраны поддерживают от 10 бит точности, то есть уменьшив диапазон цветов в 2 раза останется еще 9 бит точности.
На некоторых смартфонах пространство Extended sRGB искажает цвета - красный на всем диапазоне смещается в красно-оранжевый, этого не происходит в sRGB пространстве, а так как цвета более 1.0 не используются, то нет смысла в Extended sRGB.
#HDR