//
// surfacecurve-shaderbuilder generated vertex shader
//
//
precision mediump float;

uniform mat4 unifModelMatrix;       // object -> world coordinates
uniform mat4 unifViewMatrix;        // world -> view coordinates
uniform mat4 unifProjMatrix;        // view -> eye coordinates
uniform mat3 unifNormalMatrix;      // object -> world vectors

attribute vec3 vertPosition;
attribute vec3 vertNormal;

varying vec3 fragPositionWc;
varying vec3 fragPositionOc;
varying vec4 fragPositionEc;
varying vec3 fragNormalEc;

void main () 
{
    fragPositionOc = vertPosition;
    vec4 positionWc = unifModelMatrix * vec4(vertPosition, 1.0);     
    fragPositionWc = positionWc.xyz;
    fragPositionEc = unifProjMatrix * unifViewMatrix * positionWc;
    
    fragNormalEc = normalize(unifNormalMatrix * vertNormal);
    
    gl_Position = fragPositionEc;
}
    