// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.


#ifdef IMPELLER_TARGET_OPENGLES

void main() {
  // Instancing is not supported on legacy targets and test will be disabled.
}

#else  // IMPELLER_TARGET_OPENGLES

uniform FrameInfo {
  mat4 mvp;
} frame_info;

readonly buffer InstanceInfo {
  vec4 colors[];
} instance_info;

in vec2 vtx;

out vec4 v_color;

void main () {
  gl_Position = frame_info.mvp *
    vec4(vtx.x + 105.0 * gl_InstanceIndex,
         vtx.y + 105.0 * gl_InstanceIndex,
         0.0,
         1.0);
  v_color = instance_info.colors[gl_InstanceIndex];
}

#endif  // IMPELLER_TARGET_OPENGLES
