| 167 | } |
| 168 | |
| 169 | void ReplayOutput::SetTextureDisplay(const TextureDisplay &o) |
| 170 | { |
| 171 | CHECK_REPLAY_THREAD(); |
| 172 | |
| 173 | bool wasClearBeforeDraw = (m_RenderData.texDisplay.overlay == DebugOverlay::ClearBeforeDraw || |
| 174 | m_RenderData.texDisplay.overlay == DebugOverlay::ClearBeforePass); |
| 175 | |
| 176 | if(o.overlay != m_RenderData.texDisplay.overlay || |
| 177 | (o.overlay != DebugOverlay::NoOverlay && (o.subresource != m_RenderData.texDisplay.subresource || |
| 178 | o.typeCast != m_RenderData.texDisplay.typeCast || |
| 179 | o.resourceId != m_RenderData.texDisplay.resourceId))) |
| 180 | { |
| 181 | if(wasClearBeforeDraw) |
| 182 | { |
| 183 | // by necessity these overlays modify the actual texture, not an |
| 184 | // independent overlay texture. So if we disable them, we must |
| 185 | // refresh the log. |
| 186 | m_ForceOverlayRefresh = true; |
| 187 | } |
| 188 | m_OverlayDirty = true; |
| 189 | } |
| 190 | if(wasClearBeforeDraw && o.backgroundColor != m_RenderData.texDisplay.backgroundColor) |
| 191 | m_OverlayDirty = true; |
| 192 | m_CustomDirty = true; |
| 193 | m_RenderData.texDisplay = o; |
| 194 | m_MainOutput.dirty = true; |
| 195 | |
| 196 | m_TextureDim = {0, 0}; |
| 197 | for(size_t t = 0; t < m_pController->m_Textures.size(); t++) |
| 198 | { |
| 199 | if(m_pController->m_Textures[t].resourceId == m_RenderData.texDisplay.resourceId) |
| 200 | { |
| 201 | m_TextureDim = {m_pController->m_Textures[t].width, m_pController->m_Textures[t].height}; |
| 202 | } |
| 203 | } |
| 204 | } |
| 205 | |
| 206 | void ReplayOutput::SetMeshDisplay(const MeshDisplay &o) |
| 207 | { |