![]() |
Stellarium
0.18.3
|
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 |
1.8.13