grk_5sem_labs/cw 5/shaders/shader_5_1.frag
2023-11-25 13:34:52 +01:00

37 lines
915 B
GLSL

#version 430 core
uniform vec3 color;
uniform vec3 lightPos;
uniform vec3 lightColor;
uniform vec3 cameraPos;
uniform float time;
uniform float lightExp;
in vec3 vertexNormalOut;
in vec3 vertexPosOut;
out vec4 outColor;
void main()
{
vec3 lightDir = normalize(vertexPosOut - lightPos);
float lightDistance = length(vertexPosOut - lightPos);
vec3 newLightColor = lightColor / pow(lightDistance, 2);
vec3 normalizedVertexNormal = normalize(vertexNormalOut);
float intensity = dot(normalizedVertexNormal, -lightDir);
intensity = max(intensity, 0.0);
vec3 viewDir = normalize(cameraPos - vertexPosOut);
vec3 reflectDir = reflect(lightDir, normalizedVertexNormal);
float glossPow = 8;
float specular = pow(max(dot(viewDir, reflectDir), 0.0), glossPow);
float diffuse = intensity;
outColor = vec4(newLightColor * (color * diffuse + specular ), 1.0);
outColor = 1 - exp(-outColor * lightExp);
}