Version: 2017.1
API
HDR color picker

Визуализация HDR (расширенный динамический диапазон) в Unity

При стандартной визуализации, красная, зеленая и синяя компоненты пикселя представлены дробным числом в диапазоне 0..1, где 0 указывает на нулевую интенсивность, а единица представляет максимальную интенсивность на дисплее. Хотя это просто в использовании, оно не отражает того, как освещение работает в сцене из реальной жизни. Человеческий глаз, как правило, приспосабливается к условиям освещения, так что объект, который выглядит белым в тускло освещенной комнате, в действительности может быть менее ярким, чем серый объект при дневном освещении. Кроме того, глаз более чувствителен к различиям яркости на нижнем краю диапазона, чем на верхнем.

More convincing visual effects can be achieved if the rendering is adapted to let the ranges of pixel values more accurately reflect the light levels that would be present in a real scene. Although these values will ultimately need to be mapped back to the range available on the display device, any intermediate calculations (such as Unity’s image effects) will give more authentic results. Allowing the internal representation of the graphics to use values outside the 0..1 range is the essence of High Dynamic Range (HDR) rendering.

Работа с HDR

HDR включается для каждой камеры отдельно при при помощи свойств компонента Camera:-

Когда HDR активен, сцена отрисовывается в буфер изображения HDR, который может размещать значения пикселей вне диапазона 0..1. Затем этот буфер подвергается пост-обработке с помощью эффектов пост-обработки, таких как HDR bloom. Эффект пост-обработки tonemapping конвертирует HDR изображение в стандартное low dynamic range (LDR) изображение для отправки на экран. Преобразование в LDR должно происходить в какой-то момент процесса работы эффекта пост-обработки, но оно не должно происходить на последнем этапе, если после этого должны быть применены использующие только LDR эффекты пост обработки. Для удобства, некоторые эффекты пост-обработки могут автоматически конвертироваться в LDR после применения HDR эффекта (см. раздел Скриптинг, представленный ниже).

Tonemapping (тональная компрессия)

Tonemapping - это процесс упаковывания HDR значений обратно в LDR диапазон. Существует множество различных методов, и то, что хорошо для одного проекта, может не быть лучшим выбором для другого. В Unity включён набор разных tonemapping эффектов пост-обработки. Для того, чтобы их использовать, выберите Assets -> Import Package -> Image Effects (Pro Only), затем выберите камеру в сцене и выберите Component -> Image Effects ->ToneMapping. Подробное описание tonemapping типов можно найти в документации по эффектам пост-обработки.

An exceptionally bright scene rendered in HDR. Without tonemapping, most pixels seem out of range.
An exceptionally bright scene rendered in HDR. Without tonemapping, most pixels seem out of range.
The same scene as above. But this time, the tonemapping effect is bringing most intensities into a more plausible range. Note that adaptive tonemapping can even blend between above and this image thus simulating the adaptive nature of capturing media (e.g. eyes, cameras).
The same scene as above. But this time, the tonemapping effect is bringing most intensities into a more plausible range. Note that adaptive tonemapping can even blend between above and this image thus simulating the adaptive nature of capturing media (e.g. eyes, cameras).

HDR Bloom и Glow

Использование HDR позволяет получить намного больше контроля в пост-обработке. У LDR блума (bloom) есть неудачный побочный эффект размытия многих областей экрана, даже если интенсивность их пикселей менее 1.0. С помощью HDR можно применять блум только к тем областям, где интенсивность выше единицы. Это приводит к более желанному результату, когда по соседним пикселям “растекаются” только очень яркие элементы сцены. Встроенный эффект пост-обработки ‘Bloom and Lens Flares’ теперь тоже поддерживает HDR. Чтобы добавить его к камере, выберите Assets -> Import Package -> Image Effects (Pro Only), затем выберите камеру в сцене, и выберите Component -> Image Effects ->Bloom. Более подробное описание эффекта ‘Bloom’ можно найти в документации по эффектам пост-обработки.

The car window sun reflections in this scene have intensity values far bigger than 1.0. Bloom can only pick up and glow these parts if the camera is HDR enabled thus capturing these intensities.
The car window sun reflections in this scene have intensity values far bigger than 1.0. Bloom can only pick up and glow these parts if the camera is HDR enabled thus capturing these intensities.
The car window will remain without glow if the camera is not HDR enabled. Only way to add glow is to lower the intensity threshold but then unwanted parts of the image will start glowing as well.
The car window will remain without glow if the camera is not HDR enabled. Only way to add glow is to lower the intensity threshold but then unwanted parts of the image will start glowing as well.

Преимущества HDR

  • Цвета в зонах высокой интенсивности не будут потеряны
  • Лучшая поддержка блума и свечения (glow).
  • Снижение banding-артефактов в областях с низкочастотным освещением

Недостатки HDR

  • Используется буферы с плавающей запятой (отрисовка медленней и требуется больше видеопамяти)
  • Не поддерживается аппаратный анти-алиасинг (но вы можете использовать эффект пост-обработки Anti-Aliasing для сглаживания граней)
  • Поддерживается не на всём оборудовании

Заметки по использованию

Forward Rendering (упреждающий рендеринг)

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

Deferred Rendering (отложенный рендеринг)

В режиме HDR память под буфер light prepass buffer будет также выделяться как под буфер с плавающей запятой. Это снижает связанность в буфере освещения. HDR поддерживается при отложенном рендеринге, даже если не используются эффекты пост-обработки.

Скриптинг

К скрипту с эффектом пост-обработки можно добавить атрибут ImageEffectTransformsToLDR для указания того, что целевой буфер должен быть в LDR, а не в HDR. По сути, это значит, что скрипт может автоматически конвертировать в LDR после применения своего HDR эффекта пост-обработки.

See also

HDR Color Picker.

API
HDR color picker