(various examples on using patterns to block light from a light source)
Over the years I have played around with the the slide-projector shader, but never really got that many images I was satisfied with. Then I happened across Ronen Barzel's article "Lighting Controls for Computer Cinematography" from the Journal of Graphics Tools. An abstract of this article can be found at Barzel97. One of the ideas from this article is using the images to block sections of the light. This is a very simple but cool idea.
Currently these examples are what are more commonly referred to coockaloris effects (from traditional stage lighting). There another kind that I haven't made any examples of yet, that the uberlight is capable of. Namely, creating projection coordinates for which light from a particular source should not go.
The following are some light shaders to do blocking. The first set are more general and can read in texture-maps to be used to as the blockers. The next set are more specific and generate the patterns procedurally. I believe the advantage to the this set is that one will have more control in animating the blockers.
This set of shaders is more general as they use a texture-map to define the shape of the blocker.
These first two images depict the scene light with a distantlight and a spot light respectfully.
Now let's take the following image of a star and use it as a blocker.
First with TLblocker1spotlight.sl:
OK, this all fine and dandy, but what if you wanted to animate your blocker. Well it depends on the effect you want.
A. If you just want to simulate if the blocker is on a motor then one way would be to just start rotating the up vector. Now you are all ready to do that 70's disco dance floor scene, you have been dying to do.
B. What if you really wanted you blocker to be changing over time?
Well you choices are:
1. some how generate the various texture-maps depicting the animation that is desired.
2. Generate the pattern procedurally inside the light shader.
The latter is how I am speculating that the scene was done in Toy Story with rain drop shadows on Buzz.
This set of blockers do the blocking procedurally