про гамму

автор: Андрей Клецков (111) - http://andklv.narod.ru - 6 августа 2009
дисклеймер: Всё ниже написанное является исключительно мнением автора, его какими-то возможно глупыми выводами и умозаключениями, на мутные и непонятные формулировки наверняка сказалось состояние утомлённости.

Довольно модный вопрос - гамма, что это такое и с чем её едят, зачем она нужна, и почему о ней так много шума именно в последнее время. Скажем так, узкому кругу профессионалов данный вопрос был известен давно и давным давно они этой гаммой пользовались, но пришёл момент когда сий термин пошёл в массы. Что же такое эта гамма? собственно это такое преобразование изображения когда средние тона становятся темнее или светлее, то есть это некая функция которая в образе curves выглядит приблизительно вот так (кривая выгнута параболой))


или если быть точным то вот так выглядит график этой функции по научному


или вот так выглядеть на levels (сдвинут средний ползунок)


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


Откуда же появилось понятие гамма? и почему именно 2.2 а не 1.8 или там 3... появилась эта штука из-за того что для изображения на мониторе, в телевизоре использовались электронно-лучевые трубки (CRT), которые показывали изображение нелинейно, а как раз с таким завалом. грубо говоря, летит один электрон, светится допустим с яркостью 0.1, но летят 5 электронов и логично бы предположить что светилось бы с яркостью 0.5, в пять раз больше, но в реальности светилось оно слабее, на допустим 0.3... так как с этим ничего нельзя было поделать, приходилось все материалы кодировать так чтобы учитывать этот прикол, то есть грубо говоря в изображение вносилось корректировка - средние тона осветлялись, и показываясь на трубке которая средние тона темнила по природе своей, картинка выглядела более-менее прилично. на самом деле там наверняка всё сложнее, потому как у всякого средства фиксирования или воспроизводства изображения свои нелинейные характеристики. так или иначе, альтернативы электронно лучевым трубкам не было и эта беда прочно вошла в нашу жизнь да так что стала стандартом, и теперь вся техника для работы с изображением калибруется под sRGB с гаммой 2.2.

Итого, если мы возьмём гипотетический монитор который показывает яркости линейно (то есть монитор с гаммой 1), то все электронные изображения у нас будут высветленными.

Уже по идее должно быть много понятно...

Каким же макаром сия беда относится к компьютерной визуализации? Ну хотя бы таким что все текстуры у нас высветленные (хотя мы как бы об этом и не догадываемся), но изобретатели программ-рендереров в свои программы заложили физические законы, как то например, квадратичное затухание яркости света, которое на наших затемняющих мониторах смотрится очень темно (в большинстве ситуаций, хотя я говорил уже что на самом деле всё ещё порядком сложнее из-за нелинейности даже человеческих глаз). в итоге, реализация физически корректных формул привела к тёмным картинкам, потому что формулы ни о какой-такой проблеме электронно-лучевых трубок не знают. замечу что ранее, когда вопрос о физической корректности рендереров не стоял, всякими ухищрениями художники рисовали именно то что им было нужно используя всякие хитрости, типа - а тут темно, значит фонарик ещё один поставим, проблема что ли...

Перейдём от теории к практике. возьмём простейшую сцену.
без гамма коррекции


и с гамма коррекцией

видим что чёрный остался чёрным, белого нет, а так бы он тоже белым остался, а средние тона осветлились.
теперь с глобальный освещением.

без гаммы


с гаммой

кажется, что картинка с гаммой бледная и выбеленная. всё правильно. ведь мы осветлили всю картинку.а исходные цвета остались как были, то есть мы не привели их в линейное представление и они у нас по умолчанию остались в гамме 2.2, то есть уже предварительно заранее осветлёнными. зато свет проник очень далеко и осветил те места которые раньше были тёмными. скорректируем наши цвета и вот что получим.

изображение освещено более равномерно, пропала контрастность, в том числе поблекли цвета источников света. мы оставили материалы как они были а освещение как бы заставили светить дальше, там где раньше был мало света, его стало больше.

думаю с текстурами будет понятнее.
без гаммы (гамма коррекции финального изображени) и с текстурой без гамма коррекции текстуры и материала пола

красиво и контрастно, но здесь мало полутонов, а в интерьерных сценах их очень много, хотя и тут видно что в области тени темновато.

без гаммы изображения но с гаммой текстуры

всё очень тёмное, текстуры в линейном пространстве, и финальная картинка в линейном пространстве, а монитор у нас в гамме 2.2 поэтому всё тёмное

с гаммой изображения но без гаммы текстуры и цвета материала

всё очень светлое, мы подняли освещённость финальной картинки но не затемнили (не привели в линейное пространство) текстуры и материалы

с гаммой изображения и с гаммой текстуры - то о чём мы тут говорим.

не так контрастно как в первом случае, но зато более светло. куда пропала контрастность? ну как куда? а гамма коррекцию источников освещения кто делать будет?
вот вернули цвета

и вот вернули контрастность


в общем можно делать вот что-то типа такого


почему гамма должна быть 2.2? да конечно не должна.... тут вопрос в несколько иной плоскости. можно стремиться к имитации реальности и достижению фоторезультата нажатием одной кнопки. тогда гамма 2.2 хотя бы потому что это стандарт. Но некоторые из нас вроде как художники, и для ник компьютер или вот в частности гамма - это всего лишь инструмент. раньше ставили лампочки если чувство прекрасного требовало, а теперь вот можно с гаммой поиграться, и крутить её можно и так и сяк, лишь бы результат был тот который удовлетворит художника :)

так, вернёмся на землю и посмотрим на инструменты в максе которые можно использовать для игр с гаммой. я специально не расписывал о том на какую кнопку надо нажимать чтобы получить то или иное. я писал о теории, кто понял, тот без труда применит эти знания на практике.

естественно первым делом за гамму отвечают настройки которые отвечают за гамму :)

хотя на самом деле можно обойтись и без этого (ведь обходятся же некоторые другие софтины). тут ничего особенного нет. инпут гамма позволяет сразу всем текстурам сделать гамма коррекцию (а можно и по отдельности). аутпут гамма - это гаммакоррекция финального изображения при записи его в файл на диск.

диалог загрузки битмапы

как видим можно любой текстуре сделать оверрайд и поставить ей инпут гамму руками какую захотим.

настройки аутпута у битмапы. как видим тут тупо встроенные курвы, руками можно сделать типа гамма коррекцию. к слову в блендере на данный момент такой способ есть единственный возможный, а совсем недавно был возможен ещё более извращённый способ - переводить текстуры в линейное пространство в фотошопе :) - то есть полёт в слепую по приборам это называется....


потом появился плагин colorcorrect и потом его КАЛЕЧНО встроили в макс

но им тоже можно затемнить текстуру в средних тонах

что ещё... ну наверняка есть ещё варианты. пока это всё было на предмет гамма-коррекции текстур. теперь инструменты для гамма-коррекции финального изображения. естественно вариант номер один - фотошоп, то есть рендерим тёмную картинку, сохраняем в HDRI и в фотошопе издеваемся над ней как желаем. лучше для этого даже не фотошоп использовать а композеры, они в отличие от фотошопа давно научились нормально с 32битным цветом работать.

второй вариант - это поле output gamma в настройках макса, о которых упоминали чуть выше.

третий вариант - враевские инструменты, колор маппинг. полезен тем что позволяет внести оптимизацию во врай... впрочем это другая тема.


есть ещё такие инструменты у врая которыми не стоит пренебрегать. курвы, sRGB конверсия прямо в буфере.


засим, разрешите откланяться. думаю для людей мыслящих данный урок послужит интересной пищей для мыслей.
всем всего хорошего :)

Hosted by uCoz