summaryrefslogtreecommitdiffhomepage
path: root/shaders/gl330/phong.vs
diff options
context:
space:
mode:
authorvictorfisac <[email protected]>2015-12-21 17:25:22 +0100
committervictorfisac <[email protected]>2015-12-21 17:25:22 +0100
commit1bcb5ddd505e5c4bdac6f254e931e9c3145be88d (patch)
treec71c012feda413d4134a4dd8ac5e7e2bd45b9c61 /shaders/gl330/phong.vs
parent4db2da91850fcc55ec08df253e533e236eb91451 (diff)
downloadraylib-1bcb5ddd505e5c4bdac6f254e931e9c3145be88d.tar.gz
raylib-1bcb5ddd505e5c4bdac6f254e931e9c3145be88d.zip
Added lighting engine module
- New lighting engine module which contains new data types Light and Material. These data types and functions facilitates making a basic 3D iluminated program with a light and a model. - Added lighting engine module example (currently included in raylib.h; it might be compiled by separate and include lighting.h in game source C file). - Corrected some opengl defines control structures and added some TODO to fix raylib-opengl 1.1 source build (note: now source can be compiled without errors, but rlglReadPixels() won't work properly). Note: most of functions of phong version 330 shader are not in v100 shaders, so I couldn't write a version 100 phong shader. These functions are included from version 150.
Diffstat (limited to 'shaders/gl330/phong.vs')
-rw-r--r--shaders/gl330/phong.vs28
1 files changed, 28 insertions, 0 deletions
diff --git a/shaders/gl330/phong.vs b/shaders/gl330/phong.vs
new file mode 100644
index 00000000..25163902
--- /dev/null
+++ b/shaders/gl330/phong.vs
@@ -0,0 +1,28 @@
+#version 330
+
+// Vertex input data
+in vec3 vertexPosition;
+in vec2 vertexTexCoord;
+in vec3 vertexNormal;
+
+// Projection and model data
+uniform mat4 projectionMatrix;
+uniform mat4 modelviewMatrix;
+uniform mat4 modelMatrix;
+
+// Attributes to fragment shader
+out vec2 fragTexCoord;
+out vec3 fragNormal;
+
+void main()
+{
+ // Send texture coord to fragment shader
+ fragTexCoord = vertexTexCoord;
+
+ // Calculate view vector normal from model
+ mat3 normalMatrix = transpose(inverse(mat3(modelMatrix)));
+ fragNormal = normalize(normalMatrix * vertexNormal);
+
+ // Calculate final vertex position
+ gl_Position = projectionMatrix * modelviewMatrix * vec4(vertexPosition, 1.0);
+} \ No newline at end of file