From 0cf9be4d76f516bf9fc54d9309b52a7277d9614d Mon Sep 17 00:00:00 2001 From: Sebastian Pape <Sebastian.Pape@rwth-aachen.de> Date: Wed, 25 Jul 2018 15:14:00 +0200 Subject: [PATCH] Added better ray rendering, now, they are not drawn above everything anymore --- demos/optical_bench/src/optix_pass.cpp | 3 +++ demos/optical_bench/src/ray_pass.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/demos/optical_bench/src/optix_pass.cpp b/demos/optical_bench/src/optix_pass.cpp index 12cdf448..3beafb1d 100644 --- a/demos/optical_bench/src/optix_pass.cpp +++ b/demos/optical_bench/src/optix_pass.cpp @@ -195,7 +195,10 @@ void OptixPass::copyBuffersAndRenderInOpenGL(RenderTarget* render_target) { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); + glDepthMask(GL_FALSE); glDrawArrays(GL_TRIANGLES, 0, 6); + glDepthMask(GL_TRUE); + glBindVertexArray(0); shader_program_->unuse(); diff --git a/demos/optical_bench/src/ray_pass.cpp b/demos/optical_bench/src/ray_pass.cpp index a4b65b99..ff5f3ccb 100644 --- a/demos/optical_bench/src/ray_pass.cpp +++ b/demos/optical_bench/src/ray_pass.cpp @@ -205,19 +205,18 @@ void RayPass::render(RenderTarget* render_target) { glBindVertexArray(vaoOpenGL); + glEnable(GL_BLEND); glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_ALWAYS); - glEnable(GL_BLEND); + // Draw with additive blending and depth test, but now write glBlendFunc(GL_ONE, GL_ONE); - + glDepthMask(GL_FALSE); glDrawArrays(GL_LINES, 0, 50 * 50 * laser_max_depth * 2); + glDepthMask(GL_TRUE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBindVertexArray(0); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDepthFunc(GL_LESS); - shader_program_->unuse(); render_target->unbind(); } @@ -373,6 +372,7 @@ void RayPass::createTarget() { glm::mat4 trans = targetEntity->GetFirstComponent<phx::Transform>()->GetGlobalMatrix(); targetTransform->setMatrix(true, &(trans[0][0]), &(inverse(trans)[0][0])); + optixContextManager_->getTopObject()->getAcceleration()->markDirty(); }); selector->SetRelease([this]() { if (getTargetBufferWrite()) clearTargetBuffers(); -- GitLab