Почему я должен использовать гамму 2,2 при использовании изображения JPEG?

В процессе рендеринга файл текстуры имеет гамму 2,2. Но простой цвет не нуждается в этой гамма-коррекции, особенно если значения RGB взяты из спектральной характеристики.

Итак, почему я должен использовать гамму 2.2 в моих файлах текстур? Почему в мире компьютерной графики мы использовали изображения с гаммой 2,2? Почему бы нам не использовать гамму 1 для изображений с реальными цветами?


person Tofuw    schedule 03.02.2015    source источник


Ответы (1)


Большинство оборудования и драйверов предполагают, что вы работаете с гаммой 2,2 (или sRGB, что очень похоже). Поэтому, если вы попытаетесь отобразить необработанный файл с линейной информацией RGB (т. е. с гаммой 1,0), отображаемое изображение будет слишком ярким.

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

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

person Adrian McCarthy    schedule 03.02.2015
comment
Спасибо за Ваш ответ. Если я визуализирую многоугольник (с картой градиента из 256 ступеней серого), я мог бы (в конечном итоге) проверить, может ли мой движок рендеринга преобразовать гамму 2,2 моей текстуры в правильное значение, чтобы получить сбалансированные изображения с моей гаммой RGB спектральных данных. 1.0. Таким образом, я эффективно получаю линейное изображение. Но если я использую материал с RGB 1.1.1 и гаммой 1 в альбедо, каков будет результат? Физический белый цвет или просто значение RGB? - person Tofuw; 03.02.2015
comment
@tofuw, если вам нужны физически правильные цвета, вам нужно визуализировать более чем с тремя длинами волн (R, G, B) и добавить такие вещи, как рассеяние и поляризация света, если вы визуализируете с помощью базовых движков, вы всегда получаете только R, G, Б. затем после рендеринга вы можете сохранить результирующие цвета как набор длин волн или обработать его как кривую... и визуализировать его, пересчитав R, G, B обратно... некоторое время назад сделал что-то подобное, и это выполнимо (реконструированный белый шум станет белым и в RGB) - person Spektre; 02.03.2015