diff --git a/neo/engine/opengl/gl_d3d12shim.cpp b/neo/engine/opengl/gl_d3d12shim.cpp index 226c5117..ca6d2799 100644 --- a/neo/engine/opengl/gl_d3d12shim.cpp +++ b/neo/engine/opengl/gl_d3d12shim.cpp @@ -4512,7 +4512,12 @@ float3 QD3D12_SafeNormalizeOr(float3 v, float3 fallbackDir) float4 PSScreenDecals(VSOut i) : SV_Target0 { uint2 pixel = uint2(i.pos.xy); - float3 worldPos = gScreenDecalPosition.Load(int3(pixel, 0)).xyz; + float4 positionSample = gScreenDecalPosition.Load(int3(pixel, 0)); + uint geometryBits = (uint)round(max(positionSample.w, 0.0)); + if ((geometryBits & 1u) != 0u) + return float4(0.0, 0.0, 0.0, 0.0); + + float3 worldPos = positionSample.xyz; float3 decalColor = 0.0; float decalAlpha = 0.0; uint decalIndex = (uint)gScreenDecalIndex;