Visual Studio

Visual
Studio

Our expertise spans across experiential journeys, mixed reality applications, generative art installations, and interactive artworks. Our commitment to innovation drives us to explore the intersection of digital art, interactive design, and immersive storytelling.

Teal Plasma
⚙ ControlsGLSL / WebGL

Teal Plasma

GPU-rendered plasma field built in GLSL. Every pixel computed on the graphics card — move your cursor to warp the interference pattern.

Move cursor to warp the plasma field

Launch
Particle Storm
⚙ ControlsThree.js

Particle Storm

18,000 particles suspended in three-dimensional space. Mouse movement controls camera rotation — revealing depth and structure in the chaos.

Move cursor to orbit the particle cloud

Launch
Neural Flow
p5.js

Neural Flow

Perlin noise flow field rendered with 900 autonomous agents. Each particle follows invisible force vectors — the cursor bends the field.

Move cursor to bend the flow field

Launch
Void Portal
⚙ ControlsGLSL / Raymarching

Void Portal

Raymarched 3D geometry using Signed Distance Functions. Three nested tori and a sphere — entirely computed per pixel in GLSL. Move cursor to orbit.

Move cursor to orbit the structure

Launch
Void Tunnel
p5.js

Void Tunnel

150 concentric shapes morphing between perfect squares and circles. Mouse X warps the dimensional twist, Mouse Y controls the pulse speed.

Mouse X = twist · Mouse Y = speed

Launch
Accretion Nebula
⚙ ControlsGLSL / Raymarching

Accretion Nebula

Fractal raymarching through a procedural space nebula. 20-step raymarch with 7 layers of noise — every pixel computed on the GPU in real time.

GPU fractal nebula — just watch

Launch
Physics Chaos
Matter.js

Physics Chaos

Matter.js 2D rigid body physics — circles, rectangles, polygons and trapezoids rain down in teal tones. Click and drag any shape to fling it around.

Click and drag any shape · They collide and stack

Launch
Domain Warp
⚙ ControlsGLSL / WebGL

Domain Warp

Four layers of domain-warped fractal Brownian motion computed entirely on the GPU. Move your cursor to shift the flow — no two frames are ever the same.

Move cursor to warp the fractal field

Launch
Camera Vision
● CAMML5 / FaceMesh

Camera Vision

Live camera feed with ML5.js face mesh tracking — 468 landmarks mapped in real time. Full wireframe face with squiggly eye/brow contours and floating particles.

Click "Enable Camera" — face mesh activates automatically

Launch
Squiggle Cam
● CAMp5.js / Camera

Squiggle Cam

Your camera feed transformed into organic teal line art. Pixel brightness bends each scan line — the brighter the light, the more it bends.

Click "Start Camera" — move in front of the lens

Launch
Optical Flow
● CAMp5.js / Optical Flow

Optical Flow

Motion detection turned into particle art. Every movement spawns teal particles that trace the path of motion across the camera frame.

Wave your hands in front of the camera

Launch
Liquid Ball
● CAMMediaPipe / Canvas

Liquid Ball

Hold both hands up to summon a liquid teal sphere between them. The ball reacts to your hand distance — squeeze to compress, spread to expand.

Enable camera · Hold both hands up · Squeeze to compress

Launch
ASCII Pixel
● CAMp5.js / Camera

ASCII Pixel

Your live camera feed quantised into a teal pixel-block grid. Eight brightness levels map to eight tones — from deep black to electric cyan.

Enable camera · Move closer or farther for more detail

Launch
3D Point Cloud
● CAMp5.js / WEBGL

3D Point Cloud

Your live camera feed rendered as a 3D depth map in p5.js WEBGL. Each pixel becomes a floating voxel — brightness drives depth. Orbit with your mouse.

Enable camera · Move mouse to orbit the 3D cloud

Launch
Face Riot
● CAMMediaPipe / FaceMesh

Face Riot

468 facial landmarks tracked live via MediaPipe FaceMesh. Cyan mesh overlays your face with cyberpunk glitch effects, chromatic aberration, scan lines, and floating error text.

Enable camera · Face the screen · Watch the glitch mesh activate

Launch
Don't Touch Me
p5.js · Particle Physics

Don't Touch Me

Particles seek your cursor — survive as long as you can. Click to start. Avoid the swarm.

Click to start · Move your mouse to dodge particles

Launch
Colour Boxes 3D
p5.js · WebGL · 3D

Colour Boxes 3D

Hundreds of colourful 3D boxes drift and rearrange in WebGL space. Move mouse to orbit, scroll to zoom, click to trigger new formations.

Move mouse to orbit · Scroll to zoom · Click to rearrange · Keys 0–4 change formation

Launch
Lunar Lander
p5.js · Physics · Game

Lunar Lander

Land your spacecraft on the moon surface. Manage fuel, fight gravity and wind. A physics-based survival challenge.

Arrow keys or WASD to thrust · R to restart · W to toggle wind · Z for zen mode

Launch
Sound Reactive Art
p5.js · p5.sound · Audio Reactive

Sound Reactive Art

Click to play music. Lines draw themselves around your cursor in sync with the audio, toggling between monochrome and vibrant colour.

Click anywhere to start/stop music · Move cursor to draw · Colour toggles on click

Launch
Text Drawing Tool
p5.js · Generative Design

Text Drawing Tool

Drag your mouse to paint with text — characters trace your gesture into an emergent typographic composition.

Drag mouse to draw · Backspace to clear

Launch
Paint Particles
p5.js · Vector Field · Fluid

Paint Particles

Flowing paint particles mix and swirl through vector fields — hypnotic colour fluid simulation.

Move mouse to steer the flow

Launch
Circles & Squares
p5.js · Generative · Interactive

Circles & Squares

Geometric shapes morph and multiply with cursor interaction — an exploration of form, rhythm and transformation.

Move and click to transform the geometry

Launch
Typewriter Art
p5.js · Typography · Generative

Typewriter Art

William Butler Yeats' "The Second Coming" rendered through a generative typewriter — text as texture, poetry as pattern.

Watch the verse unfold

Launch
Spherical Magnification
p5.js · Optics · Typography

Spherical Magnification

A lens of text — characters arranged in a grid with a spherical magnification effect that follows your cursor.

Move mouse to warp the lens · Click and drag to change magnification · A/Z/X to randomise

Launch
Nodes Network
p5.js · Network · Data

Nodes Network

Planes and nodes weave a living network visualization — data relationships rendered as spatial journeys.

Watch the network self-organise

Launch
Philosophy Text Viz
p5.js · Typography · Data

Philosophy Text Viz

Plato's Parmenides rendered as flowing teal typography — philosophical text transformed into a contemplative visual experience.

Watch the text breathe

Launch
3D Terrain Explorer
p5.js · WebGL · Procedural

3D Terrain Explorer

Procedural WebGL terrain with real-time camera navigation — a living landscape data visualisation.

Move mouse to orbit the terrain

Launch
Fluvia — Erosion Sim
GLSL · WebGL · Physics Sim

Fluvia — Erosion Sim

Real-time hydraulic erosion simulation on a procedural 3D terrain. Watch rivers carve valleys over time.

Drag to orbit · Scroll to zoom · Use panel to tweak erosion parameters

Launch
Body Pose Art
● CAMML5 · Body Pose · p5.js

Body Pose Art

ML5 body pose detection turns your movements into abstract art — your skeleton becomes a living brush.

Allow camera access · Move your body to paint

Launch
Hand Paint
● CAMMediaPipe · Shader Park · p5.js

Hand Paint

MediaPipe hand tracking drives a generative paint system — draw in mid-air with shader-park brushes.

Allow camera access · Use your hands to paint in the air

Launch