- made some changes to the shaders to allow downpatching them to GLSL 1.2:

* disable the dynamic light code if no buffers are available
 * added a duplicate of the getTexel function which cannot be patched without creating syntax problems.
 * fixe int<->float conversion warning, which on some compilers may be an error.
This commit is contained in:
Christoph Oelckers 2016-04-26 11:31:27 +02:00
parent 22b7a38539
commit fc38728309
2 changed files with 33 additions and 2 deletions

View file

@ -11,7 +11,7 @@ out vec4 FragColor;
{
vec4 lights[];
};
#else
#elif defined NUM_UBO_LIGHTS
/*layout(std140)*/ uniform LightBufferUBO
{
vec4 lights[NUM_UBO_LIGHTS];
@ -51,6 +51,32 @@ vec4 desaturate(vec4 texel)
//
//===========================================================================
#ifdef GLSL12_COMPATIBLE
vec4 getTexel(vec2 st)
{
vec4 texel = texture(tex, st);
//
// Apply texture modes
//
if (uTextureMode != 0)
{
if (uTextureMode == 1) texel.rgb = vec3(1.0,1.0,1.0);
else if (uTextureMode == 2) texel.a = 1.0;
else if (uTextureMode == 3) texel = vec4(1.0-texel.r, 1.0-texel.b, 1.0-texel.g, texel.a);
else if (uTextureMode == 4) texel = vec4(1.0, 1.0, 1.0, texel.r*texel.a);
else if (uTextureMode == 5)
{
if (st.t < 0.0 || st.t > 1.0)
{
texel.a = 0.0;
}
}
}
texel *= uObjectColor;
return desaturate(texel);
}
#else
vec4 getTexel(vec2 st)
{
vec4 texel = texture(tex, st);
@ -87,6 +113,7 @@ vec4 getTexel(vec2 st)
return desaturate(texel);
}
#endif
//===========================================================================
//
@ -181,6 +208,7 @@ vec4 getLightColor(float fogdist, float fogfactor)
vec4 dynlight = uDynLightColor;
#if defined NUM_UBO_LIGHTS || defined SHADER_STORAGE_LIGHTS
if (uLightIndex >= 0)
{
ivec4 lightRange = ivec4(lights[uLightIndex]) + ivec4(uLightIndex + 1);
@ -210,6 +238,7 @@ vec4 getLightColor(float fogdist, float fogfactor)
}
}
}
#endif
color.rgb = clamp(color.rgb + desaturate(dynlight).rgb, 0.0, 1.4);
// prevent any unintentional messing around with the alpha.
@ -270,6 +299,7 @@ void main()
frag *= getLightColor(fogdist, fogfactor);
#if defined NUM_UBO_LIGHTS || defined SHADER_STORAGE_LIGHTS
if (uLightIndex >= 0)
{
ivec4 lightRange = ivec4(lights[uLightIndex]) + ivec4(uLightIndex + 1);
@ -291,6 +321,7 @@ void main()
frag.rgb = clamp(frag.rgb + desaturate(addlight).rgb, 0.0, 1.0);
}
}
#endif
//
// colored fog

View file

@ -30,7 +30,7 @@ void main()
glowdist.x = -((uGlowTopPlane.w + uGlowTopPlane.x * worldcoord.x + uGlowTopPlane.y * worldcoord.z) * uGlowTopPlane.z) - worldcoord.y;
glowdist.y = worldcoord.y + ((uGlowBottomPlane.w + uGlowBottomPlane.x * worldcoord.x + uGlowBottomPlane.y * worldcoord.z) * uGlowBottomPlane.z);
if (uSplitBottomPlane.z != 0)
if (uSplitBottomPlane.z != 0.0)
{
gl_ClipDistance[3] = -((uSplitTopPlane.w + uSplitTopPlane.x * worldcoord.x + uSplitTopPlane.y * worldcoord.z) * uSplitTopPlane.z) - worldcoord.y;
gl_ClipDistance[4] = worldcoord.y + ((uSplitBottomPlane.w + uSplitBottomPlane.x * worldcoord.x + uSplitBottomPlane.y * worldcoord.z) * uSplitBottomPlane.z);