Archived

This topic is now archived and is closed to further replies.

Vlion

Lousy lighting.

Recommended Posts

Vlion    151
I have fog figured out and placed in a tight little class. On to lighting. What are the minimum elements to place a light at (0,0,0) that will radiate outward in all directions ? For some reason only ambient is working. Oh yeah- does OGL normally have shadows ? ~V''lion I came, I saw, I got programmers block. ~V''''lion

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
> Oh yeah- does OGL normally have shadows ?

No. You have to use special techniques to get them.
Be warned: standard OpenGL lighting is pretty primitive and quite unusable for good quality 3D. It gets somewhat better, if you use pixel shaders, such as DOT3. But this is still not satisfactory, since you don''t have shadows. The only really high quality method, allowing soft shadows and radiosity, is to use lightmaps.

Share this post


Link to post
Share on other sites
Null and Void    1088
DOT3 doesn''t use pixel shaders. I should know since my video card doesn''t support pixel shaders, but it does DOT3 just fine . OpenGL lighting looks a lot better if you break larger polygons into smaller ones, but I do agree that custom lighting ruitines are normally preferable.

[Resist Windows XP''s Invasive Production Activation Technology!]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
> DOT3 doesn''t use pixel shaders

It evaluates a complex function (normalized dotproduct) at every drawn pixel. That''s what a pixel shader does. Don''t confuse a hardware pixelshader with the pixel-shader extensions. DOT3 uses a more primitive hardware pixelshader on the 3D processor, the freely programmable shaders on GeForce3+ or similar are just the same concept, but more advanced, since you can specify the complex function yourself.

The problem is, that no 3D card using todays 3D chip concepts will be able to automatically display shadows, since this would require global knowledge about the scene itself, and not only at primitive level. An exception might be the light-z-buffer method, but the results are not very good, and good soft shadows aren''t possible.

Use lightmaps for static shadows (or adaptive subdivision, if you want to go insane and DOT3 lighting combined with stenciled shadow volumes for dynamic lights.

Share this post


Link to post
Share on other sites
Vlion    151
Thanx.
Seems to me that the most realistic shadows would be ray-traced per-pixel. It that so ?
~V''lion


I came, I saw, I got programmers block.
~V''''lion

Share this post


Link to post
Share on other sites
Blueshift    122
> Seems to me that the most realistic shadows would be ray-traced per-pixel. It that so ?

Depends on how you define ''realistic'': perpixel raytraced shadows are the most physically accurate ones for 100% non-reflective surfaces in vacuum. Now the problem is, that on earth you don''t have non-reflective surfaces and you have an atmosphere. That''s why raytraced shadows aren''t very realistic, but look rather synthetic.

The most realistic lighting method known is radiosity for mostly diffuse surfaces. There is some interesting research about combining radiosity with raytracing to get realistic lighting for diffuse and specular surfaces. Images generated that way are very impressive, but they are also very non-realtime

The best realtime method today is to calculate a radiosity solution with lightmaps and use DOT3 for specular highlight. Dynamic lights can be done by the DOT3/stencil shadow method or by modifying lightmaps. The later is more CPU intensive, but can look better, depends on your algorithms.

A.H aka Blueshift

Share this post


Link to post
Share on other sites