anchor.diff:  var
     vertex_data: packed array[1..8] of GLfloat;
   begin
  +  SetTranslation(x,y);
  +
     SetFragmentColor(RECT_COLOR);
   //  glLineWidth(1);
   
  -  vertex_data[1] := x;
  -  vertex_data[2] := y;
  -  vertex_data[3] := x + dimx;
  -  vertex_data[4] := y;
  -  vertex_data[5] := x + dimx;
  -  vertex_data[6] := y + dimy;
  -  vertex_data[7] := x;
  -  vertex_data[8] := y + dimy;
  -
  +  vertex_data[1] := 0;
  +  vertex_data[2] := 0;
  +  vertex_data[3] := 0 + dimx;
  +  vertex_data[4] := 0;
  +  vertex_data[5] := 0 + dimx;
  +  vertex_data[6] := 0 + dimy;
  +  vertex_data[7] := 0;
  +  vertex_data[8] := 0 + dimy;
  +
  +  glUniformMatrix4fv(GlobalContextState.DefaultTranslateMatrixUniform,1,GL_TRUE,@FTranslateMaxrix.data);
   
     glBindBuffer(GL_ARRAY_BUFFER,GlobalContextState.CoordsBuffer);
     glBufferSubData(GL_ARRAY_BUFFER,0, sizeof(vertex_data),@vertex_data);
  
positive.code:       'outColor = applyFlag(outColor);'+
    '}';
  
    VERTEX_TERRAIN_SHADER =
      SHADER_VERSION+
      'uniform mat4 projMatrix;'#13#10+
      'layout(location = 1) in vec2 coords;'#13#10+
      'struct Tile{'+
      '  uint upper;'+ //packed data     FTerType, FTerSubtype, FRiverType, FRiverDir
      '  uint lower;'+ //packed data     FRoadType, FRoadDir,  FFlags, FOwner
      '};'+
      'layout(location = 2) in Tile tileIn'+
      'out Tile tileOut'+
      'void main(){'+
        'tileOut = tileIn;'+
        'gl_Position = projMatrix * vec4(coords,0.0,1.0);'#13#10+
      '}';
  
  
    GEOMETRY_TERRAIN_SHADER =
      SHADER_VERSION+
      '';
  
  
  type
  
negative.code:   Assert(glIsVertexArray(SpriteVAO[mir]) = GL_TRUE, 'invalid SpriteVAO');
  
    glBindVertexArray(SpriteVAO[mir]);
  
    glUniformMatrix4fv(GlobalContextState.DefaultTranslateMatrixUniform,1,GL_TRUE,@FTranslateMaxrix.data);
  
    glEnableVertexAttribArray(COORDS_ATTRIB_LOCATION);
    glEnableVertexAttribArray(UV_ATTRIB_LOCATION);
  