From bb00653645336c1993818a3daa6fb4e7675ee77f Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 22 Aug 2024 17:49:12 +0200 Subject: [PATCH] Fix regression in shadow maps rendering batching to ignore transparent materials due to opacity usage --- Source/Engine/Renderer/RenderList.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Renderer/RenderList.cpp b/Source/Engine/Renderer/RenderList.cpp index 2c3a5d0c5..32bb43732 100644 --- a/Source/Engine/Renderer/RenderList.cpp +++ b/Source/Engine/Renderer/RenderList.cpp @@ -1018,9 +1018,11 @@ bool SurfaceDrawCallHandler::CanBatch(const DrawCall& a, const DrawCall& b, Draw // Batch simple materials during depth-only drawing (when using default vertex shader and no pixel shader) if (pass == DrawPass::Depth) { + const MaterialInfo& aInfo = a.Material->GetInfo(); + const MaterialInfo& bInfo = b.Material->GetInfo(); constexpr MaterialUsageFlags complexUsageFlags = MaterialUsageFlags::UseMask | MaterialUsageFlags::UsePositionOffset | MaterialUsageFlags::UseDisplacement; - const bool aIsSimple = EnumHasNoneFlags(a.Material->GetInfo().UsageFlags, complexUsageFlags); - const bool bIsSimple = EnumHasNoneFlags(b.Material->GetInfo().UsageFlags, complexUsageFlags); + const bool aIsSimple = EnumHasNoneFlags(aInfo.UsageFlags, complexUsageFlags) && aInfo.BlendMode == MaterialBlendMode::Opaque; + const bool bIsSimple = EnumHasNoneFlags(bInfo.UsageFlags, complexUsageFlags) && aInfo.BlendMode == MaterialBlendMode::Opaque; return aIsSimple && bIsSimple; } return false;