Skip to content

Instantly share code, notes, and snippets.

@CharStiles
Last active April 28, 2020 22:07
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save CharStiles/34ff172942ad63c1fa7e4eedc5624eee to your computer and use it in GitHub Desktop.
Save CharStiles/34ff172942ad63c1fa7e4eedc5624eee to your computer and use it in GitHub Desktop.
float circ(vec2 p){
return length(p) - .50;
}
// Repeat in two dimensions
vec2 pMod2(inout vec2 p, vec2 size) {
vec2 c = floor((p + size*0.5)/size);
p = mod(p + size*0.5,size) - size*0.5;
return c;
}
// http://www.iquilezles.org/www/articles/palettes/palettes.htm
// As t runs from 0 to 1 (our normalized palette index or domain),
//the cosine oscilates c times with a phase of d.
//The result is scaled and biased by a and b to meet the desired constrast and brightness.
vec3 cosPalette( float t, vec3 a, vec3 b, vec3 c, vec3 d )
{
return a + b*cos( 6.28318*(c*t+d) );
}
float sdBox( in vec2 p, in vec2 b )
{
vec2 d = abs(p)-b;
return length(max(d,vec2(0))) + min(max(d.x,d.y),0.0);
}
void main()
{
//gl_FragColor = vec4(black,1.0);
// VEC review
// float v = 0.50;
// vec2 v2 = vec2(0.2,0.4);
// vec3 v3 = vec3(v2,0.3);
// gl_FragColor = vec4(v3,v);
// moving UV position
// vec2 position = (uv() + 1.)/2.0 ;
//gl_FragColor = vec4(position,0,1.);
// distance metric
vec2 position = uv();
position = position + vec2(sin(time),0);
pMod2(position, vec2(1));
float shape = circ( position * vec2(3.0));
position = position + vec2(cos(time),0);
float shape2 = sdBox(position, vec2(0.1));
shape = min(shape,shape2);
//gl_FragColor = vec4(shape);
vec3 col = cosPalette(0.5,vec3(0.1),vec3(0.3),vec3(1),vec3(time*0.01,time*0.1,time*.2));
// gl_FragColor = vec4(col,1.0);
// lighting: darken at the center
col = vec3(shape) * col;
//gl_FragColor = vec4(col,1.0);
// output: pixel color
gl_FragColor = min(vec4( col, 1.0 ), vec4(0.8));
// we take the min of the output color and a very light grey color because The Force makes
// all of their controls white at the bottom all white without any sort of outline, which is
// silly, so you can make it vec4(col.rgb,1.0) in other softwares or if you dont care
// about seeing the controls
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment