J'essaie d'implémenter la cartographie des tons avec l'adaptation des yeux et le HDR. En fait, je l'ai déjà implémenté mais je ne suis pas satisfait du résultat et je pense que j'ai fait quelque chose de mal.
Mon image finale (avant post-traitement) je la stocke en texture demi flottante. J'ai également 2 textures d'aide. Le premier stocke la luminance logarithmique et sa couleur moyenne, minimale et maximale dans la dernière mip-map. Le second stocke la valeur d'adaptation qui est calculée comme:
prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate))
où prevLum est la valeur d'adaptation précédente (la taille de cette texture est 1x1). La texture de luminance du journal est au format R8B8G8 et la seconde est R8. Dans les tutoriels, j'ai vu que des textures à moitié flottantes sont utilisées, mais dans mon cas, j'ai des images trop lumineuses (presque blanches).
Dans le shader final du post-processus, j'utilise toutes ces valeurs pour obtenir l'adaptation des yeux et la cartographie des tons en utilisant ce code:
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);
Et voici mes résultats:
- adaptation des yeux et cartographie des tons activés
- adaptation oculaire uniquement
- mappage de ton uniquement
- tout éteint
Comme vous pouvez le voir lorsque le mappage des tons est activé, la couleur du lapin est plus claire. Et lorsque l'adaptation des yeux est activée, l'image finale est beaucoup plus sombre. Quelqu'un pourrait-il m'expliquer ce qui pourrait provoquer cela, parce que je pense que quelque chose ne va pas ici. C'est peut-être quelque chose avec des espaces colorimétriques que je ne comprends pas bien? Ou avec la floraison qui est appliquée avant la cartographie des tons et l'adaptation des yeux?
J'ai aussi un autre comportement étrange avec l'adaptation des yeux. Lorsque je regarde dans des zones sombres, l'arrière-plan (ciel) s'éclaircit. Ce n'est pas grave, mais cela se produit toujours lorsque le centre de la caméra est sur une zone noire (quelle que soit la distance entre la caméra et cette zone).
Je me base sur l'implémentation incluse dans les projets sur ces pages: John Chapman , Nutty Software