A GPU accelerated sorting algorithm arranges every line of an image by increasing luminosity. The image retains every pixel, but appears in new order.
Using a bitonic merge sort network implemented in the fragment shader, this piece is fast enough to process images and videos in real-time; it also sorts live videos fed from the built-in camera. To show the sorting algorithm in vivo, the first sorts run about 50 times slower than realtime.
Big hat-tip to @jvcleave and “Sorted” which inspired this piece.
Animations made with | ofxPlaylist |
Hashtable generation | Perl Algorithm::Networksort |
Music | Golden Gate Orchestra: Charleston (Fox Trot) (1925) – via the internet archive |
Images of artworks from wikipaintings.org. In order of appearance:
Gustave Caillebotte | “The Bridge at Argenteuil” |
Gustave Caillebotte | “The Parquet Planers” |
Edgar Degas | “Promenade by the Sea” |
Pieter Bruegel The Elder | “Netherlandish Proverbs” |
Gerhard Richter | “Betty” |
Gerhard Richter | “1024 Colours” |
Mikhail Nesterov | “Adriatic Sea” |
VIDEO | Computer Commercial: IBM Computer (1986)(IBM)(US) – via the internet archive |
VIDEO | Live video feed |
Ivan Aivazovsky | “Frigate Under Sails” |
Gustave Caillebotte | “Landscape Banks of the Yerres” |
Made with openFrameworks 0.8.0.