CompuServe Messages

#Shadows

    22-Jan-95 13:55:42
Sb: #Shadows
Fm: Tim Wilson [Crestline] 76432,1122
To: David Hofmann 100112,3243
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