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, 12:14 PM

Independant of complexity! Nice.

How how how how how how how how how how. Did I ask How?, No? Well, How?



April 30, 2001, 12:15 PM

Yeah! First and second post! Eat my blisteringly quick finger dust!

Oh yeah, how quick is realtime?



April 30, 2001, 12:20 PM

Lol first and second :)
So as he said, how do you generate the shadows ?
(oh, and it's cool, too)

John van der Burg

April 30, 2001, 12:21 PM

Very nice! :)
But where is the radiosity ? :) (or is it just making the shadows not completely black)? :)

- John

Joachim Hofer

April 30, 2001, 12:31 PM

Im working on a soft shadowing algorithm at the moment, and it for sure IS dependent of the complexity. HM. The only thing is that the knot seems to have some incorrect shadows. This is my last hope. Anyways, this is for sure impressive, even if you only make some render to texture or something else that creates small artifacts. Hm. It really IS impressive, but, as the others mentioned, could you pleeeeease explain how it is done?

Anton Knyazev

April 30, 2001, 12:31 PM

Unfortunately, I don't think I can reveal implementation details, because it might be used in a commercial product. Not that it's all that complex and smart, but more complex than typical 3d tricks anyway :)

Frame rates are very PC and program settings dependent. On P3-500,Radeon it ran at about 25fps (knot) and 13fps (sculpture). Maybe, there will be a way to make it almost free on GeForce3.

And there is radiosity, there's no ambient lighting. I have screenshots w/o radiosity, and the difference is pretty apparent.

Also, resizing really made the quality worse :(


April 30, 2001, 12:33 PM

To me it looks like he's using... argh, I can't remember the name of it, but it's a technique described in one of the Siggraph 2000 papers where one warps textures to make volumetric (but static-geometry) 3D objects. It'd be very easy to adapt bumpmapping to it to add dynamic lighting, and adapting projected textures for soft shadows to it would be a trivial matter.

I'd give the name of the paper and everything, but my Siggraph 2000 proceedings are at home, and I'm not. :)

Oh, and it IS a very cool technique. Basically it combines software and hardware rendering in nifty ways. It requires fast texture uploads, though, and decent memory bandwidth on the host CPU.


April 30, 2001, 12:35 PM

Oh, and another thing is that the two object models are, if I'm not mistaken, taken DIRECTLY from that paper... :)


April 30, 2001, 12:38 PM

Posting an IOTD should require you to give an explanation of it.


This is a Game Developement site; we have no need for eyecandy and bragging.

Anton Knyazev

April 30, 2001, 12:40 PM

No, I don't know what paper you are talking about (maybe it would be useful for me to read it), but I'm sure that at least sculpture is not from it (though a knot might be, due to coincidence)


April 30, 2001, 12:42 PM

Another post by me. pulls through for me - I believe it's Relief Texture Mapping which I was referring to.


April 30, 2001, 12:46 PM

Anton: I'm positive that that sculpture (or one very much like it) was in the paper I'm referring to. I'm not sure about the knot though. :) The paper (and video rendered using its technique) had a number of objects in it - a bust of Beethoven, a VW beetle, a number of storefronts, and a bunch of stuff I'm most certainly forgetting. :)

BTW, I don't doubt that you could have come up with the technique independently.

Email me (my email address is visible in my profile) and I'll see about sending you a copy of the paper from the Siggraph proceedings (I'm *pretty* sure they have all of the papers in PDF format on the accompanying CD-ROM). It's a somewhat interesting read, and I can see how it could be easily adapted to realtime lighting by using bumpmaps and such.


April 30, 2001, 12:48 PM

Most impressive.

What's radiosity?

How fast is it, and how many polygons in the scene?


April 30, 2001, 12:49 PM

One more post from me, sorry for spamming the messageboard. :) The author of the paper has put up a website on relief texturemapping, which includes a PDF of the paper. And the sculpture is featured prominently there. ;)

Anton Knyazev

April 30, 2001, 12:55 PM

Damn! The sculpture is indeed the same... I found it on free Russian 3d models site and was thinking it was not so common...


April 30, 2001, 12:55 PM

These are standard models-- don't knock the guy for that. AFAIK, his technique has absolutely nothing to do with relief texture mapping.

Anton, looks great! These appear to be shadow maps-- are they? I note you aren't self-shadowing the objects and are only casting shadows on the simple planes of the box. Can you cast shadows on arbitrary objects?


Joseph Crevier

April 30, 2001, 12:56 PM

Thanks for posting the link fluffy since the original poster was not kind enough to even give the smallest description of how he was doing it.

Anton Knyazev

April 30, 2001, 01:00 PM

morgan: it's not exactly shadow maps (taking into account that this term is not well defined, I believe), and indeed there's no self-shadowing, though shadow can be cast on an arbitrary object

Joris Mans

April 30, 2001, 02:06 PM

Ok, so cut the bull...
Give at least a decent explanation, or links to papers or whatever.
This is just childish.

Anton Knyazev

April 30, 2001, 02:28 PM

I told I didn't want to reveal implementation details since there might be a commercial usage of it. If this is somehow against the rules, well, sorry then, but I suppose I cannot withdraw the screenshot. Besides, I believe that every man is childish to a certain degree :)


April 30, 2001, 02:40 PM

Is it Forward Shadow Mapping?



April 30, 2001, 02:49 PM

Oh, and antoher thing - If you're using projective texturing, did you have any trouble with stuff like reverse projections (requiring clip planes) or trouble with attenuation over distance (i.e. getting the projeced light dimmer over distance)?



April 30, 2001, 02:58 PM

Morgan: My first guess was that they were shadow maps (as per Mark Kilgard's nVidia-published thing), but those are dependent on the complexity of the object, and the smooth shadow artifacting didn't seem quite like them. Also, shadow maps implicitly self-shadow, and I don't see how they'd lend themselves to radiosity (if this is, in fact, radiosity, though there isn't any real evidence from these screenshots one way or the other).

BTW, why would a commercial usage of an algorithm preclude giving details? Unless you just want to license the algorithm itself, but... I mean, look at John Carmack - he's QUITE open about the technology used in his engines, but he's not exactly hurting for money, given that he has actual licenseable code (as well as some glorified tech demos which kids are willing to pay $50+ for). For example, there's nothing in Quake 3 which wasn't already well-known, but that didn't stop Q3 from being a commercial success, even though Carmack has been VERY open about his tech along the way.

Hell, the code for Quake 1 was GPLed ages ago, and all that Q2 adds to Q1 are color lightmaps and PVS (rather than active edge list) visibility, and all that Q3 adds to Q2 are curved surface tesselation, cheezily-faked volumetric fog, and arbitrary shaders - nothing really new, just a few evolutionary improvements on old tech.

People don't buy products because of the algorithms involved, they buy products because it's a complete, working package which is useful or entertaining. IMO, the only legitimate reason to obscure an algorithm is if you're researching it in order to get a paper published based on it (which is why I'm somewhat secretive about my own stuff - I don't want to have to keep on jumping to new dissertation topics when someone else beats me to publishing something).

Anton Knyazev

April 30, 2001, 03:28 PM

A good radiosity is the one that you don't notice :) (at least this means that there are no visible Gourad-shaded triangles). Radiosity is calculated only for 2+ hit lighting and independetly of shadowing (independently after the 1st hit). And yes, I'm using projective textures for shadowing, and I indeed had to deal with back projection.


April 30, 2001, 03:39 PM

Yes, you should give an explaination of your techniques. With Quake and Unreal Engine games (and about every other game I can think of) the techniques used are publisized by the developers and are in fact part of the marketing of the game. Your technique isn't so special or top secret that no one should know what it is. Btw, it looks like shadow mapping to me (the technique were you use the z-buffer to generate shadows.)


April 30, 2001, 03:51 PM

Just one comment (surprised? HAHAHAHAH). Anyway, those of you requiring details, don't do so as if it is your right. It is in my opinion simply cool that people post stuff here at all, and we have a nice community. There is nothing in the rules that says you have to disclose the details of all the techniques used in the screenshot. A few of these projects, I'm sure, are commercial projects with technology that is under NDA. That said, if someone wants to disclose what they do so that others can comment it, then I'm sure a lot of people would enjoy it, and perhaps that image would send them in a direction they would otherwise not go for a while :-)



April 30, 2001, 03:54 PM

By the way, here's what my guess is about what you're doing:

You're tesselating the wall a little and goraud shading it. That's the radiosity effect. As far as the shadows, those are shadow maps or projective shadows, and you're scaling them for the soft shadows (them or the model).

Okay, so I'm probably way off ;-)



April 30, 2001, 04:01 PM

can someone set up an Eyecandy of the Day thing then please?


April 30, 2001, 04:10 PM

Geez, look at you guys! Give the guy a break. I guarantee if any of you came up with a technique for doing real-time soft shadows, you wouldn't be itching to dump the source code for it on a message board whether its for commercial use or not. I haven't seen Carmack post a message on Flipcode or any forum for that matter titled "Hey everyone who can't figure out soft shadows, want some code." You could have spent the time you wasted bothering this guy about it trying to figure out your own way of doing it or implementing one given in a research paper (which admittadly is a bitch to do). The point is, you're the ones who are being "childish" whining for implementation details. I wouldn't give them away if I had them. Besides, real-time soft shadows are nothing terribly new. Its just that hardware has finally gotten to a point where they can be done in real time (still not very well either as you can see that he only gets 25 fps for a pretty uncomplicated scene). Anyway, nice pic man. My only suggestion would be to dump the radiosity (I'm assuming that's where your main speed hit is) and go for per-pixel lighting. It would be much faster on newer cards. Keep up the good work.


April 30, 2001, 04:13 PM

Source code is entirely different from just telling the technique used. If I say you render the object into a texture in X way, you still have to code it yourself.

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.