|
|
|
@ -1,19 +1,34 @@
|
|
|
|
|
// Author @patriciogv - 2015
|
|
|
|
|
// http://patriciogonzalezvivo.com
|
|
|
|
|
|
|
|
|
|
#ifdef GL_ES
|
|
|
|
|
precision mediump float;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define PI 3.14159265359
|
|
|
|
|
#define TWO_PI 6.28318530718
|
|
|
|
|
|
|
|
|
|
uniform vec2 u_resolution;
|
|
|
|
|
uniform float u_time;
|
|
|
|
|
|
|
|
|
|
float random(in vec2 st){ return fract(sin(dot(st.xy ,vec2(12.9898,78.233))) * 43758.5453); }
|
|
|
|
|
float random(vec2 st){ return fract(sin(dot(st.xy ,vec2(12.9898,78.233))) * 43758.5453); }
|
|
|
|
|
|
|
|
|
|
vec2 tileFractal(vec2 st) {
|
|
|
|
|
vec2 f = fract(st);
|
|
|
|
|
vec2 i = floor(st);
|
|
|
|
|
|
|
|
|
|
return fract(st*pow(2.,floor(random(i)*5.)));
|
|
|
|
|
vec2 tileFractal(vec2 st, int scale, int levels) {
|
|
|
|
|
for (int i = 0; i < levels; i++){
|
|
|
|
|
st *= float(scale);
|
|
|
|
|
vec2 i_st = floor(st);
|
|
|
|
|
st = fract(st*pow(2., floor(2.*random(i_st))) );
|
|
|
|
|
}
|
|
|
|
|
return st;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// vec2 tileFractal(vec2 st) {
|
|
|
|
|
// st *= 4.;
|
|
|
|
|
// vec2 i_st = floor(st);
|
|
|
|
|
// st = fract(st*pow(2., floor(4.*random(i_st))) );
|
|
|
|
|
// return st;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
float circle(vec2 st, float radius){
|
|
|
|
|
vec2 pos = vec2(0.5)-st;
|
|
|
|
|
radius *= 0.75;
|
|
|
|
@ -27,19 +42,26 @@ float box(vec2 st, vec2 size){
|
|
|
|
|
return uv.x*uv.y;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float shapeDF(vec2 st, int N){
|
|
|
|
|
st = st *2.-1.;
|
|
|
|
|
float a = atan(st.x,st.y)+PI;
|
|
|
|
|
float r = TWO_PI/float(N);
|
|
|
|
|
return cos(floor(.5+a/r)*r-a)*length(st);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
|
vec2 st = gl_FragCoord.xy/u_resolution;
|
|
|
|
|
vec3 color = vec3(0.0);
|
|
|
|
|
|
|
|
|
|
st *= 3.;
|
|
|
|
|
st = tileFractal(st);
|
|
|
|
|
st = tileFractal(st,3,2);
|
|
|
|
|
|
|
|
|
|
float pct = 0.;
|
|
|
|
|
pct = circle(st,.999);
|
|
|
|
|
// pct = box(st,vec2(.95));
|
|
|
|
|
// pct = step(.15,1.-shapeDF(st.yx,6))-step(.3,1.-shapeDF(st.yx,6));
|
|
|
|
|
|
|
|
|
|
color.rg = st;
|
|
|
|
|
color.rgb = vec3(1.)*pct;
|
|
|
|
|
// color.rg = st;
|
|
|
|
|
color.rgb += vec3(1.)*pct;
|
|
|
|
|
|
|
|
|
|
gl_FragColor = vec4(color,1.);
|
|
|
|
|
}
|