Чтобы ответить на вопрос. Извините, нет, но я был испорчен, позвольте мне объяснить.
Человеческий глаз логарифмический. Чтобы воспринимать что-то вдвое более яркое, нам нужно возвести в квадрат количество света, попадающего в наши глаза. То же самое касается звука.
Тем не менее, значения RGB экрана являются линейными RGB 128,128,128, что в два раза ярче, чем 64,64,64. Он должен быть линейным, иначе наши алгоритмы затенения не будут работать. Падение было бы слишком быстрым.
Нет, наши расчеты неверны, но люди, которые производят наши экраны, знают об этом и исправляют, как могут.
Вместо того, чтобы объяснять мне, посмотрите это Цвет компьютера YouTube нарушен
Таким образом, чтобы получить правильный микс, вам нужно создать правильный микс между двумя рендерами. Для решения этой проблемы нет состояния смешивания, поэтому вам придется создать собственный пиксельный шейдер, чтобы выполнить эту работу. output.color = sqrt(pow(input1.color, 2) + pow(input2.color, 2));
Это очень тонко, но измените цвета двух источников света, а затем переключитесь между линейным и логарифмическим смешиванием, и вы удивитесь, как вы вообще мирились с неправильным выводом рендеринга.
Я выполняю все расчеты рендеринга и освещения в виде подсчета фотонов, возведения в квадрат входных цветов и извлечения выходных цветов с квадратным корнем.
Что с альфой? Ага? Я не уверена.
person
Blindman67
schedule
01.11.2015