diff options
Diffstat (limited to 'res/sdr/mdl_foliage.vs')
| -rw-r--r-- | res/sdr/mdl_foliage.vs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/res/sdr/mdl_foliage.vs b/res/sdr/mdl_foliage.vs new file mode 100644 index 0000000..db9d7b6 --- /dev/null +++ b/res/sdr/mdl_foliage.vs @@ -0,0 +1,43 @@ +#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; + +uniform vec2 uv_tiling; +uniform vec2 uv_offset; + +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 = abs(dot(world_normal, sun_direction)); + float moon_diffuse = abs(dot(world_normal, moon_direction)); + + 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 * uv_tiling + uv_offset; + frag_colour = vertexColor; + + gl_Position = mvp * vec4(vertexPosition, 1.0); +} |
