// Author: Francisco // Title: Assignment 2 - Part 1 #ifdef GL_ES precision mediump float; #endif uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; #define PI 3.1415926535 float drawRectangle(vec2 st, vec2 pos, vec2 size){ float result = 1.0; vec2 border = (1.0-size)/2.; st = st - pos + vec2(0.5); result = step(border.x, st.x); result *= step(border.x, 1.0-st.x); result *= step(border.y, st.y); result *= step(border.y, 1.0-st.y); return result; } float drawCircle(vec2 st, vec2 pos, float size){ float result = distance(st, pos); result = 1.0-step(size, result); //result = smoothstep(0.7, 0.6, size); return result; } void main() { vec2 st = gl_FragCoord.xy/u_resolution.xy; st.x *= u_resolution.x/u_resolution.y; vec3 hsb; hsb.r = st.x; // animate hue with time hsb.g = 1.; // saturation hsb.b = 1.; // brightness vec3 color = vec3(0.860,0.509,0.111); color = vec3(-st.x*1., st.y*1., cos(sin(u_time))); float c1 = drawCircle(st, vec2(0.5, 0.5), 0.3); float c2 = drawCircle(st, vec2(0.75, 0.75), 0.5); float c3 = drawCircle(st, vec2(0.25, 0.75), 0.5); float c4 = drawCircle(st, vec2(0.25, 0.25), 0.5); float c5 = drawCircle(st, vec2(0.75, 0.25), 0.5); float c6 = drawCircle(st, vec2(0.5, 0.5), 0.5); float c7 = drawCircle(st, vec2(0.75, 0.5), 0.5); float r1 = drawRectangle(st, vec2(0.5), vec2(0.21)); float r2 = drawRectangle(st, vec2(0.5), vec2(0.43)); float r3 = drawRectangle(st, vec2(0.5), vec2(0.6)); float r4 = drawRectangle(st, vec2(0.5), vec2(0.8)); float r5 = drawRectangle(st, vec2(0.5), vec2(1.0)); float d = distance(st, vec2(0.5,0.5))*1.489; c6, c7 = d; r1, r2, r3, r4, r5 = d; c6 = sin(u_time*PI*0.+d); c7 = sin(u_time*PI*1.+d); r1, r2, r3, r4, r5 = sin(u_time*PI*1.+d); color = mix(color, vec3(3., 0.8, 0.7), c1 * 0.09); color = mix(color, vec3(3., 0.8, 0.7), c2 * 0.09); color = mix(color, vec3(3., 0., 0.7), c3 * 0.09); color = mix(color, vec3(3., 0.8, 0.7), c4 * 0.09); color = mix(color, vec3(3., 3., 0.7), c5 * 0.03); color = mix(color, vec3(3., 1., 0.7), c6 * 0.5); color = mix(color, vec3(3., 0.8, 0.7), c7 * 0.4); color = mix(color, vec3(0., 0., 1.), r1 * 0.1); color = mix(color, vec3(0., 0., 1.), r2 * 0.1); color = mix(color, vec3(0., 0., 1.), r3 * 0.1); color = mix(color, vec3(0., 0., 1.), r4 * 0.1); color = mix(color, vec3(0., 0., 1.), r5 * 0.1); gl_FragColor = vec4(color,0.9); }
// Author: Francisco Samayoa // Title: Assignment 2 - Part 2 #ifdef GL_ES precision mediump float; #endif uniform vec2 u_resolution; uniform vec2 u_mouse; uniform float u_time; #define PI 3.14159265358979323846 vec2 createGrid( in vec2 st, in vec2 grid, out vec2 indices) { st *= grid; indices = floor(st); st = fract(st); return st; } vec2 rotate2D(vec2 _st, float _angle){ _st -= 0.5; _st = mat2(cos(_angle),-sin(_angle), sin(_angle),cos(_angle)) * _st; _st += 0.5; return _st; } float drawRectangle(vec2 st, vec2 pos, vec2 size) { float result = 1.0; vec2 border = (1.0 - size) / 2.0; result = step(border.x, st.x); result *= step(border.x, 1.0 - st.x); result *= step(border.y, st.y); result *= step(border.y, 1.0 -st.y); return result; } float drawCircle(vec2 st, vec2 pos, float size) { float result = distance(st, vec2(pos)); // blurry result = 1.0 - smoothstep(size - 0.3, size + 0.676, result); return result; } void main() { vec2 st = gl_FragCoord.xy/u_resolution.xy; st.x *= u_resolution.x/u_resolution.y; vec2 st0 = st; vec2 indices; st = createGrid( st, vec2(6.), indices); float pct = smoothstep(0.9, 0.1, st.x); float pct2 = smoothstep(0.1, 0.9, st.y); vec3 color = vec3(0); if( mod(indices.x, 2.) == 0.0 && mod(indices.y, 2.) == 0.){ // lower left cell color = vec3(0.955,0.750,0.002); color = mix(color, vec3(0.933,1.000,0.493), pct/pct2); } else if( mod(indices.x, 2.) == 1.0 && mod(indices.y, 2.) == 0.){ // lower right cell st = rotate2D(st, PI * 0.25); color = vec3(0.975,0.525,0.355); color = mix( color, vec3(1., 0., 0), (1.-pct)/(-pct2)); } else if( mod(indices.x, 2.) == 0.0 && mod(indices.y, 2.) == 1.){ // upper left color = vec3(0.745,0.348,0.062); color = mix( color, vec3(0.737,1.000,0.648), (pct)/(1.-pct2)); } else { // upper right color = vec3(0.800,0.365,0.155); color = mix( color, vec3(0.794,0.866,1.000), (1.-pct)/(1.-pct2)); } gl_FragColor = vec4(color,1.0); }