Время на подстройку — не самая важная часть, это достаточно легко настраивается. Главное — сам шейдер. Кроме того тонмапинг используется в основном не для того, чтобы делать эффект перехода из тени в свет и наоборот, а для выравнивания яркости картинки, убирая пересвеченные и слишком затененные места, добавляя реалистичности общего вида картинки.
Я понимаю, но делал акцент — что глаз переходит из света в тень — и наоборот аналогичным способом. И более того — думаю можно попробовать сделать эффект «временного ослепления» при выходе из тени. Такие эффекты уже применяются в играх.
Спасибо, интересные статьи.
П.с. на последних кадрах видео какое-то неестественное освежение местности фонарем, очень резкий переход на земле между темными и светлыми местами… (имхо)
Для того, чтобы этот cg-шейдер заработал под GLSL достаточно переименовать vert() и frag(), а также написать функцию Luminance (=(r+g+b)/3), ну и еще unity-матрицы заменить на соответствующие glState
Насколько я понимаю, человек ослепляется не просто от яркого света, а именно от источника света, направленного в глаза. Т.е. если мы посмотрим на траву, освещённую фарами, то остальная местность для нас не затемнится. А вот если фары будут бить в глаза, то затемнится. У вас заметен эффект даже когда фары не бьют в глаза, просто яркоосвещенный участок в кадре.
Когда Вы находитесь в освещенной комнате ночью, то даже если не смотреть на люстру — в окне на улицу мало чего увидите. Свет он такой, имеет свойство отражаться)
Как то все не то. Человек в сумраке видит намного меньше цветов. + шумы и более низкое разрешение. Наверняка замечали, что читать в далеком свете фонаря тяжело — буквы видно, но они размытые. Плюс ко всему свет от фар (например от машины) прямо в глаза сразу же ослепил бы человека, ну не в прямом смысле, а то, что человек сразу видит просто вокруг белое, зажмуривается (такой эффект тоже можно сделать), а потом постепенно переходит зрение в норму, однако то что более темное чем освещение фар будет очень тусклым. Все кроме звезд.
И прямо резкого перехода нет — человек может адаптироваться к темной комнате в течении минуты. Вот выключите свет ночью в комнате. Поначалу будут шумы от изменения освещения, а позже глаза будут привыкать. Через минуту-две уже можно ходить без света. Имеется в виду конечно, что единственный источник света, это фонари на улице. А у вас свет исчез и тут же видно траву четко.
Это не хдр, а простая адаптация к освещению.
Нормальный хдр — это когда значения яркости в кадре имеют приближённые к реальным пропорции, т.е. Солнце в тысячи раз ярче лампочки, например. Это используется при той же адаптации, а также критично для реалистичных оптических эффектов вроде моушен блюра и DoF. Обычно для этого используют float значения, рендеря в FP рендер таргет, либо хаками пакуя флоуты в целочисленные RGB.
В данном случае для обработки изображения используется HDR буфер, где содержится расширенная цветовая картина экрана. Tonemaping в общем смысле используется для того чтобы ужать расширенную картину к обычной, здесь же расширенный Tonemaping, который позволяет добиться эффекта перехода из тени в свет.
Почему геометрическое? Потому что геометрическое среднее «тяготеет» к более высоким значениям....
На этой фразе у меня появилось сильное чувство, что нас обманывают. Среднее арифметическое намного больше тяготеет к высоким значениям, чем среднее геометрическое. Читайте неравенство о средних.
Ну а кому лень читать — можете проверить на пальцах. Берём числа 1 и 4. Арифметическое среднее даёт 2.5, а геометрическое 2. Так какое же из них тяготеет к высоким значеням больше?
Имитируем адаптацию глаза к темноте в 3D, или HDR для чайников