Lousy lighting.

Started by
6 comments, last by Vlion 22 years, 6 months ago
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
~V'lionBugle4d
Advertisement
> 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.
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!]
> 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.
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
~V'lionBugle4d
> 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
Ok, sorry, for some reason I automatically think "programmable pixel shaders" whenever I see "pixel shaders" ATI and NVidia have forever warped my mind with their press releases .

[Resist Windows XP''s Invasive Production Activation Technology!]
Can''t the stencil buffer be used for that?? To get the most realistic as possible...

This topic is closed to new replies.

Advertisement