techkaczynski.dev / code

summaryrefslogtreecommitdiff
path: root/res/sdr/mdl_vtx_lit.vs
diff options
context:
space:
mode:
authortech kaczynski <tk@techkaczynski.dev>2026-09-22 22:38:57 +1000
committertech kaczynski <tk@techkaczynski.dev>2026-09-22 22:38:57 +1000
commit08cb8d6a585dd552b69a488d9db1be123f01467a (patch)
tree77d50ce30bbc102b08486929ba654b5bef70af43 /res/sdr/mdl_vtx_lit.vs
initial commit.
Diffstat (limited to 'res/sdr/mdl_vtx_lit.vs')
-rw-r--r--res/sdr/mdl_vtx_lit.vs64
1 files changed, 64 insertions, 0 deletions
diff --git a/res/sdr/mdl_vtx_lit.vs b/res/sdr/mdl_vtx_lit.vs
new file mode 100644
index 0000000..c69cb3d
--- /dev/null
+++ b/res/sdr/mdl_vtx_lit.vs
@@ -0,0 +1,64 @@
+#version 330
+
+in vec3 vertexPosition;
+in vec2 vertexTexCoord;
+in vec3 vertexNormal;
+in vec4 vertexColor;
+
+uniform mat4 mvp;
+uniform mat4 matNormal;
+
+uniform vec3 sun_direction;
+uniform vec3 sun_colour;
+uniform float sun_intensity;
+
+uniform vec3 moon_direction;
+uniform vec3 moon_colour;
+uniform float moon_intensity;
+
+uniform vec3 ambient_colour;
+uniform float ambient_intensity;
+
+out vec2 frag_texcoord;
+out vec4 frag_colour;
+out vec3 frag_lighting;
+
+void
+main() {
+ vec3 world_normal = normalize(
+ (matNormal * vec4(vertexNormal, 0.0)).xyz
+ );
+
+ float sun_diffuse = max(
+ dot(world_normal, sun_direction),
+ 0.0
+ );
+
+ float moon_diffuse = max(
+ dot(world_normal, moon_direction),
+ 0.0
+ );
+
+ vec3 ambient_light =
+ ambient_colour * ambient_intensity;
+
+ vec3 sun_light =
+ sun_colour *
+ sun_intensity *
+ sun_diffuse;
+
+ vec3 moon_light =
+ moon_colour *
+ moon_intensity *
+ moon_diffuse;
+
+ frag_lighting =
+ ambient_light +
+ sun_light +
+ moon_light;
+
+ frag_texcoord = vertexTexCoord;
+ frag_colour = vertexColor;
+
+ gl_Position = mvp * vec4(vertexPosition, 1.0);
+}