Skip to content

Instantly share code, notes, and snippets.

@shawnlawson
shawnlawson / GLSL-Noise.md
Created December 30, 2015 20:20 — forked from patriciogonzalezvivo/GLSL-Noise.md
GLSL Noise Algorithms

Generic 1,2,3 Noise

float rand(float n){return fract(sin(n) * 43758.5453123);}

float noise(float p){
	float fl = floor(p);
  float fc = fract(p);
	return mix(rand(fl), rand(fl + 1.0), fc);
}
@shawnlawson
shawnlawson / exp.frag
Created March 16, 2017 16:22
Force Experiment 001
void main () {
vec2 uv = uv(); vec2 uvN = uvN(); vec3 c = black;
float theta = atan(uv.x, uv.y) / PI2 + .5; float phi = log(length(uv));
float k = 4. * bands.w + 2.;
float a = mod(atan(uv.x, uv.y), PI2/k);
a = abs(a - PI2/k/2.);
vec2 center = vec2 (0.);
@shawnlawson
shawnlawson / exp.frag
Created March 16, 2017 16:23
Force Experiment 002
void main () {
vec2 uv = uv(); vec2 uvN = uvN(); vec3 c = black;
float theta = atan(uv.x, uv.y) / PI2 + .5; float phi = log(length(uv));
float k = 1.3 * bands.y * 2.;
float a = mod(atan(uv.x, uv.y), PI2/k);
a = abs(a - PI2/k/2.);
c += red * .5 * length(bands);
@shawnlawson
shawnlawson / exp.frag
Created March 16, 2017 16:24
Force Experiment 003
void main () {
vec2 uv = uv(); vec2 uvN = uvN(); vec3 c = black;
float theta = atan(uv.x, uv.y) / PI2 + .5; float phi = log(length(uv));
float k = 2. * bands.x + 2.;
float a = mod(atan(uv.x, uv.y), PI2/k);
a = abs(a - PI2/k/2.);
vec2 center = vec2 (0.);
@shawnlawson
shawnlawson / exp.frag
Created March 16, 2017 16:26
Force Experiment 004
void main () {
vec2 uv = uv(); vec2 uvN = uvN(); vec3 c = black;
float theta = atan(uv.x, uv.y) / PI2 + .5; float phi = log(length(uv));
float k = 2. * bands.x + 9.;
float a = mod(atan(uv.x, uv.y), PI2/k);
a = abs(a - PI2/k/2.);
vec3 f = rmf(vec2(a, phi - time * 1.4), int(6. * bands.y)) * yellow;
k = 2. * bands.y + 9.;
@shawnlawson
shawnlawson / exp.frag
Created March 16, 2017 16:27
Force Experiment 005
void main () {
vec2 uv = uv(); vec2 uvN = uvN(); vec3 c = black;
float theta = atan(uv.x, uv.y) / PI2 + .5; float phi = log(length(uv));
float k = 2. * bands.x + 2.;
float a = mod(atan(uv.x, uv.y), PI2/k);
a = abs(a - PI2/k/2.);
vec2 center = vec2 (0);
@shawnlawson
shawnlawson / exp.frag
Created March 31, 2017 18:32
Force Experiment 006
void main() {
vec2 st = st(), stN = stN(); vec3 c = black;
float theta = atan(st.x, st.y) / PI2; float phi = log(length(st));
float k = 1. * bands.y + 2.; float a = mod(theta, PI2/k); a = abs(a - PI2/k/2.);
vec2 r = rotate(vec2(bands.y - bands.x) * 2., st, time * .2 + bands.x);
vec2 r2 = rotate(vec2(bands.x - bands.y) * 2., st, time * .2 - bands.x);
vec3 v = voronoi(vec3(r * 3. * bands.y + st, bands.y * .3 + time * .1));
@shawnlawson
shawnlawson / exp.frag
Last active April 16, 2017 15:44
Force Experiment 007
void main() {
vec2 st = st(), stN = stN(); vec3 c = white * .5;
float theta = atan(st.x, st.y) / PI2; float phi = log(length(st));
float k = 1. * bands.y + 2.; float a = mod(theta, PI2/k); a = abs(a - PI2/k/2.);
vec2 pq = fract( st * (.01 + length(bands)*1.));
pq = rotate(vec2(0), pq, time - bands.z);
pq = fract(pq);
@shawnlawson
shawnlawson / exp.frag
Created April 21, 2017 14:09
Force Experiment 008
void main() {
vec2 st = st(), stN = stN(); vec3 c = white * .5;
float theta = atan(st.x, st.y) / PI2; float phi = log(length(st));
float k = 1. * bands.y + 2.; float a = mod(theta, PI2/k); a = abs(a - PI2/k/2.);
vec2 p = floor(vec2(a * 3., phi + time * 1.2 + bands.x) * 2.) * length(bands) * 2.;
vec2 q = vec2(sin(p.x), sin(p.y)) ;
float t = time * 4.13 + q.x * q.y * length(q);
@shawnlawson
shawnlawson / exp.frag
Created April 28, 2017 13:22
Force Experiment 009
void main() {
vec2 st = st(), stN = stN(); vec3 c = white * .5;
float theta = atan(st.x, st.y) / PI2; float phi = log(length(st));
float k = 1. * bands.y + 5.; float a = mod(theta, PI2/k); a = abs(a - PI2/k/2.) * 3.;
vec2 p = mix(vec2(a * 6. * bands.y + st.y * bands.z + a*2., phi + phi * (3.+ bands.y * 4.) + time * .1), st, bands.x);
p = rotate(vec2(0), p, time - bands.y - bands.z);
p = fract(p * (1.+ bands.y));