diff --git a/renderdoc/driver/d3d11/d3d11_rendertexture.cpp b/renderdoc/driver/d3d11/d3d11_rendertexture.cpp index 9b52bc310..a60670846 100644 --- a/renderdoc/driver/d3d11/d3d11_rendertexture.cpp +++ b/renderdoc/driver/d3d11/d3d11_rendertexture.cpp @@ -423,7 +423,6 @@ bool D3D11Replay::RenderTextureInternal(TextureDisplay cfg, bool blendAlpha) DebugPixelCBufferData pixelData; HeatmapData heatmapData = {}; - if(cfg.resourceId == m_Overlay.resourceId) { if(cfg.overlay == DebugOverlay::QuadOverdrawDraw || cfg.overlay == DebugOverlay::QuadOverdrawPass) { diff --git a/renderdoc/driver/d3d12/d3d12_rendertexture.cpp b/renderdoc/driver/d3d12/d3d12_rendertexture.cpp index b877c4087..9839d3178 100644 --- a/renderdoc/driver/d3d12/d3d12_rendertexture.cpp +++ b/renderdoc/driver/d3d12/d3d12_rendertexture.cpp @@ -317,7 +317,6 @@ bool D3D12Replay::RenderTextureInternal(D3D12_CPU_DESCRIPTOR_HANDLE rtv, Texture DebugPixelCBufferData pixelData; HeatmapData heatmapData = {}; - if(cfg.resourceId == m_Overlay.resourceId) { if(cfg.overlay == DebugOverlay::QuadOverdrawDraw || cfg.overlay == DebugOverlay::QuadOverdrawPass) { diff --git a/renderdoc/driver/gl/gl_rendertexture.cpp b/renderdoc/driver/gl/gl_rendertexture.cpp index 7cf685039..33fbb5e27 100644 --- a/renderdoc/driver/gl/gl_rendertexture.cpp +++ b/renderdoc/driver/gl/gl_rendertexture.cpp @@ -378,7 +378,6 @@ bool GLReplay::RenderTextureInternal(TextureDisplay cfg, int flags) HeatmapData heatmapData = {}; - if(cfg.resourceId == DebugData.overlayTexId) { if(cfg.overlay == DebugOverlay::QuadOverdrawDraw || cfg.overlay == DebugOverlay::QuadOverdrawPass) { diff --git a/renderdoc/driver/vulkan/vk_rendertexture.cpp b/renderdoc/driver/vulkan/vk_rendertexture.cpp index eab4a1cd9..c47523e50 100644 --- a/renderdoc/driver/vulkan/vk_rendertexture.cpp +++ b/renderdoc/driver/vulkan/vk_rendertexture.cpp @@ -319,7 +319,6 @@ bool VulkanReplay::RenderTextureInternal(TextureDisplay cfg, VkRenderPassBeginIn HeatmapData heatmapData = {}; - if(cfg.resourceId == GetResID(m_Overlay.Image)) { if(cfg.overlay == DebugOverlay::QuadOverdrawDraw || cfg.overlay == DebugOverlay::QuadOverdrawPass) { diff --git a/renderdoc/replay/replay_output.cpp b/renderdoc/replay/replay_output.cpp index 8652bfe02..0163a3bd4 100644 --- a/renderdoc/replay/replay_output.cpp +++ b/renderdoc/replay/replay_output.cpp @@ -727,6 +727,14 @@ void ReplayOutput::DisplayTex() ClearBackground(m_MainOutput.outputID, texDisplay.backgroundColor); + // of the overlay isn't one that's applied while rendering the base texture - NaN/inf/-ve or + // clipping - then don't try and render any overlay. This prevents underlying code from trying to + // e.g. decode overlay data as a heatmap for quad overdraw/triangle size overlays + if(texDisplay.overlay != DebugOverlay::NaN && texDisplay.overlay != DebugOverlay::Clipping) + { + texDisplay.overlay = DebugOverlay::NoOverlay; + } + m_pDevice->RenderTexture(texDisplay); if(m_RenderData.texDisplay.overlay != DebugOverlay::NoOverlay && draw && @@ -738,6 +746,7 @@ void ReplayOutput::DisplayTex() texDisplay.resourceId = m_pDevice->GetLiveID(m_OverlayResourceId); texDisplay.red = texDisplay.green = texDisplay.blue = texDisplay.alpha = true; texDisplay.rawOutput = false; + texDisplay.overlay = m_RenderData.texDisplay.overlay; texDisplay.customShaderId = ResourceId(); texDisplay.scale = m_RenderData.texDisplay.scale; texDisplay.hdrMultiplier = -1.0f;