| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //
- // Vertex shader standard
- //
- #include <attributes>
- // Model uniforms
- uniform mat4 ModelViewMatrix;
- uniform mat3 NormalMatrix;
- uniform mat4 MVP;
- #include <lights>
- #include <material>
- #include <phong_model>
- #include <morphtarget_vertex_declaration>
- #include <bones_vertex_declaration>
- // 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;
- vec3 vPosition = VertexPosition;
- mat4 finalWorld = mat4(1.0);
- #include <morphtarget_vertex>
- #include <bones_vertex>
- gl_Position = MVP * finalWorld * vec4(vPosition, 1.0);
- }
|