summaryrefslogtreecommitdiff
path: root/data/shaders/sprite-vertex.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'data/shaders/sprite-vertex.glsl')
-rw-r--r--data/shaders/sprite-vertex.glsl26
1 files changed, 26 insertions, 0 deletions
diff --git a/data/shaders/sprite-vertex.glsl b/data/shaders/sprite-vertex.glsl
new file mode 100644
index 0000000..d6efd3f
--- /dev/null
+++ b/data/shaders/sprite-vertex.glsl
@@ -0,0 +1,26 @@
+#version 120
+
+uniform mat4 projection;
+uniform vec2 position;
+uniform vec2 anchor;
+uniform vec2 scale;
+uniform float rotation;
+
+void main(void) {
+ mat4 rotationMatrix = mat4(cos(rotation), -sin(rotation), 0.0, 0.0,
+ sin(rotation), cos(rotation), 0.0, 0.0,
+ 0.0, 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0, 1.0);
+ mat4 translationMatrix = mat4(1.0, 0.0, 0.0, position.x - anchor.x,
+ 0.0, 1.0, 0.0, position.y - anchor.y,
+ 0.0, 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0, 1.0);
+ mat4 scaleMatrix = mat4(scale.x, 0.0, 0.0, 0.0,
+ 0.0, scale.y, 0.0, 0.0,
+ 0.0, 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0, 1.0);
+
+ gl_Position = projection * (gl_Vertex * scaleMatrix *
+ rotationMatrix * translationMatrix);
+ gl_TexCoord[0] = gl_MultiTexCoord0;
+}