CGI/common/glsl/mesh.frag
2018-09-06 14:35:43 +02:00

40 lines
No EOL
888 B
GLSL

#version 130
in vec4 normalViewSpace;
in vec4 posViewSpace;
in vec4 vertexColor;
in vec2 vertexTexCoords;
out vec4 outColor;
uniform vec4 color;
uniform bool flatShading;
uniform bool perVertexColor;
uniform bool visualizeTexCoords;
void main()
{
vec3 normal = normalize(normalViewSpace.xyz);
if(flatShading)
normal = normalize(cross(dFdx(posViewSpace.xyz), dFdy(posViewSpace.xyz)));
vec3 toLight = normalize(-posViewSpace.xyz);
float diffuse = abs(dot(normal, toLight));
float specular = pow(diffuse, 20);
if(!gl_FrontFacing)
diffuse *= 0.5;
vec4 materialColor = perVertexColor ? vertexColor : color;
if(visualizeTexCoords)
{
int cellId = (int(20 * vertexTexCoords.x) + int(20 * vertexTexCoords.y));
if(cellId % 2 != 0)
materialColor.xyz *= 0.3;
}
outColor = diffuse * materialColor + specular * vec4(0.5, 0.5, 0.5, 0);
outColor.a = 1;
}