diff options
Diffstat (limited to 'engine/light.glsl')
| -rw-r--r-- | engine/light.glsl | 133 | 
1 files changed, 0 insertions, 133 deletions
| diff --git a/engine/light.glsl b/engine/light.glsl deleted file mode 100644 index 1bc23a4..0000000 --- a/engine/light.glsl +++ /dev/null @@ -1,133 +0,0 @@ -#version 330 core - -#ifndef LIGHT_GLSL -#define LIGHT_GLSL - -#preinclude "vertex_data.glsl" - -struct Material -{ -	vec3 ambient; -	vec3 diffuse; -	vec3 specular; -	sampler2D ambient_map; -	sampler2D diffuse_map; -	sampler2D specular_map; -	float shininess; -}; - -struct LightPhong -{ -	vec3 diffuse; -	vec3 specular; -}; - -struct AttenuationProperties -{ -	float constant; -	float linear; -	float quadratic; -}; - -struct PointLight -{ -	LightPhong phong; -	vec3 position; -	AttenuationProperties attenuation_props; -}; - -struct DirectionalLight -{ -	LightPhong phong; -	vec3 direction; -}; - -struct CalculatedLight -{ -	vec3 diffuse; -	vec3 specular; -}; - -vec3 calc_ambient_light(in Material material, in vec2 texture_coords) -{ -	return vec3(texture(material.ambient_map, texture_coords)) * material.ambient; -} - -vec3 calc_diffuse_light( -	in Material material, -	in LightPhong light_phong, -	in vec3 light_dir, -	in vec3 norm, -	in vec2 texture_coords -) -{ -	float diff = max(dot(norm, light_dir), 0.0); - -	return light_phong.diffuse * ( -		diff * (vec3(texture(material.diffuse_map, texture_coords)) * material.diffuse) -	); -} - -vec3 calc_specular_light( -	in Material material, -	in LightPhong light_phong, -	in vec3 light_dir, -	in vec3 norm, -	in vec3 view_pos, -	in vec3 frag_pos, -	in vec2 texture_coords -) -{ -	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), material.shininess); - -	return light_phong.specular * ( -		spec * (vec3(texture(material.specular_map, texture_coords)) * material.specular) -	); -} - -float calc_attenuation(in PointLight point_light, in vec3 position) -{ -	float light_distance = length(point_light.position - position); - -	return 1.0 / (point_light.attenuation_props.constant -		+ point_light.attenuation_props.linear -		* light_distance + point_light.attenuation_props.quadratic -		* pow(light_distance, 2)); -} - -void calc_light( -	in vec3 light_direction, -	in LightPhong light_phong, -	in VertexData vertex_data, -	in vec3 view_pos, -	in Material material, -	out CalculatedLight calculated_light -) -{ -	vec3 norm = normalize(vertex_data.world_space_normal); - -	calculated_light.diffuse = calc_diffuse_light( -		material, -		light_phong, -		light_direction, -		norm, -		vertex_data.texture_coords -	); - -	calculated_light.specular = calc_specular_light( -		material, -		light_phong, -		light_direction, -		norm, -		view_pos, -		vertex_data.world_space_pos, -		vertex_data.texture_coords -	); -} - -#endif | 
