3 layout( location = 0 ) in vec2 aPosition;
5 layout( set = 0, binding = 0, std140 ) uniform vertData
7 mat4 uModelMatrix; // 0
8 mat4 uViewMatrix; // 64
9 mat4 uProjection; // 128
11 vec4 pixelArea; // 204
12 float uPixelAligned; // 220
14 //Visual size and offset
17 vec4 offsetSizeMode; // 240
19 vec2 anchorPoint; // 264
23 layout( location = 0 ) out vec2 vTexCoord;
25 vec4 ComputeVertexPosition()
27 vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );
28 vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);
29 return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );
34 vec4 vertexPosition = uViewMatrix * uModelMatrix * ComputeVertexPosition();
35 vec4 alignedVertexPosition = vertexPosition;
36 alignedVertexPosition.xy = floor ( vertexPosition.xy ); // Pixel alignment
37 vertexPosition = uProjection * mix( vertexPosition, alignedVertexPosition, uPixelAligned );
38 vTexCoord = pixelArea.xy+pixelArea.zw*(aPosition + vec2(0.5) );
39 gl_Position = vertexPosition;