#Shadows
David,
You and Charles Blaq seem to be intent upon turning the discussion on Radiosity
into one about Shadows, so I'll oblige you and start a new thread myself. (No
need to thank me.<g>)
>> Shadow mapping is one of the things I'm really missing in Imagine. Shadows
give a scene a much better 3D effect, but at the moment I have to use trace to
get shadows which is too slow for tight deadlines or large anims. << [DH]
I too used to think that shadow mapping would be a nice addition. But after
working with a few programs that use this technique, I no longer think shadow
mapping is all it's cracked up to be.
Shadow maps are not automatic like Ray-tracing. They require tweeking and
diddling that can easily end up taking much more time than simply doing a
trace. And without care, they can look really lousy in animation. If, for
example an object or figure is rotating and casting shadows on a ground, the
program has to calculate a new shadow map for each frame, and throughout the
animation the pixels around edges of the shadow can flicker and dance
unpleasantly because of variations in the shadow bitmaps. I've seen many
animation sequences, generated with other 3D programs, plagued with this very
problem.
In general, I think you'd find that most users who've worked with
shadow-mapping programs would prefer to use ray-tracing, especially if the
lights could do soft-edged shadows. The difficult image processing (required to
get shadow mapping to work well) would probabaly take more time for Impulse to
program than a simple routine to soften traced shadows.
>>My vote would be for you guys to work on soft shadows the workaround for soft
shadows (replace lights with n x n x n arrays of lights) is really not
reasonable. I agree with others that the lack of shadows is one major
difference between the look of our Imagine work and that produced by users of
other software.<< [CB]
Automatic soft-edged *traced* shadows would be nice, but I've actually had
fairly good success with arrays. They're a bit inflexible, but I think they
look more optically correct than shadow-mapping. I suspect that a good soft
shadow routine would slow rendering dramatically. Perhaps rather than doing a
`true' soft shadow technique, Impulse could do a hybrid approach using a
`built-in' light array, and a feathering routine to blend the gradations in the
edges of the shadows. Or maybe there's something that could be used to perturb
the rays of light around the egde of a shadow without the necessity of casting
more rays, and slowing rendering.
But look… here's my BIGGEST problem with *sharp* shadows. Since light is
clipped by the edges of polygons instead of by a smooth phonged surface,
sometimes only a few isolated polygons get hit by shadows in areas of surface
parellel to the rays of light. This can cause the edges of shadows to look very
jagged, or even like there are stray black artifacts on the object. This
happens even to objects with lots of polys like Humanoid, around the middle of
his chest. I think the best way to eliminate this problem is to have rays of
light originating from a broad area. Arrays work fairly well at this. With rays
coming from many different angles, the jaggedness (caused by the abrupt
clipping of light along the edges of polygons) is nicely disguised.
– Tim