40 lines
No EOL
888 B
GLSL
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;
|
|
} |