engine/test/res/shaders/basic.frag

38 lines
817 B
GLSL
Raw Normal View History

2022-11-07 20:15:26 +00:00
#version 330
uniform float ambientStrength;
uniform vec3 ambientColor;
uniform vec3 lightColor;
uniform vec3 emission;
uniform vec3 baseColor;
uniform sampler2D tex;
in vec3 f_Pos;
in vec3 f_Norm;
in vec2 f_UV;
in vec3 f_lightPos;
out vec4 FragColor;
void main() {
vec3 norm = normalize(f_Norm);
vec3 lightDir = normalize(f_lightPos - f_Pos);
vec3 diffuse = max(dot(norm, lightDir), 0.0) * lightColor;
vec3 ambient = ambientColor * ambientStrength;
vec3 viewDir = normalize(-f_Pos);
vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
vec3 specular = 0.5 * spec * lightColor;
vec3 lighting = min(diffuse + ambient + specular, 1.0);
FragColor = min( ( vec4(baseColor, 1.0) * texture(tex, f_UV) ) * vec4(lighting + emission, 1.0), vec4(1.0));
}