Per-Pixel Lighting + Soft Shadows Demo


I have uploaded my Engine demo at my website.

Note that the demo requires GeForce256 or higher and and Athlon/Duron processor to run.

There are a few bugs however and I am working on it.

I would really appreciate your feedback on this.

the link:


[This message has been edited by Sundy (edited 05-10-2002).]

i have p3.
is there a chance to get a (much slower…) standart x86 version? without the 3dnow optimisations?

Is it supposed run on Radeons? (I consider Radeons to be higher than GF1)

Apperently not (all I get is a blank screen on my 8500).

Sorry, I have a pentium. But it will be nice if you upload some screen shots…


Works fine here, altough a bit slow…, with everything enabled i get between 10-15 fps on my Amd Thunderbird 850 / Geforce 3.
Very beautiful btw


Very nice - on an AthlonXP 1800 w. a 64MB GeForce2MX I get 13fps with everything turned on.

How general are the shadows ? I assume you use 3DNow! to calculate the shadows on the CPU, upload the shadow textures and project. Does it handle model self-shadowing ? Also, the shadows look more blurred than true soft-shadows - is this correct ?

Looks extremely cool, really a nice scene!

I get most of the time (when the complete scene is visible) 11 frames on my Athlon 1000 with GF2MX.


Sorry Radeon folks, I dont have a Radeon to test it and I am using the register combiners extensively so It wont work on Radeons, and I am porting my engine to SSE as it is very CPU intensive it requires an SIMD capable processor.

Yes, this does have model self shadows too. But the rendering code could be optimized a lot by using VAR, CVA or something like that, Now I just use basic Vertex arrays and that could really slow it down a lot!.

I Am sure this could be really optimized with a GeForce3. With a GeForce256 every object in the scene is rendered about 4 times are there are 4 lights in the scene, and more passes for those specular objects. GeForce3 can do 3-4 lights in a single pass so the bottleneck is that its not optimized for GeForce3!.

Thanks for all your feedback.


[This message has been edited by Sundy (edited 05-11-2002).]

Very nice!

Between 40 and 70 fps on my Athlon 1.13ghz, and GF4 TI.

I did little hacking (replaced all textures with white images )
After this i noticed bleeding of light&shadow over objects at distant depths.
Let me guess:

is it standard shadow maps + blurring combined shadow of entire scene in window space ?

if yes, then it’s nice trick, with non-white textures bleeding is almost unnoticable.

Tested it on an Athlon 1.4 Ghz + GF4 Ti 4600. Very nice. Ran well (35 fps average). I have to agree with Carmacksutra. This really looks like shadow maps with a blurring trick. Whatever, it really looks nice :slight_smile: Are the lights point lights ? If so, how do you get 1 pass per light on a GF ?


any screenshots for non-amd-users? would love to see it…

Originally posted by davepermen:
any screenshots for non-amd-users? would love to see it…

I’m getting an Intel Version done. Will be ready in a coupla days, and as for the trick, yes it is blurring, but I dont use Shadow Maps, I use a modified version of carmack’s reverse for the shadows using shadow volumes.

Yes, all lights are point lights.


yeah, soon can’t wait for it…

btw, as a pre-ask, how do you blur? you blur according to surface normal in eyespace? or z-difference? or simply blurring around?

Ah, i tried something like that a while ago. I simply did render the shadows into a texture (256x256 or 512x512) using shadow volumes, then i blurred the texture and rendered the scene using projective texturing. But as far as i remember, blurring was pretty slow since it was done on CPU, and i had some artifacts (i called them “dark halos”) around objects, since in screen space, due to the lower resolution of the texture, the shadows didn’t match the objects exactly (hard to describe). If that’s the method you’re using, how did you get ride of these artifacts?


That sounds like the technique I described somewhere on this board ( though I created multiple shadow volumes for each light rather than blurring ).
Ysaneya, if you replace all the textures in the demo with white textures you’ll notice the exact same artifacts ( near the objects silhouettes wrt. the viewer ).

Sundy, what are you using 3DNow! extensions for ? Is this for the blurring ?

Ok, i replaced them with white textures as you said, and i got the same artifacts that i previously had with my tests, so i’m confident Sundy’s using the same technic. Didn’t know you described it on that board, funny to see different people come up with the same idea :slight_smile: Btw, it’s true that the artifacts are almost invisible with a full, nicely textured scene. I might give it another try later in my “engine”.