Specular light

I have been thinking about an alternative way of raising the specular component.

Is it possible to do:
(N.H==1) ? 1:0

in the register combiners?
Now that would result in (N.H)^infinity.

And if i understand the light model correct the more raise the closer to reality.


well… this is easy possible with the mux() operator

but, it will not look that accurate for most of the stuff…

specular power does not have to have a high exponent in fact, only for shiny objects it needs…

stuff like normal wood does need an exponent of for example 2, our earth from space doesn’t need more as well to look cool… (but it does have to be scaled/dimmed, means some glossmap)

bether try some linear approach, means approximating the high exponent by a linear function. this is described in some documents on the web and results in quite good results (specular gets sharper)

i used this here:

btw, i got by normal raising exponent of 32. this with only 2 passes for the complete lighting, and on a gf2… on a gf3 i would not have any problems to do it over 256, but the accuracy of the 8bit values will loose then anyways (bether use texture_shaders there, even if they are stupid to do correct specular)

This is something i dont understand, the raise component, cant affect the shinyness(only how “narrow” the specular term is).

Well i planed to use (N.H)^infinity*glossmap
So i can adjust the shinyness with the glossmap.

Thanx for your help Dave!