aboutsummaryrefslogtreecommitdiffstats
path: root/shaders/rect.vert
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-12-07 21:42:52 +0100
committerDavid Robillard <d@drobilla.net>2019-12-11 23:18:51 +0100
commitad39159e3ada8086ad8385226c0361f4ff51f90d (patch)
tree1c483cac5f63e8dd2e90477992f77418654434c4 /shaders/rect.vert
parent47b8e416954e499247cc4bb002496c4d8aa1a808 (diff)
downloadpugl-ad39159e3ada8086ad8385226c0361f4ff51f90d.tar.gz
pugl-ad39159e3ada8086ad8385226c0361f4ff51f90d.tar.bz2
pugl-ad39159e3ada8086ad8385226c0361f4ff51f90d.zip
GL3 Test: Use instancing
Diffstat (limited to 'shaders/rect.vert')
-rw-r--r--shaders/rect.vert24
1 files changed, 20 insertions, 4 deletions
diff --git a/shaders/rect.vert b/shaders/rect.vert
index de74fa7..bf2e951 100644
--- a/shaders/rect.vert
+++ b/shaders/rect.vert
@@ -3,16 +3,32 @@
/* The vertex shader is trivial, but forwards scaled UV coordinates (in pixels)
to the fragment shader for drawing the border. */
-uniform mat4 MVP;
-uniform vec2 u_size;
+uniform mat4 u_projection;
-in vec2 v_position;
+layout(location = 0) in vec2 v_position;
+layout(location = 1) in vec2 v_origin;
+layout(location = 2) in vec2 v_size;
+layout(location = 3) in vec4 v_fillColor;
noperspective out vec2 f_uv;
+noperspective out vec2 f_size;
+noperspective out vec4 f_fillColor;
void
main()
{
- f_uv = v_position * u_size;
+ // clang-format off
+ mat4 m = mat4(v_size[0], 0.0, 0.0, 0.0,
+ 0.0, v_size[1], 0.0, 0.0,
+ 0.0, 0.0, 1.0, 0.0,
+ v_origin[0], v_origin[1], 0.0, 1.0);
+ // clang-format on
+
+ mat4 MVP = u_projection * m;
+
+ f_uv = v_position * v_size;
+ f_size = v_size;
+ f_fillColor = v_fillColor;
+
gl_Position = MVP * vec4(v_position, 0.0, 1.0);
}