// // Vertex shader standard // #include // Model uniforms uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVP; #include #include #include // Outputs for the fragment shader. out vec3 ColorFrontAmbdiff; out vec3 ColorFrontSpec; out vec3 ColorBackAmbdiff; out vec3 ColorBackSpec; out vec2 FragTexcoord; void main() { // Transform this vertex normal to camera coordinates. vec3 normal = normalize(NormalMatrix * VertexNormal); // Calculate this vertex position in camera coordinates vec4 position = ModelViewMatrix * vec4(VertexPosition, 1.0); // Calculate the direction vector from the vertex to the camera // The camera is at 0,0,0 vec3 camDir = normalize(-position.xyz); // Calculates the vertex Ambient+Diffuse and Specular colors using the Phong model // for the front and back phongModel(position, normal, camDir, MatAmbientColor, MatDiffuseColor, ColorFrontAmbdiff, ColorFrontSpec); phongModel(position, -normal, camDir, MatAmbientColor, MatDiffuseColor, ColorBackAmbdiff, ColorBackSpec); vec2 texcoord = VertexTexcoord; #if MAT_TEXTURES > 0 // Flips texture coordinate Y if requested. if (MatTexFlipY(0)) { texcoord.y = 1 - texcoord.y; } #endif FragTexcoord = texcoord; gl_Position = MVP * vec4(VertexPosition, 1.0); }