High dynamic range

Introduction

Normalement, un artiste fait toute la modélisation 3D, puis toutes les textures, regarde son modèle d’apparence impressionnant dans le DCC 3D et dit « c’est fantastique, prêt pour l’intégration », puis va dans le jeu, l’éclairage est installé et le jeu fonctionne.

Alors, à quel moment toute cette histoire de HDR entre-t-elle en jeu ? L’idée est qu’au lieu de traiter les couleurs qui vont du noir au blanc (0 à 1), nous utilisons des couleurs plus blanches que le blanc (par exemple, 0 à 8 fois le blanc).

Pour être plus pratique, imaginez que dans une scène régulière, l’intensité d’une lumière (généralement 1.0) est réglée à 5.0. Toute la scène deviendra très lumineuse (vers le blanc) et aura l’air horrible.

Ensuite, la luminance de la scène est calculée en faisant la moyenne de la luminance de chaque pixel de la scène, et cette valeur est utilisée pour ramener la scène à des plages normales. Cette dernière opération est appelée tone-mapping. Enfin, nous nous trouvons à un endroit similaire à celui où nous avons commencé :

../../_images/hdr_tonemap.png

Sauf que la scène est plus contrastée parce qu’il y a une plus grande plage lumineuse en jeu. À quoi tout cela sert-il ? L’idée est que la luminance de la scène va changer pendant que vous vous déplacez dans le monde, permettant à des situations comme celle-ci de se produire :

../../_images/hdr_cave.png

En outre, il est possible de définir une valeur seuil à envoyer au tampon lumineux en fonction de la luminance des pixels. Cela permet d’obtenir des effets de saignement de lumière plus réalistes dans la scène.

Espace colorimétrique linéaire

Le problème avec cette technique est que les écrans d’ordinateur appliquent une courbe gamma pour mieux s’adapter à la façon dont l’œil humain voit. Les artistes créent aussi leur art à l’écran, de sorte qu’une courbe gamma implicite s’applique à leur art.

L’espace colorimétrique où existent les images créées sur les moniteurs d’ordinateur est appelé «sRGB». Tout le contenu visuel que les gens ont sur leurs ordinateurs ou télécharge à partir d’Internet (tels que des images, des films, etc.) est dans cet espace couleur.

../../_images/hdr_gamma.png

Les mathématiques du HDR exigent que nous multipliions la scène par différentes valeurs pour ajuster la luminance et l’exposition à différentes plages de lumière, et cette courbe est un obstacle, car nous avons besoin pour cela de couleurs dans l’espace linéaire.

Espace couleur linéaire et pipeline de ressource

Travailler en HDR n’est pas seulement appuyer sur un bouton. Tout d’abord, les images importées doivent être converties en espace linéaire lors de l’importation. Il y a deux façons de le faire :

sRGB -> conversion linéaire lors de l’importation d’images

C’est la façon la plus compatible d’utiliser les ressources de l’espace linéaire, et elle fonctionnera partout, y compris sur tous les appareils mobiles. Le principal problème est la perte de qualité, car le sRGB existe pour éviter ce même problème. Utiliser 8 bits par canal pour représenter les couleurs linéaires est inefficace du point de vue de l’œil humain. Ces textures peuvent aussi être compressées plus tard, ce qui aggrave le problème.

Quoi qu’il en soit, c’est la solution facile qui fonctionne partout.

Hardware sRGB-> conversion linéaire

C’est la façon la plus correcte d’utiliser les ressources dans l’espace linéaire, car l’échantillonneur de texture sur le GPU effectuera la conversion après avoir lu le texel en virgule flottante. Cela fonctionne bien sur PC et consoles, mais la plupart des appareils mobiles ne le supportent pas, ou ne le supportent pas au format texture compressé (iOS par exemple).

Linéaire -> sRGB à la fin

Une fois le rendu terminé, l’image rendue dans l’espace linéaire doit être convertie en sRGB. Pour ce faire, il suffit d’activer la conversion sRGB dans le fichier courant Environment (plus d’informations à ce sujet ci-dessous).

Gardez à l’esprit que les conversions sRGB -> Linéaire et Linéaire -> sRGB doivent toujours être toutes les deux activées. Si l’une d’entre elles n’est pas activée, il en résultera d’horribles visuels qui ne conviendront qu’aux jeux indépendants expérimentaux d’avant-garde.

Paramètres de HDR

HDR setting can be found in the Environment resource. These are found most of the time inside a WorldEnvironment node or set in a camera. For more information see Environnement et post-traitement.