how to do soft shadow?

Now I have a correct shadow using shadow volume, however, as you know, the shadow is a little too “hard”. Maybe some of you have seen the shadow in the Metal Gear Solid 2 movie(the demo is released with another Hideo Kojima’s game “Z.O.E”), they are nicely blended with the surface. I think they use shadow volume to cast the shadow(it is more efficient, just some vector calculation, which PS2 can do very quickly), then can you figure out how to make “soft” shadow with it? Those programmers in KONAMI have done some wonderful work, I want to clone some effect like that on a PC. Any suggestions?
I know accumulation buffer can do the work, but it needs more pass to render the shadow, maybe it is not good for real time shadowing. can you think of some “tricks” for it?

btw: I have reinstalled my IE, and it forget my password on this board, now I have to type it in everytime I send a post. I think it is because the cookie is missing. Can I get it back?

[This message has been edited by Nil_z (edited 03-01-2001).]

Hi,
one way to have soft shadows is to jitter your shadow volume, to make it looks “soft”.
Another way is to use shadow maps blended, so the mipmaps scaling do the “softening”, but that’s maybe need projected textures for non planar receiving objects.

I personally think (never done a serious test), that a shadow volume jittering with some sort of LOD and distance check is the right way.
Use a lower poly object to cast volume shadows, and disable/reduce jittering while te object goes far away from the eye.

Just an opinion…

rIO.sK http://www.spinningkids.org/umine

Actually, using lower LOD for the shadow volume will typically look very bad since shadows are often enlarged when projected. This is typically the first thing you think of as an optimization and when you implement it, it looks crap. Jittered shadow volumes will eat fillrate like mad but would probably be ok if you don’t have lots of shadows on screen at the same time. Shadow maps tend to require lots of texture mem to look good, but would probably be better for soft shadows on next generation hardware. For the moment though, shadow volumes is the way to go.

Ok, I got one. But I have absolutely no clue as to how to do it. Use a point light to do the lighting, but treat it as a light with a size of, say, 1. Then for each outer point of the object to shadow, do it for the closest edge of the light, and then the opposite. Then use vertex-based alpha blending to make it go from light to dark, outside to in. It would give the appearance of a soft shadow for little extra cost, and you don’t need to jitter it eight times or so. Probably won’t help ya though, I wouldn’t think you’d wanna make an area light in hard code :stuck_out_tongue:

I guess pATChes11’s method will help, but I am not quite clear, can you explain it in more detail?

Originally posted by pATChes11:
Then for each outer point of the object to shadow, do it for the closest edge of the light, and then the opposite.

It seems like doing shadow volume, is there any difference?

Originally posted by pATChes11:
Then use vertex-based alpha blending to make it go from light to dark, outside to in.

I just want to do this kind of blending, but currently, I must do it in a shadow pattern according to the stencil buffer, and I do not know how, I do not have any vertex for that.

[This message has been edited by Nil_z (edited 03-04-2001).]

[This message has been edited by Nil_z (edited 03-04-2001).]

[This message has been edited by Nil_z (edited 03-04-2001).]

soft shadows are a hard problem…
(no pun intended)

Ok, suppose you had a quad for a light. There’s an object with a point. You get the shadow point, right? Well, don’t do it from the center of the light, do it from each point, and with the outer points, make a poly that has the inner points as dark as the shadow desired and the outer points at full bright. Do this for all the verts, and clip the shadow polys to one another (avoid using the stencil buffer… remember that there are still people out there with a Voodoo3 or some crappy ATI card in their mechs). Hope that cleared it up a bit. And trust me, I have absolutely -NO- idea as to how to do this… I’m only 14.6, and don’t know nearly enough math! :expressionless: :stuck_out_tongue:

If the ground is planar, that method can do. But shadow volume with stencil buffer has the advance that it can cast shadow on nonplanar surface correctly. clip the shadow volume by hand will be very hard on nonplanar surface. I am still looking for the method, anyone has suggestion?

I’m also searching a way to do it.

Note that Severance: Blade of Darkness uses shadow volumes without a stencil buffer, so i guess it should be possible…

Y.

really, but I do not know this game, where do you get that info? can you give an url?

how do you know blade doesnt make use of the stencil buffer? and if it doesnt, what it use?

Nil: http://www.gamespy.com/reviews/march01/bod/ for a review, and http://www.rebelact.com/severance/index.shtml for the official site.

Okapota: i’ve read that in an interview in a french game magazine. To sum it up, they say the key features of the engine was already finished in 1998, that the game is based on portals and ray-casting, and is supporting volumetric shadows without the stencil buffer ( for ex, it should work on old Vaudoo cards ).

Y.

It is said in the review that the shadow in blade can not cast on objects, only on the walls. I think it is because they are using a portal engine, and cast a volumetric shadow is similar to creating a portal from the light source and clip it on the scene, the object is not considered when do this clipping, so only walls and floors have shadow on them. But anyway, the shadows in the game is still HARD