point lights

Started by
6 comments, last by Ne_cro 13 years, 11 months ago
How do you make a correct point light? My last implementation took the vector from the light to the surface, attenuated via distance, and then you compare the subtracted vector to the normal of the surface... the only problem with this was when the light was near a surface it would create a highlight instead of lighting it all evenly, cause think about it - the vectors it would create from subtracting the light position from the surface position would be harsh at close distances to the surface, I was wondering is a point light actually supposed to behave in this way? Whats the solution? I hope you understand me.
Advertisement
Can you explain what you mean by "creating a hightlight"? Also I think a picture is worth 1000 words in this case.

Your basic idea sounds right.
[size=2]My Projects:
[size=2]Portfolio Map for Android - Free Visual Portfolio Tracker
[size=2]Electron Flux for Android - Free Puzzle/Logic Game
Got ya, heres a pic, its from a while back so I couldnt adjust it to enhance it more, but you should get the idea I think of what im talking about.



See where the 2 point lights are? They have little "L square" icons. The wall closest to them creates a small "highlight" circle... walls further away light more evenly.

I was thinking, are point lights supposed to do this? I would have thought a wall close to the light should be lit more evenly cause theres some dot fix or something I dont know.

Or is this is what is supposed to happen? realisticly?

For example, the left wall is lit by the left light hardly at all! Its mostly getting its light from the light to the right, which is further away and lighting it more evenly... even though distance attenuation is effecting the right light more than the left light!

Because the left light is so close to the left wall, the vectors its generating across the surface of the wall become way off from the wall normal very quickly, so it only makes a small sharp effect on the wall.
I think this depends on the light's attenuation values. Overall yes thats how a point light is supposed to behave if u don't have global illumination
That result looks accurate to me for point lights. Like Ne_cro said you might be expecting the wall to be more lit, but that is due to simplifications in your light model.

If you're expecting it to look more realistic, you might expect the dark walls to be more lit. This is primarily due to global illumination. In reality your light rays will be bouncing off of everything in every direction which will tend to even out the lighting across the room. You could simulate this by adding a small global offset to all of your vertices. Theres probably some other things missing like subsurface scattering, microscopic wall normal perturbations, but I think if you just add a little bit of global lighting you'll be fine.
[size=2]My Projects:
[size=2]Portfolio Map for Android - Free Visual Portfolio Tracker
[size=2]Electron Flux for Android - Free Puzzle/Logic Game
hmm. ok, thanks guys, well im onto indirect illumination then, see you in 20 years when it finally hits real time. :P (sarcasm)
It seems right to me: as you said, the rays of the light close to the wall have small angles with the wall normal so the cos() factor decreases their effect on the wall brightness.
On the other hand, I'm quite sure this is what happens in real life too (try it :-)

I don't think GI would help with OP question: the bright spot will be there anyway (as should be) and th light fades off more quickly as the light gets closer to the wall.

On the other side, point lights are not a realistic model of true light source, so you can't expect realistic results in any circumstance...
GI would make the dark spots brighter

This topic is closed to new replies.

Advertisement