title: texture atlas tiling
body: <p>i'm trying simple texture splatting on ios opengl es 2.0 (ipad).  I have 4 tiled textures in pvrt compressed atlas (2x2 tiles).  4 single textures on 4 texture units was terribly slow.  </p>
  
  <p>vertex shader:</p>
  
  <pre><code>attribute lowp vec4 position;
  attribute lowp vec2 tex0;
  varying lowp vec2 surfCoord;
  uniform mat4 projection_modelview;
  uniform lowp float uv_coef;
  
  varying lowp vec2 texCoord1;
  varying lowp vec2 texCoord2;
  varying lowp vec2 texCoord3;
  varying lowp vec2 texCoord4;
  
  void main()
  {
    gl_Position = projection_modelview * position;
    vec2 texCoord = fract(vec2(position.x / uv_coef, position.y / uv_coef));
    texCoord1 = texCoord * 0.5;
    texCoord2 = texCoord1 + vec2(0.5, 0);
    texCoord3 = texCoord1 + vec2(0, 0.5);
    texCoord4 = texCoord1 + vec2(0.5, 0.5);
    surfCoord = tex0;
  }
  </code></pre>
  
  <p>fragment shader:</p>
  
  <pre><code>uniform sampler2D texture0;    // surface alpha map
  uniform sampler2D texture1;    // atlas
  varying lowp vec2 surfCoord;
  varying lowp vec2 texCoord1;
  varying lowp vec2 texCoord2;
  varying lowp vec2 texCoord3;
  varying lowp vec2 texCoord4;
  
  void main()
  {
    lowp vec4 surfTexel = texture2D(texture0, surfCoord);
    lowp vec4 texel1 = texture2D(texture1, texCoord1);
    lowp vec4 texel2 = texture2D(texture1, texCoord2);
    lowp vec4 texel3 = texture2D(texture1, texCoord3);
    lowp vec4 texel4 = texture2D(texture1, texCoord4);
  
    texel1 *= surfTexel.r;
    texel2 = mix(texel1, texel2, surfTexel.g);
    texel3 = mix(texel2, texel3, surfTexel.b);
    gl_FragColor = mix(texel3, texel4, surfTexel.a);
  }
  </code></pre>
  
  <p>shows this one:</p>
  
  <p><a href="https://i.stack.imgur.com/kHwDj.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/kHwDj.jpg" alt="a surface"></a><br>
  <sub>(source: <a href="http://inputwish.com/el/surface.png" rel="nofollow noreferrer">inputwish.com</a>)</sub>  </p>
  
  <p>My problem is probably texture unit interpolators but i don't how to resolve.  I don't see mistake in my shaders.  Any advice please?</p>