diff options
Diffstat (limited to 'engine/light.glsl')
| -rw-r--r-- | engine/light.glsl | 34 | 
1 files changed, 34 insertions, 0 deletions
| diff --git a/engine/light.glsl b/engine/light.glsl new file mode 100644 index 0000000..3f1c601 --- /dev/null +++ b/engine/light.glsl @@ -0,0 +1,34 @@ +#version 330 core + +uniform vec3 light_color; +uniform vec3 light_pos; + +uniform float ambient_light_strength; +uniform float specular_light_strength; + +uniform uint specular_shininess; + +vec3 calc_diffuse_light(in vec3 light_dir, in vec3 norm) +{ +	float diff = max(dot(norm, light_dir), 0.0); + +	return diff * light_color; +} + +vec3 calc_specular_light( +	in vec3 light_dir, +	in vec3 norm, +	in vec3 view_pos, +	in vec3 frag_pos +) +{ +	vec3 view_direction = normalize(view_pos - frag_pos); + +	vec3 reflect_direction = reflect(-light_dir, norm); +	 +	float spec = +		pow(max(dot(view_direction, reflect_direction), 0.0), specular_shininess); + +	return specular_light_strength * spec * light_color; +} + | 
