I have been interested in video feedback and simulating video feedback on and off for years.
I recently stumbled across this amazing 4k demo. The exe file that generates the following movie in realtime is less than 4096 bytes in size!!
Awesome result. The makers kindly wrote up an explanation page that describes how the video feedback like effects were created.
So based on those principals I used a bunch of (slower) non shader software based image processing routines and got the following results.
These are much faster to generate than my previous experiments with simulating video feeback.
Generation Steps
Initialisation
1. Create 2 bitmaps for a main layer and a temp layer
2. Fill them both with random static
Main loop
1. Each pixel RGB in the main bitmap is converted to HSL. The HSL values are used as an angle and a distance. The angle and distance then points to a new pixel location on the temp bitmap. The main bitmap pixel is the colored using the temp bitmap pixel color.
2. Sharpen the main bitmap.
3. Blur the main bitmap.
4. Display the main bitmap.
5. Blend the main bitmap with the temp bitmap.
6. Rotate the temp bitmap.
7. Histogram equalise the temp bitmap. This is similar to how Photoshop does auto-contrast.
8. Zoom the temp bitmap.
Here is a full 1080p HD sample with 10 minutes of footage showing the types of results this new algorithm creates.
If you are not a coder and want to play with this download Visions Of Chaos.
Jason.
Nice work Jason! I’ve never tried the demo scene. Do you think this technique could make a good visualizer to music on a mobile device?
If you are interested in seeing more demos http://www.pouet.net/ is the best site. They have demos of all sizes for all platforms, eg http://www.pouet.net/prodlist.php?type%5B%5D=demo&platform%5B%5D=Windows&order=views&x=25&y=6&page=1&order=views are the highest rated demos for Windows.
The original video feedback I linked to could possibly be used as a music visualiser, but basing certain parameters on music frequencies won’t always find a visually pleasing result. A lot of the variations I tried die out way too quickly. Using OpenGL ES would (should?) get it running realtime on mobile devices.
Jason.
Your blog is very interesting 🙂
thanks for all these infos…