30 lines
729 B
GLSL
30 lines
729 B
GLSL
#version 400 core
|
|
|
|
in vec2 pass_textureCoords;
|
|
in vec3 surfaceNormal;
|
|
in vec3 toLightVector;
|
|
|
|
out vec4 outColor;
|
|
|
|
uniform sampler2D textureSampler;
|
|
uniform vec3 lightColor;
|
|
|
|
uniform vec3 ghostColor;
|
|
uniform float pulse;
|
|
uniform bool ghostMode;
|
|
|
|
void main(void) {
|
|
vec3 unitNormal = normalize(surfaceNormal);
|
|
vec3 unitToLightDir = normalize(toLightVector);
|
|
|
|
float cosTheta = dot(unitNormal, unitToLightDir);
|
|
float brightness = max(cosTheta, 0.2);
|
|
vec3 diffuse = brightness * lightColor;
|
|
|
|
vec4 finalColor = vec4(diffuse, 1.0f) * texture(textureSampler, pass_textureCoords);
|
|
if(ghostMode) {
|
|
finalColor = vec4(mix(finalColor.xyz, ghostColor, 0.5) * pulse, 1.0f);
|
|
}
|
|
|
|
outColor = finalColor;
|
|
} |