Skip to Content

liquid

2025

made in p5.js

An evolution of flows and experiments with flow fields, liquid is a continuation of recreating organic patterns using Perlin noise. Conceptually, the script is a generative system that creates black-and-white liquid patterns distributed across configurable grids. Each cell in the grid is algorithmically generated using a combination of Perlin noise, domain warping, sinusoidal banding, and binary thresholding. These layered techniques produce flowing, high-contrast liquid textures that vary between cells while maintaining structural cohesion.

The process begins with a noise-driven flow field, seeded either globally (shared seed mode) or individually (unique seed per cell). Multi-scale noise layers introduce organic variation, which are then distorted through successive levels of domain warping to simulate liquid-like motion. Sinusoidal banding functions modulate this flow into high-contrast striations, which are sized according to a duty cycle parameter to produce the final black-and-white binary output.

At the same time, I wanted to be able to display series of liquid drawings side by side, to show how the same variables and noise seed could generate wildly different compositions. It’s hard to perceive an object’s unique qualities without having something else to compare it to. So rather than generating a single large liquid pattern, I wrote a function to divide the canvas into a parametric grid system. This allows for compositions of multiple drawing cells, each with its own unique characteristics while maintaining visual cohesion across the entire piece.

Through these mechanisms, liquid explores the interplay between deterministic structure and emergent complexity, producing a wide range of liquid textures from a unified parametric system.