Mapeo de tonos y adaptación ocular: colores pálidos e imagen más oscura.


9

Estoy tratando de implementar el mapeo de tonos junto con la adaptación ocular y HDR. En realidad, ya implementé esto, pero no estoy satisfecho con el resultado y creo que hice algo mal.

Mi imagen final (antes del postprocesamiento) la guardo en una textura de medio flotador. También tengo 2 texturas auxiliares. El primero almacena la luminancia de registro y el color promedio, mínimo y máximo del mismo en el último mapa-mip. El segundo almacena el valor de adaptación que se calcula como:

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

donde prevLum es el valor de adaptación anterior (el tamaño de esta textura es 1x1). La textura de la luminancia del registro es formato R8B8G8 y la segunda es R8. En los tutoriales vi que se utilizan texturas de medio flotador, pero en mi caso tengo imágenes demasiado brillantes (casi blancas).

En el sombreador final posterior al proceso, estoy usando todos los valores para obtener adaptación ocular y mapeo de tonos usando este código:

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

Y aquí están mis resultados:

  • adaptación ocular y mapeo de tonos activados adaptación ocular y mapeo de tonos
  • solo adaptación ocular adaptación ocular
  • solo mapeo de tonos mapeo de tonos
  • todo fuera apagado

Como puede ver cuando el mapeo de tonos está activado, el color del conejito es más pálido. Y cuando la adaptación del ojo está activada, la imagen final es mucho más oscura. ¿Podría alguien explicarme qué podría causar eso, porque creo que algo aquí está mal? ¿Quizás es algo con espacios de color que no entiendo bien? ¿O con la floración que se aplica antes del mapeo de tonos y la adaptación ocular?

También tengo otro comportamiento extraño con la adaptación ocular. Cuando miro áreas oscuras, el fondo (cielo) se vuelve más brillante. Está bien, pero siempre ocurre cuando el centro de la cámara está en el área negra (no importa qué tan lejos esté la cámara de esta área).

Me basé en la implementación incluida en los proyectos en estas páginas: John Chapman , Nutty Software


Para empezar, debe intentar deshabilitar la floración y solo trabajar con lo que sea absolutamente necesario. Además, si el mapeo de tonos hace que su blanco se vuelva más oscuro, entonces probablemente signifique que no se asigna de 0 a 1 rango, y debe cambiar esto o adaptar su iluminación en consecuencia.
akaltar

Buen trabajo, ¿tienes un enlace a tu proyecto?
danijar

Gracias. Actualmente no tengo ningún enlace. Pero voy a publicar algunos videos en YouTube o en un archivo .exe cuando termine mi tesis de maestría.
Harry

Respuestas:


1

Simplemente no debes hacer un mapa de tonos de floración, desenfoque o profundidad de campo.

Esos efectos se suman a todos los demás. Intenta experimentar con los valores también.


Gracias, lo miraré más de cerca cuando encuentre algo de tiempo.
Harry
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.