3 layout(location=0) in vec3 aPosition;
4 layout(location=1) in vec3 aNormal;
6 layout(location=0) out vec3 vIllumination;
8 layout(set=0, binding=0, std140) uniform VertData
19 //Visual size and offset
27 vec4 ComputeVertexPosition()
29 vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );
30 float scaleFactor = min( visualSize.x, visualSize.y );
31 vec3 originFlipY = vec3(origin.x, -origin.y, 0.0);
32 vec3 anchorPointFlipY = vec3( anchorPoint.x, -anchorPoint.y, 0.0);
33 vec3 offset = vec3( ( offset / uSize.xy ) * offsetSizeMode.xy + offset * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0);
34 return vec4( (aPosition + anchorPointFlipY)*scaleFactor + (offset + originFlipY)*uSize, 1.0 );
39 vec4 normalisedVertexPosition = ComputeVertexPosition();
40 vec4 vertexPosition = uObjectMatrix * normalisedVertexPosition;
41 vertexPosition = uMvpMatrix * vertexPosition;
43 //Illumination in Model-View space - Transform attributes and uniforms
44 vec4 mvVertexPosition = uModelView * normalisedVertexPosition;
45 vec3 normal = uNormalMatrix * mat3( uObjectMatrix ) * aNormal;
47 vec4 mvLightPosition = vec4( ( lightPosition.xy - uStageOffset ), lightPosition.z, 1.0 );
48 mvLightPosition = uViewMatrix * mvLightPosition;
49 vec3 vectorToLight = normalize( mvLightPosition.xyz - mvVertexPosition.xyz );
51 float lightDiffuse = max( dot( vectorToLight, normal ), 0.0 );
52 vIllumination = vec3( lightDiffuse * 0.5 + 0.5 );
54 gl_Position = vertexPosition;