|
@@ -143,8 +143,10 @@ float Texel(sampler2DArrayShadow s, highp vec4 c) { return texture(s, c); }
|
|
uvec4 Texel(usampler2DArray s, highp vec3 c, float b) { return texture(s, c, b); }
|
|
uvec4 Texel(usampler2DArray s, highp vec3 c, float b) { return texture(s, c, b); }
|
|
|
|
|
|
float Texel(sampler2DShadow s, highp vec3 c, float b) { return texture(s, c, b); }
|
|
float Texel(sampler2DShadow s, highp vec3 c, float b) { return texture(s, c, b); }
|
|
|
|
+#ifndef LOVE_NO_TEXTURECUBESHADOWBIAS_HACK
|
|
float Texel(samplerCubeShadow s, highp vec4 c, float b) { return texture(s, c, b); }
|
|
float Texel(samplerCubeShadow s, highp vec4 c, float b) { return texture(s, c, b); }
|
|
#endif
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
|
|
uniform mediump float deprecatedTextureCall;
|
|
uniform mediump float deprecatedTextureCall;
|
|
|
|
|
|
@@ -613,6 +615,9 @@ std::string Shader::createShaderStageCode(Graphics *gfx, ShaderStageType stage,
|
|
if (info.usesMRT)
|
|
if (info.usesMRT)
|
|
ss << "#define LOVE_MULTI_RENDER_TARGETS 1\n";
|
|
ss << "#define LOVE_MULTI_RENDER_TARGETS 1\n";
|
|
|
|
|
|
|
|
+ if (gfx->isUsingNoTextureCubeShadowBiasHack())
|
|
|
|
+ ss << "#define LOVE_NO_TEXTURECUBESHADOWBIAS_HACK 1\n";
|
|
|
|
+
|
|
for (const auto &def : options.defines)
|
|
for (const auto &def : options.defines)
|
|
ss << "#define " + def.first + " " + def.second + "\n";
|
|
ss << "#define " + def.first + " " + def.second + "\n";
|
|
|
|
|