From 816343028203ef50eeae2bb30d26cffdd09af776 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 14 Aug 2017 15:03:14 -0700 Subject: [PATCH] fix depth buffer issue that was messing with drawInFront, plus some small fixes to line3ds --- interface/src/ui/overlays/Line3DOverlay.cpp | 12 ++++++------ libraries/render-utils/src/GeometryCache.cpp | 6 +++++- libraries/render-utils/src/RenderDeferredTask.cpp | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index 900c79fc3f..d8fe0e6bb8 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -32,6 +32,8 @@ Line3DOverlay::Line3DOverlay(const Line3DOverlay* line3DOverlay) : _length = line3DOverlay->getLength(); _endParentID = line3DOverlay->getEndParentID(); _endParentJointIndex = line3DOverlay->getEndJointIndex(); + _glow = line3DOverlay->getGlow(); + _glowWidth = line3DOverlay->getGlowWidth(); } Line3DOverlay::~Line3DOverlay() { @@ -138,11 +140,9 @@ void Line3DOverlay::render(RenderArgs* args) { // TODO: add support for color to renderDashedLine() geometryCache->bindSimpleProgram(*batch, false, false, false, true, true); geometryCache->renderDashedLine(*batch, start, end, colorv4, _geometryCacheID); - } else if (_glow > 0.0f) { - geometryCache->renderGlowLine(*batch, start, end, colorv4, _glow, _glowWidth, _geometryCacheID); } else { - geometryCache->bindSimpleProgram(*batch, false, false, false, true, true); - geometryCache->renderLine(*batch, start, end, colorv4, _geometryCacheID); + // renderGlowLine handles both glow = 0 and glow > 0 cases + geometryCache->renderGlowLine(*batch, start, end, colorv4, _glow, _glowWidth, _geometryCacheID); } } } @@ -228,9 +228,9 @@ void Line3DOverlay::setProperties(const QVariantMap& originalProperties) { } } - auto glowWidth = properties["glow"]; + auto glowWidth = properties["glowWidth"]; if (glowWidth.isValid()) { - setGlow(glowWidth.toFloat()); + setGlowWidth(glowWidth.toFloat()); } } diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 5f2acff16f..d7cd860d50 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -1640,7 +1640,11 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const #endif if (glowIntensity <= 0) { - bindSimpleProgram(batch, false, false, false, true, false); + if (color.a >= 1.0) { + bindSimpleProgram(batch, false, false, false, true, true); + } else { + bindSimpleProgram(batch, false, true, false, true, true); + } renderLine(batch, p1, p2, color, id); return; } diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 20c999019b..c1b2d7fd7b 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -357,7 +357,7 @@ void DrawOverlay3D::run(const RenderContextPointer& renderContext, const Inputs& if (_opaquePass) { gpu::doInBatch(args->_context, [&](gpu::Batch& batch){ batch.enableStereo(false); - batch.clearFramebuffer(gpu::Framebuffer::BUFFER_DEPTH, glm::vec4(), 1.f, 0, true); + batch.clearFramebuffer(gpu::Framebuffer::BUFFER_DEPTH, glm::vec4(), 1.f, 0, false); }); }