Отображение тона и адаптация глаз - бледные цвета и более темное изображение

9

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

Мое окончательное изображение (до постобработки) я сохраняю в виде поплавка. У меня также есть 2 вспомогательные текстуры. Первый хранит журнал яркости и среднего, минимального и максимального цветов в последней мип-карте. Второй хранит значение адаптации, которое вычисляется как:

prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate))

где prevLum - предыдущее значение адаптации (размер этой текстуры 1x1). Логарифмическая текстура яркости имеет формат R8B8G8, а вторая - R8. В уроках я видел, что используются текстуры с половиной поплавка, но в моем случае у меня получаются слишком яркие изображения (почти белые).

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

float autokey(in float lum) {
    return 1.03 - 2.0 / (2.0 + log10(lum + 1.0));
}

float hejl(in float color) {
    float x = max(0.0, color - 0.004);
    return (x * (A * x + B)) / (x * (A * x + C) + D);
}

float adaptedLum = texture(adaptedLuminance, vec2(0.5)).r;
float exp = exposure * autokey(adaptedLum) / adaptedLum;
result *= exp;

result.xyz=RGB2xyY(result.xyz); // conversion to CIE xyY

result.z = hejl(result.z);

result.xyz=xyY2RGB(result.xyz);

И вот мои результаты:

  • включена адаптация глаза и отображение тона адаптация глаза и отображение тона
  • только адаптация глаза адаптация глаза
  • только тональное отображение тональное отображение
  • все выключено от

Как вы можете видеть, когда включено отображение тонов, цвет кролика становится бледнее. А когда включена адаптация глаза, конечное изображение становится намного темнее. Может ли кто-нибудь объяснить мне, что может вызвать это, потому что я думаю, что здесь что-то не так. Может быть, это что-то с цветовыми пространствами, которые я не очень хорошо понимаю? Или с цветением, которое наносится перед тональным отображением и адаптацией глаз?

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

Я опираюсь на реализацию, включенную в проекты на этих страницах: Джон Чепмен , Nutty Software

Гарри
источник
Для начала постарайтесь отключить Блум и работать только с тем, что абсолютно необходимо. Кроме того, если при отображении тона ваш белый цвет становится темнее, это, вероятно, означает, что он не отображается в диапазоне 0–1, и вам следует либо изменить это, либо соответствующим образом адаптировать свое освещение.
Акалтар
Хорошая работа, у вас есть ссылка на ваш проект?
Данияр
Спасибо. В настоящее время у меня нет ссылки. Но я собираюсь опубликовать несколько видео на YouTube или .exe файл, когда я закончу свою магистерскую работу.
Гарри

Ответы:

1

Вы просто не расцветаете, не размытие, не глубина резкости.

Эти эффекты превосходят все остальные. Попробуйте поэкспериментировать со значениями.

r3aktormk
источник
Спасибо, я посмотрю на это ближе, когда найду время.
Гарри