I have seen it mentioned that the total amount of influence from a light is between -1.0 and 1.0. Is there any way to overdrive lights so you could have the effect of washing out the texture to white by having the light multiplier be 2.0.
I’ve been working with NVidia’s register combiners and that affect can be added for free using the register combiners. Although for this problem the register combiners would probably be overkill, unless you have plans to use these already. Of course if you don’t have a Nvidia product with a gpu this solution is out of the question.
The easy way out would be to write a little wrapper around around glColor and handle it in there of course this isn’t free.
You can certainly do “washout” by setting material colour components to >1.0 - I haven’t tried overdriving the lights themselves.
One caveat - overdriving like this increases contrast, which can sometimes make your geometry tesselation look really obvious. You might find you need to increase your tesselation level to get good-looking results.
The problem is that the light gets quantized after each step. If the light value was kept around in full floating point precision until it actually hit the screen, that would be easy, but alas, after each light operation, the value is converted to “a floating point value of undefined exponent and mantissa sizes” (read: an 8-bit integer value).
If you wanted to add, say, 1.5 to the light value, you could draw in two passes; one adding 1.0 and the other adding 0.5. However, that would be totally useless, because after the first pass, your light would have been quantized (saturated) to 1.0 anyway, and adding more to that won’t help.
So: no, you can’t retain a light value outside of [0., 1.]. If you need greater dynamic range, try scaling your light values down (say, use (.5+lightVal)/2.) while rendering, and then scale up just before display (although that will, of course, take a performance hit).
and then scale up just before display (although that will, of course, take a performance hit).
You can use display color lookup tables not only for gamma correction.
As I heard, Quake3 uses it in similar way - to “expand” color dynamic range in about 2 times.