A GLSL function for generating 3D supershapes.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
css
.gitignore
.npmignore
LICENSE.md
README.md
demo.frag
demo.js
index.glsl
index.html
package.json

README.md

glsl-superformula

A GLSL function for generating 3D supershapes.

Indended for use with glslify and WebGL.

Inspired by Daniel Shiffman's 3D Supershapes Processing tutorial.

Demo

Screenshots

screenshot

Usage

NPM

#pragma glslify: superformula = require('glsl-superformula')

vec2 doModel(vec3 p) {
	float id = 1.0;
	float d = length(p);
	float theta = atan(p.y / p.x);
	float phi = asin(p.z / d);

	float r1 = superformula(theta, 8.0, 60.0, 100.0, 30.0, 1.0, 1.0);
	float r2 = superformula(phi, 2.0, 10.0, 10.0, 10.0, 1.0, 1.0);

	vec3 q = r2 * vec3(r1 * cos(theta) * cos(phi), r1 * sin(theta) * cos(phi), sin(phi));
	d = d - length(q);

	return vec2(d, id);
}

License

MIT. See LICENSE.md for details.