diff --git a/demos/optical_bench/src/optix_pass.cpp b/demos/optical_bench/src/optix_pass.cpp index 12cdf44858de3b01db72bd47a995038ada9dfc15..3beafb1dbfefd2ac06cf426a46428ff4a52e5686 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 a4b65b99c1030faeefadbc71ba01f725a7649397..ff5f3ccb75431d93038124b5f1b547029d10c7c0 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();