// Copyright 2011 Riccardo Monica

#version 400

layout(triangles) in;
layout(triangle_strip, max_vertices = 3) out;

out vec4 gcolor;
in vec4 tecolor[3];
in vec3 tePosition[3];

uniform float scale;

uniform mat4 projectionmatrix;
uniform mat4 modelviewmatrix;

void main()
  {
  vec3 center = vec3(0.0,0.0,0.0);
  for (int i = 0; i < 3; i++)
    center += tePosition[i];

  center *= 1/3.0;
  center *= (1 - scale);
  
  for (int i = 0; i < 3; i++)
    {
    vec4 pos = vec4(tePosition[i] * scale + center,1.0);
    gl_Position = projectionmatrix * modelviewmatrix * pos;
    gcolor = tecolor[i];
    
    EmitVertex();
    }
    
  EndPrimitive();
  }
