#version 330 core #preinclude "light.glsl" out vec4 FragColor; in vec2 in_texture_coords; in vec3 in_frag_pos; in vec3 in_normal; uniform vec3 view_pos; uniform sampler2D input_texture; void main() { vec3 ambient_light = calc_ambient_light(in_texture_coords); vec3 light_direction = normalize(light.position - in_frag_pos); vec3 norm = normalize(in_normal); vec3 diffuse_light = calc_diffuse_light(light_direction, norm, in_texture_coords); vec3 specular_light = calc_specular_light( light_direction, norm, view_pos, in_frag_pos, in_texture_coords ); float attenuation = calc_attenuation(light, in_frag_pos); diffuse_light *= attenuation; specular_light *= attenuation; FragColor = vec4((ambient_light + diffuse_light + specular_light), 1.0); }