// this file is autogenerated using stringify.bat (premake --stringify) in the
// build folder of this project
static const char* projectiveTextureInstancingFragmentShader =
    "#version 330 core\n"
    "//precision highp float;\n"
    "in Fragment\n"
    "{\n"
    "     vec4 color;\n"
    "} fragment;\n"
    "uniform sampler2D Diffuse;\n"
    "uniform mat4 ViewMatrixInverse;\n"
    "uniform mat4 TextureMVP;\n"
    "in vec3 lightPos,cameraPosition, normal,ambient;\n"
    "in vec4 vertexPos;\n"
    "in float materialShininess;\n"
    "in vec3 lightSpecularIntensity;\n"
    "in vec3 materialSpecularColor;\n"
    "out vec4 color;\n"
    "void main(void)\n"
    "{\n"
    "    vec4 projcoords = TextureMVP * vertexPos;\n"
    "    vec2 texturecoords = projcoords.xy/projcoords.w;\n"
    "	vec4 texel = fragment.color*texture(Diffuse,texturecoords);\n"
    "	vec3 ct,cf;\n"
    "	float intensity,at,af;\n"
    "	if (fragment.color.w==0)\n"
    "		discard;\n"
    "	vec3 lightDir = normalize(lightPos);\n"
    "	\n"
    "	vec3 normalDir = normalize(normal);\n"
    " \n"
    "	intensity = 0.5+0.5*clamp( dot( normalDir,lightDir ), -1,1 );\n"
    "	\n"
    "	af = 1.0;\n"
    "		\n"
    "	ct = texel.rgb;\n"
    "	at = texel.a;\n"
    "		\n"
    "	//float bias = 0.005f;\n"
    "	\n"
    "	vec3 specularReflection;\n"
    "	\n"
    "	if (dot(normalDir, lightDir) < 0.0) \n"
    "	{\n"
    "		specularReflection = vec3(0.0, 0.0, 0.0);\n"
    "	}\n"
    "  else // light source on the right side\n"
    "	{\n"
    "		vec3 surfaceToLight = normalize(lightPos - vertexPos.xyz);\n"
    "    vec3 surfaceToCamera = normalize(cameraPosition - vertexPos.xyz);\n"
    "    \n"
    "    \n"
    "    float specularCoefficient = 0.0;\n"
    "		specularCoefficient = pow(max(0.0, dot(surfaceToCamera, "
    "reflect(-surfaceToLight, normalDir))), materialShininess);\n"
    "    specularReflection = specularCoefficient * materialSpecularColor * "
    "lightSpecularIntensity;\n"
    "  \n"
    "	}\n"
    "    \n"
    "	float visibility = 1.0;\n"
    "	intensity = 0.7*intensity  + 0.3*intensity*visibility;\n"
    "	\n"
    "	cf = "
    "intensity*(vec3(1.0,1.0,1.0)-ambient)+ambient+specularReflection*"
    "visibility;\n"
    "	color  = vec4(ct * cf, fragment.color.w);\n"
    "}\n";
