25 lines
602 B
GLSL
25 lines
602 B
GLSL
#version 330 core
|
|
in vec3 vNormal;
|
|
in vec3 vWorldPos;
|
|
|
|
uniform vec3 uBaseColor;
|
|
uniform vec3 uLightDir;
|
|
uniform vec3 uViewPos;
|
|
|
|
out vec4 fragColor;
|
|
|
|
void main() {
|
|
vec3 normal = normalize(vNormal);
|
|
vec3 lightDir = normalize(-uLightDir);
|
|
|
|
float diffuse = max(dot(normal, lightDir), 0.0);
|
|
float ambient = 0.12;
|
|
|
|
vec3 viewDir = normalize(uViewPos - vWorldPos);
|
|
vec3 halfway = normalize(lightDir + viewDir);
|
|
float specular = pow(max(dot(normal, halfway), 0.0), 32.0) * 0.3;
|
|
|
|
vec3 color = uBaseColor * (ambient + diffuse) + vec3(specular);
|
|
fragColor = vec4(color, 1.0);
|
|
}
|