From 62a01db30d9abdb55e451c3b65694341b52030c2 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Wed, 2 Dec 2015 15:09:21 +0300 Subject: [PATCH] Billboard render pass removed. --- drape_frontend/arrow3d.cpp | 4 -- drape_frontend/frontend_renderer.cpp | 63 +++++----------------------- drape_frontend/frontend_renderer.hpp | 2 - 3 files changed, 11 insertions(+), 58 deletions(-) diff --git a/drape_frontend/arrow3d.cpp b/drape_frontend/arrow3d.cpp index 7e2425b629..016a02312e 100644 --- a/drape_frontend/arrow3d.cpp +++ b/drape_frontend/arrow3d.cpp @@ -159,10 +159,6 @@ void Arrow3d::Render(ScreenBase const & screen, ref_ptr m dp::ApplyUniforms(uniforms, prg); - GLFunctions::glEnable(gl_const::GLDepthTest); - GLFunctions::glClearDepth(); - GLFunctions::glViewport(0, 0, screen.PixelRectIn3d().SizeX(), screen.PixelRectIn3d().SizeY()); - GLFunctions::glBindVertexArray(m_VAO); GLFunctions::glDrawArrays(gl_const::GLTriangles, 0, m_vertices.size() / 3); diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index fdb2310343..6e52bf8755 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -6,7 +6,6 @@ #include "drape_frontend/user_mark_shapes.hpp" #include "drape/debug_rect_renderer.hpp" -#include "drape/shader_def.hpp" #include "drape/support_manager.hpp" #include "drape/utils/glyph_usage_tracker.hpp" @@ -44,7 +43,6 @@ FrontendRenderer::FrontendRenderer(Params const & params) , m_routeRenderer(new RouteRenderer()) , m_overlayTree(new dp::OverlayTree()) , m_enable3dInNavigation(false) - , m_isBillboardRenderPass(false) , m_viewport(params.m_viewport) , m_userEventStream(params.m_isCountryLoadedFn) , m_modelViewChangedFn(params.m_modelViewChangedFn) @@ -718,18 +716,15 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView) GLFunctions::glClear(); dp::GLState::DepthLayer prevLayer = dp::GLState::GeometryLayer; - size_t overlayRenderGroup = 0; - for (size_t currentRenderGroup = 0; currentRenderGroup < m_renderGroups.size(); ++currentRenderGroup) + size_t currentRenderGroup = 0; + for (; currentRenderGroup < m_renderGroups.size(); ++currentRenderGroup) { drape_ptr const & group = m_renderGroups[currentRenderGroup]; dp::GLState const & state = group->GetState(); dp::GLState::DepthLayer layer = state.GetDepthLayer(); if (prevLayer != layer && layer == dp::GLState::OverlayLayer) - { - overlayRenderGroup = currentRenderGroup; break; - } prevLayer = layer; RenderSingleGroup(modelView, make_ref(group)); @@ -753,7 +748,7 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView) m_myPositionController->Render(MyPositionController::RenderAccuracy, modelView, make_ref(m_gpuProgramManager), m_generalUniforms); - for (size_t currentRenderGroup = overlayRenderGroup; currentRenderGroup < m_renderGroups.size(); ++currentRenderGroup) + for (; currentRenderGroup < m_renderGroups.size(); ++currentRenderGroup) { drape_ptr const & group = m_renderGroups[currentRenderGroup]; RenderSingleGroup(modelView, make_ref(group)); @@ -767,14 +762,11 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView) m_routeRenderer->RenderRoute(modelView, make_ref(m_gpuProgramManager), m_generalUniforms); - if (!isPerspective) + for (drape_ptr const & group : m_userMarkRenderGroups) { - for (drape_ptr const & group : m_userMarkRenderGroups) - { - ASSERT(group.get() != nullptr, ()); - if (m_userMarkVisibility.find(group->GetTileKey()) != m_userMarkVisibility.end()) - RenderSingleGroup(modelView, make_ref(group)); - } + ASSERT(group.get() != nullptr, ()); + if (m_userMarkVisibility.find(group->GetTileKey()) != m_userMarkVisibility.end()) + RenderSingleGroup(modelView, make_ref(group)); } m_routeRenderer->RenderRouteSigns(modelView, make_ref(m_gpuProgramManager), m_generalUniforms); @@ -782,37 +774,16 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView) m_myPositionController->Render(MyPositionController::RenderMyPosition, modelView, make_ref(m_gpuProgramManager), m_generalUniforms); - if (!isPerspective && m_guiRenderer != nullptr) - m_guiRenderer->Render(make_ref(m_gpuProgramManager), modelView); - - if (isPerspective) + if (m_guiRenderer != nullptr) { - m_isBillboardRenderPass = true; - - // TODO: Try to avoid code duplicate in billboard render pass. - GLFunctions::glDisable(gl_const::GLDepthTest); - for (size_t currentRenderGroup = overlayRenderGroup; currentRenderGroup < m_renderGroups.size(); ++currentRenderGroup) - { - drape_ptr const & group = m_renderGroups[currentRenderGroup]; - RenderSingleGroup(modelView, make_ref(group)); - } - - for (drape_ptr const & group : m_userMarkRenderGroups) - { - ASSERT(group.get() != nullptr, ()); - group->UpdateAnimation(); - if (m_userMarkVisibility.find(group->GetTileKey()) != m_userMarkVisibility.end()) - RenderSingleGroup(modelView, make_ref(group)); - } - - if (m_guiRenderer != nullptr) + if (isPerspective) { ScreenBase modelView2d = modelView; modelView2d.ResetPerspective(); m_guiRenderer->Render(make_ref(m_gpuProgramManager), modelView2d); } - - m_isBillboardRenderPass = false; + else + m_guiRenderer->Render(make_ref(m_gpuProgramManager), modelView); } GLFunctions::glEnable(gl_const::GLDepthTest); @@ -827,20 +798,8 @@ bool FrontendRenderer::IsPerspective() const return m_userEventStream.GetCurrentScreen().isPerspective(); } -bool FrontendRenderer::IsBillboardProgram(int programIndex) const -{ - return programIndex == gpu::TEXTURING_BILLBOARD_PROGRAM - || programIndex == gpu::TEXT_BILLBOARD_PROGRAM - || programIndex == gpu::TEXT_OUTLINED_BILLBOARD_PROGRAM - || programIndex == gpu::BOOKMARK_BILLBOARD_PROGRAM; -} - void FrontendRenderer::RenderSingleGroup(ScreenBase const & modelView, ref_ptr group) { - if (modelView.isPerspective() && - (m_isBillboardRenderPass != IsBillboardProgram(group->GetState().GetProgram3dIndex()))) - return; - group->UpdateAnimation(); group->Render(modelView); } diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp index 6b519c7b87..172facfad1 100755 --- a/drape_frontend/frontend_renderer.hpp +++ b/drape_frontend/frontend_renderer.hpp @@ -212,7 +212,6 @@ private: FeatureID GetVisiblePOI(m2::PointD const & pixelPoint) const; FeatureID GetVisiblePOI(m2::RectD const & pixelRect) const; - bool IsBillboardProgram(int programIndex) const; bool IsPerspective() const; private: @@ -233,7 +232,6 @@ private: dp::UniformValuesStorage m_generalUniforms; bool m_enable3dInNavigation; - bool m_isBillboardRenderPass; Viewport m_viewport; UserEventStream m_userEventStream;