Explore Parametric Surfaces

Write a math equation, watch a 3D surface come to life. Customize with GLSL shaders, apply symmetries, animate with time, and export for 3D printing.

Launch App Star on GitHub
X = cos(u) * (3 + cos(v))    Y = sin(u) * (3 + cos(v))    Z = sin(v)

Everything you need

A complete toolkit for creating and exploring mathematical surfaces in 3D

f()

Parametric Equations

Define surfaces with X(u,v), Y(u,v), Z(u,v) in Cartesian, Spherical or Cylindrical coordinates. 50+ built-in forms included.

</>

GLSL Shader Editors

Two Monaco-based editors for fragment (color) and normal deformation shaders. Full GLSL with live compilation.

Symmetrize

Repeat the mesh along X/Y/Z axes up to 48 times. Adjust angle, checkerboard pattern, and blending mode.

~

Wave Deformation

Displace vertices along their normals with per-axis amplitude and frequency. 20+ built-in deformation functions.

t

Time Animation

Use the t variable in any equation for real-time animation. Control speed, pause, and record as video.

Export to 3D

Export your surfaces as OBJ, STL or JSON. Import OBJ meshes. Save and share shader collections as .js files.

How it works

From equation to 3D surface in seconds

Pick a surface

Choose from 50+ built-in forms or start with a blank canvas

Write equations

Edit X, Y, Z as functions of u and v using shorthand notation

Customize

Adjust shaders, colors, symmetry, transformations, and animation

Export

Download as OBJ or STL for 3D printing, or record a video

Write less, create more

The equation parser expands shorthand notation automatically

You write Expands to
cucos(u)
svsin(v)
cufvcos(u*v)
2u2*u
mm() — multiplicative cosine
oo() — additive cosine
Rh(x,y,z) — distance from origin
q(a,b,t)mix(a,b,t) — interpolation

Built with

B
BabylonJS
GL
WebGL2 / GLSL
M
Monaco Editor
JS
Vanilla JS

Ready to explore?

No install, no sign-up. Runs entirely in your browser.

Launch SURFACE