Stellarium
0.17.0
|
Converts tones in function of the eye adaptation to luminance. More...
#include <StelToneReproducer.hpp>
Public Member Functions | |
StelToneReproducer () | |
Constructor. | |
virtual | ~StelToneReproducer () |
Desctructor. | |
void | setDisplayAdaptationLuminance (float displayAdaptationLuminance) |
Set the eye adaptation luminance for the display (and precompute what can be) Usual luminance range is 1-100 cd/m^2 for a CRT screen. More... | |
void | setWorldAdaptationLuminance (float worldAdaptationLuminance) |
Set the eye adaptation luminance for the world (and precompute what can be) More... | |
float | getWorldAdaptationLuminance () const |
Get the eye adaptation luminance for the world. | |
void | setInputScale (float scale=1.f) |
Set the global scale applied to input lumiances, i.e before the adaptation It is the parameter to modify to simulate aperture*exposition time. More... | |
float | getInputScale () const |
Get the global scale applied to input luminances, i.e before the adaptation. | |
void | setMaxDisplayLuminance (float maxdL) |
Set the maximum luminance of the display (CRT, screen etc..) This value is used to scale the RGB range. More... | |
float | getDisplayGamma () const |
Get the display gamma. More... | |
void | setDisplayGamma (float gamma) |
Set the display gamma. More... | |
float | adaptLuminance (float worldLuminance) const |
Return adapted luminance from world to display. More... | |
float | reverseAdaptLuminance (float displayLuminance) const |
Return adapted luminance from display to world. More... | |
float | adaptLuminanceScaled (float worldLuminance) const |
Return adapted luminance from world to display with 1 corresponding to full display white. More... | |
float | reverseAdaptLuminanceScaled (float displayLuminance) const |
Return adapted luminance from display to world with 1 corresponding to full display white. More... | |
float | adaptLuminanceScaledLn (float lnWorldLuminance, float pFact=0.5f) const |
Return adapted ln(luminance) from world to display with 1 corresponding to full display white. More... | |
void | xyYToRGB (float *xyY) const |
Convert from xyY color system to RGB. More... | |
void | getShadersParams (float &a, float &b, float &c) const |
The aim is to get on the screen something which is perceptualy accurate, ie. to compress high dynamic range luminance to CRT display range. The class perform mainly a fast implementation of the algorithm from the paper [1], with more accurate values from [2]. The blue shift formula is taken from [3] and combined with the Scotopic vision formula from [4].
Important : you may call setDisplayAdaptationLuminance() and setWorldAdaptationLuminance() before any call to xyYToRGB() or adaptLuminance otherwise the default values will be used. (they are appropriate for a daylight sky luminance)
REFERENCES : Thanks to all the authors of the following papers I used for providing their work freely online.
[1] "Tone Reproduction for Realistic Images", Tumblin and Rushmeier, IEEE Computer Graphics & Application, November 1993
[2] "Tone Reproduction and Physically Based Spectral Rendering", Devlin, Chalmers, Wilkie and Purgathofer in EUROGRAPHICS 2002
[3] "Night Rendering", H. Wann Jensen, S. Premoze, P. Shirley, W.B. Thompson, J.A. Ferwerda, M.M. Stark
[4] "A Visibility Matching Tone Reproduction Operator for High Dynamic Range Scenes", G.W. Larson, H. Rushmeier, C. Piatko
|
inline |
worldLuminance | the world luminance to convert in cd/m^2 |
|
inline |
worldLuminance | the world luminance to convert in cd/m^2 |
|
inline |
lnWorldLuminance | the world luminance to convert in ln(cd/m^2) |
pFact | the power at which the result should be set. The default is 0.5 and therefore return the square root of the adapted luminance |
|
inline |
|
inline |
displayLuminance | the display luminance to convert in cd/m^2 |
|
inline |
displayLuminance | the display luminance with 1 corresponding to full display white. The value can be more than 1 when saturated. |
void StelToneReproducer::setDisplayAdaptationLuminance | ( | float | displayAdaptationLuminance | ) |
displayAdaptationLuminance | the new display luminance in cd/m^2. The initial default value is 50 cd/m^2 |
|
inline |
gamma | the gamma. Initial default value is 2.2222 |
void StelToneReproducer::setInputScale | ( | float | scale = 1.f | ) |
scale | the global input scale |
|
inline |
maxdL | the maximum lumiance in cd/m^2. Initial default value is 120 cd/m^2 |
void StelToneReproducer::setWorldAdaptationLuminance | ( | float | worldAdaptationLuminance | ) |
worldAdaptationLuminance | the new world luminance in cd/m^2. The initial default value is 40000 cd/m^2 for Skylight Star Light : 0.001 cd/m^2 Moon Light : 0.1 cd/m^2 Indoor Lighting : 100 cd/m^2 Sun Light : 100000 cd/m^2 |
void StelToneReproducer::xyYToRGB | ( | float * | xyY | ) | const |
The first two components x and y indicate the "color", the Y is luminance in cd/m^2.
xyY | an array of 3 floats which are replaced by the converted RGB values |