Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author:
- // Title:
- #ifdef GL_ES
- precision mediump float;
- #endif
- uniform vec2 u_resolution;
- uniform vec2 u_mouse;
- uniform float u_time;
- float random (vec2 st) {
- return fract(sin(0.00175*3.14 + dot(st.xy,
- vec2(12.9898,78.233)))*
- 43758.5453);
- }
- void main() {
- vec2 uv = gl_FragCoord.xy/u_resolution.xy;
- // to make it maintain the same scale for all resolutons (probably)
- // uv.x *= u_resolution.x/u_resolution.y;
- // count of squares
- float count = 3.0;
- // so every square behaves like original UV
- vec2 cell = fract(uv * count);
- // Angle vector, just for getting different rotation
- // angle for every square.
- vec2 angle_v = ceil(uv*count); // it will be (0,1), (2,1), etc
- float angle = 0.0;
- // trying to get 1D value from 2D vector
- angle = (angle_v.x + angle_v.y);
- // angle = random(angle_v);
- // if (angle <= 0.25) {
- // angle = 0.0;
- // } else if (angle <= 0.5) {
- // angle = 3.14 * 0.5;
- // } else if (angle <= 0.75) {
- // angle = 3.14;
- // } else {
- // angle = 3.14 * 1.5;
- // }
- // animate angle
- angle *= sin(3.14*u_time*0.25);
- // rotate cell
- // 1. translate to new origin
- cell = (cell - 0.5);
- // 2. rotate vector
- cell = vec2(
- cell.x*cos(angle) - cell.y*sin(angle)
- , cell.x*sin(angle) + cell.y*cos(angle)
- );
- // 3. translate it back
- cell += 0.5;
- vec3 color = vec3(0.);
- color = vec3(cell.x,cell.y,0.0);
- gl_FragColor = vec4(color,1.0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement