aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-01-02 19:39:43 +0000
committerYann Herklotz <git@yannherklotz.com>2021-01-02 19:39:43 +0000
commit9b918ae03cdbeccd610d9cec6665ca0d8dd0bfad (patch)
tree3fd0e214667fd8bc589aa748ae8f245471269937
parent5d558623f359340416e386b3bd93ee9c1e3f4ad8 (diff)
downloadVivant-9b918ae03cdbeccd610d9cec6665ca0d8dd0bfad.tar.gz
Vivant-9b918ae03cdbeccd610d9cec6665ca0d8dd0bfad.zip
Add shaders for lighting
-rw-r--r--shaders/phong.frag.glsl20
-rw-r--r--shaders/phong.vert.glsl17
-rw-r--r--shaders/triangle.frag.glsl (renamed from shaders/triangle.frag)2
-rw-r--r--shaders/triangle.vert.glsl (renamed from shaders/triangle.vert)6
4 files changed, 41 insertions, 4 deletions
diff --git a/shaders/phong.frag.glsl b/shaders/phong.frag.glsl
new file mode 100644
index 0000000..a1a0645
--- /dev/null
+++ b/shaders/phong.frag.glsl
@@ -0,0 +1,20 @@
+#version 330 core
+
+in vec3 o_normal;
+in vec3 o_frag_pos;
+
+out vec4 fragColour;
+
+uniform vec3 light_pos;
+
+void main() {
+ vec3 ambient = vec3(0.2, 0.2, 0.2);
+ vec3 light_colour = vec3(1.0, 1.0, 1.0);
+ vec3 object_colour = vec3(0.5, 0.2, 0.8);
+ vec3 norm = normalize(o_normal);
+ vec3 light_dir = normalize(light_pos - o_frag_pos);
+ float diff = max(dot(norm, light_dir), 0.0);
+ vec3 diffuse = diff * light_colour;
+ vec3 result = (ambient + diffuse) * object_colour;
+ fragColour = vec4(result, 1.0);
+}
diff --git a/shaders/phong.vert.glsl b/shaders/phong.vert.glsl
new file mode 100644
index 0000000..589ccbe
--- /dev/null
+++ b/shaders/phong.vert.glsl
@@ -0,0 +1,17 @@
+#version 330 core
+
+in vec3 position;
+in vec3 normal;
+
+out vec3 o_normal;
+out vec3 o_frag_pos;
+
+uniform mat4 model;
+uniform mat4 view;
+uniform mat4 projection;
+
+void main() {
+ gl_Position = projection * view * model * vec4(position, 1.0);
+ o_normal = normal;
+ o_frag_pos = vec3(model * vec4(position, 1.0));
+}
diff --git a/shaders/triangle.frag b/shaders/triangle.frag.glsl
index 23f2f59..4a7400f 100644
--- a/shaders/triangle.frag
+++ b/shaders/triangle.frag.glsl
@@ -1,4 +1,4 @@
-#version 150
+#version 330 core
uniform vec4 ourColour;
diff --git a/shaders/triangle.vert b/shaders/triangle.vert.glsl
index 939f4a4..8ce4dc9 100644
--- a/shaders/triangle.vert
+++ b/shaders/triangle.vert.glsl
@@ -1,13 +1,13 @@
-#version 150
+#version 330 core
in vec3 position;
+out vec4 colour;
+
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
-out vec4 colour;
-
void main()
{
gl_Position = projection * view * model * vec4(position, 1.0);