diff options
Diffstat (limited to 'res/sdr/mdl_vtx_lit.vs')
| -rw-r--r-- | res/sdr/mdl_vtx_lit.vs | 64 |
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); +} |
