Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Anton Knyazev, posted on April 30, 2001

Image Description, by Anton Knyazev

Not much to explain about it, actually. Just real time attenuated light+radiosity+soft shadows combo in real time. Oh, did I mention it was real time :) ? Yes, I know that the scene is pretty simple (not to say basic), but at least soft shadow part is independent on complexity.

Anton Knyazev

Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

April 30, 2001, 05:10 PM

I completely agree. If you're posting an IOTD you should be willing to share at least SOME kind of information about your work that might help others. It really is pointless on a development site to post images for the mere purpose of saying "Hey, look what I can do. Nanny, nanny, boo boo!" If you can't at the very minimum point readers to a paper or something that at least gives a HINT of how you did something, then just keep it to your self because we don't need braggarts and the like here and we don't need to be strung along with no hope of finding out something useful from it. I totally agree, this is a development site for developers to help eachother. Not a site where developers get together and pat themselves on the back. If you know what you're about to post is copyrighted, then either don't post it, or try and find something about it that is not under the copyright that you can talk about.

zed zeek

April 30, 2001, 05:12 PM

comeon nowhere in the IOTD rules to give an thorough explaination of the technique used.
heres how i do softshadows render the object into a texture. apply a filter to the texture ( theres some opengl extensions that'll help you with this ), project the texture. + bobs your uncle or antie


April 30, 2001, 05:34 PM

The IOTD forum is also a place where people present their work to other developers to get feedback to see if others like it or not. I think this is a valid reason to post a picture. It doesn't mean that you have to share your knowledge even if i would prefer this. The difference between this guy and other posters is, that he was honest enough to say "sorry, i can't" instead of not replying at all. I can't remember an IOTD thread where details of the implementation were discussed (please correct if i'm wrong).
Anyway, a demo would have been great...


April 30, 2001, 05:49 PM

Look, nobody's asking for sourcecode. And nobody's asking for "details". But we are asking for something (which I think he's now given). I personally take the same position as the recent Game Developer Magazine did on the issue of copyrighted algos. Copyrighting actual applications and sourcecode for things is one thing. But copyrighting algorithms is quite another.

To me, it's like if Einstein decided to copyright the theory of relativity. Or Newton the equations for gravity. Or even somebody claiming ownership of the method used to make a peanutbutter and jelly sandwich. Come on guys! You don't have to say "I instantiate a variable here, and then devide it by this..." You just need to give some kind of generally helpful hint. Like "look to the cows" would even be more helpful than "sorry, lips are sealed". I've personally come accross some things that I've figured out my self and then discovered that somebody else had copyrighted the algorithm. To me, that's not fair.

And what's this about not helping anyone else if you figure something out? Why keep your achievments to your self? Unless you're terribly conceited, can't stand anyone else to know what you know and have a superiority complex. It really doesn't hurt anyone to share some informatoin. Even if it's just a vague hint. You don't lose anything by helping someone else gain something. Or, to paraphrase Thomas Jefferson, you don't make your own candle any dimmer by lighting your friend's candle with it.

Mark Friedenbach

April 30, 2001, 06:19 PM

Well said.


April 30, 2001, 06:46 PM

Punchey: Funny you should mention that. There is a restaurant which actually has gotten a patent on making crustless peanut butter and jelly sandwiches. They're actually enforcing it in court, too. Really messed up.

BTW, I agree, he's given decent details on the shadowing now - and projected textures don't conflict with relief textures at all (as I said before, it's very easy to create projected textures from relief textures), and the typical projected-texture mechanisms require a lot of precalculation or are otherwise object-complexity dependent, unless used with relief textures (where the object itself is the precalculation) - so I still think he could be doing relief textures, or at least some other form of image-based rendering.

FWIW, not going into his geometry representation details is fine. It's the same sticking point I have about publically discussing my own engine, since it's from my geometry representation that I get all of my cool effects (such as O(n)-polygon shadowvolume generation, O(n)-polygon object morphing, O(n)-target-polygon level-of-detail, wavelet compression with progressive-quality streaming, etc.etc.etc.). So I don't really have any qualms about him not talking about the geometry representation. :) For now I'm still going to guess that it's some form of IBR, though, given the complexity of the objects and his claims of object-complexity independence.


April 30, 2001, 07:39 PM

I agree with Punchey. This whole issue seems way to much like the whole Marching Cubes issue. Just let us know the basics of the idea. A general hint. I agree that this is a place for LEARNING, not showing off. Just give us a hint. John Carmack told the technique used in the Quake engines. Yes, the TECHNIQUE, not the source code. I think you can do the same. It shouldn't affect the success of your commercial product, should there be one.

Ok, I'm done.

Hiro Protagonist

April 30, 2001, 08:00 PM

Since when is


April 30, 2001, 08:20 PM

My flatmate has completed Q2 on her P233 with a Voodoo installed. Most of that runs


April 30, 2001, 08:52 PM

Technical point - Quake 1 also made use of the PVS :)


April 30, 2001, 08:55 PM

I actually agree with Egreg here. :)


April 30, 2001, 09:06 PM

Since always - unless you think film isn't realtime :) Or Doom/Quake wasn't realtime when it came out :)

Realtime also depends very much on the application and the target.

Eg Research realtime is often 3 frames per second :)


April 30, 2001, 10:23 PM

the knot looks fine to me...It's just got a wierd angle


April 30, 2001, 10:23 PM

What I meant by source code was giving away the details of the algorithm in general. I should have made my point more clear. Sorry about that. I was in a bad mood and in the middle of writing a paper on cultural relativism. :o;;; I just thought it was a little ridiculus how badly everyone was pushing that guy about giving out "something" about his algorithm. In a way he was sort of asking for it by saying all that crap about it being in real time, but thats a different argument for a different day. I know that if I made something like that, which he obviously put an assload of work into, I wouldn't want to go right out and give away the tricks behind it after the amount of work I put into it. Its the same reason Ferrari doesn't give away the details of how to make a good sports car. Its kinda like magic. Where would magic be if everybody knew how it was done, or at least some of the small details behind it? Besides, what good is it going to do you if he gives you some vague detail about it? If you asked Copperfield for "something" about how he made it look like he moved a mountain, and he said "Well, I do it with illusions" how is that going to help you at all. My point is, there are still plenty of people who go out and learn how to perform magic tricks. Yeah, some get books and videos, but the good ones are those who innovate and do it this fellow and John Carmack. Carmack is, in my opinion, not the king of code. I'm sure there are people on this board who can even code better then him (who knows). He's just the Copperfield of 3d programming, and the only reason "real-time" soft shadows are popular right now. Yes I know 3d engines aren't magic blah blah, but I hope the analogy is clear. Keep in mind that this is only my opinion. Everybody is welcome to their own. :)


April 30, 2001, 10:27 PM

true...I don't like it when developers say oh it's a commercial project etc...pisses me off! The reason for flip code is so we can all share the wealth (knowledge) not brag about our work for a pat on the back because you feel insecure about what you've done...


April 30, 2001, 10:34 PM

well said!


April 30, 2001, 10:37 PM

Ok stop guys this has turned into a flame war! Say nice pick...and move on; he's obivously not going to tell us how he got to making his shadows so just move on with your life...the world is not going to stop turning if he tells you or not...


Allen Chang

April 30, 2001, 10:54 PM

Although I could be mistaken, I don't think Carmack is giving details for how he did the amazing real-time shadowing in his recent Doom III demonstration. I recall reading a message board where the developers where all astounded, asking each other, "How did he do that?!" It seems like a good idea to keep that kind of thing to yourself until you've made money off of it, if that's your goal. You can then write a paper on it afterwards. :)


April 30, 2001, 10:59 PM

Yes but he is not posting on


April 30, 2001, 11:00 PM


forget about previos post, i've kind of mess HTML up again.... hahahaha


May 01, 2001, 12:18 AM

The pics look nice, it's nice to see some real time radiosity for once but is it really? But still it is too slow for actual systems.. 25 fps on such a small model is, SLOW!

Hope it'll be free on the geforce 3 as you say...anyway I'm not gonna buy that card until it costs less than 350$ (Canadian)


May 01, 2001, 12:52 AM

Oh? I was not aware of that - I was under the impression that Q1 only used AELs. My bad.


May 01, 2001, 12:59 AM

He has a policy of not commenting on engines which are in development. A big part of that is likely due to the fact that he hasn't even *settled* on what he's going to use for Doom 3 - what he showed at MacWorld Expo was really just a tech demo of what he was able to do on the GeForce 3, which MIGHT end up in Doom 3. That wasn't the actual Doom 3 engine in operation.

And FWIW, the Doom 3 shadows looked a lot like shadowmaps to me. Personally, I wasn't drooling, oohing, or ahhing over them, since they really didn't seem like anything special to me. *shrug*


May 01, 2001, 02:44 AM

Realtime soft shadows independent of complexity is a widely known algorithm, i think it was ATi who first published the paper. Its just a standard texture projection shadow using multitexture jitter to smooth out the edges. Its not really idependent of complexity of course... you have to render the object to the shadow map, and the more polys in the object the longer the render takes. Have a look around on the ATi developer site.. they have the paper and source code... its a pretty simple algorithm.


May 01, 2001, 04:24 AM

Hahahaaaa, at last! AT LAST!


May 01, 2001, 05:22 AM

Q1 did use AEL's.. Reducing overdraw was not a full solution, nor was PVS (in software). So it used both to make it fly.. :)

And a point about the IOTD,

"On P3-500,Radeon it ran at about 25fps (knot) and 13fps (sculpture)."

Bwahaha thats so slow its unusable.. I dont think I want to know how he does it :-)


May 01, 2001, 06:15 AM

Your partially correct ;)

Q2 adopted the PHS, the Potential Hearable Set, which was introduced in QuakeWorld. It has the same function as the PVS, just for Sound.
This is useful for netplay, as not every client has to be informed about every sound played in the world.

I hope I didn't mismatch anything..

Tom Mertens

May 01, 2001, 06:52 AM

I would like to add that true soft shadows (with self shadowing and correct penumbrae) cannot be done in real-time (20-30 fps). The shadows Carmack used in his demo were cast by point light sources. Thanks to a special texture filtering technique from the GeForce3 hardware, the shadow edges can be rendered smoothly (go to the nVidia developer page for more details about this technique), but it does not create correct penumbrae!


May 01, 2001, 07:19 AM

Little offtopic :)
Somebody mentioned that Unreal developert has shared their technique to the public... and can you give a roughtly explanation or at least a link?? The only thing I know about Unreal engine is that it traverses its BSP using AEL or s-buffer to understand the exact set of poly-s in a zone (thus getting the visible portals - and traversing the BSP again for that zones...)...
Thanks in advance!


May 01, 2001, 07:48 AM

Q1 used a PVS as did Q2.

The PHS is a quick hack (afaik) of the PVS to extract sound from it. I read once that the audible information was taken from the PVS. If the object creating it was visible (ie: it was in a visible leaf) then the sound would be played normally (with attenuation for distance, etc.). If the sound wasn't visible, but was visible from a neighbouring leaf, then it was played muffled.

This thread contains 73 messages.
First Previous ( To view more messages, select a page: 0 1 2 ... out of 2) Next Last
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.