Comments 31
Круто, конечно стоит! Про гейм-девелопмент всегда интересно :)
Интересно, но, на текущем этапе(судя по видео), больше похоже на автоподстройку яркости у фото\видео камеры.
Время на подстройку — не самая важная часть, это достаточно легко настраивается. Главное — сам шейдер. Кроме того тонмапинг используется в основном не для того, чтобы делать эффект перехода из тени в свет и наоборот, а для выравнивания яркости картинки, убирая пересвеченные и слишком затененные места, добавляя реалистичности общего вида картинки.
Я понимаю, но делал акцент — что глаз переходит из света в тень — и наоборот аналогичным способом. И более того — думаю можно попробовать сделать эффект «временного ослепления» при выходе из тени. Такие эффекты уже применяются в играх.
Спасибо, интересные статьи.
П.с. на последних кадрах видео какое-то неестественное освежение местности фонарем, очень резкий переход на земле между темными и светлыми местами… (имхо)
А шейдеры можно на GLSL? Конечно можно и самим переписать но если не сильно в этом разбираешься то трудновато.
Для того, чтобы этот cg-шейдер заработал под GLSL достаточно переименовать vert() и frag(), а также написать функцию Luminance (=(r+g+b)/3), ну и еще unity-матрицы заменить на соответствующие glState
Можно кстати не переписывать, а просто скомпилировать из CG в GLSL компилятором от nVidia (cgc)
Зато шейдер в юнити написанный на CG, компилится подо все возможные платформы, в отличии от GLSL
То есть Вы считаете, что не разобравшись можно вот так скопировать GLSL код, и оно заработает?
Насколько я понимаю, человек ослепляется не просто от яркого света, а именно от источника света, направленного в глаза. Т.е. если мы посмотрим на траву, освещённую фарами, то остальная местность для нас не затемнится. А вот если фары будут бить в глаза, то затемнится. У вас заметен эффект даже когда фары не бьют в глаза, просто яркоосвещенный участок в кадре.
Вообще, совершенно не важно, прямой свет или отраженный. В любом случае это один и тот же пучок фотонов.

Зачастую просто отраженный свет в разы слабее прямого, так как освещаются не зеркальные поверхности.
Когда Вы находитесь в освещенной комнате ночью, то даже если не смотреть на люстру — в окне на улицу мало чего увидите. Свет он такой, имеет свойство отражаться)

upd: в следующий раз я буду обновлять комментарии
Мне показалось что как-то уж слишком сильно заужен динамический диапазон который видит человек. Все тени потеряли детали, как и яркие света.
Прочитал ссылки как «Кот» и «Шредер» — пора завязывать с бездной баш.орг'а…
Как то все не то. Человек в сумраке видит намного меньше цветов. + шумы и более низкое разрешение. Наверняка замечали, что читать в далеком свете фонаря тяжело — буквы видно, но они размытые. Плюс ко всему свет от фар (например от машины) прямо в глаза сразу же ослепил бы человека, ну не в прямом смысле, а то, что человек сразу видит просто вокруг белое, зажмуривается (такой эффект тоже можно сделать), а потом постепенно переходит зрение в норму, однако то что более темное чем освещение фар будет очень тусклым. Все кроме звезд.

И прямо резкого перехода нет — человек может адаптироваться к темной комнате в течении минуты. Вот выключите свет ночью в комнате. Поначалу будут шумы от изменения освещения, а позже глаза будут привыкать. Через минуту-две уже можно ходить без света. Имеется в виду конечно, что единственный источник света, это фонари на улице. А у вас свет исчез и тут же видно траву четко.
UFO landed and left these words here
Вы только не забывайте, что игроку вряд ли захочется сидеть минуту в комнате и ждать пока его глаза привыкнут к темноте.
UFO landed and left these words here
Привыкание к яркому свету занимает до трех минут, а вот полное зрение в темноте восстанавливается почти час.
Это не хдр, а простая адаптация к освещению.
Нормальный хдр — это когда значения яркости в кадре имеют приближённые к реальным пропорции, т.е. Солнце в тысячи раз ярче лампочки, например. Это используется при той же адаптации, а также критично для реалистичных оптических эффектов вроде моушен блюра и DoF. Обычно для этого используют float значения, рендеря в FP рендер таргет, либо хаками пакуя флоуты в целочисленные RGB.
В данном случае для обработки изображения используется HDR буфер, где содержится расширенная цветовая картина экрана. Tonemaping в общем смысле используется для того чтобы ужать расширенную картину к обычной, здесь же расширенный Tonemaping, который позволяет добиться эффекта перехода из тени в свет.
Огромное спасибо за ваши статьи. Жаль, два плюса в карму ставить нельзя :)
Кстати, думаю, есть резон вынести "_Key / _White / _White" в отдельную константу и не считать ее на каждом проходе шейдера.
Почему геометрическое? Потому что геометрическое среднее «тяготеет» к более высоким значениям....

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

Ну а кому лень читать — можете проверить на пальцах. Берём числа 1 и 4. Арифметическое среднее даёт 2.5, а геометрическое 2. Так какое же из них тяготеет к высоким значеням больше?
Only those users with full accounts are able to leave comments. Log in, please.