Ponies & Light

New Order

New Order

GPU accelerated image sorting

A GPU accelerated sorting algorithm arranges every line of an image by increasing luminosity. The image retains every pixel, but appears in new order.

It’s fascinating to discover how many artworks - by old masters or by more modern artists - use similar patterns in how visual weight balances on the canvas.

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.


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”

  • Music: Golden Gate Orchestra: Charleston (Fox Trot) (1925) – via the internet archive

Made with openFrameworks 0.8.0.

Here are some images in New Order:

imageHitchcock's portrait before & after
imageThe Pixels of Alfred Hitchcock's wikipedia entry picture
imageThe Pixels of Gerhard Richter: 'Betty'
imageThe Pixels of Gustave Caillebotte: 'Landscape Banks of the Yerres'
imageThe Pixels of Pieter Bruegel the Elder: 'Pride'
imageThe Pixels of Ivan Aivazovsky: 'The Wrath of the Seas'


Unit 3, 410 Hackney Road,
E2 7AP London, UK