Files
somaesque-native/assets/shaders/phong-solid.fragment.glsl
Daniel Ledda 2daee71548 update
2025-01-04 22:51:33 +01:00

31 lines
925 B
GLSL

#version 330 core
out vec4 frag_color;
uniform vec3 light_pos;
uniform vec3 solid_color;
in vec3 normal;
in vec3 frag_position;
void main() {
vec3 light_color = vec3(1, 1, 1);
vec3 light_direction_norm = normalize(light_pos - frag_position);
vec3 normal_norm = normalize(normal);
vec3 eyes = vec3(1, 1, 0);
float ambient_strength = 0.1;
vec3 ambient = ambient_strength * light_color;
float diff = max(dot(normal_norm, light_direction_norm), 0.0);
vec3 diffuse = diff * light_color;
float specular_strength = 0.5;
vec3 view_direction_norm = normalize(eyes - frag_position);
vec3 reflect_dir = reflect(-light_direction_norm, normal_norm);
float spec = pow(max(dot(view_direction_norm, reflect_dir), 0.0), 32);
vec3 specular = specular_strength * spec * light_color;
vec3 result = (ambient + diffuse + specular) * solid_color;
frag_color = vec4(result, 1.0);
}