Mappatura dei toni e adattamento degli occhi: colori chiari e immagini più scure


9

Sto cercando di implementare la mappatura dei toni insieme all'adattamento degli occhi e all'HDR. In realtà l'ho già implementato ma non sono soddisfatto del risultato e penso di aver fatto qualcosa di sbagliato.

La mia immagine finale (prima del postprocessing) che conservo nella trama a mezzo float. Ho anche 2 trame di aiuto. Il primo memorizza la luminanza dei registri e il colore medio, minimo e massimo nell'ultima mip-map. Il secondo memorizza il valore di adattamento che viene calcolato come:

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

dove prevLum è il valore di adattamento precedente (la dimensione di questa trama è 1x1). La trama della luminanza del registro è in formato R8B8G8 e la seconda è R8. Nei tutorial ho visto che vengono usate trame semi-float ma nel mio caso ho immagini troppo luminose (quasi bianche).

Nello shader postprocesso finale sto usando tutti questi valori per ottenere adattamento degli occhi e mappatura dei toni usando questo codice:

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

Ed ecco i miei risultati:

  • adattamento degli occhi e mappatura dei toni attivati adattamento oculare e mappatura dei toni
  • solo adattamento oculare adattamento oculare
  • solo mappatura dei toni mappatura dei toni
  • tutto fuori via

Come puoi vedere quando la mappatura dei toni è attivata, il colore del coniglietto è più pallido. E quando l'adattamento degli occhi è attivato, l'immagine finale è molto più scura. Qualcuno potrebbe spiegarmi cosa potrebbe causare questo, perché penso che qualcosa qui sia sbagliato. Forse è qualcosa con spazi di colore che non capisco bene? O con la fioritura che viene applicata prima della mappatura del tono e dell'adattamento degli occhi?

Ho anche un altro strano comportamento con l'adattamento dell'occhio. Quando guardo le aree scure, lo sfondo (cielo) diventa più luminoso. Va bene, ma succede sempre quando il centro della fotocamera si trova su un'area nera (indipendentemente dalla distanza della fotocamera da quest'area).

Mi baso sull'implementazione inclusa nei progetti in queste pagine: John Chapman , Nutty Software


Per cominciare, dovresti provare a disabilitare la fioritura e lavorare solo con ciò che è assolutamente necessario. Inoltre, se la mappatura dei toni fa sì che il bianco diventi più scuro, probabilmente significa che non è mappato nell'intervallo 0 - 1 e dovresti cambiarlo o adattare di conseguenza la tua illuminazione.
Akaltar,

Bel lavoro, hai un link al tuo progetto?
danijar,

Grazie. Attualmente non ho alcun link. Ma pubblicherò alcuni video su YouTube o file .exe quando finirò la mia tesi di laurea.
Harry,

Risposte:


1

Semplicemente non si fiorisce, non si sfoca, né si fa profondità di campo.

Questi effetti si aggiungono a tutti gli altri. Prova a sperimentare anche con i valori.


Grazie, lo guarderò più da vicino quando troverò del tempo.
Harry,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.