The following are pieces generated in Apple's Metal Framework. Metal, like OpenGL, is a programming interface / shading language for controling a graphics card (GPU). GPU's require a different approach to coding; they're more limited in what they can do than a CPU, but they can do many simple things in parallel. I've always been interested in generative or algorithmic art, wherein simple rules can produce complex phenomena. Harnessing the GPU allows for some fairly complex systems to emerge — even on a relatively entry-level device like a Macbook or an iPhone.
A flocking algorithm wherein each element attempts to align itself to every other element, steer towards the center of the flock, and avoid coliding with other elements. This is an n-body problem with exponential complexity. A parallel processing approach was adapted from an NVIDIA Cuda paper to work in the Metal Shading Language. It works by efficiently coordinating memory access on the GPU as each element compares itself to each other element.
Implementation of Marching Cubes algorithm in a Metal Compute Shader. The algorithm takes a field of points — a kind of energy field (or 'Gaussian Potential Field') — and generates a polygonal surface. A chrome map approach was used to simulate reflectivity, and the n-body algorithm used in my other experiements provides the gravitational attraction / animation.
A 3D implementation of Cellular Automata. Similar to Conway's "Game of Life", but in three dimensions, with slightly different 'rules'. A 3D texture defines whether a given cell is alive or dead, and a compute shader is used to evaluate each cell at every step of the simulation. Ambient Occlusion was implemented to self-shade elements that are closer towards the center of the cube.
Music video for Henri Bergman's track "Nexus". A video stream of a dancer displaces an array of line. Real-time audio processing of the track's frequencies influences the displacement.
Music video for Henri Bergman's track "Interference". Implementation of a Lorenz Attractor. As the simulation progresses, the points slowly transition into a moving portrait of Henri. A Metal Compute Shader evaluates the Lorenz Attactor, and a texture map of a live video stream of Henri is used to morph the particles.
N-body simulation wherein each particle is gravitationally attracted to each other particle. Typically this type of exponentially complex simulation will grind the GPU to a halt due to memory access conflicts. An efficient parallel processing algorithm was adapted from an NVIDIA paper into Apple's Metal Shading Language. This algorithm has been subsequently used in many of my other experiments.