summaryrefslogtreecommitdiff
path: root/src/mbgl/shader/circle.vertex.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/shader/circle.vertex.glsl')
-rw-r--r--src/mbgl/shader/circle.vertex.glsl23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mbgl/shader/circle.vertex.glsl b/src/mbgl/shader/circle.vertex.glsl
new file mode 100644
index 0000000000..eeeb30abc5
--- /dev/null
+++ b/src/mbgl/shader/circle.vertex.glsl
@@ -0,0 +1,23 @@
+// set by gl_util
+uniform float u_size;
+
+attribute vec2 a_pos;
+
+uniform mat4 u_matrix;
+uniform mat4 u_exmatrix;
+
+varying vec2 v_extrude;
+
+void main(void) {
+ // unencode the extrusion vector that we snuck into the a_pos vector
+ v_extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);
+
+ vec4 extrude = u_exmatrix * vec4(v_extrude * u_size, 0, 0);
+ // multiply a_pos by 0.5, since we had it * 2 in order to sneak
+ // in extrusion data
+ gl_Position = u_matrix * vec4(a_pos * 0.5, 0, 1);
+
+ // gl_Position is divided by gl_Position.w after this shader runs.
+ // Multiply the extrude by it so that it isn't affected by it.
+ gl_Position += extrude * gl_Position.w;
+}