diff --git a/drape/drape.pro b/drape/drape.pro index 26cc43a447..6a76a19f73 100644 --- a/drape/drape.pro +++ b/drape/drape.pro @@ -48,6 +48,7 @@ OTHER_FILES += \ shaders/route_fragment_shader.fsh \ shaders/route_vertex_shader.vsh \ shaders/ruler_vertex_shader.vsh \ + shaders/screen_quad_shader.vsh \ shaders/shader_index.txt \ shaders/solid_color_fragment_shader.fsh \ shaders/text_billboard_vertex_shader.vsh \ @@ -69,7 +70,5 @@ OTHER_FILES += \ shaders/traffic_vertex_shader.vsh \ shaders/traffic_line_fragment_shader.fsh \ shaders/traffic_line_vertex_shader.vsh \ - shaders/transparent_layer_fragment_shader.fsh \ - shaders/transparent_layer_vertex_shader.vsh \ shaders/user_mark.vsh \ shaders/user_mark_billboard.vsh \ diff --git a/drape/hw_texture.hpp b/drape/hw_texture.hpp index a408ee384f..6c47d201c9 100644 --- a/drape/hw_texture.hpp +++ b/drape/hw_texture.hpp @@ -51,9 +51,10 @@ public: float GetS(uint32_t x) const; float GetT(uint32_t y) const; + int32_t GetID() const; + protected: void UnpackFormat(TextureFormat format, glConst & layout, glConst & pixelType); - int32_t GetID() const; uint32_t m_width; uint32_t m_height; diff --git a/drape/shaders/transparent_layer_vertex_shader.vsh b/drape/shaders/screen_quad_shader.vsh similarity index 62% rename from drape/shaders/transparent_layer_vertex_shader.vsh rename to drape/shaders/screen_quad_shader.vsh index a0c8f821d2..388b7070ca 100644 --- a/drape/shaders/transparent_layer_vertex_shader.vsh +++ b/drape/shaders/screen_quad_shader.vsh @@ -1,11 +1,11 @@ attribute vec2 a_pos; attribute vec2 a_tcoord; -varying vec2 v_tcoord; +varying vec2 v_colorTexCoords; void main() { - v_tcoord = a_tcoord; + v_colorTexCoords = a_tcoord; gl_Position = vec4(a_pos, 0.0, 1.0); } diff --git a/drape/shaders/shader_index.txt b/drape/shaders/shader_index.txt index 4d6b9cf209..953323463b 100644 --- a/drape/shaders/shader_index.txt +++ b/drape/shaders/shader_index.txt @@ -24,7 +24,7 @@ ROUTE_DASH_PROGRAM route_vertex_shader.vsh route_dash_fragment_shader.fsh ROUTE_ARROW_PROGRAM route_arrow_vertex_shader.vsh discarded_texturing_fragment_shader.fsh TRACK_POINT_PROGRAM trackpoint_vertex_shader.vsh trackpoint_fragment_shader.fsh DEBUG_RECT_PROGRAM debug_rect_vertex_shader.vsh debug_rect_fragment_shader.fsh -TRANSPARENT_LAYER_PROGRAM transparent_layer_vertex_shader.vsh transparent_layer_fragment_shader.fsh +SCREEN_QUAD_PROGRAM screen_quad_shader.vsh texturing_fragment_shader.fsh ARROW_3D_PROGRAM arrow3d_vertex_shader.vsh arrow3d_fragment_shader.fsh ARROW_3D_SHADOW_PROGRAM arrow3d_shadow_vertex_shader.vsh arrow3d_shadow_fragment_shader.fsh ARROW_3D_OUTLINE_PROGRAM arrow3d_shadow_vertex_shader.vsh arrow3d_outline_fragment_shader.fsh diff --git a/drape/shaders/transparent_layer_fragment_shader.fsh b/drape/shaders/transparent_layer_fragment_shader.fsh deleted file mode 100644 index 79e04c6bed..0000000000 --- a/drape/shaders/transparent_layer_fragment_shader.fsh +++ /dev/null @@ -1,10 +0,0 @@ -uniform sampler2D tex; -varying vec2 v_tcoord; - -const float opacity = 0.7; - -void main() -{ - gl_FragColor = texture2D(tex, v_tcoord); - gl_FragColor.a = gl_FragColor.a * opacity; -} diff --git a/drape/texture.cpp b/drape/texture.cpp index 9731cfd25d..c198dc2722 100644 --- a/drape/texture.cpp +++ b/drape/texture.cpp @@ -78,6 +78,12 @@ float Texture::GetT(uint32_t y) const return m_hwTexture->GetT(y); } +int32_t Texture::GetID() const +{ + ASSERT(m_hwTexture != nullptr, ()); + return m_hwTexture->GetID(); +} + void Texture::Bind() const { ASSERT(m_hwTexture != nullptr, ()); diff --git a/drape/texture.hpp b/drape/texture.hpp index a9b0051bd3..12237e9622 100644 --- a/drape/texture.hpp +++ b/drape/texture.hpp @@ -65,6 +65,7 @@ public: uint32_t GetHeight() const; float GetS(uint32_t x) const; float GetT(uint32_t y) const; + int32_t GetID() const; void Bind() const; diff --git a/drape_frontend/CMakeLists.txt b/drape_frontend/CMakeLists.txt index 1704e84e38..5c58cd6044 100644 --- a/drape_frontend/CMakeLists.txt +++ b/drape_frontend/CMakeLists.txt @@ -162,6 +162,8 @@ set( screen_animations.hpp screen_operations.cpp screen_operations.hpp + screen_quad_renderer.cpp + screen_quad_renderer.hpp selection_shape.cpp selection_shape.hpp shape_view_params.hpp @@ -185,8 +187,6 @@ set( traffic_generator.hpp traffic_renderer.cpp traffic_renderer.hpp - transparent_layer.cpp - transparent_layer.hpp user_event_stream.cpp user_event_stream.hpp user_mark_shapes.cpp diff --git a/drape_frontend/drape_frontend.pro b/drape_frontend/drape_frontend.pro index 456d90655a..bc937f1eb9 100755 --- a/drape_frontend/drape_frontend.pro +++ b/drape_frontend/drape_frontend.pro @@ -80,6 +80,7 @@ SOURCES += \ scenario_manager.cpp \ screen_animations.cpp \ screen_operations.cpp \ + screen_quad_renderer.cpp \ selection_shape.cpp \ stylist.cpp \ text_handle.cpp \ @@ -91,7 +92,6 @@ SOURCES += \ tile_utils.cpp \ traffic_generator.cpp \ traffic_renderer.cpp \ - transparent_layer.cpp \ user_event_stream.cpp \ user_mark_shapes.cpp \ user_marks_provider.cpp \ @@ -189,6 +189,7 @@ HEADERS += \ scenario_manager.hpp \ screen_animations.hpp \ screen_operations.hpp \ + screen_quad_renderer.hpp \ selection_shape.hpp \ shape_view_params.hpp \ stylist.hpp \ @@ -201,7 +202,6 @@ HEADERS += \ tile_utils.hpp \ traffic_generator.hpp \ traffic_renderer.hpp \ - transparent_layer.hpp \ user_event_stream.hpp \ user_mark_shapes.hpp \ user_marks_provider.hpp \ diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index be9789edcd..306c0d7781 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -1,17 +1,17 @@ +#include "drape_frontend/frontend_renderer.hpp" #include "drape_frontend/animation/interpolation_holder.hpp" -#include "drape_frontend/gui/drape_gui.hpp" -#include "drape_frontend/gui/ruler_helper.hpp" #include "drape_frontend/animation_system.hpp" #include "drape_frontend/batch_merge_helper.hpp" #include "drape_frontend/drape_measurer.hpp" #include "drape_frontend/framebuffer.hpp" -#include "drape_frontend/frontend_renderer.hpp" +#include "drape_frontend/gui/drape_gui.hpp" +#include "drape_frontend/gui/ruler_helper.hpp" #include "drape_frontend/message_subclasses.hpp" #include "drape_frontend/scenario_manager.hpp" #include "drape_frontend/screen_operations.hpp" -#include "drape_frontend/transparent_layer.hpp" -#include "drape_frontend/visual_params.hpp" +#include "drape_frontend/screen_quad_renderer.hpp" #include "drape_frontend/user_mark_shapes.hpp" +#include "drape_frontend/visual_params.hpp" #include "drape/debug_rect_renderer.hpp" #include "drape/shader_def.hpp" @@ -119,8 +119,9 @@ FrontendRenderer::FrontendRenderer(Params && params) , m_routeRenderer(new RouteRenderer()) , m_trafficRenderer(new TrafficRenderer()) , m_framebuffer(new Framebuffer()) - , m_transparentLayer(new TransparentLayer()) - , m_gpsTrackRenderer(new GpsTrackRenderer(bind(&FrontendRenderer::PrepareGpsTrackPoints, this, _1))) + , m_screenQuadRenderer(new ScreenQuadRenderer()) + , m_gpsTrackRenderer( + new GpsTrackRenderer(bind(&FrontendRenderer::PrepareGpsTrackPoints, this, _1))) , m_drapeApiRenderer(new DrapeApiRenderer()) , m_overlayTree(new dp::OverlayTree()) , m_enablePerspectiveInNavigation(false) @@ -1181,6 +1182,7 @@ void FrontendRenderer::Render2dLayer(ScreenBase const & modelView) void FrontendRenderer::Render3dLayer(ScreenBase const & modelView, bool useFramebuffer) { + float const kOpacity = 0.7f; if (useFramebuffer) { ASSERT(m_framebuffer->IsSupported(), ()); @@ -1200,7 +1202,8 @@ void FrontendRenderer::Render3dLayer(ScreenBase const & modelView, bool useFrame { m_framebuffer->Disable(); GLFunctions::glDisable(gl_const::GLDepthTest); - m_transparentLayer->Render(m_framebuffer->GetTextureId(), make_ref(m_gpuProgramManager)); + m_screenQuadRenderer->RenderTexture(m_framebuffer->GetTextureId(), + make_ref(m_gpuProgramManager), kOpacity); } } @@ -1646,7 +1649,7 @@ void FrontendRenderer::OnContextDestroy() m_guiRenderer.reset(); m_selectionShape.reset(); m_framebuffer.reset(); - m_transparentLayer.reset(); + m_screenQuadRenderer.reset(); m_myPositionController->ResetRenderShape(); m_routeRenderer->ClearGLDependentResources(); @@ -1703,7 +1706,7 @@ void FrontendRenderer::OnContextCreate() m_framebuffer.reset(new Framebuffer()); m_framebuffer->SetDefaultContext(context); - m_transparentLayer.reset(new TransparentLayer()); + m_screenQuadRenderer.reset(new ScreenQuadRenderer()); } FrontendRenderer::Routine::Routine(FrontendRenderer & renderer) : m_renderer(renderer) {} @@ -1828,7 +1831,7 @@ void FrontendRenderer::ReleaseResources() m_selectionShape.release(); m_routeRenderer.reset(); m_framebuffer.reset(); - m_transparentLayer.reset(); + m_screenQuadRenderer.reset(); m_trafficRenderer.reset(); m_gpuProgramManager.reset(); diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp index 7df603d0cf..ab55c2c4cd 100755 --- a/drape_frontend/frontend_renderer.hpp +++ b/drape_frontend/frontend_renderer.hpp @@ -44,12 +44,11 @@ namespace dp namespace df { - -class SelectionShape; class Framebuffer; -class TransparentLayer; -class SelectObjectMessage; class ScenarioManager; +class ScreenQuadRenderer; +class SelectionShape; +class SelectObjectMessage; struct TapInfo { @@ -269,7 +268,7 @@ private: drape_ptr m_routeRenderer; drape_ptr m_trafficRenderer; drape_ptr m_framebuffer; - drape_ptr m_transparentLayer; + drape_ptr m_screenQuadRenderer; drape_ptr m_gpsTrackRenderer; drape_ptr m_drapeApiRenderer; diff --git a/drape_frontend/screen_quad_renderer.cpp b/drape_frontend/screen_quad_renderer.cpp new file mode 100644 index 0000000000..b2aefc5fb8 --- /dev/null +++ b/drape_frontend/screen_quad_renderer.cpp @@ -0,0 +1,104 @@ +#include "drape_frontend/screen_quad_renderer.hpp" + +#include "drape/data_buffer.hpp" +#include "drape/glconstants.hpp" +#include "drape/glextensions_list.hpp" +#include "drape/glfunctions.hpp" +#include "drape/glstate.hpp" +#include "drape/gpu_program_manager.hpp" +#include "drape/shader_def.hpp" +#include "drape/uniform_values_storage.hpp" + +#include + +namespace df +{ +ScreenQuadRenderer::~ScreenQuadRenderer() +{ + if (m_bufferId != 0) + GLFunctions::glDeleteBuffer(m_bufferId); +} + +void ScreenQuadRenderer::Build(ref_ptr prg) +{ + m_attributePosition = prg->GetAttributeLocation("a_pos"); + ASSERT_NOT_EQUAL(m_attributePosition, -1, ()); + + m_attributeTexCoord = prg->GetAttributeLocation("a_tcoord"); + ASSERT_NOT_EQUAL(m_attributeTexCoord, -1, ()); + + m_textureLocation = prg->GetUniformLocation("u_colorTex"); + ASSERT_NOT_EQUAL(m_textureLocation, -1, ()); + + std::vector vertices = {-1.0f, 1.0f, m_textureRect.minX(), m_textureRect.maxY(), + 1.0f, 1.0f, m_textureRect.maxX(), m_textureRect.maxY(), + -1.0f, -1.0f, m_textureRect.minX(), m_textureRect.minY(), + 1.0f, -1.0f, m_textureRect.maxX(), m_textureRect.minY()}; + + m_bufferId = GLFunctions::glGenBuffer(); + GLFunctions::glBindBuffer(m_bufferId, gl_const::GLArrayBuffer); + GLFunctions::glBufferData(gl_const::GLArrayBuffer, + static_cast(vertices.size()) * sizeof(vertices[0]), + vertices.data(), gl_const::GLStaticDraw); + GLFunctions::glBindBuffer(0, gl_const::GLArrayBuffer); +} + +void ScreenQuadRenderer::RenderTexture(uint32_t textureId, ref_ptr mng, + float opacity) +{ + // Unbind current VAO, because glVertexAttributePointer and glEnableVertexAttribute can affect it. + if (dp::GLExtensionsList::Instance().IsSupported(dp::GLExtensionsList::VertexArrayObject)) + GLFunctions::glBindVertexArray(0); + + ref_ptr prg = mng->GetProgram(gpu::SCREEN_QUAD_PROGRAM); + prg->Bind(); + + if (m_bufferId == 0) + Build(prg); + + if (m_textureLocation >= 0) + { + GLFunctions::glActiveTexture(gl_const::GLTexture0); + GLFunctions::glBindTexture(textureId); + GLFunctions::glUniformValuei(m_textureLocation, 0); + GLFunctions::glTexParameter(gl_const::GLMinFilter, gl_const::GLLinear); + GLFunctions::glTexParameter(gl_const::GLMagFilter, gl_const::GLLinear); + GLFunctions::glTexParameter(gl_const::GLWrapS, gl_const::GLClampToEdge); + GLFunctions::glTexParameter(gl_const::GLWrapT, gl_const::GLClampToEdge); + } + + GLFunctions::glBindBuffer(m_bufferId, gl_const::GLArrayBuffer); + + GLFunctions::glEnableVertexAttribute(m_attributePosition); + GLFunctions::glVertexAttributePointer(m_attributePosition, 2, gl_const::GLFloatType, false, + sizeof(float) * 4, 0); + GLFunctions::glEnableVertexAttribute(m_attributeTexCoord); + GLFunctions::glVertexAttributePointer(m_attributeTexCoord, 2, gl_const::GLFloatType, false, + sizeof(float) * 4, sizeof(float) * 2); + + dp::UniformValuesStorage uniforms; + uniforms.SetFloatValue("u_opacity", opacity); + dp::ApplyUniforms(uniforms, prg); + + GLFunctions::glEnable(gl_const::GLBlending); + GLFunctions::glDrawArrays(gl_const::GLTriangleStrip, 0, 4); + GLFunctions::glDisable(gl_const::GLBlending); + + prg->Unbind(); + GLFunctions::glBindTexture(0); + GLFunctions::glBindBuffer(0, gl_const::GLArrayBuffer); +} + +void ScreenQuadRenderer::SetTextureRect(m2::RectF const & rect, ref_ptr mng) +{ + m_textureRect = rect; + + if (m_bufferId != 0) + GLFunctions::glDeleteBuffer(m_bufferId); + + ref_ptr prg = mng->GetProgram(gpu::SCREEN_QUAD_PROGRAM); + prg->Bind(); + Build(prg); + prg->Unbind(); +} +} // namespace df diff --git a/drape_frontend/screen_quad_renderer.hpp b/drape_frontend/screen_quad_renderer.hpp new file mode 100644 index 0000000000..e8fdca33bd --- /dev/null +++ b/drape_frontend/screen_quad_renderer.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include "drape/pointers.hpp" + +#include "geometry/rect2d.hpp" + +namespace dp +{ +class GpuProgram; +class GpuProgramManager; +} // namespace dp + +namespace df +{ +class ScreenQuadRenderer +{ +public: + ScreenQuadRenderer() = default; + ~ScreenQuadRenderer(); + + void SetTextureRect(m2::RectF const & rect, ref_ptr mng); + bool IsInitialized() const { return m_bufferId != 0; } + m2::RectF const & GetTextureRect() const { return m_textureRect; } + void RenderTexture(uint32_t textureId, ref_ptr mng, float opacity); + +private: + void Build(ref_ptr prg); + + uint32_t m_bufferId = 0; + int8_t m_attributePosition = -1; + int8_t m_attributeTexCoord = -1; + int8_t m_textureLocation = -1; + m2::RectF m_textureRect = m2::RectF(0.0f, 0.0f, 1.0f, 1.0f); +}; +} // namespace df diff --git a/drape_frontend/transparent_layer.cpp b/drape_frontend/transparent_layer.cpp deleted file mode 100644 index 3bd8cfa02c..0000000000 --- a/drape_frontend/transparent_layer.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "transparent_layer.hpp" - -#include "drape/data_buffer.hpp" -#include "drape/glconstants.hpp" -#include "drape/glextensions_list.hpp" -#include "drape/glfunctions.hpp" -#include "drape/glstate.hpp" -#include "drape/gpu_program_manager.hpp" -#include "drape/shader_def.hpp" -#include "drape/uniform_values_storage.hpp" - -#include "geometry/screenbase.hpp" - -#include "std/cmath.hpp" - -namespace df -{ - -TransparentLayer::TransparentLayer() -{ - m_vertices = { - -1.0f, 1.0f, 0.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, - -1.0f, -1.0f, 0.0f, 0.0f, - 1.0f, -1.0f, 1.0f, 0.0f }; -} - -TransparentLayer::~TransparentLayer() -{ - if (m_bufferId != 0) - GLFunctions::glDeleteBuffer(m_bufferId); -} - -void TransparentLayer::Build(ref_ptr prg) -{ - m_attributePosition = prg->GetAttributeLocation("a_pos"); - ASSERT_NOT_EQUAL(m_attributePosition, -1, ()); - - m_attributeTexCoord = prg->GetAttributeLocation("a_tcoord"); - ASSERT_NOT_EQUAL(m_attributeTexCoord, -1, ()); - - m_bufferId = GLFunctions::glGenBuffer(); - GLFunctions::glBindBuffer(m_bufferId, gl_const::GLArrayBuffer); - GLFunctions::glBufferData(gl_const::GLArrayBuffer, static_cast(m_vertices.size()) * sizeof(m_vertices[0]), - m_vertices.data(), gl_const::GLStaticDraw); - GLFunctions::glBindBuffer(0, gl_const::GLArrayBuffer); -} - -void TransparentLayer::Render(uint32_t textureId, ref_ptr mng) -{ - // Unbind current VAO, because glVertexAttributePointer and glEnableVertexAttribute can affect it. - if (dp::GLExtensionsList::Instance().IsSupported(dp::GLExtensionsList::VertexArrayObject)) - GLFunctions::glBindVertexArray(0); - - ref_ptr prg = mng->GetProgram(gpu::TRANSPARENT_LAYER_PROGRAM); - prg->Bind(); - - if (m_bufferId == 0) - Build(prg); - - GLFunctions::glActiveTexture(gl_const::GLTexture0); - GLFunctions::glBindTexture(textureId); - GLFunctions::glBindBuffer(m_bufferId, gl_const::GLArrayBuffer); - - GLFunctions::glEnableVertexAttribute(m_attributePosition); - GLFunctions::glVertexAttributePointer(m_attributePosition, 2, gl_const::GLFloatType, false, - sizeof(float) * 4, 0); - GLFunctions::glEnableVertexAttribute(m_attributeTexCoord); - GLFunctions::glVertexAttributePointer(m_attributeTexCoord, 2, gl_const::GLFloatType, false, - sizeof(float) * 4, sizeof(float) * 2); - - GLFunctions::glEnable(gl_const::GLBlending); - GLFunctions::glDrawArrays(gl_const::GLTriangleStrip, 0, 4); - GLFunctions::glDisable(gl_const::GLBlending); - - prg->Unbind(); - GLFunctions::glBindTexture(0); - GLFunctions::glBindBuffer(0, gl_const::GLArrayBuffer); -} - -} // namespace df diff --git a/drape_frontend/transparent_layer.hpp b/drape_frontend/transparent_layer.hpp deleted file mode 100644 index 3ac12a03f4..0000000000 --- a/drape_frontend/transparent_layer.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include "drape/pointers.hpp" - -#include "std/vector.hpp" - -namespace dp -{ -class GpuProgram; -class GpuProgramManager; -} - -class ScreenBase; - -namespace df -{ - -class TransparentLayer -{ -public: - TransparentLayer(); - ~TransparentLayer(); - - void Render(uint32_t textureId, ref_ptr mng); - -private: - void Build(ref_ptr prg); - - uint32_t m_bufferId = 0; - int8_t m_attributePosition; - int8_t m_attributeTexCoord; - - vector m_vertices; -}; - -} // namespace df diff --git a/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj b/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj index 50bd337c5b..17753192ff 100644 --- a/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj +++ b/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj @@ -36,6 +36,8 @@ 452C9EE31CEDCF3200A55E57 /* scale_animation.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 452C9ED11CEDCF3200A55E57 /* scale_animation.hpp */; }; 452C9EE41CEDCF3200A55E57 /* sequence_animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 452C9ED21CEDCF3200A55E57 /* sequence_animation.cpp */; }; 452C9EE51CEDCF3200A55E57 /* sequence_animation.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 452C9ED31CEDCF3200A55E57 /* sequence_animation.hpp */; }; + 452FE5C31EB2004F00EE470C /* screen_quad_renderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 452FE5C11EB2004F00EE470C /* screen_quad_renderer.cpp */; }; + 452FE5C41EB2004F00EE470C /* screen_quad_renderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 452FE5C21EB2004F00EE470C /* screen_quad_renderer.hpp */; }; 453EEA6D1E3A28F400505E09 /* colored_symbol_shape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 453EEA6B1E3A28F400505E09 /* colored_symbol_shape.cpp */; }; 453EEA6E1E3A28F400505E09 /* colored_symbol_shape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 453EEA6C1E3A28F400505E09 /* colored_symbol_shape.hpp */; }; 454C19BB1CCE3EC0002A2C86 /* animation_constants.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 454C19B81CCE3EC0002A2C86 /* animation_constants.hpp */; }; @@ -191,8 +193,6 @@ 6743D36E1C3A9F090095054B /* arrow3d.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6743D3681C3A9F090095054B /* arrow3d.hpp */; }; 6743D36F1C3A9F090095054B /* framebuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6743D3691C3A9F090095054B /* framebuffer.cpp */; }; 6743D3701C3A9F090095054B /* framebuffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6743D36A1C3A9F090095054B /* framebuffer.hpp */; }; - 6743D3711C3A9F090095054B /* transparent_layer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6743D36B1C3A9F090095054B /* transparent_layer.cpp */; }; - 6743D3721C3A9F090095054B /* transparent_layer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6743D36C1C3A9F090095054B /* transparent_layer.hpp */; }; 675D21661BFB785900717E4F /* ruler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670948331BDF9C48005014C0 /* ruler.cpp */; }; 675D218C1BFB871D00717E4F /* proto_to_styles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675D21851BFB871D00717E4F /* proto_to_styles.cpp */; }; 675D218D1BFB871D00717E4F /* proto_to_styles.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675D21861BFB871D00717E4F /* proto_to_styles.hpp */; }; @@ -253,6 +253,8 @@ 452C9ED11CEDCF3200A55E57 /* scale_animation.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = scale_animation.hpp; sourceTree = ""; }; 452C9ED21CEDCF3200A55E57 /* sequence_animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sequence_animation.cpp; sourceTree = ""; }; 452C9ED31CEDCF3200A55E57 /* sequence_animation.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sequence_animation.hpp; sourceTree = ""; }; + 452FE5C11EB2004F00EE470C /* screen_quad_renderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = screen_quad_renderer.cpp; sourceTree = ""; }; + 452FE5C21EB2004F00EE470C /* screen_quad_renderer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = screen_quad_renderer.hpp; sourceTree = ""; }; 453EEA6B1E3A28F400505E09 /* colored_symbol_shape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = colored_symbol_shape.cpp; sourceTree = ""; }; 453EEA6C1E3A28F400505E09 /* colored_symbol_shape.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = colored_symbol_shape.hpp; sourceTree = ""; }; 454C19B81CCE3EC0002A2C86 /* animation_constants.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = animation_constants.hpp; sourceTree = ""; }; @@ -419,8 +421,6 @@ 6743D3681C3A9F090095054B /* arrow3d.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = arrow3d.hpp; sourceTree = ""; }; 6743D3691C3A9F090095054B /* framebuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = framebuffer.cpp; sourceTree = ""; }; 6743D36A1C3A9F090095054B /* framebuffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = framebuffer.hpp; sourceTree = ""; }; - 6743D36B1C3A9F090095054B /* transparent_layer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = transparent_layer.cpp; sourceTree = ""; }; - 6743D36C1C3A9F090095054B /* transparent_layer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = transparent_layer.hpp; sourceTree = ""; }; 675D21851BFB871D00717E4F /* proto_to_styles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = proto_to_styles.cpp; sourceTree = ""; }; 675D21861BFB871D00717E4F /* proto_to_styles.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = proto_to_styles.hpp; sourceTree = ""; }; 675D21871BFB871D00717E4F /* rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rect.h; sourceTree = ""; }; @@ -496,6 +496,8 @@ 45B4B8C81CF5C16B00A54761 /* screen_animations.hpp */, 45B4B8C91CF5C16B00A54761 /* screen_operations.cpp */, 45B4B8CA1CF5C16B00A54761 /* screen_operations.hpp */, + 452FE5C11EB2004F00EE470C /* screen_quad_renderer.cpp */, + 452FE5C21EB2004F00EE470C /* screen_quad_renderer.hpp */, 454C19B81CCE3EC0002A2C86 /* animation_constants.hpp */, 454C19B91CCE3EC0002A2C86 /* animation_system.cpp */, 454C19BA1CCE3EC0002A2C86 /* animation_system.hpp */, @@ -513,8 +515,6 @@ 6743D36A1C3A9F090095054B /* framebuffer.hpp */, 45580AB91E28DB2600CD535D /* scenario_manager.hpp */, 45580AB81E28DB2600CD535D /* scenario_manager.cpp */, - 6743D36B1C3A9F090095054B /* transparent_layer.cpp */, - 6743D36C1C3A9F090095054B /* transparent_layer.hpp */, F6B2830B1C1B04680081957A /* gps_track_point.hpp */, F6B2830C1C1B04680081957A /* gps_track_renderer.cpp */, F6B2830D1C1B04680081957A /* gps_track_renderer.hpp */, @@ -753,7 +753,6 @@ 670948721BDF9C7F005014C0 /* feature_styler.hpp in Headers */, 6709484E1BDF9C48005014C0 /* shape.hpp in Headers */, 452C9EE31CEDCF3200A55E57 /* scale_animation.hpp in Headers */, - 6743D3721C3A9F090095054B /* transparent_layer.hpp in Headers */, F6B283101C1B04680081957A /* gps_track_point.hpp in Headers */, 670947B61BDF9BE1005014C0 /* render_node.hpp in Headers */, 6709484C1BDF9C48005014C0 /* ruler.hpp in Headers */, @@ -787,6 +786,7 @@ 452C9ED71CEDCF3200A55E57 /* arrow_animation.hpp in Headers */, 454C19BD1CCE3EC0002A2C86 /* animation_system.hpp in Headers */, 670947DF1BDF9BE1005014C0 /* visual_params.hpp in Headers */, + 452FE5C41EB2004F00EE470C /* screen_quad_renderer.hpp in Headers */, 452C9EDB1CEDCF3200A55E57 /* interpolators.hpp in Headers */, 670948171BDF9C39005014C0 /* interpolation_holder.hpp in Headers */, 670947FD1BDF9BF5005014C0 /* base_renderer.hpp in Headers */, @@ -928,7 +928,6 @@ 6709484D1BDF9C48005014C0 /* shape.cpp in Sources */, 675D218C1BFB871D00717E4F /* proto_to_styles.cpp in Sources */, 670948781BDF9C7F005014C0 /* glyph_cache.cpp in Sources */, - 6743D3711C3A9F090095054B /* transparent_layer.cpp in Sources */, 670948431BDF9C48005014C0 /* drape_gui.cpp in Sources */, 670947D61BDF9BE1005014C0 /* user_event_stream.cpp in Sources */, 452C9EDE1CEDCF3200A55E57 /* parallel_animation.cpp in Sources */, @@ -986,6 +985,7 @@ 672D249A1E892768004BB7B1 /* overlays_tracker.cpp in Sources */, 452C9ED81CEDCF3200A55E57 /* follow_animation.cpp in Sources */, 6709481C1BDF9C39005014C0 /* opacity_animation.cpp in Sources */, + 452FE5C31EB2004F00EE470C /* screen_quad_renderer.cpp in Sources */, 670947E61BDF9BEC005014C0 /* frontend_renderer.cpp in Sources */, 670947D41BDF9BE1005014C0 /* tile_utils.cpp in Sources */, F6B283111C1B04680081957A /* gps_track_renderer.cpp in Sources */,