aboutsummaryrefslogtreecommitdiff
path: root/data/shaders/ideas-lamp-lit.vert
diff options
context:
space:
mode:
Diffstat (limited to 'data/shaders/ideas-lamp-lit.vert')
-rw-r--r--data/shaders/ideas-lamp-lit.vert28
1 files changed, 28 insertions, 0 deletions
diff --git a/data/shaders/ideas-lamp-lit.vert b/data/shaders/ideas-lamp-lit.vert
new file mode 100644
index 0000000..8098ce4
--- /dev/null
+++ b/data/shaders/ideas-lamp-lit.vert
@@ -0,0 +1,28 @@
+uniform mat4 projection;
+uniform mat4 modelview;
+uniform mat3 normalMatrix;
+varying vec3 vertex_normal;
+varying vec4 vertex_position;
+varying vec3 eye_direction;
+attribute vec3 vertex;
+attribute vec3 normal;
+
+vec3 unitvec(vec4 v1, vec4 v2)
+{
+ if (v1.w == 0.0 && v2.w == 0.0)
+ return vec3(v2 - v1);
+ if (v1.w == 0.0)
+ return vec3(-v1);
+ if (v2.w == 0.0)
+ return vec3(v2);
+ return v2.xyz/v2.w - v1.xyz/v1.w;
+}
+
+void main()
+{
+ vec4 curVertex = vec4(vertex.x, vertex.y, vertex.z, 1.0);
+ gl_Position = projection * modelview * curVertex;
+ vertex_normal = normalMatrix * normal;
+ vertex_position = modelview * curVertex;
+ eye_direction = normalize(unitvec(vertex_position, vec4(0.0, 0.0, 0.0, 1.0)));
+}