"Can't you store shadowed surfaces so that shadows only get moved when the light or the casting object are moved, so for something like a rotating fan, you would only need to calculate which surfaces the shadow hit once?"
I could, but what would be the point? The vast majority of objects a player will want to cast shadows from will either be moving around the world, or not move at all. Both these cases are covered. A special case like a rotating fan isn't something many people will do, and as I stated previously one can use a static shadow to model that and rotate the texture manually.
I can only think of one case where a player would have a lot of objects that need to cast dynamic shadows but do not move much of the time, and that would be an RTS. And if you're makign an RTS you're not gonna want to use complex shadows like this. And even if you did, all you'd have to do is manually generate a static shdow for a tank when it stops moving and delete the dynamic one, and vice versa when it gets moving again. This assumes you're SANE of course, and only have one light source casting shadows in your RTS. :-)
I could, but what would be the point? The vast majority of objects a player will want to cast shadows from will either be moving around the world, or not move at all. Both these cases are covered. A special case like a rotating fan isn't something many people will do, and as I stated previously one can use a static shadow to model that and rotate the texture manually.
I can only think of one case where a player would have a lot of objects that need to cast dynamic shadows but do not move much of the time, and that would be an RTS. And if you're makign an RTS you're not gonna want to use complex shadows like this. And even if you did, all you'd have to do is manually generate a static shdow for a tank when it stops moving and delete the dynamic one, and vice versa when it gets moving again. This assumes you're SANE of course, and only have one light source casting shadows in your RTS. :-)