Skip to content

Instantly share code, notes, and snippets.

@definev
Created July 1, 2023 04:44
Show Gist options
  • Select an option

  • Save definev/c9a5746869993e1087da79df4e9bdf0c to your computer and use it in GitHub Desktop.

Select an option

Save definev/c9a5746869993e1087da79df4e9bdf0c to your computer and use it in GitHub Desktop.
Piet Mondrian painting.
// Author: Bui Dai Duong (@definev)
// Title: Piet Mondrian
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
vec3 draw_rectangle(
vec2 st,
vec2 pivot,
float width,
float height
) {
vec2 bl = step(vec2(pivot), st);
vec2 tr = step(vec2(1.0 - pivot - vec2(width, height)), 1. - st);
return vec3(bl.x * bl.y * tr.x * tr.y);
}
void main() {
vec2 st = gl_FragCoord.xy/u_resolution.xy;
st.x *= u_resolution.x/u_resolution.y;
vec3 color = vec3(0.);
color = draw_rectangle(st, vec2(0.0), 0.2, 0.58);
color += draw_rectangle(st, vec2(0.0, 0.6), 0.08, 0.19) * vec3(0.630,0.183,0.129);
color += draw_rectangle(st, vec2(0.1, 0.6), 0.2-0.1, 0.19) * vec3(0.630,0.183,0.129);
color += draw_rectangle(st, vec2(0.0, 0.81), 0.08, 0.19) * vec3(0.630,0.183,0.129);
color += draw_rectangle(st, vec2(0.1, 0.81), 0.2-0.1, 0.19) * vec3(0.630,0.183,0.129);
color += draw_rectangle(st, vec2(0.22, 0.81), 0.5, 0.19);
color += draw_rectangle(st, vec2(0.74, 0.81), 0.18, 0.19);
color += draw_rectangle(st, vec2(0.94, 0.81), 0.18, 0.19) * vec3(0.890,0.839,0.251);
color += draw_rectangle(st, vec2(0.22, 0.81 - 0.21), 0.5, 0.19);
color += draw_rectangle(st, vec2(0.74, 0.81 - 0.21), 0.18, 0.19);
color += draw_rectangle(st, vec2(0.94, 0.81 - 0.21), 0.18, 0.19) * vec3(0.890,0.839,0.251);
color += draw_rectangle(st, vec2(0.22, 0.1), 0.5, 0.48);
color += draw_rectangle(st, vec2(0.74, 0.1), 0.18, 0.48);
color += draw_rectangle(st, vec2(0.94, 0.1), 0.18, 0.48);
color += draw_rectangle(st, vec2(0.22, 0.0), 0.5, 0.08);
color += draw_rectangle(st, vec2(0.74, 0.0), 0.18, 0.08) * vec3(0.273,0.465,0.875);
color += draw_rectangle(st, vec2(0.94, 0.0), 0.18, 0.08) * vec3(0.273,0.465,0.875);
gl_FragColor = vec4(color,1.0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment