aboutsummaryrefslogtreecommitdiffstats
path: root/assets/shaders/glsl100/instancing.vs
diff options
context:
space:
mode:
Diffstat (limited to 'assets/shaders/glsl100/instancing.vs')
-rw-r--r--assets/shaders/glsl100/instancing.vs36
1 files changed, 36 insertions, 0 deletions
diff --git a/assets/shaders/glsl100/instancing.vs b/assets/shaders/glsl100/instancing.vs
new file mode 100644
index 0000000..59d7304
--- /dev/null
+++ b/assets/shaders/glsl100/instancing.vs
@@ -0,0 +1,36 @@
+#version 100
+
+// Input vertex attributes
+attribute vec3 vertexPosition;
+attribute vec2 vertexTexCoord;
+attribute vec3 vertexNormal;
+attribute vec4 vertexColor;
+
+attribute mat4 instanceTransform;
+
+// Input uniform values
+uniform mat4 mvp;
+uniform mat4 matNormal;
+
+// Output vertex attributes (to fragment shader)
+varying vec3 fragPosition;
+varying vec2 fragTexCoord;
+varying vec4 fragColor;
+varying vec3 fragNormal;
+
+// NOTE: Add your custom variables here
+
+void main()
+{
+ // Compute MVP for current instance
+ mat4 mvpi = mvp*instanceTransform;
+
+ // Send vertex attributes to fragment shader
+ fragPosition = vec3(mvpi*vec4(vertexPosition, 1.0));
+ fragTexCoord = vertexTexCoord;
+ fragColor = vertexColor;
+ fragNormal = normalize(vec3(matNormal*vec4(vertexNormal, 1.0)));
+
+ // Calculate final vertex position
+ gl_Position = mvpi*vec4(vertexPosition, 1.0);
+}