Les formats d'image 24 bits n'offrent que 256 niveaux pour les composantes rouge, vert, bleu d'un pixel. Paul Debevec a proposé un format HDR (High Dynamic Range) où chaque composante est codée sur 4 octets au lieu de 1. L'image comporte ainsi une bien plus grande dynamique d'intensité des couleurs. Ce patch permet d'utiliser ces fichiers .hdr. Le code de lecture des images est adapté du source de vrpic de James Bowman, un outil de visualisation des .hdr pour linux.
Ce patch ajoute de plus une nouvelle map_type (map_type 7) qui repositionne un environnement HDR sur une sphère. Ce nouveau mapping couplé à la radiosité permet un rendu dit HDRI (High Dynamic Range Illumination).
image_map { hdr .... [map_type 7]}
Toutes les options d'image_map
(interpolate
, ..) restent valides.
Exemple pour visualiser la dynamique en jouant sur le paramètre ambient
.
camera { orthographic location <.5,.5,-5> right 1*x up 1*y look_at <.5,.5,0> } plane { z,0 pigment { image_map { hdr "rosette.hdr" once interpolate 2} } finish { ambient 0.5 diffuse 0 } }
Look for #ifdef HDR_PATCH in sources
A new struct with 3 float (IMAGE_FLOAT_LINE) was added to image_struct. A new constant ISFLOATIMAGE for File_Type. The map_type 7 is calculated by function hdr_image_map in image.cpp.
Possible improvements/problems