Playing around with setting up an array of spotlights casting buffer shadows to get soft shadows without having to raytrace. My wild guess^W^Weducated assumption is that this is how mental ray et al do those shweet quickfast soft shadows.
Nice results, esp. considering the speed, but a bit fiddly to adjust at the moment. Seems to need a really low shadow bias. Bumping SpotBl seems like an acceptable alternative to adding more lights to soften banding, SpotSi affects overall brightness in addition to lightcone size (since the individual lights start overlapping). Left the rest of the settings pretty much alone. I guess you could increase Samples and Soft to get even softer shadows, but it’ll get soft close to the shadow casting objects too.
Specular highlights are likely to go crazy too, so it’s probably best to turn it off for the lights in the array and just add an extra, specular-only light, if you really want it in there.
Some tests (not too concerned with getting the overall brightness equal or making a nice scene):
Raytraced, 16x16 samples: 4min 25s
–
16x16 shadow map lights: 31s
–
32x32 shadow map lights: 2min 7s
A fairly big increase in render time vs small quality increase. Still a lot faster than raytrace though.
–
16x16 shadow map lights using irregular buffers: 3min 25s
Probably the nicest result, but approaching raytrace times. Some banding visible, so you’d want 32x32 or something lights here as well -> even slower.
It’d be fairly trivial to set up a script that generates the array for you, I guess. It’d be nice to have something that would let you try out different sample amounts (ie number of lights) easily. Though what I’m hoping is that some dev sees this and decides to add a proper shadow map area light.
Something that looks a bit nicer in the viewport, at least:
:spin: