"# endif\n",
"#endif\n",
"\n",
+"#define sat(x) clamp(x, 0, 1)\n",
+"#define possat(x) sat(x)\n",//As replacement of max(x, 0) when x<=1, better for gpus that can't do 0-cycle max(x, 0)
+"#define possatdot(x, y) possat(dot(x, y))\n",
+"\n",
"#ifdef USECELSHADING\n",
-"# define SHADEDIFFUSE myhalf diffuse = cast_myhalf(min(max(float(dot(surfacenormal, lightnormal)) * 2.0, 0.0), 1.0));\n",
+"# define SHADEDIFFUSE myhalf diffuse = cast_myhalf(sat(float(dot(surfacenormal, lightnormal)) * 2.0));\n",
"# ifdef USEEXACTSPECULARMATH\n",
-"# define SHADESPECULAR(specpow) myhalf specular = pow(cast_myhalf(max(float(dot(reflect(lightnormal, surfacenormal), eyenormal))*-1.0, 0.0)), 1.0 + specpow);specular = max(0.0, specular * 10.0 - 9.0);\n",
+"# define SHADESPECULAR(specpow) myhalf specular = pow(cast_myhalf(float(possatdot(reflect(lightnormal, surfacenormal), -eyenormal))), 1.0 + specpow);specular = possat(specular * 10.0 - 9.0);\n",
"# else\n",
-"# define SHADESPECULAR(specpow) myhalf3 specularnormal = normalize(lightnormal + eyenormal);myhalf specular = pow(cast_myhalf(max(float(dot(surfacenormal, specularnormal)), 0.0)), 1.0 + specpow);specular = max(0.0, specular * 10.0 - 9.0);\n",
+"# define SHADESPECULAR(specpow) myhalf3 specularnormal = normalize(lightnormal + eyenormal);myhalf specular = pow(cast_myhalf(float(possatdot(surfacenormal, specularnormal))), 1.0 + specpow);specular = possat(specular * 10.0 - 9.0);\n",
"# endif\n",
"#else\n",
-"# define SHADEDIFFUSE myhalf diffuse = cast_myhalf(max(float(dot(surfacenormal, lightnormal)), 0.0));\n",
+"# define SHADEDIFFUSE myhalf diffuse = cast_myhalf(float(possatdot(surfacenormal, lightnormal)));\n",
"# ifdef USEEXACTSPECULARMATH\n",
-"# define SHADESPECULAR(specpow) myhalf specular = pow(cast_myhalf(max(float(dot(reflect(lightnormal, surfacenormal), eyenormal))*-1.0, 0.0)), 1.0 + specpow);\n",
+"# define SHADESPECULAR(specpow) myhalf specular = pow(cast_myhalf(float(possatdot(reflect(lightnormal, surfacenormal), -eyenormal))), 1.0 + specpow);\n",
"# else\n",
-"# define SHADESPECULAR(specpow) myhalf3 specularnormal = normalize(lightnormal + eyenormal);myhalf specular = pow(cast_myhalf(max(float(dot(surfacenormal, specularnormal)), 0.0)), 1.0 + specpow);\n",
+"# define SHADESPECULAR(specpow) myhalf3 specularnormal = normalize(lightnormal + eyenormal);myhalf specular = pow(cast_myhalf(float(possatdot(surfacenormal, specularnormal))), 1.0 + specpow);\n",
"# endif\n",
"#endif\n",
"\n",
"#endif\n",
"\n",
"#ifdef MODE_DEPTH_OR_SHADOW\n",
-"dp_varying highp float Depth;\n",
"#ifdef VERTEX_SHADER\n",
"void main(void)\n",
"{\n",
"#ifdef USETRIPPY\n",
" gl_Position = TrippyVertex(gl_Position);\n",
"#endif\n",
-" Depth = gl_Position.z;\n",
"}\n",
"#endif\n",
"\n",
"void main(void)\n",
"{\n",
"#ifdef USEDEPTHRGB\n",
-" dp_FragColor = encodedepthmacro(Depth);\n",
+" dp_FragColor = encodedepthmacro(gl_FragCoord.z);\n",
"#else\n",
" dp_FragColor = vec4(1.0,1.0,1.0,1.0);\n",
"#endif\n",
"\n",
"void main(void)\n",
"{\n",
+"#ifdef USECOLORFRINGE\n",
" float fringe = ColorFringe;//.0033f;\n",
" float amount = distance(TexCoord1, vec2(.5f,.5f));\n",
" vec2 offset = vec2(amount*fringe,amount*fringe);\n",
-" dp_FragColor.xy = texture(Texture_First, TexCoord1-offset).xy;\n",
-" dp_FragColor.z = texture(Texture_First, TexCoord1+offset).z;\n",
+" dp_FragColor.xy = dp_texture2D(Texture_First, TexCoord1-offset).xy;\n",
+" dp_FragColor.z = dp_texture2D(Texture_First, TexCoord1+offset).z;\n",
+"#else\n",
+" dp_FragColor = dp_texture2D(Texture_First, TexCoord1);\n",
+"#endif\n",
"\n",
"#ifdef USEFXAA\n",
" dp_FragColor = fxaa(dp_FragColor, 8.0); // 8.0 can be changed for larger span\n",