// Copyright 2011 Riccardo Monica

#version 400

layout(vertices = 3) out;

in vec3 vPosition[];
in vec3 vNormal[];
in vec4 vColor[];
in float vmatshininess[];
in vec3 vmatspecular[];
out vec3 tcPosition[];
out vec3 tcNormal[];
out vec4 tcColor[];
out float tcmatshininess[];
out vec3 tcmatspecular[];
uniform float tesslevelinner;
uniform float tesslevelouter;

#define ID gl_InvocationID

void main()
  {
  tcPosition[ID] = vPosition[ID];
  tcNormal[ID] = vNormal[ID];
  tcColor[ID] = vColor[ID];
  tcmatshininess[ID] = vmatshininess[ID];
  tcmatspecular[ID] = vmatspecular[ID];
  if (ID == 0)
    {
    gl_TessLevelInner[0] = tesslevelinner;
    gl_TessLevelOuter[0] = tesslevelouter;
    gl_TessLevelOuter[1] = tesslevelouter;
    gl_TessLevelOuter[2] = tesslevelouter;
    }
  }
