R""(

// has to be called this for VGL to fill it in automatically
uniform float4x4 gl_ModelViewProjectionMatrix;

void main(
    float3 inPosition
#if ATTR_COLOR
  , float4 inColor
#endif
#if ATTR_NORMAL
  , float3 inNormal
#endif
#if ATTR_TEXCOORD0
  , float2 inTexCoord0
#endif
#if ATTR_TEXCOORD1
  , float2 inTexCoord1
#endif
  , float4 out vPosition : POSITION
#if ATTR_COLOR
  , float4 out vColor : COLOR
#endif
#if ATTR_TEXCOORD0
  , float2 out vTexCoord0 : TEXCOORD0
#endif
#if ATTR_TEXCOORD1
  , float2 out vTexCoord1 : TEXCOORD1
#endif
#if ATTR_NORMAL
  , float3 out vNormal : TEXCOORD2
#endif
) {
  vPosition = mul(gl_ModelViewProjectionMatrix, float4(inPosition, 1.f));
#if ATTR_COLOR
  vColor = inColor;
#endif
#if ATTR_NORMAL
  vNormal = inNormal;
#endif
#if ATTR_TEXCOORD0
  vTexCoord0 = inTexCoord0;
#endif
#if ATTR_TEXCOORD1
  vTexCoord1 = inTexCoord1;
#endif
}

)""