- {\n
- highp vec4 vertexPosition = vec4(aPosition*uSize.xy, 0.0, 1.0);\n
- vertexPosition = uViewMatrix * uModelMatrix * vertexPosition ;\n
- vertexPosition.x = floor( vertexPosition.x ) + 0.5;
- vertexPosition.y = floor( vertexPosition.y ) + 0.5;
- float smallTextPadding = max(uSize.x - uTextureSize.x, 0. );\n
- float gap = max( uGap, smallTextPadding );\n
- float delta = floor ( uDelta ) + 0.5;
- vTexCoord.x = ( delta + ( uRtl * ( uTextureSize.x - uSize.x ) ) + ( aPosition.x * uSize.x ) )/ ( uTextureSize.x + gap );\n
- vTexCoord.y = ( 0.5 + floor( aPosition.y * uSize.y ) )/ ( uTextureSize.y ) ;\n
- vRatio = uTextureSize.x / ( uTextureSize.x + gap );\n
- gl_Position = uProjection * vertexPosition;
- }\n
+ mediump vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy );\n
+ mediump vec2 visualSize = mix( uSize.xy * size, size, offsetSizeMode.zw );\n
+ \n
+ mediump float smallTextPadding = max( visualSize.x - uTextureSize.x, 0. );\n
+ mediump float gap = max( uGap, smallTextPadding );\n
+ mediump float delta = floor ( uDelta ) + 0.5;\n
+ vTexCoord.x = ( delta + uHorizontalAlign * ( uTextureSize.x - visualSize.x ) + floor( aPosition.x * visualSize.x ) + 0.5 - gap * 0.5 ) / ( uTextureSize.x + gap ) + 0.5;\n
+ vTexCoord.y = ( uVerticalAlign * ( uTextureSize.y - visualSize.y ) + floor( aPosition.y * visualSize.y ) + 0.5 ) / ( uTextureSize.y ) + 0.5;\n
+ vRatio = uTextureSize.x / ( uTextureSize.x + gap );\n
+ \n
+ mediump vec4 vertexPosition = vec4( floor( ( aPosition + anchorPoint ) * visualSize + ( visualOffset + origin ) * uSize.xy ), 0.0, 1.0 );\n
+ mediump vec4 nonAlignedVertex = uViewMatrix * uModelMatrix * vertexPosition;\n
+ mediump vec4 pixelAlignedVertex = vec4 ( floor( nonAlignedVertex.xyz ), 1.0 );\n
+ \n
+ gl_Position = uProjection * pixelAlignedVertex;\n