I originally planned to make this a render-to-texture demo, but this is fairly interesting by itself.