35 lines
911 B
GLSL
35 lines
911 B
GLSL
#version 460 core
|
|
|
|
in vec2 pass_textureCoords;
|
|
in vec3 surfaceNormal;
|
|
in vec3 worldPos;
|
|
|
|
uniform sampler2D diffuseSampler;
|
|
uniform float opacity;
|
|
uniform float shininess;
|
|
|
|
uniform vec3 lightPosition;
|
|
uniform vec3 lightColor;
|
|
uniform vec3 cameraPosition;
|
|
|
|
out vec4 fragColor;
|
|
|
|
|
|
void main() {
|
|
vec3 normal = normalize(surfaceNormal);
|
|
vec3 lightDir = normalize(lightPosition - worldPos);
|
|
vec3 camDir = normalize(cameraPosition - worldPos);
|
|
vec3 reflectDir = reflect(-lightDir, normal);
|
|
|
|
vec3 ambient = 0.1 * lightColor;
|
|
|
|
float diff = max(dot(normal, lightDir) , 0.0f);
|
|
vec3 diffuse = diff * lightColor;
|
|
|
|
float spec = pow(max(dot(camDir, reflectDir), 0.0), max(shininess, 1.0f));
|
|
vec3 specular = 0.5 * spec * lightColor;
|
|
|
|
vec4 texColor = texture(diffuseSampler, pass_textureCoords);
|
|
fragColor = vec4((ambient + diffuse + specular) * texColor.rgb, texColor.a * opacity);
|
|
|
|
} |