|
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.
|
|
virtual | ~StelToneReproducer () Q_DECL_OVERRIDE |
| Desctructor.
|
|
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 |
|
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