New Order

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 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.

Some sorted Pixels: 



Further Posts:

Colour Emulsion Simulations research real-time island art
Watercolours Experiments research real-time island art
Fractures research real-time
2D SDF blobs v.2 research real-time
Love Making Waves fft real-time island research
2D SDF blobs v.1 research real-time island
Physarum Simulations research real-time
OpenFrameworks Vulkan Renderer: The Journey So Far writeup vulkan real-time software design
World real-time research
Mass Movement #1 research art