diff --git a/source/renderer/SceneRenderer.cpp b/source/renderer/SceneRenderer.cpp index bd34c599e3..6301b16519 100644 --- a/source/renderer/SceneRenderer.cpp +++ b/source/renderer/SceneRenderer.cpp @@ -226,9 +226,13 @@ void CSceneRenderer::ReloadShaders(Renderer::Backend::IDevice* device) ENSURE(1 <= cascadeCount && cascadeCount <= 4); const CStrIntern cascadeCountStr[5] = {str_0, str_1, str_2, str_3, str_4}; m->globalContext.Add(str_SHADOWS_CASCADE_COUNT, cascadeCountStr[cascadeCount]); -#if !CONFIG2_GLES - m->globalContext.Add(str_USE_SHADOW_SAMPLER, str_1); +#if CONFIG2_GLES + const bool useShadowSampler{device->GetBackend() != Renderer::Backend::Backend::GL}; +#else + const bool useShadowSampler{true}; #endif + if (useShadowSampler) + m->globalContext.Add(str_USE_SHADOW_SAMPLER, str_1); } m->globalContext.Add(str_RENDER_DEBUG_MODE, diff --git a/source/renderer/ShadowMap.cpp b/source/renderer/ShadowMap.cpp index c98c467fb0..9f34426b8d 100644 --- a/source/renderer/ShadowMap.cpp +++ b/source/renderer/ShadowMap.cpp @@ -549,16 +549,22 @@ void ShadowMapInternals::CreateTexture() Renderer::Backend::Sampler::AddressMode::CLAMP_TO_EDGE)); } +#if CONFIG2_GLES + // GLES doesn't do depth comparisons, so treat it as a + // basic unfiltered depth texture + const Renderer::Backend::Sampler::Filter depthFilter{ + Device->GetBackend() == Renderer::Backend::Backend::GL + ? Renderer::Backend::Sampler::Filter::NEAREST + : Renderer::Backend::Sampler::Filter::LINEAR}; +#else + // Use LINEAR to trigger automatic PCF on some devices. + const Renderer::Backend::Sampler::Filter depthFilter{ + Renderer::Backend::Sampler::Filter::LINEAR}; +#endif + Renderer::Backend::Sampler::Desc samplerDesc = Renderer::Backend::Sampler::MakeDefaultSampler( -#if CONFIG2_GLES - // GLES doesn't do depth comparisons, so treat it as a - // basic unfiltered depth texture - Renderer::Backend::Sampler::Filter::NEAREST, -#else - // Use LINEAR to trigger automatic PCF on some devices. - Renderer::Backend::Sampler::Filter::LINEAR, -#endif + depthFilter, Renderer::Backend::Sampler::AddressMode::CLAMP_TO_EDGE); // Enable automatic depth comparisons samplerDesc.compareEnabled = true;