From a1a1a03bbc40bc2f96d289193c052ff82d7f2eb3 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 18 Jul 2018 12:28:00 -0700 Subject: [PATCH] Fixing crash on exit, deferred debugging tool --- .../gpu-gl-common/src/gpu/gl/GLBackend.h | 7 ++- .../render-utils/src/DebugDeferredBuffer.cpp | 51 ++++++++++--------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h index ff3e94fd16..0d47d75ba4 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.h @@ -425,8 +425,11 @@ protected: return offset == other.offset && size == other.size && buffer == other.buffer; } }; - std::array _buffers; - //Buffers _buffers { }; + + // MAX_NUM_UNIFORM_BUFFERS-1 is the max uniform index BATCHES are allowed to set, but + // MIN_REQUIRED_UNIFORM_BUFFER_BINDINGS is used here because the backend sets some + // internal UBOs for things like camera correction + std::array _buffers; } _uniform; // Helper function that provides common code diff --git a/libraries/render-utils/src/DebugDeferredBuffer.cpp b/libraries/render-utils/src/DebugDeferredBuffer.cpp index e7268f2799..cab95e50be 100644 --- a/libraries/render-utils/src/DebugDeferredBuffer.cpp +++ b/libraries/render-utils/src/DebugDeferredBuffer.cpp @@ -422,7 +422,6 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I return; } -#if 0 assert(renderContext->args); assert(renderContext->args->hasViewFrustum()); RenderArgs* args = renderContext->args; @@ -465,10 +464,11 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I batch.setResourceTexture(Textures::DeferredLighting, deferredFramebuffer->getLightingTexture()); } if (velocityFramebuffer) { - batch.setResourceTexture(Textures::TaaVelocity, velocityFramebuffer->getVelocityTexture()); + batch.setResourceTexture(Textures::DebugVelocity, velocityFramebuffer->getVelocityTexture()); } - batch.setUniformBuffer(UBOs:: DebugParametersBuffer, _parameters); + // FIXME can't find the corresponding buffer + // batch.setUniformBuffer(UBOs:: DebugParametersBuffer, _parameters); auto lightStage = renderContext->_scene->getStage(); assert(lightStage); @@ -482,41 +482,42 @@ void DebugDeferredBuffer::run(const RenderContextPointer& renderContext, const I } if (linearDepthTarget) { - batch.setResourceTexture(Textures::LLinearDepth, linearDepthTarget->getLinearDepthTexture()); - batch.setResourceTexture(HalfLinearDepth, linearDepthTarget->getHalfLinearDepthTexture()); - batch.setResourceTexture(HalfNormal, linearDepthTarget->getHalfNormalTexture()); + batch.setResourceTexture(Textures::DebugDepth, linearDepthTarget->getLinearDepthTexture()); + batch.setResourceTexture(Textures::DebugHalfDepth, linearDepthTarget->getHalfLinearDepthTexture()); + batch.setResourceTexture(Textures::DebugHalfNormal, linearDepthTarget->getHalfNormalTexture()); } if (surfaceGeometryFramebuffer) { - batch.setResourceTexture(Curvature, surfaceGeometryFramebuffer->getCurvatureTexture()); - batch.setResourceTexture(DiffusedCurvature, surfaceGeometryFramebuffer->getLowCurvatureTexture()); + batch.setResourceTexture(Textures::DeferredCurvature, surfaceGeometryFramebuffer->getCurvatureTexture()); + batch.setResourceTexture(Textures::DeferredDiffusedCurvature, + surfaceGeometryFramebuffer->getLowCurvatureTexture()); } if (ambientOcclusionFramebuffer) { - batch.setResourceTexture(Textures::SsaoOcclusion, ambientOcclusionFramebuffer->getOcclusionTexture()); - batch.setResourceTexture(AmbientOcclusionBlurred, ambientOcclusionFramebuffer->getOcclusionBlurredTexture()); + batch.setResourceTexture(Textures::DebugOcclusion, ambientOcclusionFramebuffer->getOcclusionTexture()); + batch.setResourceTexture(Textures::DebugOcclusionBlurred, + ambientOcclusionFramebuffer->getOcclusionBlurredTexture()); } const glm::vec4 color(1.0f, 1.0f, 1.0f, 1.0f); const glm::vec2 bottomLeft(_size.x, _size.y); const glm::vec2 topRight(_size.z, _size.w); geometryBuffer->renderQuad(batch, bottomLeft, topRight, color, _geometryId); - batch.setResourceTexture(Albedo, nullptr); - batch.setResourceTexture(Normal, nullptr); - batch.setResourceTexture(Specular, nullptr); - batch.setResourceTexture(Depth, nullptr); - batch.setResourceTexture(Lighting, nullptr); - batch.setResourceTexture(Shadow, nullptr); - batch.setResourceTexture(LinearDepth, nullptr); - batch.setResourceTexture(HalfLinearDepth, nullptr); - batch.setResourceTexture(HalfNormal, nullptr); + batch.setResourceTexture(Textures::DeferredColor, nullptr); + batch.setResourceTexture(Textures::DeferredNormal, nullptr); + batch.setResourceTexture(Textures::DeferredSpecular, nullptr); + batch.setResourceTexture(Textures::DeferredDepth, nullptr); + batch.setResourceTexture(Textures::DeferredLighting, nullptr); + batch.setResourceTexture(Textures::Shadow, nullptr); + batch.setResourceTexture(Textures::DebugDepth, nullptr); + batch.setResourceTexture(Textures::DebugHalfDepth, nullptr); + batch.setResourceTexture(Textures::DebugHalfNormal, nullptr); - batch.setResourceTexture(Curvature, nullptr); - batch.setResourceTexture(DiffusedCurvature, nullptr); + batch.setResourceTexture(Textures::DeferredCurvature, nullptr); + batch.setResourceTexture(Textures::DeferredDiffusedCurvature, nullptr); - batch.setResourceTexture(AmbientOcclusion, nullptr); - batch.setResourceTexture(AmbientOcclusionBlurred, nullptr); + batch.setResourceTexture(Textures::DebugOcclusion, nullptr); + batch.setResourceTexture(Textures::DebugOcclusionBlurred, nullptr); - batch.setResourceTexture(Velocity, nullptr); + batch.setResourceTexture(Textures::DebugVelocity, nullptr); }); -#endif }