При обычной 3D визуализации компоненты пикселя разных цветов представляются дробным числом от 0 до 1. Чем оно больше, тем больше интенсивность компонента на экране. Это легко в применении, но результат отличается от того, что мы видим в реальной жизни своими глазами.
Дело в том, что у здорового человека они приспосабливаются к условиям освещения. Из-за этого предмет, который кажется белым в помещении с плохим освещением, на самом деле может быть менее ярким, чем другой предмет, который нам кажется серым при солнечном свете днем. Дополнительным фактором нереалистичности такого результата является то, что человеческий глаз чувствительнее к отличиям в яркости предметов в нижнем диапазоне, чем в верхнем.
Чтобы 3D визуализация архитектурных объектов была убедительнее, рендеринг должен быть адаптирован таким образом, чтобы диапазоны значений пикселей более точно отображали уровень света, максимально приближая сцену к тому, как она выглядела бы в реальности. Указанные значения нужно будет обратно привязать к диапазону, который доступен на дисплее Unity, однако результат будет реалистичнее.
Смысл HDR рендеринга заключается в возможности внутренней обработки изображения с применением значений, не входящих в диапазон от 0 до 1.
Как использовать HDR в Unity?
Для каждой камеры HDR нужно включать отдельно в ее свойствах. Когда он запущен, сцена будет сформирована в буфере изображения, способного применять выходящие за пределы указанного выше диапазона значения. После этого производится финальная обработка различными эффектами, а также конвертация в стандарт LDR, чтобы результат можно было отобразить на дисплее.
Преимущества:
- даже в зонах с высоким уровнем интенсивности цвета не будут потеряны;
- в зонах, имеющих освещение на низких частотах, будет меньше banding-артефактов;
- эффекты блума и свечения будут выглядеть реалистичнее.
Недостатки:
- некоторое оборудование не поддерживает HDR;
- из-за применения буферов с плавающей запятой, процесс отрисовки потребует больше времени и памяти.
Об эффектах
Tonemapping, отвечающий за конвертацию HDR значений в LDR для вывода изображения на экран, может осуществляться разными методами. Подходящий для одного случая может оказаться совершенно неприменимым для другого. В Unity можно найти разные методы, каждый из которых заслуживает внимания.
Адаптивный характер эффекта tonemapping позволяет сымитировать глаз, камеру и т.д., которые наблюдают за сценой. Для этого он применяется постепенно, т.е. сначала сцена будет очень яркой и без использования тональной компрессии, а уже затем картинка станет более реальной.
Применение HDR в интерактивной архитектурной визуализации дает больше возможностей для пост-обработки. Эффект bloom в Unity может использоваться только в зонах с интенсивностью больше 1, т.к. в противном случае может испортить изображение. Если же применять его в указанных зонах, то результат всегда будет отличным.