summaryrefslogtreecommitdiff
path: root/source/lessons/models/shaders/model/model.vs.glsl
diff options
context:
space:
mode:
authortalha <talha@talhaamir.xyz>2024-03-31 18:22:14 +0500
committertalha <talha@talhaamir.xyz>2024-03-31 18:22:14 +0500
commit02077305a5b63fcf7242ac909d8caed5cc3cf18f (patch)
tree9940db9786f9496e3a3a872955591c21b433632f /source/lessons/models/shaders/model/model.vs.glsl
parent82de1ef9f3d7fd9268af7de92bfc929f48f5b3bb (diff)
Completed lighting, Model loading
Diffstat (limited to 'source/lessons/models/shaders/model/model.vs.glsl')
-rw-r--r--source/lessons/models/shaders/model/model.vs.glsl25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/lessons/models/shaders/model/model.vs.glsl b/source/lessons/models/shaders/model/model.vs.glsl
new file mode 100644
index 0000000..da394cf
--- /dev/null
+++ b/source/lessons/models/shaders/model/model.vs.glsl
@@ -0,0 +1,25 @@
+#version 330 core
+layout(location=0) in vec3 aPos;
+layout(location=1) in vec3 aNormal;
+layout(location=2) in vec2 aTex;
+
+uniform mat4 Model;
+uniform mat4 View;
+uniform mat4 Projection;
+
+out vec2 TexCoords;
+out vec3 VertexWorldPos;
+out vec3 FragNormal;
+
+// @note: I still do not fully understand how the FragNormal calculation works. Need to make sure I intuitively
+// get that
+
+void main() {
+ gl_Position = Projection*View*Model*vec4(aPos, 1.0);
+
+ VertexWorldPos = vec3(Model * vec4(aPos, 1.0));
+ FragNormal = mat3(transpose(inverse(Model))) * aNormal;
+ FragNormal = normalize(FragNormal);
+ TexCoords = aTex;
+};
+