Mapowanie tonów i adaptacja oczu - jasne kolory i ciemniejszy obraz

9

Próbuję wdrożyć mapowanie tonów wraz z adaptacją oka i HDR. Właściwie już to zaimplementowałem, ale nie jestem zadowolony z rezultatu i myślę, że popełniłem błąd.

Moje ostateczne zdjęcie (przed postprocessingiem) przechowuję w półpłytkowej teksturze. Mam również 2 tekstury pomocnicze. Pierwszy przechowuje logarytm logu i jego średni, minimalny i maksymalny kolor na ostatniej mapie mip. Drugi przechowuje wartość dostosowania, która jest obliczana jako:

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

gdzie prevLum jest poprzednią wartością adaptacji (rozmiar tej tekstury to 1x1). Log luminancji ma format R8B8G8, a drugi to R8. W tutorialach widziałem, że używane są tekstury półpłynne, ale w moim przypadku mam zbyt jasne obrazy (prawie białe).

W końcowym module cieniującym postprocess używam wszystkich wartości, aby uzyskać adaptację oka i mapowanie tonów za pomocą tego kodu:

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);

A oto moje wyniki:

  • włączona adaptacja oka i mapowanie tonów adaptacja oka i mapowanie tonów
  • tylko adaptacja oka adaptacja oka
  • tylko mapowanie tonów mapowanie tonów
  • wszystko wyłączone poza

Jak widać, gdy mapowanie tonów jest włączone, kolor króliczka jest jaśniejszy. Po włączeniu adaptacji oka ostateczny obraz jest znacznie ciemniejszy. Czy ktoś mógłby mi wyjaśnić, co może to powodować, ponieważ uważam, że coś tu jest nie tak. Może to coś z przestrzeniami kolorów, których nie rozumiem dobrze? Lub z rozkwitem, który jest stosowany przed mapowaniem tonów i adaptacją oka?

Mam też inne dziwne zachowanie z adaptacją oka. Kiedy patrzę na ciemne obszary, tło (niebo) staje się jaśniejsze. Jest ok, ale zdarza się to zawsze, gdy środek kamery znajduje się na czarnym obszarze (bez względu na odległość kamery od tego obszaru).

Opieram się na wdrożeniach zawartych w projektach na tych stronach: John Chapman , Nutty Software

Złupić
źródło
Na początek powinieneś spróbować wyłączyć kwitnienie i pracować tylko z tym, co jest absolutnie konieczne. Również jeśli mapowanie tonów powoduje, że biel staje się ciemniejsza, oznacza to prawdopodobnie, że nie odwzorowuje ona zakresu od 0 do 1, i powinieneś to zmienić lub odpowiednio dostosować oświetlenie.
akaltar
Dobra robota, czy masz link do swojego projektu?
danijar
Dziękuję Ci. Obecnie nie mam żadnego linku. Ale kiedy skończę pracę magisterską, opublikuję kilka filmów na YouTube lub w pliku .exe.
Harry,

Odpowiedzi:

1

Po prostu nie rozkwitu tonemapy, rozmycia lub głębi ostrości.

Te efekty są najważniejsze. Spróbuj także eksperymentować z wartościami.

r3aktormk
źródło
Dzięki, przyjrzę się temu bliżej, kiedy znajdę trochę czasu.
Harry,