|
void | setDisplayAdaptationLuminance (float Lda) |
| 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...
|
|
float | getDisplayAdaptationLuminance () const |
|
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 luminances, 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 | getMaxDisplayLuminance () const |
| Get the previously set 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...
|
|
bool | getFlagUseTmGamma () const |
|
void | setFlagUseTmGamma (bool b) |
|
void | setFlagSRGB (bool val) |
| Set whether to use an sRGB (default, true) or AdobeRGB color conversion matrix for the sky colors. More...
|
|
bool | getFlagSRGB () const |
|
|
| StelToneReproducer () |
| Constructor.
|
|
| ~StelToneReproducer () override |
| Destructor.
|
|
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, float &d, bool &useGamma, bool &sRGB) const |
|
Converts tones in function of the eye adaptation to luminance.
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)
The user can configure properties of the screen and environmant in the TonemappingDialog: displayAdaptationLuminance, maxDisplayLuminance and displayGamma. The latter is not fixed to the sRGB value of 2.2 but should probably also not deviate too much.
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