Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--drape/CMakeLists.txt10
-rw-r--r--drape/debug_rect_renderer.cpp5
-rw-r--r--drape/debug_rect_renderer.hpp2
-rw-r--r--drape/drape.pro61
-rw-r--r--drape/drape_common.pri6
-rw-r--r--drape/drape_tests/CMakeLists.txt9
-rw-r--r--drape/drape_tests/batcher_tests.cpp9
-rw-r--r--drape/drape_tests/drape_tests.pro2
-rw-r--r--drape/drape_tests/uniform_value_tests.cpp34
-rw-r--r--drape/gpu_program.cpp24
-rw-r--r--drape/gpu_program.hpp25
-rw-r--r--drape/gpu_program_info.hpp32
-rw-r--r--drape/gpu_program_manager.cpp76
-rw-r--r--drape/gpu_program_manager.hpp30
-rw-r--r--drape/shader.cpp82
-rw-r--r--drape/shader.hpp18
-rw-r--r--drape_frontend/CMakeLists.txt73
-rw-r--r--drape_frontend/area_shape.cpp6
-rw-r--r--drape_frontend/arrow3d.cpp2
-rw-r--r--drape_frontend/colored_symbol_shape.cpp2
-rw-r--r--drape_frontend/drape_api_renderer.cpp2
-rwxr-xr-xdrape_frontend/drape_frontend.pro65
-rw-r--r--drape_frontend/drape_frontend_tests/CMakeLists.txt16
-rw-r--r--drape_frontend/drape_frontend_tests/compile_shaders_test.cpp183
-rw-r--r--drape_frontend/drape_frontend_tests/drape_frontend_tests.pro10
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp6
-rw-r--r--drape_frontend/gps_track_renderer.cpp2
-rw-r--r--drape_frontend/gps_track_shape.cpp2
-rw-r--r--drape_frontend/gui/choose_position_mark.cpp7
-rw-r--r--drape_frontend/gui/compass.cpp8
-rw-r--r--drape_frontend/gui/gui_text.cpp4
-rw-r--r--drape_frontend/gui/ruler.cpp10
-rw-r--r--drape_frontend/line_shape.cpp2
-rw-r--r--drape_frontend/my_position.cpp2
-rw-r--r--drape_frontend/path_symbol_shape.cpp2
-rw-r--r--drape_frontend/path_text_shape.cpp4
-rw-r--r--drape_frontend/poi_symbol_shape.cpp2
-rwxr-xr-xdrape_frontend/render_group.cpp2
-rw-r--r--drape_frontend/route_renderer.cpp4
-rw-r--r--drape_frontend/route_shape.cpp2
-rw-r--r--drape_frontend/rule_drawer.cpp5
-rw-r--r--drape_frontend/screen_quad_renderer.cpp2
-rw-r--r--drape_frontend/selection_shape.cpp2
-rw-r--r--drape_frontend/shaders/area.vsh.glsl7
-rw-r--r--drape_frontend/shaders/area3d.vsh.glsl2
-rw-r--r--drape_frontend/shaders/area3d_outline.vsh.glsl2
-rw-r--r--drape_frontend/shaders/arrow3d.fsh.glsl13
-rw-r--r--drape_frontend/shaders/arrow3d_outline.fsh.glsl13
-rw-r--r--drape_frontend/shaders/arrow3d_shadow.fsh.glsl13
-rw-r--r--drape_frontend/shaders/circle.fsh.glsl2
-rw-r--r--drape_frontend/shaders/circle.vsh.glsl9
-rw-r--r--drape_frontend/shaders/colored_symbol.fsh.glsl2
-rw-r--r--drape_frontend/shaders/colored_symbol.vsh.glsl9
-rw-r--r--drape_frontend/shaders/colored_symbol_billboard.vsh.glsl10
-rw-r--r--drape_frontend/shaders/dashed_line.fsh.glsl2
-rw-r--r--drape_frontend/shaders/dashed_line.vsh.glsl15
-rw-r--r--drape_frontend/shaders/debug_rect.fsh.glsl8
-rw-r--r--drape_frontend/shaders/debug_rect.vsh.glsl2
-rw-r--r--drape_frontend/shaders/discarded_texturing.fsh.glsl2
-rw-r--r--drape_frontend/shaders/hatching_area.fsh.glsl2
-rw-r--r--drape_frontend/shaders/hatching_area.vsh.glsl7
-rw-r--r--drape_frontend/shaders/line.fsh.glsl2
-rw-r--r--drape_frontend/shaders/line.vsh.glsl12
-rw-r--r--drape_frontend/shaders/masked_texturing.fsh.glsl2
-rw-r--r--drape_frontend/shaders/masked_texturing.vsh.glsl8
-rw-r--r--drape_frontend/shaders/masked_texturing_billboard.vsh.glsl12
-rw-r--r--drape_frontend/shaders/my_position.vsh.glsl8
-rw-r--r--drape_frontend/shaders/path_symbol.vsh.glsl10
-rw-r--r--drape_frontend/shaders/position_accuracy3d.vsh.glsl8
-rw-r--r--drape_frontend/shaders/route.fsh.glsl15
-rw-r--r--drape_frontend/shaders/route.vsh.glsl15
-rw-r--r--drape_frontend/shaders/route_arrow.vsh.glsl14
-rw-r--r--drape_frontend/shaders/route_dash.fsh.glsl23
-rw-r--r--drape_frontend/shaders/ruler.vsh.glsl2
-rw-r--r--drape_frontend/shaders/shader_index.txt78
-rw-r--r--drape_frontend/shaders/shaders_lib.glsl48
-rw-r--r--drape_frontend/shaders/solid_color.fsh.glsl2
-rwxr-xr-xdrape_frontend/shaders/text.fsh.glsl2
-rw-r--r--drape_frontend/shaders/text.vsh.glsl12
-rwxr-xr-xdrape_frontend/shaders/text_billboard.vsh.glsl10
-rwxr-xr-xdrape_frontend/shaders/text_outlined.vsh.glsl14
-rwxr-xr-xdrape_frontend/shaders/text_outlined_billboard.vsh.glsl19
-rwxr-xr-xdrape_frontend/shaders/text_outlined_gui.vsh.glsl13
-rw-r--r--drape_frontend/shaders/texturing.fsh.glsl2
-rw-r--r--drape_frontend/shaders/texturing.vsh.glsl8
-rw-r--r--drape_frontend/shaders/texturing3d.fsh.glsl2
-rw-r--r--drape_frontend/shaders/texturing_billboard.vsh.glsl12
-rw-r--r--drape_frontend/shaders/texturing_gui.vsh.glsl2
-rw-r--r--drape_frontend/shaders/trackpoint.fsh.glsl16
-rw-r--r--drape_frontend/shaders/trackpoint.vsh.glsl18
-rw-r--r--drape_frontend/shaders/traffic.fsh.glsl2
-rw-r--r--drape_frontend/shaders/traffic.vsh.glsl15
-rw-r--r--drape_frontend/shaders/traffic_line.fsh.glsl6
-rw-r--r--drape_frontend/shaders/traffic_line.vsh.glsl7
-rw-r--r--drape_frontend/shaders/user_mark.vsh.glsl8
-rw-r--r--drape_frontend/shaders/user_mark_billboard.vsh.glsl9
-rw-r--r--drape_frontend/text_shape.cpp2
-rw-r--r--drape_frontend/traffic_generator.cpp2
-rw-r--r--drape_frontend/traffic_renderer.cpp2
-rw-r--r--drape_frontend/user_mark_shapes.cpp2
-rw-r--r--omim.pro5
-rw-r--r--qt/qt_common/map_widget.cpp4
-rw-r--r--tools/autobuild/shader_preprocessor.py465
-rw-r--r--xcode/drape/drape.xcodeproj/project.pbxproj224
-rw-r--r--xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj145
106 files changed, 1033 insertions, 1231 deletions
diff --git a/.gitignore b/.gitignore
index d1dc476002..3e7a021be6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -119,7 +119,10 @@ tools/twine/.git
# shader preprocessing moc files
drape/shader_def.hpp
drape/shader_def.cpp
-drape/drape_tests/enum_shaders.hpp
+drape_frontend/shader_def.hpp
+drape_frontend/shader_def.cpp
+drape_frontend/drape_frontend_tests/shader_def_for_tests.hpp
+drape_frontend/drape_frontend_tests/shader_def_for_tests.cpp
tizen/*/Debug/*
tizen/*/.*
diff --git a/drape/CMakeLists.txt b/drape/CMakeLists.txt
index 7fd286ef83..bfff605500 100644
--- a/drape/CMakeLists.txt
+++ b/drape/CMakeLists.txt
@@ -2,13 +2,6 @@ project(drape)
get_filename_component(DRAPE_ROOT ${PROJECT_SOURCE_DIR} ABSOLUTE)
-execute_process(
- COMMAND python ${OMIM_ROOT}/tools/autobuild/shader_preprocessor.py
- ${DRAPE_ROOT}/shaders
- shader_index.txt
- shader_def
-)
-
add_definitions(-DU_DISABLE_RENAMING)
include_directories(
@@ -65,6 +58,7 @@ set(
${DRAPE_ROOT}/gpu_buffer.hpp
${DRAPE_ROOT}/gpu_program.cpp
${DRAPE_ROOT}/gpu_program.hpp
+ ${DRAPE_ROOT}/gpu_program_info.hpp
${DRAPE_ROOT}/gpu_program_manager.cpp
${DRAPE_ROOT}/gpu_program_manager.hpp
${DRAPE_ROOT}/hw_texture.cpp
@@ -89,8 +83,6 @@ set(
${DRAPE_ROOT}/render_bucket.hpp
${DRAPE_ROOT}/shader.cpp
${DRAPE_ROOT}/shader.hpp
- ${DRAPE_ROOT}/shader_def.cpp
- ${DRAPE_ROOT}/shader_def.hpp
${DRAPE_ROOT}/static_texture.cpp
${DRAPE_ROOT}/static_texture.hpp
${DRAPE_ROOT}/stipple_pen_resource.cpp
diff --git a/drape/debug_rect_renderer.cpp b/drape/debug_rect_renderer.cpp
index 6ecb93a9aa..c1a8262bf1 100644
--- a/drape/debug_rect_renderer.cpp
+++ b/drape/debug_rect_renderer.cpp
@@ -2,7 +2,6 @@
#include "drape/gpu_program_manager.hpp"
#include "drape/glfunctions.hpp"
-#include "drape/shader_def.hpp"
namespace dp
{
@@ -40,7 +39,7 @@ DebugRectRenderer::~DebugRectRenderer()
ASSERT_EQUAL(m_vertexBuffer, 0, ());
}
-void DebugRectRenderer::Init(ref_ptr<dp::GpuProgramManager> mng)
+void DebugRectRenderer::Init(ref_ptr<dp::GpuProgramManager> mng, int programId)
{
m_vertexBuffer = GLFunctions::glGenBuffer();
GLFunctions::glBindBuffer(m_vertexBuffer, gl_const::GLArrayBuffer);
@@ -48,7 +47,7 @@ void DebugRectRenderer::Init(ref_ptr<dp::GpuProgramManager> mng)
m_VAO = GLFunctions::glGenVertexArray();
GLFunctions::glBindVertexArray(m_VAO);
- m_program = mng->GetProgram(gpu::DEBUG_RECT_PROGRAM);
+ m_program = mng->GetProgram(programId);
int8_t attributeLocation = m_program->GetAttributeLocation("a_position");
ASSERT_NOT_EQUAL(attributeLocation, -1, ());
GLFunctions::glEnableVertexAttribute(attributeLocation);
diff --git a/drape/debug_rect_renderer.hpp b/drape/debug_rect_renderer.hpp
index 2c98279bf4..c4e6da731f 100644
--- a/drape/debug_rect_renderer.hpp
+++ b/drape/debug_rect_renderer.hpp
@@ -16,7 +16,7 @@ class DebugRectRenderer
{
public:
static DebugRectRenderer & Instance();
- void Init(ref_ptr<dp::GpuProgramManager> mng);
+ void Init(ref_ptr<dp::GpuProgramManager> mng, int programId);
void Destroy();
bool IsEnabled() const;
diff --git a/drape/drape.pro b/drape/drape.pro
index 6a76a19f73..710bd53e79 100644
--- a/drape/drape.pro
+++ b/drape/drape.pro
@@ -5,70 +5,9 @@ INCLUDEPATH += ../3party/icu/common ../3party/icu/i18n
DEFINES += U_DISABLE_RENAMING
ROOT_DIR = ..
-SHADER_COMPILE_ARGS = $$PWD/shaders shader_index.txt shader_def
include($$ROOT_DIR/common.pri)
DRAPE_DIR = .
include($$DRAPE_DIR/drape_common.pri)
SOURCES += glfunctions.cpp
-
-OTHER_FILES += \
- shaders/area3d_vertex_shader.vsh \
- shaders/area3d_outline_vertex_shader.vsh \
- shaders/area_vertex_shader.vsh \
- shaders/arrow3d_fragment_shader.fsh \
- shaders/arrow3d_outline_fragment_shader.fsh \
- shaders/arrow3d_shadow_fragment_shader.fsh \
- shaders/arrow3d_shadow_vertex_shader.vsh \
- shaders/arrow3d_vertex_shader.vsh \
- shaders/circle_shader.fsh \
- shaders/circle_shader.vsh \
- shaders/colored_symbol_billboard_shader.vsh \
- shaders/colored_symbol_shader.fsh \
- shaders/colored_symbol_shader.vsh \
- shaders/compass_vertex_shader.vsh \
- shaders/dashed_fragment_shader.fsh \
- shaders/dashed_vertex_shader.vsh \
- shaders/debug_rect_fragment_shader.fsh \
- shaders/debug_rect_vertex_shader.vsh \
- shaders/discarded_texturing_fragment_shader.fsh \
- shaders/hatching_area_fragment_shader.fsh \
- shaders/hatching_area_vertex_shader.vsh \
- shaders/line_fragment_shader.fsh \
- shaders/line_vertex_shader.vsh \
- shaders/masked_texturing_billboard_vertex_shader.vsh \
- shaders/masked_texturing_fragment_shader.fsh \
- shaders/masked_texturing_vertex_shader.vsh \
- shaders/my_position_shader.vsh \
- shaders/path_symbol_vertex_shader.vsh \
- shaders/position_accuracy3d_shader.vsh \
- shaders/route_arrow_vertex_shader.vsh \
- shaders/route_dash_fragment_shader.fsh \
- 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 \
- shaders/text_fixed_fragment_shader.fsh \
- shaders/text_fixed_vertex_shader.vsh \
- shaders/text_fragment_shader.fsh \
- shaders/text_outlined_billboard_vertex_shader.vsh \
- shaders/text_outlined_gui_vertex_shader.vsh \
- shaders/text_outlined_vertex_shader.vsh \
- shaders/text_vertex_shader.vsh \
- shaders/texturing3d_fragment_shader.fsh \
- shaders/texturing3d_vertex_shader.vsh \
- shaders/texturing_billboard_vertex_shader.vsh \
- shaders/texturing_fragment_shader.fsh \
- shaders/texturing_vertex_shader.vsh \
- shaders/trackpoint_vertex_shader.vsh \
- shaders/trackpoint_fragment_shader.fsh \
- shaders/traffic_fragment_shader.fsh \
- shaders/traffic_vertex_shader.vsh \
- shaders/traffic_line_fragment_shader.fsh \
- shaders/traffic_line_vertex_shader.vsh \
- shaders/user_mark.vsh \
- shaders/user_mark_billboard.vsh \
diff --git a/drape/drape_common.pri b/drape/drape_common.pri
index 8eef7285bb..fa68b27b05 100644
--- a/drape/drape_common.pri
+++ b/drape/drape_common.pri
@@ -1,6 +1,3 @@
-CMDRES = $$system(python ../tools/autobuild/shader_preprocessor.py $$SHADER_COMPILE_ARGS)
-!isEmpty($$CMDRES):message($$CMDRES)
-
INCLUDEPATH *= $$ROOT_DIR/3party/freetype/include
SOURCES += \
@@ -33,7 +30,6 @@ SOURCES += \
$$DRAPE_DIR/pointers.cpp \
$$DRAPE_DIR/render_bucket.cpp \
$$DRAPE_DIR/shader.cpp \
- $$DRAPE_DIR/shader_def.cpp \
$$DRAPE_DIR/static_texture.cpp \
$$DRAPE_DIR/stipple_pen_resource.cpp \
$$DRAPE_DIR/support_manager.cpp \
@@ -77,6 +73,7 @@ HEADERS += \
$$DRAPE_DIR/glyph_manager.hpp \
$$DRAPE_DIR/gpu_buffer.hpp \
$$DRAPE_DIR/gpu_program.hpp \
+ $$DRAPE_DIR/gpu_program_info.hpp \
$$DRAPE_DIR/gpu_program_manager.hpp \
$$DRAPE_DIR/hw_texture.hpp \
$$DRAPE_DIR/index_buffer.hpp \
@@ -90,7 +87,6 @@ HEADERS += \
$$DRAPE_DIR/pointers.hpp \
$$DRAPE_DIR/render_bucket.hpp \
$$DRAPE_DIR/shader.hpp \
- $$DRAPE_DIR/shader_def.hpp \
$$DRAPE_DIR/static_texture.hpp \
$$DRAPE_DIR/stipple_pen_resource.hpp \
$$DRAPE_DIR/support_manager.hpp \
diff --git a/drape/drape_tests/CMakeLists.txt b/drape/drape_tests/CMakeLists.txt
index 34c617a197..6852b51ae3 100644
--- a/drape/drape_tests/CMakeLists.txt
+++ b/drape/drape_tests/CMakeLists.txt
@@ -1,16 +1,8 @@
project(drape_tests)
-execute_process(
- COMMAND python ${OMIM_ROOT}/tools/autobuild/shader_preprocessor.py
- ${DRAPE_ROOT}/shaders
- shader_index.txt
- shader_def
-)
-
add_definitions(
-DOGL_TEST_ENABLED
-DGTEST_DONT_DEFINE_TEST
- -DCOMPILER_TESTS
)
include_directories(
@@ -26,7 +18,6 @@ set(
bidi_tests.cpp
bingind_info_tests.cpp
buffer_tests.cpp
- compile_shaders_test.cpp
dummy_texture.hpp
failure_reporter.cpp
font_texture_tests.cpp
diff --git a/drape/drape_tests/batcher_tests.cpp b/drape/drape_tests/batcher_tests.cpp
index 0b8da62565..eedb3a8d2f 100644
--- a/drape/drape_tests/batcher_tests.cpp
+++ b/drape/drape_tests/batcher_tests.cpp
@@ -1,11 +1,10 @@
-#include "testing/testing.hpp"
#include "drape/drape_tests/memory_comparer.hpp"
+#include "testing/testing.hpp"
-#include "drape/glconstants.hpp"
#include "drape/batcher.hpp"
+#include "drape/glconstants.hpp"
#include "drape/gpu_program_manager.hpp"
#include "drape/index_storage.hpp"
-#include "drape/shader_def.hpp"
#include "drape/vertex_array_buffer.hpp"
#include "drape/drape_tests/glmock_functions.hpp"
@@ -13,9 +12,9 @@
#include "base/stl_add.hpp"
#include "std/bind.hpp"
+#include "std/bind.hpp"
#include "std/cstring.hpp"
#include "std/function.hpp"
-#include "std/bind.hpp"
#include <gmock/gmock.h>
@@ -51,7 +50,7 @@ public:
template <typename TBatcherCall>
void RunTest(float * vertexes, void * indexes,
- uint32_t vertexCount, uint32_t vertexComponentCount,
+ uint32_t vertexCount, uint8_t vertexComponentCount,
uint32_t indexCount, TBatcherCall const & fn)
{
int const vertexSize = vertexCount * vertexComponentCount;
diff --git a/drape/drape_tests/drape_tests.pro b/drape/drape_tests/drape_tests.pro
index 174d5a4760..b06a55034b 100644
--- a/drape/drape_tests/drape_tests.pro
+++ b/drape/drape_tests/drape_tests.pro
@@ -8,7 +8,6 @@ DEFINES += OGL_TEST_ENABLED GTEST_DONT_DEFINE_TEST COMPILER_TESTS U_DISABLE_RENA
ROOT_DIR = ../..
DEPENDENCIES = qt_tstfrm indexer platform coding geometry base gmock freetype expat stats_client stb_image sdf_image icu
-SHADER_COMPILE_ARGS = $$PWD/../shaders shader_index.txt shader_def
include($$ROOT_DIR/common.pri)
QT *= core gui widgets
@@ -32,7 +31,6 @@ SOURCES += \
bidi_tests.cpp \
bingind_info_tests.cpp \
buffer_tests.cpp \
- compile_shaders_test.cpp \
failure_reporter.cpp \
font_texture_tests.cpp \
glfunctions.cpp \
diff --git a/drape/drape_tests/uniform_value_tests.cpp b/drape/drape_tests/uniform_value_tests.cpp
index 12d2994b9a..d3d4905193 100644
--- a/drape/drape_tests/uniform_value_tests.cpp
+++ b/drape/drape_tests/uniform_value_tests.cpp
@@ -1,13 +1,14 @@
#include "testing/testing.hpp"
-#include "drape/gpu_program_manager.hpp"
#include "drape/gpu_program.hpp"
-#include "drape/shader_def.hpp"
+#include "drape/gpu_program_info.hpp"
+#include "drape/gpu_program_manager.hpp"
#include "drape/uniform_value.hpp"
#include "drape/drape_tests/glmock_functions.hpp"
-#include "std/cstring.hpp"
+#include <cstring>
+#include <string>
#include <gmock/gmock.h>
@@ -77,6 +78,28 @@ void mock_glGetActiveUniform(uint32_t programID,
ASSERT(false, ("Undefined index:", index));
}
+class TestShaderMapper : public gpu::GpuProgramGetter
+{
+public:
+ TestShaderMapper()
+ {
+ m_vertexShader = "void main() { gl_Position = vec4(0.0, 0.0, 0.0, 1.0); }";
+ m_fragmentShader = "void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); }";
+ m_info.m_vertexIndex = 0;
+ m_info.m_fragmentIndex = 1;
+ m_info.m_textureSlotsCount = 0;
+ m_info.m_vertexSource = m_vertexShader.c_str();
+ m_info.m_fragmentSource = m_fragmentShader.c_str();
+ }
+ gpu::GpuProgramInfo const & GetProgramInfo(int program) const override
+ {
+ return m_info;
+ }
+private:
+ gpu::GpuProgramInfo m_info;
+ std::string m_vertexShader;
+ std::string m_fragmentShader;
+};
} // namespace
UNIT_TEST(UniformValueTest)
@@ -101,13 +124,13 @@ UNIT_TEST(UniformValueTest)
{
InSequence seq;
+ EXPECTGL(glGetInteger(gl_const::GLMaxVertexTextures)).Times(1);
// vertexShader->Ref()
EXPECTGL(glCreateShader(gl_const::GLVertexShader)).WillOnce(Return(VertexShaderID));
EXPECTGL(glShaderSource(VertexShaderID, _)).Times(1);
EXPECTGL(glCompileShader(VertexShaderID, _)).WillOnce(Return(true));
// fragmentShader->Ref()
EXPECTGL(glCreateShader(gl_const::GLFragmentShader)).WillOnce(Return(FragmentShaderID));
- //EXPECTGL(glGetInteger(gl_const::GLMaxFragmentTextures)).WillOnce(Return(8));
EXPECTGL(glShaderSource(FragmentShaderID, _)).Times(1);
EXPECTGL(glCompileShader(FragmentShaderID, _)).WillOnce(Return(true));
@@ -154,7 +177,8 @@ UNIT_TEST(UniformValueTest)
}
drape_ptr<GpuProgramManager> manager = make_unique_dp<GpuProgramManager>();
- ref_ptr<GpuProgram> program = manager->GetProgram(gpu::TEXTURING_PROGRAM);
+ manager->Init(make_unique_dp<TestShaderMapper>());
+ ref_ptr<GpuProgram> program = manager->GetProgram(0);
program->Bind();
diff --git a/drape/gpu_program.cpp b/drape/gpu_program.cpp
index 7bbc23f071..bcc97c2f30 100644
--- a/drape/gpu_program.cpp
+++ b/drape/gpu_program.cpp
@@ -1,23 +1,17 @@
#include "drape/gpu_program.hpp"
#include "drape/glfunctions.hpp"
#include "drape/glstate.hpp"
-#include "drape/shader_def.hpp"
#include "drape/support_manager.hpp"
-#include "base/assert.hpp"
#include "base/logging.hpp"
-#ifdef DEBUG
- #include "std/map.hpp"
-#endif
-
namespace dp
{
-
-GpuProgram::GpuProgram(int programIndex, ref_ptr<Shader> vertexShader, ref_ptr<Shader> fragmentShader)
+GpuProgram::GpuProgram(int programIndex, ref_ptr<Shader> vertexShader,
+ ref_ptr<Shader> fragmentShader, uint8_t textureSlotsCount)
: m_vertexShader(vertexShader)
, m_fragmentShader(fragmentShader)
- , m_textureSlotsCount(gpu::GetTextureSlotsCount(programIndex))
+ , m_textureSlotsCount(textureSlotsCount)
{
m_programID = GLFunctions::glCreateProgram();
GLFunctions::glAttachShader(m_programID, m_vertexShader->GetID());
@@ -27,8 +21,7 @@ GpuProgram::GpuProgram(int programIndex, ref_ptr<Shader> vertexShader, ref_ptr<S
if (!GLFunctions::glLinkProgram(m_programID, errorLog))
LOG(LERROR, ("Program ", m_programID, " link error = ", errorLog));
- // originaly i detached shaders there, but then i try it on Tegra3 device.
- // on Tegra3, glGetActiveUniform will not work if you detach shaders after linking
+ // On Tegra3 glGetActiveUniform isn't work if you detach shaders after linking.
LoadUniformLocations();
// On Tegra2 we cannot detach shaders at all.
@@ -71,12 +64,12 @@ void GpuProgram::Unbind()
GLFunctions::glUseProgram(0);
}
-int8_t GpuProgram::GetAttributeLocation(string const & attributeName) const
+int8_t GpuProgram::GetAttributeLocation(std::string const & attributeName) const
{
return GLFunctions::glGetAttribLocation(m_programID, attributeName);
}
-int8_t GpuProgram::GetUniformLocation(string const & uniformName) const
+int8_t GpuProgram::GetUniformLocation(std::string const & uniformName) const
{
auto const it = m_uniforms.find(uniformName);
if (it == m_uniforms.end())
@@ -92,10 +85,9 @@ void GpuProgram::LoadUniformLocations()
{
int32_t size = 0;
glConst type = gl_const::GLFloatVec4;
- string name;
+ std::string name;
GLFunctions::glGetActiveUniform(m_programID, i, &size, &type, name);
m_uniforms[name] = GLFunctions::glGetUniformLocation(m_programID, name);
}
}
-
-} // namespace dp
+} // namespace dp
diff --git a/drape/gpu_program.hpp b/drape/gpu_program.hpp
index 9346309cb3..c740401be6 100644
--- a/drape/gpu_program.hpp
+++ b/drape/gpu_program.hpp
@@ -1,30 +1,26 @@
#pragma once
-#include "drape/shader.hpp"
-#include "drape/pointers.hpp"
#include "drape/glconstants.hpp"
+#include "drape/pointers.hpp"
+#include "drape/shader.hpp"
-#include "std/string.hpp"
-
-#ifdef DEBUG
- #include "std/unique_ptr.hpp"
-#endif
+#include <map>
+#include <string>
namespace dp
{
-
class GpuProgram
{
public:
- GpuProgram(int programIndex, ref_ptr<Shader> vertexShader,
- ref_ptr<Shader> fragmentShader);
+ GpuProgram(int programIndex, ref_ptr<Shader> vertexShader, ref_ptr<Shader> fragmentShader,
+ uint8_t textureSlotsCount);
~GpuProgram();
void Bind();
void Unbind();
- int8_t GetAttributeLocation(string const & attributeName) const;
- int8_t GetUniformLocation(string const & uniformName) const;
+ int8_t GetAttributeLocation(std::string const & attributeName) const;
+ int8_t GetUniformLocation(std::string const & uniformName) const;
private:
void LoadUniformLocations();
@@ -35,10 +31,9 @@ private:
ref_ptr<Shader> m_vertexShader;
ref_ptr<Shader> m_fragmentShader;
- using TUniformLocations = map<string, int8_t>;
+ using TUniformLocations = std::map<std::string, int8_t>;
TUniformLocations m_uniforms;
uint8_t const m_textureSlotsCount;
};
-
-} // namespace dp
+} // namespace dp
diff --git a/drape/gpu_program_info.hpp b/drape/gpu_program_info.hpp
new file mode 100644
index 0000000000..5780ed0725
--- /dev/null
+++ b/drape/gpu_program_info.hpp
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <cstdint>
+#include <string>
+
+namespace gpu
+{
+struct GpuProgramInfo
+{
+ GpuProgramInfo() = default;
+ GpuProgramInfo(int vertexIndex, int fragmentIndex, char const * vertexSource,
+ char const * fragmentSource, uint8_t textureSlotsCount)
+ : m_vertexIndex(vertexIndex)
+ , m_fragmentIndex(fragmentIndex)
+ , m_vertexSource(vertexSource)
+ , m_fragmentSource(fragmentSource)
+ , m_textureSlotsCount(textureSlotsCount)
+ {}
+ int m_vertexIndex = -1;
+ int m_fragmentIndex = -1;
+ char const * m_vertexSource = nullptr;
+ char const * m_fragmentSource = nullptr;
+ uint8_t m_textureSlotsCount = 0;
+};
+
+class GpuProgramGetter
+{
+public:
+ virtual ~GpuProgramGetter() {}
+ virtual gpu::GpuProgramInfo const & GetProgramInfo(int program) const = 0;
+};
+} // namespace gpu
diff --git a/drape/gpu_program_manager.cpp b/drape/gpu_program_manager.cpp
index 8c51848572..5b9df04b81 100644
--- a/drape/gpu_program_manager.cpp
+++ b/drape/gpu_program_manager.cpp
@@ -1,55 +1,30 @@
#include "drape/gpu_program_manager.hpp"
-#include "drape/shader_def.hpp"
+#include "drape/glfunctions.hpp"
#include "drape/support_manager.hpp"
-#include "base/stl_add.hpp"
-#include "base/assert.hpp"
#include "base/logging.hpp"
+#include "base/stl_add.hpp"
namespace dp
{
-
-namespace
-{
-
-class ShaderMapper
-{
-public:
- ShaderMapper()
- {
- gpu::InitGpuProgramsLib(m_mapping);
- }
-
- gpu::ProgramInfo const & GetShaders(int program) const
- {
- map<int, gpu::ProgramInfo>::const_iterator it = m_mapping.find(program);
- ASSERT(it != m_mapping.end(), ());
- return it->second;
- }
-
-private:
- map<int, gpu::ProgramInfo> m_mapping;
-};
-
-static ShaderMapper s_mapper;
-
-} // namespace
-
GpuProgramManager::~GpuProgramManager()
{
m_programs.clear();
m_shaders.clear();
}
-void GpuProgramManager::Init()
+void GpuProgramManager::Init(drape_ptr<gpu::GpuProgramGetter> && programGetter)
{
+ m_programGetter = std::move(programGetter);
+ ASSERT(m_programGetter != nullptr, ());
+
// This feature is not supported on some Android devices (especially on Android 4.x version).
// Since we can't predict on which devices it'll work fine, we have to turn off for all devices.
#if !defined(OMIM_OS_ANDROID)
if (GLFunctions::glGetInteger(gl_const::GLMaxVertexTextures) > 0)
{
LOG(LINFO, ("VTF enabled"));
- m_globalDefines.append("#define ENABLE_VTF\n"); // VTF == Vetrex Texture Fetch
+ m_globalDefines.append("#define ENABLE_VTF\n"); // VTF == Vetrex Texture Fetch
}
#endif
@@ -59,19 +34,18 @@ void GpuProgramManager::Init()
ref_ptr<GpuProgram> GpuProgramManager::GetProgram(int index)
{
- program_map_t::iterator it = m_programs.find(index);
+ auto it = m_programs.find(index);
if (it != m_programs.end())
return make_ref(it->second);
- gpu::ProgramInfo const & programInfo = s_mapper.GetShaders(index);
- ref_ptr<Shader> vertexShader = GetShader(programInfo.m_vertexIndex,
- programInfo.m_vertexSource,
- Shader::VertexShader);
- ref_ptr<Shader> fragmentShader = GetShader(programInfo.m_fragmentIndex,
- programInfo.m_fragmentSource,
- Shader::FragmentShader);
+ auto const & programInfo = m_programGetter->GetProgramInfo(index);
+ auto vertexShader = GetShader(programInfo.m_vertexIndex, programInfo.m_vertexSource,
+ Shader::Type::VertexShader);
+ auto fragmentShader = GetShader(programInfo.m_fragmentIndex, programInfo.m_fragmentSource,
+ Shader::Type::FragmentShader);
- drape_ptr<GpuProgram> program = make_unique_dp<GpuProgram>(index, vertexShader, fragmentShader);
+ drape_ptr<GpuProgram> program = make_unique_dp<GpuProgram>(index, vertexShader, fragmentShader,
+ programInfo.m_textureSlotsCount);
ref_ptr<GpuProgram> result = make_ref(program);
m_programs.emplace(index, move(program));
@@ -80,15 +54,13 @@ ref_ptr<GpuProgram> GpuProgramManager::GetProgram(int index)
ref_ptr<Shader> GpuProgramManager::GetShader(int index, string const & source, Shader::Type t)
{
- shader_map_t::iterator it = m_shaders.find(index);
- if (it == m_shaders.end())
- {
- drape_ptr<Shader> shader = make_unique_dp<Shader>(source, m_globalDefines, t);
- ref_ptr<Shader> result = make_ref(shader);
- m_shaders.emplace(index, move(shader));
- return result;
- }
- return make_ref(it->second);
-}
+ auto it = m_shaders.find(index);
+ if (it != m_shaders.end())
+ return make_ref(it->second);
-} // namespace dp
+ drape_ptr<Shader> shader = make_unique_dp<Shader>(source, m_globalDefines, t);
+ ref_ptr<Shader> result = make_ref(shader);
+ m_shaders.emplace(index, move(shader));
+ return result;
+}
+} // namespace dp
diff --git a/drape/gpu_program_manager.hpp b/drape/gpu_program_manager.hpp
index c76f2e4394..1244b199d8 100644
--- a/drape/gpu_program_manager.hpp
+++ b/drape/gpu_program_manager.hpp
@@ -2,32 +2,36 @@
#include "drape/pointers.hpp"
#include "drape/gpu_program.hpp"
+#include "drape/gpu_program_info.hpp"
#include "drape/shader.hpp"
-#include "std/map.hpp"
-#include "std/noncopyable.hpp"
+#include "base/macros.hpp"
+
+#include <map>
+#include <string>
namespace dp
{
-
-class GpuProgramManager : public noncopyable
+class GpuProgramManager
{
public:
+ GpuProgramManager() = default;
~GpuProgramManager();
- void Init();
+ void Init(drape_ptr<gpu::GpuProgramGetter> && programGetter);
ref_ptr<GpuProgram> GetProgram(int index);
private:
ref_ptr<Shader> GetShader(int index, string const & source, Shader::Type t);
-private:
- typedef map<int, drape_ptr<GpuProgram> > program_map_t;
- typedef map<int, drape_ptr<Shader> > shader_map_t;
- program_map_t m_programs;
- shader_map_t m_shaders;
- string m_globalDefines;
-};
+ using ProgramMap = std::map<int, drape_ptr<GpuProgram>>;
+ using ShaderMap = std::map<int, drape_ptr<Shader>>;
+ ProgramMap m_programs;
+ ShaderMap m_shaders;
+ std::string m_globalDefines;
+ drape_ptr<gpu::GpuProgramGetter> m_programGetter;
-} // namespace dp
+ DISALLOW_COPY_AND_MOVE(GpuProgramManager);
+};
+} // namespace dp
diff --git a/drape/shader.cpp b/drape/shader.cpp
index 0325e87cf3..f27ebe9d57 100644
--- a/drape/shader.cpp
+++ b/drape/shader.cpp
@@ -1,87 +1,28 @@
#include "drape/shader.hpp"
-#include "drape/shader_def.hpp"
+#include "drape/glfunctions.hpp"
#include "base/assert.hpp"
-#include "base/string_utils.hpp"
-
-#include "std/algorithm.hpp"
namespace dp
{
-
-using strings::to_string;
-
namespace
{
-
-glConst convert(Shader::Type t)
+glConst ConvertType(Shader::Type t)
{
- if (t == Shader::VertexShader)
+ if (t == Shader::Type::VertexShader)
return gl_const::GLVertexShader;
return gl_const::GLFragmentShader;
}
+} // namespace
-void ResolveGetTexel(string & result, string const & sampler, int count)
-{
- string const index = "index";
- string const answer = "answer";
- string const texIndex = "texIndex";
- string const texCoord = "texCoord";
-
- result.reserve(250 + 130 * count);
-
- for (int i = 0; i < count; ++i)
- {
- string const number = to_string(i);
- result.append("const int ").append(index).append(number).append(" = ").append(number).append(";\n");
- }
-
- result.append("uniform sampler2D u_textures[").append(to_string(count)).append("];\n");
-
- // Function signature
- result.append(LOW_P).append(" vec4 getTexel(int ").append(texIndex).append(", ")
- .append(MAXPREC_P).append(" vec2 ").append(texCoord).append("){ \n");
-
- // Declare result var;
- result.append(LOW_P).append(" vec4 ").append(answer).append(";\n");
-
- for (int i = 0; i < count; ++i)
- {
- string constIndex = index + to_string(i);
- if (i != 0)
- result.append("else ");
- result.append("if (").append(texIndex).append("==").append(constIndex).append(")\n");
- result.append(answer).append("=texture2D(")
- .append(sampler).append("[").append(constIndex).append("],")
- .append(texCoord).append(");\n");
- }
- result.append("return ").append(answer).append(";}");
-}
-
-}
-
-void PreprocessShaderSource(string & src)
-{
- string const replacement("~getTexel~");
- auto const pos = src.find(replacement);
- if (pos == string::npos)
- return;
- string injector = "";
- int const count = min(8, GLFunctions::glGetInteger(gl_const::GLMaxFragmentTextures));
- ResolveGetTexel(injector, "u_textures", count);
- src.replace(pos, replacement.length(), injector);
-}
-
-Shader::Shader(string const & shaderSource, string const & defines, Type type)
+Shader::Shader(std::string const & shaderSource, std::string const & defines, Type type)
: m_glID(0)
{
- m_glID = GLFunctions::glCreateShader(convert(type));
- string source = shaderSource;
- PreprocessShaderSource(source);
- GLFunctions::glShaderSource(m_glID, source, defines);
- string errorLog;
- bool result = GLFunctions::glCompileShader(m_glID, errorLog);
+ m_glID = GLFunctions::glCreateShader(ConvertType(type));
+ GLFunctions::glShaderSource(m_glID, shaderSource, defines);
+ std::string errorLog;
+ bool const result = GLFunctions::glCompileShader(m_glID, errorLog);
CHECK(result, ("Shader compile error : ", errorLog));
}
@@ -90,9 +31,8 @@ Shader::~Shader()
GLFunctions::glDeleteShader(m_glID);
}
-int Shader::GetID() const
+uint32_t Shader::GetID() const
{
return m_glID;
}
-
-} // namespace dp
+} // namespace dp
diff --git a/drape/shader.hpp b/drape/shader.hpp
index da74e54644..ef709f2265 100644
--- a/drape/shader.hpp
+++ b/drape/shader.hpp
@@ -1,31 +1,25 @@
#pragma once
-#include "drape/glfunctions.hpp"
-
-#include "std/string.hpp"
-#include "std/cstdint.hpp"
+#include <cstdint>
+#include <string>
namespace dp
{
-
class Shader
{
public:
- enum Type
+ enum class Type
{
VertexShader,
FragmentShader
};
- Shader(string const & shaderSource, string const & defines, Type type);
+ Shader(std::string const & shaderSource, std::string const & defines, Type type);
~Shader();
- int GetID() const;
+ uint32_t GetID() const;
private:
uint32_t m_glID;
};
-
-void PreprocessShaderSource(string & src);
-
-} // namespace dp
+} // namespace dp
diff --git a/drape_frontend/CMakeLists.txt b/drape_frontend/CMakeLists.txt
index 5c58cd6044..804987429d 100644
--- a/drape_frontend/CMakeLists.txt
+++ b/drape_frontend/CMakeLists.txt
@@ -1,5 +1,14 @@
project(drape_frontend)
+execute_process(
+ COMMAND python ${OMIM_ROOT}/tools/autobuild/shader_preprocessor.py
+ ${OMIM_ROOT}/drape_frontend/shaders
+ shader_index.txt
+ shaders_lib.glsl
+ ${OMIM_ROOT}/drape_frontend
+ shader_def
+)
+
include_directories(
.
watch
@@ -166,6 +175,8 @@ set(
screen_quad_renderer.hpp
selection_shape.cpp
selection_shape.hpp
+ shader_def.cpp
+ shader_def.hpp
shape_view_params.hpp
stylist.cpp
stylist.hpp
@@ -229,4 +240,66 @@ set(
add_library(${PROJECT_NAME} ${SRC})
+set(
+ DRAPE_SHADERS_SRC
+ shaders/area.vsh.glsl
+ shaders/area3d.vsh.glsl
+ shaders/area3d_outline.vsh.glsl
+ shaders/arrow3d.fsh.glsl
+ shaders/arrow3d.vsh.glsl
+ shaders/arrow3d_outline.fsh.glsl
+ shaders/arrow3d_shadow.fsh.glsl
+ shaders/arrow3d_shadow.vsh.glsl
+ shaders/circle.fsh.glsl
+ shaders/circle.vsh.glsl
+ shaders/colored_symbol.fsh.glsl
+ shaders/colored_symbol.vsh.glsl
+ shaders/colored_symbol_billboard.vsh.glsl
+ shaders/dashed_line.fsh.glsl
+ shaders/dashed_line.vsh.glsl
+ shaders/debug_rect.fsh.glsl
+ shaders/debug_rect.vsh.glsl
+ shaders/discarded_texturing.fsh.glsl
+ shaders/hatching_area.fsh.glsl
+ shaders/hatching_area.vsh.glsl
+ shaders/line.fsh.glsl
+ shaders/line.vsh.glsl
+ shaders/masked_texturing.fsh.glsl
+ shaders/masked_texturing.vsh.glsl
+ shaders/masked_texturing_billboard.vsh.glsl
+ shaders/my_position.vsh.glsl
+ shaders/path_symbol.vsh.glsl
+ shaders/position_accuracy3d.vsh.glsl
+ shaders/route.fsh.glsl
+ shaders/route.vsh.glsl
+ shaders/route_arrow.vsh.glsl
+ shaders/route_dash.fsh.glsl
+ shaders/ruler.vsh.glsl
+ shaders/screen_quad.vsh.glsl
+ shaders/shader_index.txt
+ shaders/shaders_lib.glsl
+ shaders/solid_color.fsh.glsl
+ shaders/text.fsh.glsl
+ shaders/text.vsh.glsl
+ shaders/text_billboard.vsh.glsl
+ shaders/text_fixed.fsh.glsl
+ shaders/text_outlined.vsh.glsl
+ shaders/text_outlined_billboard.vsh.glsl
+ shaders/text_outlined_gui.vsh.glsl
+ shaders/texturing.fsh.glsl
+ shaders/texturing.vsh.glsl
+ shaders/texturing3d.fsh.glsl
+ shaders/texturing_billboard.vsh.glsl
+ shaders/texturing_gui.vsh.glsl
+ shaders/trackpoint.fsh.glsl
+ shaders/trackpoint.vsh.glsl
+ shaders/traffic.fsh.glsl
+ shaders/traffic.vsh.glsl
+ shaders/traffic_line.fsh.glsl
+ shaders/traffic_line.vsh.glsl
+ shaders/user_mark.vsh.glsl
+ shaders/user_mark_billboard.vsh.glsl
+)
+add_custom_target(shaders SOURCES ${DRAPE_SHADERS_SRC})
+
omim_add_test_subdirectory(drape_frontend_tests)
diff --git a/drape_frontend/area_shape.cpp b/drape_frontend/area_shape.cpp
index c511a7afb3..6151d251e6 100644
--- a/drape_frontend/area_shape.cpp
+++ b/drape_frontend/area_shape.cpp
@@ -1,9 +1,9 @@
#include "drape_frontend/area_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
-#include "drape/shader_def.hpp"
-#include "drape/glstate.hpp"
-#include "drape/batcher.hpp"
#include "drape/attribute_provider.hpp"
+#include "drape/batcher.hpp"
+#include "drape/glstate.hpp"
#include "drape/texture_manager.hpp"
#include "drape/utils/vertex_decl.hpp"
diff --git a/drape_frontend/arrow3d.cpp b/drape_frontend/arrow3d.cpp
index 22c318d00c..2d49708a38 100644
--- a/drape_frontend/arrow3d.cpp
+++ b/drape_frontend/arrow3d.cpp
@@ -1,6 +1,7 @@
#include "drape_frontend/arrow3d.hpp"
#include "drape_frontend/color_constants.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/glconstants.hpp"
@@ -10,7 +11,6 @@
#include "drape/glsl_types.hpp"
#include "drape/glstate.hpp"
#include "drape/gpu_program_manager.hpp"
-#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
#include "drape/uniform_values_storage.hpp"
diff --git a/drape_frontend/colored_symbol_shape.cpp b/drape_frontend/colored_symbol_shape.cpp
index 080c10f158..b29f6184e6 100644
--- a/drape_frontend/colored_symbol_shape.cpp
+++ b/drape_frontend/colored_symbol_shape.cpp
@@ -1,4 +1,5 @@
#include "drape_frontend/colored_symbol_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/attribute_provider.hpp"
@@ -7,7 +8,6 @@
#include "drape/glsl_types.hpp"
#include "drape/glstate.hpp"
#include "drape/overlay_handle.hpp"
-#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
#include "drape/utils/vertex_decl.hpp"
diff --git a/drape_frontend/drape_api_renderer.cpp b/drape_frontend/drape_api_renderer.cpp
index 7be08987d8..1c9191b4ff 100644
--- a/drape_frontend/drape_api_renderer.cpp
+++ b/drape_frontend/drape_api_renderer.cpp
@@ -1,8 +1,8 @@
#include "drape_frontend/drape_api_renderer.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/visual_params.hpp"
-#include "drape/shader_def.hpp"
#include "drape/overlay_handle.hpp"
#include "drape/vertex_array_buffer.hpp"
diff --git a/drape_frontend/drape_frontend.pro b/drape_frontend/drape_frontend.pro
index bc937f1eb9..8d61648760 100755
--- a/drape_frontend/drape_frontend.pro
+++ b/drape_frontend/drape_frontend.pro
@@ -2,6 +2,10 @@ TARGET = drape_frontend
TEMPLATE = lib
CONFIG += staticlib
+SHADER_COMPILE_ARGS = $$PWD/shaders shader_index.txt shaders_lib.glsl $$PWD shader_def
+CMDRES = $$system(python $$PWD/../tools/autobuild/shader_preprocessor.py $$SHADER_COMPILE_ARGS)
+!isEmpty($$CMDRES):message($$CMDRES)
+
ROOT_DIR = ..
include($$ROOT_DIR/common.pri)
@@ -82,6 +86,7 @@ SOURCES += \
screen_operations.cpp \
screen_quad_renderer.cpp \
selection_shape.cpp \
+ shader_def.cpp \
stylist.cpp \
text_handle.cpp \
text_layout.cpp \
@@ -191,6 +196,7 @@ HEADERS += \
screen_operations.hpp \
screen_quad_renderer.hpp \
selection_shape.hpp \
+ shader_def.hpp \
shape_view_params.hpp \
stylist.hpp \
text_handle.hpp \
@@ -227,3 +233,62 @@ HEADERS += \
watch/brush_info.hpp \
watch/geometry_processors.hpp \
watch/feature_processor.hpp \
+
+OTHER_FILES += \
+ shaders/area.vsh.glsl \
+ shaders/area3d.vsh.glsl \
+ shaders/area3d_outline.vsh.glsl \
+ shaders/arrow3d.fsh.glsl \
+ shaders/arrow3d.vsh.glsl \
+ shaders/arrow3d_outline.fsh.glsl \
+ shaders/arrow3d_shadow.fsh.glsl \
+ shaders/arrow3d_shadow.vsh.glsl \
+ shaders/circle.fsh.glsl \
+ shaders/circle.vsh.glsl \
+ shaders/colored_symbol.fsh.glsl \
+ shaders/colored_symbol.vsh.glsl \
+ shaders/colored_symbol_billboard.vsh.glsl \
+ shaders/dashed_line.fsh.glsl \
+ shaders/dashed_line.vsh.glsl \
+ shaders/debug_rect.fsh.glsl \
+ shaders/debug_rect.vsh.glsl \
+ shaders/discarded_texturing.fsh.glsl \
+ shaders/hatching_area.fsh.glsl \
+ shaders/hatching_area.vsh.glsl \
+ shaders/line.fsh.glsl \
+ shaders/line.vsh.glsl \
+ shaders/masked_texturing.fsh.glsl \
+ shaders/masked_texturing.vsh.glsl \
+ shaders/masked_texturing_billboard.vsh.glsl \
+ shaders/my_position.vsh.glsl \
+ shaders/path_symbol.vsh.glsl \
+ shaders/position_accuracy3d.vsh.glsl \
+ shaders/route.fsh.glsl \
+ shaders/route.vsh.glsl \
+ shaders/route_arrow.vsh.glsl \
+ shaders/route_dash.fsh.glsl \
+ shaders/ruler.vsh.glsl \
+ shaders/screen_quad.vsh.glsl \
+ shaders/shader_index.txt \
+ shaders/shaders_lib.glsl \
+ shaders/solid_color.fsh.glsl \
+ shaders/text.fsh.glsl \
+ shaders/text.vsh.glsl \
+ shaders/text_billboard.vsh.glsl \
+ shaders/text_fixed.fsh.glsl \
+ shaders/text_outlined.vsh.glsl \
+ shaders/text_outlined_billboard.vsh.glsl \
+ shaders/text_outlined_gui.vsh.glsl \
+ shaders/texturing.fsh.glsl \
+ shaders/texturing.vsh.glsl \
+ shaders/texturing3d.fsh.glsl \
+ shaders/texturing_billboard.vsh.glsl \
+ shaders/texturing_gui.vsh.glsl \
+ shaders/trackpoint.fsh.glsl \
+ shaders/trackpoint.vsh.glsl \
+ shaders/traffic.fsh.glsl \
+ shaders/traffic.vsh.glsl \
+ shaders/traffic_line.fsh.glsl \
+ shaders/traffic_line.vsh.glsl \
+ shaders/user_mark.vsh.glsl \
+ shaders/user_mark_billboard.vsh.glsl \
diff --git a/drape_frontend/drape_frontend_tests/CMakeLists.txt b/drape_frontend/drape_frontend_tests/CMakeLists.txt
index cdc91b722b..34a1e80623 100644
--- a/drape_frontend/drape_frontend_tests/CMakeLists.txt
+++ b/drape_frontend/drape_frontend_tests/CMakeLists.txt
@@ -1,9 +1,25 @@
project(drape_frontend_tests)
+add_definitions(
+ -DCOMPILER_TESTS
+)
+
+execute_process(
+ COMMAND python ${OMIM_ROOT}/tools/autobuild/shader_preprocessor.py
+ ${OMIM_ROOT}/drape_frontend/shaders
+ shader_index.txt
+ shaders_lib.glsl
+ ${OMIM_ROOT}/drape_frontend/drape_frontend_tests
+ shader_def_for_tests
+)
+
set(
SRC
+ compile_shaders_test.cpp
navigator_test.cpp
object_pool_tests.cpp
+ shader_def_for_tests.cpp
+ shader_def_for_tests.hpp
user_event_stream_tests.cpp
)
diff --git a/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp b/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp
index 298324fc9f..cf33e20849 100644
--- a/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp
+++ b/drape_frontend/drape_frontend_tests/compile_shaders_test.cpp
@@ -1,83 +1,45 @@
#include "testing/testing.hpp"
-#include "drape/shader_def.hpp"
-#include "drape/shader.hpp"
-
-#include "drape/glconstants.hpp"
+#include "drape_frontend/drape_frontend_tests/shader_def_for_tests.hpp"
-#include "drape/drape_tests/glmock_functions.hpp"
+#include "drape/shader.hpp"
-#include "base/scope_guard.hpp"
#include "platform/platform.hpp"
-#include "std/sstream.hpp"
-#include "std/target_os.hpp"
-#include "std/vector.hpp"
-#include "std/string.hpp"
+#include <functional>
+#include <sstream>
+#include <string>
+#include <vector>
-#include <QtCore/QProcess>
+#include <QTemporaryFile>
#include <QtCore/QDebug>
+#include <QtCore/QProcess>
#include <QtCore/QTextStream>
-#include <QTemporaryFile>
-#include <gmock/gmock.h>
-
-using testing::Return;
-using testing::AnyNumber;
using namespace dp;
-#if defined (OMIM_OS_MAC)
- #define SHADERS_COMPILER "GLSLESCompiler_Series5.mac"
- #define MALI_SHADERS_COMPILER "mali_compiler/malisc"
- #define MALI_DIR "mali_compiler/"
-#elif defined (OMIM_OS_LINUX)
- #define SHADERS_COMPILER "GLSLESCompiler_Series5"
- #define MALI_SHADERS_COMPILER "mali_compiler/malisc"
- #define MALI_DIR "mali_compiler/"
-#elif defined (OMIM_OS_WINDOWS)
- #define SHADERS_COMPILER "GLSLESCompiler_Series5.exe"
-#else
- #error "Define shaders compiler for your platform"
-#endif
-
+#if defined(OMIM_OS_MAC)
-string DebugPrint(QString const & s)
-{
- return s.toStdString();
-}
-
-struct ShaderEnumGuard
-{
- ShaderEnumGuard()
- {
- gpu::InitEnumeration();
- }
+#define SHADERS_COMPILER "GLSLESCompiler_Series5.mac"
+#define MALI_SHADERS_COMPILER "mali_compiler/malisc"
+#define MALI_DIR "mali_compiler/"
- ~ShaderEnumGuard()
- {
- gpu::VertexEnum.clear();
- gpu::FragmentEnum.clear();
- }
-};
+std::string DebugPrint(QString const & s) { return s.toStdString(); }
void WriteShaderToFile(QTemporaryFile & file, string shader)
{
- EXPECTGL(glGetInteger(gl_const::GLMaxFragmentTextures)).WillRepeatedly(Return(8));
- PreprocessShaderSource(shader);
QTextStream out(&file);
out << QString::fromStdString(shader);
}
-typedef function<void (QProcess & p)> TPrepareProcessFn;
-typedef function<void (QStringList & args, QString const & fileName)> TPrepareArgumentsFn;
-typedef function<bool (QString const & output)> TSuccessComparator;
+using PrepareProcessFn = std::function<void(QProcess & p)>;
+using PrepareArgumentsFn = std::function<void(QStringList & args, QString const & fileName)>;
+using SuccessComparator = std::function<bool(QString const & output)>;
-void RunShaderTest(QString const & glslCompiler,
- QString const & fileName,
- TPrepareProcessFn const & procPrepare,
- TPrepareArgumentsFn const & argsPrepare,
- TSuccessComparator const & successComparator,
- QTextStream & errorLog)
+void RunShaderTest(std::string const & shaderName, QString const & glslCompiler,
+ QString const & fileName, PrepareProcessFn const & procPrepare,
+ PrepareArgumentsFn const & argsPrepare,
+ SuccessComparator const & successComparator, QTextStream & errorLog)
{
QProcess p;
procPrepare(p);
@@ -93,34 +55,32 @@ void RunShaderTest(QString const & glslCompiler,
if (!successComparator(result))
{
errorLog << "\n" << QString("SHADER COMPILE ERROR\n");
- errorLog << fileName << "\n";
+ errorLog << QString(shaderName.c_str()) << "\n";
errorLog << result.trimmed() << "\n";
}
}
-void ForEachShader(string const & defines,
- vector<string> const & shaders,
- QString const & glslCompiler,
- TPrepareProcessFn const & procPrepare,
- TPrepareArgumentsFn const & argsPrepare,
- TSuccessComparator const & successComparator,
- QTextStream & errorLog)
+void ForEachShader(std::string const & defines,
+ vector<std::pair<std::string, std::string>> const & shaders,
+ QString const & glslCompiler, PrepareProcessFn const & procPrepare,
+ PrepareArgumentsFn const & argsPrepare,
+ SuccessComparator const & successComparator, QTextStream & errorLog)
{
- for (string src : shaders)
+ for (auto const & src : shaders)
{
QTemporaryFile srcFile;
- TEST(srcFile.open(), ("Temporary File can't be created!"));
- string fullSrc = defines + src;
+ TEST(srcFile.open(), ("Temporary file can't be created!"));
+ std::string fullSrc = defines + src.second;
WriteShaderToFile(srcFile, fullSrc);
- RunShaderTest(glslCompiler, srcFile.fileName(),
- procPrepare, argsPrepare, successComparator, errorLog);
+ RunShaderTest(src.first, glslCompiler, srcFile.fileName(), procPrepare, argsPrepare,
+ successComparator, errorLog);
}
}
UNIT_TEST(CompileShaders_Test)
{
Platform & platform = GetPlatform();
- string glslCompilerPath = platform.ResourcesDir() + "shaders_compiler/" SHADERS_COMPILER;
+ std::string glslCompilerPath = platform.ResourcesDir() + "shaders_compiler/" SHADERS_COMPILER;
if (!platform.IsFileExistsByFullPath(glslCompilerPath))
{
glslCompilerPath = platform.WritableDir() + "shaders_compiler/" SHADERS_COMPILER;
@@ -130,22 +90,18 @@ UNIT_TEST(CompileShaders_Test)
QString errorLog;
QTextStream ss(&errorLog);
- ShaderEnumGuard guard;
QString compilerPath = QString::fromStdString(glslCompilerPath);
QString shaderType = "-v";
- auto argsPrepareFn = [&shaderType] (QStringList & args, QString const & fileName)
- {
- args << fileName
- << fileName + ".bin"
- << shaderType;
- };
- auto successComparator = [] (QString const & output) { return output.indexOf("Success") != -1; };
+ auto argsPrepareFn = [&shaderType](QStringList & args, QString const & fileName) {
+ args << fileName << fileName + ".bin" << shaderType;
+ };
+ auto successComparator = [](QString const & output) { return output.indexOf("Success") != -1; };
string defines = "";
- ForEachShader(defines, gpu::VertexEnum, compilerPath, [] (QProcess const &) {},
- argsPrepareFn, successComparator, ss);
+ ForEachShader(defines, gpu::GetVertexEnum(), compilerPath, [](QProcess const &) {}, argsPrepareFn,
+ successComparator, ss);
shaderType = "-f";
- ForEachShader(defines, gpu::FragmentEnum, compilerPath,[] (QProcess const &) {},
+ ForEachShader(defines, gpu::GetFragmentEnum(), compilerPath, [](QProcess const &) {},
argsPrepareFn, successComparator, ss);
TEST_EQUAL(errorLog.isEmpty(), true, ("PVR without defines :", errorLog));
@@ -153,10 +109,10 @@ UNIT_TEST(CompileShaders_Test)
defines = "#define ENABLE_VTF\n";
errorLog.clear();
shaderType = "-v";
- ForEachShader(defines, gpu::VertexEnum, compilerPath, [] (QProcess const &) {},
- argsPrepareFn, successComparator, ss);
+ ForEachShader(defines, gpu::GetVertexEnum(), compilerPath, [](QProcess const &) {}, argsPrepareFn,
+ successComparator, ss);
shaderType = "-f";
- ForEachShader(defines, gpu::FragmentEnum, compilerPath,[] (QProcess const &) {},
+ ForEachShader(defines, gpu::GetFragmentEnum(), compilerPath, [](QProcess const &) {},
argsPrepareFn, successComparator, ss);
TEST_EQUAL(errorLog.isEmpty(), true, ("PVR with defines : ", defines, "\n", errorLog));
@@ -164,55 +120,45 @@ UNIT_TEST(CompileShaders_Test)
defines = "#define SAMSUNG_GOOGLE_NEXUS\n";
errorLog.clear();
shaderType = "-v";
- ForEachShader(defines, gpu::VertexEnum, compilerPath, [] (QProcess const &) {},
- argsPrepareFn, successComparator, ss);
+ ForEachShader(defines, gpu::GetVertexEnum(), compilerPath, [](QProcess const &) {}, argsPrepareFn,
+ successComparator, ss);
shaderType = "-f";
- ForEachShader(defines, gpu::FragmentEnum, compilerPath,[] (QProcess const &) {},
+ ForEachShader(defines, gpu::GetFragmentEnum(), compilerPath, [](QProcess const &) {},
argsPrepareFn, successComparator, ss);
TEST_EQUAL(errorLog.isEmpty(), true, ("PVR with defines : ", defines, "\n", errorLog));
}
-#ifdef OMIM_OS_MAC
-
-void TestMaliShaders(QString const & driver,
- QString const & hardware,
- QString const & release)
+void TestMaliShaders(QString const & driver, QString const & hardware, QString const & release)
{
Platform & platform = GetPlatform();
- string glslCompilerPath = platform.ResourcesDir() + "shaders_compiler/" MALI_SHADERS_COMPILER;
+ std::string glslCompilerPath = platform.ResourcesDir() + "shaders_compiler/" MALI_SHADERS_COMPILER;
TEST(platform.IsFileExistsByFullPath(glslCompilerPath), ("GLSL MALI compiler not found"));
QString errorLog;
QTextStream ss(&errorLog);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert("MALICM_LOCATION", QString::fromStdString(platform.ResourcesDir() + "shaders_compiler/" MALI_DIR));
- auto procPrepare = [&env] (QProcess & p) { p.setProcessEnvironment(env); };
+ env.insert("MALICM_LOCATION",
+ QString::fromStdString(platform.ResourcesDir() + "shaders_compiler/" MALI_DIR));
+ auto procPrepare = [&env](QProcess & p) { p.setProcessEnvironment(env); };
QString shaderType = "-v";
- auto argForming = [&] (QStringList & args, QString const & fileName)
- {
- args << shaderType
- << "-V"
- << "-r"
- << release
- << "-c"
- << hardware
- << "-d"
- << driver
- << fileName;
+ auto argForming = [&](QStringList & args, QString const & fileName) {
+ args << shaderType << "-V"
+ << "-r" << release << "-c" << hardware << "-d" << driver << fileName;
};
- auto succesComparator = [] (QString const & output)
- {
- return output.indexOf("Compilation succeeded.") != -1;
- };
+ auto succesComparator = [](QString const & output) {
+ return output.indexOf("Compilation succeeded.") != -1;
+ };
- string defines = "";
+ std::string defines = "";
QString const compilerPath = QString::fromStdString(glslCompilerPath);
- ForEachShader(defines, gpu::VertexEnum, compilerPath, procPrepare, argForming, succesComparator, ss);
+ ForEachShader(defines, gpu::GetVertexEnum(), compilerPath, procPrepare, argForming,
+ succesComparator, ss);
shaderType = "-f";
- ForEachShader(defines, gpu::FragmentEnum, compilerPath, procPrepare, argForming, succesComparator, ss);
+ ForEachShader(defines, gpu::GetFragmentEnum(), compilerPath, procPrepare, argForming,
+ succesComparator, ss);
TEST(errorLog.isEmpty(), (shaderType, release, hardware, driver, defines, errorLog));
// MALI GPUs do not support ENABLE_VTF. Do not test it here.
@@ -269,13 +215,10 @@ UNIT_TEST(MALI_CompileShaders_Test)
models[2].m_releases.push_back(make_pair("Mali-T760", "r0p3"));
models[2].m_releases.push_back(make_pair("Mali-T760", "r1p0"));
- ShaderEnumGuard guard;
-
- for (DriverSet set : models)
+ for (auto const & set : models)
{
- for (TReleaseVersion version : set.m_releases)
+ for (auto const & version : set.m_releases)
TestMaliShaders(set.m_driverName, version.first, version.second);
}
}
-
#endif
diff --git a/drape_frontend/drape_frontend_tests/drape_frontend_tests.pro b/drape_frontend/drape_frontend_tests/drape_frontend_tests.pro
index 168d9a1b98..e0f2cd3494 100644
--- a/drape_frontend/drape_frontend_tests/drape_frontend_tests.pro
+++ b/drape_frontend/drape_frontend_tests/drape_frontend_tests.pro
@@ -4,8 +4,14 @@ CONFIG += console warn_on
CONFIG -= app_bundle
TEMPLATE = app
+DEFINES += COMPILER_TESTS
+
DEPENDENCIES = drape_frontend drape platform indexer geometry coding base expat stats_client stb_image sdf_image icu
+SHADER_COMPILE_ARGS = $$PWD/../shaders shader_index.txt shaders_lib.glsl $$PWD shader_def_for_tests
+CMDRES = $$system(python $$PWD/../../tools/autobuild/shader_preprocessor.py $$SHADER_COMPILE_ARGS)
+!isEmpty($$CMDRES):message($$CMDRES)
+
ROOT_DIR = ../..
include($$ROOT_DIR/common.pri)
@@ -21,7 +27,11 @@ win32*|linux* {
SOURCES += \
../../testing/testingmain.cpp \
+ compile_shaders_test.cpp \
navigator_test.cpp \
object_pool_tests.cpp \
+ shader_def_for_tests.cpp \
user_event_stream_tests.cpp \
+HEADERS += \
+ shader_def_for_tests.hpp \
diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp
index 306c0d7781..dbbcffe114 100755
--- a/drape_frontend/frontend_renderer.cpp
+++ b/drape_frontend/frontend_renderer.cpp
@@ -10,11 +10,11 @@
#include "drape_frontend/scenario_manager.hpp"
#include "drape_frontend/screen_operations.hpp"
#include "drape_frontend/screen_quad_renderer.hpp"
+#include "drape_frontend/shader_def.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"
#include "drape/support_manager.hpp"
#include "drape/utils/glyph_usage_tracker.hpp"
@@ -1693,13 +1693,13 @@ void FrontendRenderer::OnContextCreate()
dp::SupportManager::Instance().Init();
m_gpuProgramManager = make_unique_dp<dp::GpuProgramManager>();
- m_gpuProgramManager->Init();
+ m_gpuProgramManager->Init(make_unique_dp<gpu::ShaderMapper>());
dp::BlendingParams blendingParams;
blendingParams.Apply();
#ifdef RENDER_DEBUG_RECTS
- dp::DebugRectRenderer::Instance().Init(make_ref(m_gpuProgramManager));
+ dp::DebugRectRenderer::Instance().Init(make_ref(m_gpuProgramManager), gpu::DEBUG_RECT_PROGRAM);
#endif
// resources recovering
diff --git a/drape_frontend/gps_track_renderer.cpp b/drape_frontend/gps_track_renderer.cpp
index 056d7eba8e..e68ec70ec9 100644
--- a/drape_frontend/gps_track_renderer.cpp
+++ b/drape_frontend/gps_track_renderer.cpp
@@ -1,11 +1,11 @@
#include "drape_frontend/gps_track_renderer.hpp"
#include "drape_frontend/color_constants.hpp"
#include "drape_frontend/map_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
#include "drape/vertex_array_buffer.hpp"
#include "indexer/map_style_reader.hpp"
diff --git a/drape_frontend/gps_track_shape.cpp b/drape_frontend/gps_track_shape.cpp
index 3fdee6d3f7..c48b1f915d 100644
--- a/drape_frontend/gps_track_shape.cpp
+++ b/drape_frontend/gps_track_shape.cpp
@@ -1,10 +1,10 @@
#include "drape_frontend/gps_track_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/batcher.hpp"
#include "drape/glsl_func.hpp"
#include "drape/glsl_types.hpp"
-#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
#include "base/logging.hpp"
diff --git a/drape_frontend/gui/choose_position_mark.cpp b/drape_frontend/gui/choose_position_mark.cpp
index a1896d9151..ea638cf618 100644
--- a/drape_frontend/gui/choose_position_mark.cpp
+++ b/drape_frontend/gui/choose_position_mark.cpp
@@ -1,7 +1,6 @@
-#include "choose_position_mark.hpp"
-#include "drape_gui.hpp"
-
-#include "drape/shader_def.hpp"
+#include "drape_frontend/gui/choose_position_mark.hpp"
+#include "drape_frontend/gui/drape_gui.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape/utils/vertex_decl.hpp"
diff --git a/drape_frontend/gui/compass.cpp b/drape_frontend/gui/compass.cpp
index 18feec3b4a..ee38cadef7 100644
--- a/drape_frontend/gui/compass.cpp
+++ b/drape_frontend/gui/compass.cpp
@@ -1,11 +1,11 @@
-#include "compass.hpp"
-#include "drape_gui.hpp"
+#include "drape_frontend/gui/compass.hpp"
#include "drape_frontend/animation/show_hide_animation.hpp"
+#include "drape_frontend/gui/drape_gui.hpp"
+#include "drape_frontend/shader_def.hpp"
-#include "drape/glsl_types.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
+#include "drape/glsl_types.hpp"
#include "drape/utils/vertex_decl.hpp"
diff --git a/drape_frontend/gui/gui_text.cpp b/drape_frontend/gui/gui_text.cpp
index b90db83487..07bce179aa 100644
--- a/drape_frontend/gui/gui_text.cpp
+++ b/drape_frontend/gui/gui_text.cpp
@@ -1,5 +1,6 @@
-#include "gui_text.hpp"
+#include "drape_frontend/gui/gui_text.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "base/string_utils.hpp"
@@ -7,7 +8,6 @@
#include "drape/bidi.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
#include "std/algorithm.hpp"
#include "std/type_traits.hpp"
diff --git a/drape_frontend/gui/ruler.cpp b/drape_frontend/gui/ruler.cpp
index d8afc9e4aa..a475b094ef 100644
--- a/drape_frontend/gui/ruler.cpp
+++ b/drape_frontend/gui/ruler.cpp
@@ -1,13 +1,13 @@
-#include "drape_gui.hpp"
-#include "gui_text.hpp"
-#include "ruler.hpp"
-#include "ruler_helper.hpp"
+#include "drape_frontend/gui/ruler.hpp"
#include "drape_frontend/animation/show_hide_animation.hpp"
+#include "drape_frontend/gui/drape_gui.hpp"
+#include "drape_frontend/gui/gui_text.hpp"
+#include "drape_frontend/gui/ruler_helper.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape/glsl_func.hpp"
#include "drape/glsl_types.hpp"
-#include "drape/shader_def.hpp"
#include "std/bind.hpp"
diff --git a/drape_frontend/line_shape.cpp b/drape_frontend/line_shape.cpp
index 5a445d823d..37c0168fd8 100644
--- a/drape_frontend/line_shape.cpp
+++ b/drape_frontend/line_shape.cpp
@@ -1,13 +1,13 @@
#include "drape_frontend/line_shape.hpp"
#include "drape_frontend/line_shape_helper.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/batcher.hpp"
#include "drape/glsl_types.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
#include "drape/support_manager.hpp"
#include "drape/texture_manager.hpp"
#include "drape/utils/vertex_decl.hpp"
diff --git a/drape_frontend/my_position.cpp b/drape_frontend/my_position.cpp
index 38bbd69c27..214653b0e1 100644
--- a/drape_frontend/my_position.cpp
+++ b/drape_frontend/my_position.cpp
@@ -1,6 +1,7 @@
#include "drape_frontend/my_position.hpp"
#include "drape_frontend/color_constants.hpp"
#include "drape_frontend/map_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/tile_utils.hpp"
@@ -9,7 +10,6 @@
#include "drape/glsl_types.hpp"
#include "drape/overlay_handle.hpp"
#include "drape/render_bucket.hpp"
-#include "drape/shader_def.hpp"
#include "indexer/map_style_reader.hpp"
diff --git a/drape_frontend/path_symbol_shape.cpp b/drape_frontend/path_symbol_shape.cpp
index b65cce29c4..cb4231c740 100644
--- a/drape_frontend/path_symbol_shape.cpp
+++ b/drape_frontend/path_symbol_shape.cpp
@@ -1,11 +1,11 @@
#include "drape_frontend/path_symbol_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/utils/vertex_decl.hpp"
#include "drape/glsl_types.hpp"
#include "drape/glsl_func.hpp"
#include "drape/overlay_handle.hpp"
-#include "drape/shader_def.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/texture_manager.hpp"
#include "drape/glstate.hpp"
diff --git a/drape_frontend/path_text_shape.cpp b/drape_frontend/path_text_shape.cpp
index 80548b7bd1..36cdcc21da 100644
--- a/drape_frontend/path_text_shape.cpp
+++ b/drape_frontend/path_text_shape.cpp
@@ -1,12 +1,12 @@
#include "drape_frontend/path_text_shape.hpp"
+#include "drape_frontend/intrusive_vector.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/text_handle.hpp"
#include "drape_frontend/text_layout.hpp"
-#include "drape_frontend/intrusive_vector.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/batcher.hpp"
#include "drape/glstate.hpp"
-#include "drape/shader_def.hpp"
#include "drape/overlay_handle.hpp"
#include "base/math.hpp"
diff --git a/drape_frontend/poi_symbol_shape.cpp b/drape_frontend/poi_symbol_shape.cpp
index ac3ab25777..d89fa3f741 100644
--- a/drape_frontend/poi_symbol_shape.cpp
+++ b/drape_frontend/poi_symbol_shape.cpp
@@ -1,10 +1,10 @@
#include "drape_frontend/poi_symbol_shape.hpp"
#include "drape_frontend/color_constants.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/batcher.hpp"
#include "drape/texture_manager.hpp"
-#include "drape/shader_def.hpp"
#include "drape/utils/vertex_decl.hpp"
namespace
diff --git a/drape_frontend/render_group.cpp b/drape_frontend/render_group.cpp
index 5e2260d4fc..b57f80d22b 100755
--- a/drape_frontend/render_group.cpp
+++ b/drape_frontend/render_group.cpp
@@ -1,8 +1,8 @@
#include "drape_frontend/render_group.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/debug_rect_renderer.hpp"
-#include "drape/shader_def.hpp"
#include "drape/vertex_array_buffer.hpp"
#include "geometry/screenbase.hpp"
diff --git a/drape_frontend/route_renderer.cpp b/drape_frontend/route_renderer.cpp
index 7af0e0deb7..1a681afc6d 100644
--- a/drape_frontend/route_renderer.cpp
+++ b/drape_frontend/route_renderer.cpp
@@ -1,10 +1,10 @@
#include "drape_frontend/route_renderer.hpp"
-#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/message_subclasses.hpp"
+#include "drape_frontend/shader_def.hpp"
+#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
#include "drape/utils/projection.hpp"
#include "drape/vertex_array_buffer.hpp"
diff --git a/drape_frontend/route_shape.cpp b/drape_frontend/route_shape.cpp
index 836586f4c5..e9ab669a28 100644
--- a/drape_frontend/route_shape.cpp
+++ b/drape_frontend/route_shape.cpp
@@ -1,5 +1,6 @@
#include "drape_frontend/route_shape.hpp"
#include "drape_frontend/line_shape_helper.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/tile_utils.hpp"
#include "drape_frontend/traffic_generator.hpp"
@@ -8,7 +9,6 @@
#include "drape/batcher.hpp"
#include "drape/glsl_func.hpp"
#include "drape/glsl_types.hpp"
-#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
#include "indexer/map_style_reader.hpp"
diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp
index dfb0e71c80..f55d4ed922 100644
--- a/drape_frontend/rule_drawer.cpp
+++ b/drape_frontend/rule_drawer.cpp
@@ -427,8 +427,9 @@ void RuleDrawer::operator()(FeatureType const & f)
strings::to_string(key.m_zoomLevel);
tp.m_primaryTextFont = dp::FontDecl(dp::Color::Red(), 30);
- tp.m_primaryOffset = {0.f, 0.f};
- drape_ptr<TextShape> textShape = make_unique_dp<TextShape>(r.Center(), tp, false, 0, false);
+ tp.m_primaryOffset = {0.0f, 0.0f};
+ drape_ptr<TextShape> textShape =
+ make_unique_dp<TextShape>(r.Center(), tp, m_context->GetTileKey(), false, 0, false);
textShape->DisableDisplacing();
insertShape(move(textShape));
#endif
diff --git a/drape_frontend/screen_quad_renderer.cpp b/drape_frontend/screen_quad_renderer.cpp
index b2aefc5fb8..c6942be8c5 100644
--- a/drape_frontend/screen_quad_renderer.cpp
+++ b/drape_frontend/screen_quad_renderer.cpp
@@ -1,4 +1,5 @@
#include "drape_frontend/screen_quad_renderer.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape/data_buffer.hpp"
#include "drape/glconstants.hpp"
@@ -6,7 +7,6 @@
#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 <vector>
diff --git a/drape_frontend/selection_shape.cpp b/drape_frontend/selection_shape.cpp
index c539c704f6..a21fe72476 100644
--- a/drape_frontend/selection_shape.cpp
+++ b/drape_frontend/selection_shape.cpp
@@ -1,6 +1,7 @@
#include "drape_frontend/selection_shape.hpp"
#include "drape_frontend/color_constants.hpp"
#include "drape_frontend/map_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/tile_utils.hpp"
#include "drape_frontend/visual_params.hpp"
@@ -11,7 +12,6 @@
#include "drape/glsl_func.hpp"
#include "drape/glsl_types.hpp"
#include "drape/gpu_program_manager.hpp"
-#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
#include "drape/uniform_values_storage.hpp"
diff --git a/drape_frontend/shaders/area.vsh.glsl b/drape_frontend/shaders/area.vsh.glsl
index e1866d5fae..50032778bb 100644
--- a/drape_frontend/shaders/area.vsh.glsl
+++ b/drape_frontend/shaders/area.vsh.glsl
@@ -12,13 +12,10 @@ varying lowp vec4 v_color;
varying vec2 v_colorTexCoords;
#endif
-void main(void)
+void main()
{
vec4 pos = vec4(a_position, 1) * modelView * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoords);
#else
diff --git a/drape_frontend/shaders/area3d.vsh.glsl b/drape_frontend/shaders/area3d.vsh.glsl
index 81a1fe54d0..bf1e928dd3 100644
--- a/drape_frontend/shaders/area3d.vsh.glsl
+++ b/drape_frontend/shaders/area3d.vsh.glsl
@@ -12,7 +12,7 @@ varying float v_intensity;
const vec4 lightDir = vec4(1.0, 0.0, 3.0, 0.0);
-void main(void)
+void main()
{
vec4 pos = vec4(a_position, 1.0) * modelView;
diff --git a/drape_frontend/shaders/area3d_outline.vsh.glsl b/drape_frontend/shaders/area3d_outline.vsh.glsl
index 7c1fa01717..a5f5469e60 100644
--- a/drape_frontend/shaders/area3d_outline.vsh.glsl
+++ b/drape_frontend/shaders/area3d_outline.vsh.glsl
@@ -13,7 +13,7 @@ varying lowp vec4 v_color;
varying vec2 v_colorTexCoords;
#endif
-void main(void)
+void main()
{
vec4 pos = vec4(a_position, 1.0) * modelView;
pos.xyw = (pos * projection).xyw;
diff --git a/drape_frontend/shaders/arrow3d.fsh.glsl b/drape_frontend/shaders/arrow3d.fsh.glsl
index e6dcb2dc06..96531b1d82 100644
--- a/drape_frontend/shaders/arrow3d.fsh.glsl
+++ b/drape_frontend/shaders/arrow3d.fsh.glsl
@@ -8,18 +8,7 @@ uniform vec4 u_color;
void main()
{
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- const float kFakeColorScalar = 0.0;
- lowp vec4 fakeColor = texture2D(u_colorTex, vec2(0.0, 0.0)) * kFakeColorScalar;
-#endif
-
float alpha = smoothstep(0.8, 1.0, v_intensity.y);
vec4 resColor = vec4((v_intensity.x * 0.5 + 0.5) * u_color.rgb, u_color.a * alpha);
-
-#ifdef SAMSUNG_GOOGLE_NEXUS
- gl_FragColor = resColor + fakeColor;
-#else
- gl_FragColor = resColor;
-#endif
+ gl_FragColor = samsungGoogleNexusWorkaround(resColor);
}
diff --git a/drape_frontend/shaders/arrow3d_outline.fsh.glsl b/drape_frontend/shaders/arrow3d_outline.fsh.glsl
index 809f34a675..4b523a8cf1 100644
--- a/drape_frontend/shaders/arrow3d_outline.fsh.glsl
+++ b/drape_frontend/shaders/arrow3d_outline.fsh.glsl
@@ -8,17 +8,6 @@ uniform vec4 u_color;
void main()
{
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- const float kFakeColorScalar = 0.0;
- lowp vec4 fakeColor = texture2D(u_colorTex, vec2(0.0, 0.0)) * kFakeColorScalar;
-#endif
-
vec4 resColor = vec4(u_color.rgb, u_color.a * smoothstep(0.7, 1.0, v_intensity));
-
-#ifdef SAMSUNG_GOOGLE_NEXUS
- gl_FragColor = resColor + fakeColor;
-#else
- gl_FragColor = resColor;
-#endif
+ gl_FragColor = samsungGoogleNexusWorkaround(resColor);
}
diff --git a/drape_frontend/shaders/arrow3d_shadow.fsh.glsl b/drape_frontend/shaders/arrow3d_shadow.fsh.glsl
index 52b57d1247..ba53653dfe 100644
--- a/drape_frontend/shaders/arrow3d_shadow.fsh.glsl
+++ b/drape_frontend/shaders/arrow3d_shadow.fsh.glsl
@@ -8,17 +8,6 @@ uniform vec4 u_color;
void main()
{
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- const float kFakeColorScalar = 0.0;
- lowp vec4 fakeColor = texture2D(u_colorTex, vec2(0.0, 0.0)) * kFakeColorScalar;
-#endif
-
vec4 resColor = vec4(u_color.rgb, u_color.a * v_intensity);
-
-#ifdef SAMSUNG_GOOGLE_NEXUS
- gl_FragColor = resColor + fakeColor;
-#else
- gl_FragColor = resColor;
-#endif
+ gl_FragColor = samsungGoogleNexusWorkaround(resColor);
}
diff --git a/drape_frontend/shaders/circle.fsh.glsl b/drape_frontend/shaders/circle.fsh.glsl
index e9319c8252..30165a0a72 100644
--- a/drape_frontend/shaders/circle.fsh.glsl
+++ b/drape_frontend/shaders/circle.fsh.glsl
@@ -10,7 +10,7 @@ varying vec3 v_radius;
const float aaPixelsCount = 2.5;
-void main(void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 finalColor = v_color;
diff --git a/drape_frontend/shaders/circle.vsh.glsl b/drape_frontend/shaders/circle.vsh.glsl
index 84fc8029fe..e7824a6954 100644
--- a/drape_frontend/shaders/circle.vsh.glsl
+++ b/drape_frontend/shaders/circle.vsh.glsl
@@ -14,16 +14,11 @@ varying lowp vec4 v_color;
varying vec2 v_colorTexCoords;
#endif
-void main(void)
+void main()
{
vec4 p = vec4(a_position, 1) * modelView;
vec4 pos = vec4(a_normal.xy, 0, 0) + p;
- pos = pos * projection;
-
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos * projection, pivotTransform, 0.0);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoords);
#else
diff --git a/drape_frontend/shaders/colored_symbol.fsh.glsl b/drape_frontend/shaders/colored_symbol.fsh.glsl
index 376484fa33..3626c500c6 100644
--- a/drape_frontend/shaders/colored_symbol.fsh.glsl
+++ b/drape_frontend/shaders/colored_symbol.fsh.glsl
@@ -10,7 +10,7 @@ varying vec2 v_colorTexCoords;
const float aaPixelsCount = 2.5;
-void main(void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 color = v_color;
diff --git a/drape_frontend/shaders/colored_symbol.vsh.glsl b/drape_frontend/shaders/colored_symbol.vsh.glsl
index b3035827a5..e6a0a6825c 100644
--- a/drape_frontend/shaders/colored_symbol.vsh.glsl
+++ b/drape_frontend/shaders/colored_symbol.vsh.glsl
@@ -14,16 +14,11 @@ varying lowp vec4 v_color;
varying vec2 v_colorTexCoords;
#endif
-void main(void)
+void main()
{
vec4 p = vec4(a_position, 1) * modelView;
vec4 pos = vec4(a_normal.xy + a_colorTexCoords.zw, 0, 0) + p;
- pos = pos * projection;
-
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos * projection, pivotTransform, 0.0);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoords.xy);
diff --git a/drape_frontend/shaders/colored_symbol_billboard.vsh.glsl b/drape_frontend/shaders/colored_symbol_billboard.vsh.glsl
index 5bc383482a..3d3ac8ef90 100644
--- a/drape_frontend/shaders/colored_symbol_billboard.vsh.glsl
+++ b/drape_frontend/shaders/colored_symbol_billboard.vsh.glsl
@@ -14,17 +14,11 @@ varying lowp vec4 v_color;
varying vec2 v_colorTexCoords;
#endif
-void main(void)
+void main()
{
vec4 pivot = vec4(a_position.xyz, 1.0) * modelView;
vec4 offset = vec4(a_normal.xy + a_colorTexCoords.zw, 0.0, 0.0) * projection;
-
- vec4 projectedPivot = pivot * projection;
- float logicZ = projectedPivot.z / projectedPivot.w;
- vec4 transformedPivot = pivotTransform * vec4(projectedPivot.xy, 0.0, projectedPivot.w);
-
- vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0);
- gl_Position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset.xy / scale.w * scale.x, 0.0, 0.0);
+ gl_Position = applyBillboardPivotTransform(pivot * projection, pivotTransform, 0.0, offset.xy);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoords.xy);
diff --git a/drape_frontend/shaders/dashed_line.fsh.glsl b/drape_frontend/shaders/dashed_line.fsh.glsl
index aaa41df3fb..c787cebf8d 100644
--- a/drape_frontend/shaders/dashed_line.fsh.glsl
+++ b/drape_frontend/shaders/dashed_line.fsh.glsl
@@ -8,7 +8,7 @@ uniform float u_opacity;
const float aaPixelsCount = 2.5;
-void main(void)
+void main()
{
vec4 color = texture2D(u_colorTex, v_colorTexCoord);
vec4 mask = texture2D(u_maskTex, v_maskTexCoord);
diff --git a/drape_frontend/shaders/dashed_line.vsh.glsl b/drape_frontend/shaders/dashed_line.vsh.glsl
index 63455bbcae..88f27cc17d 100644
--- a/drape_frontend/shaders/dashed_line.vsh.glsl
+++ b/drape_frontend/shaders/dashed_line.vsh.glsl
@@ -11,18 +11,15 @@ varying vec2 v_colorTexCoord;
varying vec2 v_maskTexCoord;
varying vec2 v_halfLength;
-const float kShapeCoordScalar = 1000.0;
-
-void main(void)
+void main()
{
vec2 normal = a_normal.xy;
float halfWidth = length(normal);
vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * modelView).xy;
if (halfWidth != 0.0)
{
- vec4 glbShiftPos = vec4(a_position.xy + normal, 0.0, 1.0);
- vec2 shiftPos = (glbShiftPos * modelView).xy;
- transformedAxisPos = transformedAxisPos + normalize(shiftPos - transformedAxisPos) * halfWidth;
+ transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + normal,
+ modelView, halfWidth);
}
float uOffset = min(length(vec4(kShapeCoordScalar, 0, 0, 0) * modelView) * a_maskTexCoord.x, 1.0);
@@ -30,8 +27,6 @@ void main(void)
v_maskTexCoord = vec2(a_maskTexCoord.y + uOffset * a_maskTexCoord.z, a_maskTexCoord.w);
v_halfLength = vec2(sign(a_normal.z) * halfWidth, abs(a_normal.z));
vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
}
diff --git a/drape_frontend/shaders/debug_rect.fsh.glsl b/drape_frontend/shaders/debug_rect.fsh.glsl
index fcba1d4c33..137df16712 100644
--- a/drape_frontend/shaders/debug_rect.fsh.glsl
+++ b/drape_frontend/shaders/debug_rect.fsh.glsl
@@ -1,6 +1,10 @@
uniform vec4 u_color;
-void main(void)
+#ifdef SAMSUNG_GOOGLE_NEXUS
+uniform sampler2D u_colorTex;
+#endif
+
+void main()
{
- gl_FragColor = u_color;
+ gl_FragColor = samsungGoogleNexusWorkaround(u_color);
}
diff --git a/drape_frontend/shaders/debug_rect.vsh.glsl b/drape_frontend/shaders/debug_rect.vsh.glsl
index c23b6da42d..84053d32f0 100644
--- a/drape_frontend/shaders/debug_rect.vsh.glsl
+++ b/drape_frontend/shaders/debug_rect.vsh.glsl
@@ -1,6 +1,6 @@
attribute vec2 a_position;
-void main(void)
+void main()
{
gl_Position = vec4(a_position, 0, 1);
}
diff --git a/drape_frontend/shaders/discarded_texturing.fsh.glsl b/drape_frontend/shaders/discarded_texturing.fsh.glsl
index ccbc2b766d..e146c2a18b 100644
--- a/drape_frontend/shaders/discarded_texturing.fsh.glsl
+++ b/drape_frontend/shaders/discarded_texturing.fsh.glsl
@@ -7,7 +7,7 @@ uniform float u_opacity;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec4 finalColor = texture2D(u_colorTex, v_colorTexCoords);
finalColor.a *= u_opacity;
diff --git a/drape_frontend/shaders/hatching_area.fsh.glsl b/drape_frontend/shaders/hatching_area.fsh.glsl
index 367e832787..2b56351eb0 100644
--- a/drape_frontend/shaders/hatching_area.fsh.glsl
+++ b/drape_frontend/shaders/hatching_area.fsh.glsl
@@ -10,7 +10,7 @@ varying vec2 v_colorTexCoords;
uniform sampler2D u_maskTex;
varying vec2 v_maskTexCoords;
-void main(void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 color = v_color;
diff --git a/drape_frontend/shaders/hatching_area.vsh.glsl b/drape_frontend/shaders/hatching_area.vsh.glsl
index 3c49a63308..571bb709bc 100644
--- a/drape_frontend/shaders/hatching_area.vsh.glsl
+++ b/drape_frontend/shaders/hatching_area.vsh.glsl
@@ -14,13 +14,10 @@ varying vec2 v_colorTexCoords;
#endif
varying vec2 v_maskTexCoords;
-void main(void)
+void main()
{
vec4 pos = vec4(a_position, 1) * modelView * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoords);
#else
diff --git a/drape_frontend/shaders/line.fsh.glsl b/drape_frontend/shaders/line.fsh.glsl
index d30726a07f..19e487c76f 100644
--- a/drape_frontend/shaders/line.fsh.glsl
+++ b/drape_frontend/shaders/line.fsh.glsl
@@ -10,7 +10,7 @@ varying vec2 v_colorTexCoord;
const float aaPixelsCount = 2.5;
-void main(void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 color = v_color;
diff --git a/drape_frontend/shaders/line.vsh.glsl b/drape_frontend/shaders/line.vsh.glsl
index 9aa9ea763c..69fb458935 100644
--- a/drape_frontend/shaders/line.vsh.glsl
+++ b/drape_frontend/shaders/line.vsh.glsl
@@ -15,16 +15,15 @@ varying vec2 v_colorTexCoord;
varying vec2 v_halfLength;
-void main(void)
+void main()
{
vec2 normal = a_normal.xy;
float halfWidth = length(normal);
vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * modelView).xy;
if (halfWidth != 0.0)
{
- vec4 glbShiftPos = vec4(a_position.xy + normal, 0.0, 1.0);
- vec2 shiftPos = (glbShiftPos * modelView).xy;
- transformedAxisPos = transformedAxisPos + normalize(shiftPos - transformedAxisPos) * halfWidth;
+ transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + normal,
+ modelView, halfWidth);
}
#ifdef ENABLE_VTF
@@ -34,8 +33,5 @@ void main(void)
#endif
v_halfLength = vec2(sign(a_normal.z) * halfWidth, abs(a_normal.z));
vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
}
diff --git a/drape_frontend/shaders/masked_texturing.fsh.glsl b/drape_frontend/shaders/masked_texturing.fsh.glsl
index dff5c84cbc..2c33afb604 100644
--- a/drape_frontend/shaders/masked_texturing.fsh.glsl
+++ b/drape_frontend/shaders/masked_texturing.fsh.glsl
@@ -5,7 +5,7 @@ uniform float u_opacity;
varying vec2 v_colorTexCoords;
varying vec2 v_maskTexCoords;
-void main(void)
+void main()
{
vec4 finalColor = texture2D(u_colorTex, v_colorTexCoords) * texture2D(u_maskTex, v_maskTexCoords);
finalColor.a *= u_opacity;
diff --git a/drape_frontend/shaders/masked_texturing.vsh.glsl b/drape_frontend/shaders/masked_texturing.vsh.glsl
index 4b6a261ed8..fc76983427 100644
--- a/drape_frontend/shaders/masked_texturing.vsh.glsl
+++ b/drape_frontend/shaders/masked_texturing.vsh.glsl
@@ -10,15 +10,11 @@ uniform mat4 pivotTransform;
varying vec2 v_colorTexCoords;
varying vec2 v_maskTexCoords;
-void main(void)
+void main()
{
vec4 pos = vec4(a_position.xyz, 1) * modelView;
vec4 shiftedPos = vec4(a_normal, 0, 0) + pos;
- shiftedPos = shiftedPos * projection;
- float w = shiftedPos.w;
- shiftedPos.xyw = (pivotTransform * vec4(shiftedPos.xy, 0.0, w)).xyw;
- shiftedPos.z *= shiftedPos.w / w;
- gl_Position = shiftedPos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
v_colorTexCoords = a_colorTexCoords;
v_maskTexCoords = a_maskTexCoords;
}
diff --git a/drape_frontend/shaders/masked_texturing_billboard.vsh.glsl b/drape_frontend/shaders/masked_texturing_billboard.vsh.glsl
index 9026527ebe..68ba66f77c 100644
--- a/drape_frontend/shaders/masked_texturing_billboard.vsh.glsl
+++ b/drape_frontend/shaders/masked_texturing_billboard.vsh.glsl
@@ -11,19 +11,11 @@ uniform float zScale;
varying vec2 v_colorTexCoords;
varying vec2 v_maskTexCoords;
-void main(void)
+void main()
{
vec4 pivot = vec4(a_position.xyz, 1.0) * modelView;
vec4 offset = vec4(a_normal, 0.0, 0.0) * projection;
-
- float pivotZ = a_position.w;
-
- vec4 projectedPivot = pivot * projection;
- float logicZ = projectedPivot.z / projectedPivot.w;
- vec4 transformedPivot = pivotTransform * vec4(projectedPivot.xy, pivotZ * zScale, projectedPivot.w);
-
- vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0);
- gl_Position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset.xy / scale.w * scale.x, 0.0, 0.0);
+ gl_Position = applyBillboardPivotTransform(pivot * projection, pivotTransform, a_position.w * zScale, offset.xy);
v_colorTexCoords = a_colorTexCoords;
v_maskTexCoords = a_maskTexCoords;
diff --git a/drape_frontend/shaders/my_position.vsh.glsl b/drape_frontend/shaders/my_position.vsh.glsl
index d6653f75d9..c57a957b48 100644
--- a/drape_frontend/shaders/my_position.vsh.glsl
+++ b/drape_frontend/shaders/my_position.vsh.glsl
@@ -10,7 +10,7 @@ uniform mat4 pivotTransform;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
float sinV = sin(u_azimut);
float cosV = cos(u_azimut);
@@ -25,10 +25,6 @@ void main(void)
vec4 normal = vec4(a_normal, 0, 0);
vec4 shiftedPos = normal * rotation + pos;
- shiftedPos = shiftedPos * projection;
- float w = shiftedPos.w;
- shiftedPos.xyw = (pivotTransform * vec4(shiftedPos.xy, 0.0, w)).xyw;
- shiftedPos.z *= shiftedPos.w / w;
- gl_Position = shiftedPos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/shaders/path_symbol.vsh.glsl b/drape_frontend/shaders/path_symbol.vsh.glsl
index b20817ce2f..d35d609e4c 100644
--- a/drape_frontend/shaders/path_symbol.vsh.glsl
+++ b/drape_frontend/shaders/path_symbol.vsh.glsl
@@ -8,9 +8,7 @@ uniform mat4 pivotTransform;
varying vec2 v_colorTexCoords;
-const float kShapeCoordScalar = 1000.0;
-
-void main(void)
+void main()
{
vec4 pos = vec4(a_position.xyz, 1) * modelView;
@@ -19,10 +17,6 @@ void main(void)
vec4 norm = n * normalLen;
vec4 shiftedPos = norm + pos;
- shiftedPos = shiftedPos * projection;
- float w = shiftedPos.w;
- shiftedPos.xyw = (pivotTransform * vec4(shiftedPos.xy, 0.0, w)).xyw;
- shiftedPos.z *= shiftedPos.w / w;
- gl_Position = shiftedPos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/shaders/position_accuracy3d.vsh.glsl b/drape_frontend/shaders/position_accuracy3d.vsh.glsl
index f2be69f8a3..4673b3e8c8 100644
--- a/drape_frontend/shaders/position_accuracy3d.vsh.glsl
+++ b/drape_frontend/shaders/position_accuracy3d.vsh.glsl
@@ -11,16 +11,12 @@ uniform float zScale;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec4 position = vec4(u_position.xy, 0.0, 1.0) * modelView;
vec4 normal = vec4(normalize(a_normal) * u_accuracy, 0.0, 0.0);
position = (position + normal) * projection;
-
- float w = position.w;
- position.xyw = (pivotTransform * vec4(position.xy, u_position.z * zScale, w)).xyw;
- position.z *= position.w / w;
- gl_Position = position;
+ gl_Position = applyPivotTransform(position, pivotTransform, u_position.z * zScale);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/shaders/route.fsh.glsl b/drape_frontend/shaders/route.fsh.glsl
index aa96795d1e..e7ad56df86 100644
--- a/drape_frontend/shaders/route.fsh.glsl
+++ b/drape_frontend/shaders/route.fsh.glsl
@@ -14,14 +14,8 @@ const float kAntialiasingThreshold = 0.92;
const float kOutlineThreshold1 = 0.81;
const float kOutlineThreshold2 = 0.71;
-void main(void)
+void main()
{
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- const float kFakeColorScalar = 0.0;
- lowp vec4 fakeColor = texture2D(u_colorTex, vec2(0.0, 0.0)) * kFakeColorScalar;
-#endif
-
vec4 color = vec4(0.0, 0.0, 0.0, 0.0);
if (v_length.x >= v_length.z)
{
@@ -30,10 +24,5 @@ void main(void)
color = mix(color, u_outlineColor, smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_length.y)));
color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_length.y)));
}
-
-#ifdef SAMSUNG_GOOGLE_NEXUS
- gl_FragColor = color + fakeColor;
-#else
- gl_FragColor = color;
-#endif
+ gl_FragColor = samsungGoogleNexusWorkaround(color);
}
diff --git a/drape_frontend/shaders/route.vsh.glsl b/drape_frontend/shaders/route.vsh.glsl
index 46949f532e..ff07f5cff0 100644
--- a/drape_frontend/shaders/route.vsh.glsl
+++ b/drape_frontend/shaders/route.vsh.glsl
@@ -12,7 +12,7 @@ uniform vec4 u_routeParams;
varying vec3 v_length;
varying vec4 v_color;
-void main(void)
+void main()
{
float normalLen = length(a_normal);
vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * modelView).xy;
@@ -20,12 +20,8 @@ void main(void)
if (u_routeParams.x != 0.0 && normalLen != 0.0)
{
vec2 norm = a_normal * u_routeParams.x;
- float actualHalfWidth = length(norm);
-
- vec4 glbShiftPos = vec4(a_position.xy + norm, 0.0, 1.0);
- vec2 shiftPos = (glbShiftPos * modelView).xy;
- transformedAxisPos = transformedAxisPos + normalize(shiftPos - transformedAxisPos) * actualHalfWidth;
-
+ transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm,
+ modelView, length(norm));
if (u_routeParams.y != 0.0)
len = vec2(a_length.x + a_length.y * u_routeParams.y, a_length.z);
}
@@ -33,8 +29,5 @@ void main(void)
v_length = vec3(len, u_routeParams.z);
v_color = a_color;
vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
}
diff --git a/drape_frontend/shaders/route_arrow.vsh.glsl b/drape_frontend/shaders/route_arrow.vsh.glsl
index df48b4c1be..369e3043d8 100644
--- a/drape_frontend/shaders/route_arrow.vsh.glsl
+++ b/drape_frontend/shaders/route_arrow.vsh.glsl
@@ -10,25 +10,19 @@ uniform float u_arrowHalfWidth;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
float normalLen = length(a_normal);
vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * modelView).xy;
if (normalLen != 0.0)
{
vec2 norm = a_normal * u_arrowHalfWidth;
- float actualHalfWidth = length(norm);
-
- vec4 glbShiftPos = vec4(a_position.xy + norm, 0.0, 1.0);
- vec2 shiftPos = (glbShiftPos * modelView).xy;
- transformedAxisPos = transformedAxisPos + normalize(shiftPos - transformedAxisPos) * actualHalfWidth;
+ transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm,
+ modelView, length(norm));
}
v_colorTexCoords = a_colorTexCoords;
vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
}
diff --git a/drape_frontend/shaders/route_dash.fsh.glsl b/drape_frontend/shaders/route_dash.fsh.glsl
index 25a8768f8f..b38cf1fa14 100644
--- a/drape_frontend/shaders/route_dash.fsh.glsl
+++ b/drape_frontend/shaders/route_dash.fsh.glsl
@@ -10,31 +10,24 @@ uniform vec2 u_pattern;
const float kAntialiasingThreshold = 0.92;
-float GetAlphaFromPattern(float curLen, float dashLen, float gapLen)
+float alphaFromPattern(float curLen, float dashLen, float gapLen)
{
float len = dashLen + gapLen;
float offset = fract(curLen / len) * len;
return step(offset, dashLen);
}
-void main(void)
+void main()
{
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- const float kFakeColorScalar = 0.0;
- lowp vec4 fakeColor = texture2D(u_colorTex, vec2(0.0, 0.0)) * kFakeColorScalar;
-#endif
-
vec4 color = u_color;
if (v_length.x < v_length.z)
+ {
color.a = 0.0;
+ }
else
+ {
color.a *= (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_length.y))) *
- GetAlphaFromPattern(v_length.x, u_pattern.x, u_pattern.y);
-
-#ifdef SAMSUNG_GOOGLE_NEXUS
- gl_FragColor = color + fakeColor;
-#else
- gl_FragColor = color;
-#endif
+ alphaFromPattern(v_length.x, u_pattern.x, u_pattern.y);
+ }
+ gl_FragColor = samsungGoogleNexusWorkaround(color);
}
diff --git a/drape_frontend/shaders/ruler.vsh.glsl b/drape_frontend/shaders/ruler.vsh.glsl
index 3e2575c474..075b98022b 100644
--- a/drape_frontend/shaders/ruler.vsh.glsl
+++ b/drape_frontend/shaders/ruler.vsh.glsl
@@ -8,7 +8,7 @@ uniform mat4 projection;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
gl_Position = vec4(u_position + a_position + u_length * a_normal, 0, 1) * projection;
v_colorTexCoords = a_colorTexCoords;
diff --git a/drape_frontend/shaders/shader_index.txt b/drape_frontend/shaders/shader_index.txt
index 953323463b..e0dea148f2 100644
--- a/drape_frontend/shaders/shader_index.txt
+++ b/drape_frontend/shaders/shader_index.txt
@@ -1,39 +1,39 @@
-TEXTURING_PROGRAM texturing_vertex_shader.vsh texturing_fragment_shader.fsh
-MASKED_TEXTURING_PROGRAM masked_texturing_vertex_shader.vsh masked_texturing_fragment_shader.fsh
-COLORED_SYMBOL_PROGRAM colored_symbol_shader.vsh colored_symbol_shader.fsh
-TEXT_OUTLINED_PROGRAM text_outlined_vertex_shader.vsh text_fragment_shader.fsh
-TEXT_PROGRAM text_vertex_shader.vsh text_fragment_shader.fsh
-TEXT_FIXED_PROGRAM text_vertex_shader.vsh text_fixed_fragment_shader.fsh
-TEXT_OUTLINED_GUI_PROGRAM text_outlined_gui_vertex_shader.vsh text_fragment_shader.fsh
-AREA_PROGRAM area_vertex_shader.vsh solid_color_fragment_shader.fsh
-HATCHING_AREA_PROGRAM hatching_area_vertex_shader.vsh hatching_area_fragment_shader.fsh
-AREA_OUTLINE_PROGRAM area_vertex_shader.vsh solid_color_fragment_shader.fsh
-AREA_3D_PROGRAM area3d_vertex_shader.vsh texturing3d_fragment_shader.fsh
-AREA_3D_OUTLINE_PROGRAM area3d_outline_vertex_shader.vsh solid_color_fragment_shader.fsh
-LINE_PROGRAM line_vertex_shader.vsh line_fragment_shader.fsh
-CAP_JOIN_PROGRAM circle_shader.vsh circle_shader.fsh
-DASHED_LINE_PROGRAM dashed_vertex_shader.vsh dashed_fragment_shader.fsh
-PATH_SYMBOL_LINE path_symbol_vertex_shader.vsh texturing_fragment_shader.fsh
-TEXTURING_GUI_PROGRAM texturing_gui_vertex_shader.vsh texturing_fragment_shader.fsh
-RULER_PROGRAM ruler_vertex_shader.vsh texturing_fragment_shader.fsh
-ACCURACY_PROGRAM position_accuracy3d_shader.vsh texturing_fragment_shader.fsh
-MY_POSITION_PROGRAM my_position_shader.vsh texturing_fragment_shader.fsh
-BOOKMARK_PROGRAM user_mark.vsh texturing_fragment_shader.fsh
-ROUTE_PROGRAM route_vertex_shader.vsh route_fragment_shader.fsh
-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
-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
-COLORED_SYMBOL_BILLBOARD_PROGRAM colored_symbol_billboard_shader.vsh colored_symbol_shader.fsh
-TEXTURING_BILLBOARD_PROGRAM texturing_billboard_vertex_shader.vsh texturing_fragment_shader.fsh
-MASKED_TEXTURING_BILLBOARD_PROGRAM masked_texturing_billboard_vertex_shader.vsh masked_texturing_fragment_shader.fsh
-TEXT_OUTLINED_BILLBOARD_PROGRAM text_outlined_billboard_vertex_shader.vsh text_fragment_shader.fsh
-TEXT_BILLBOARD_PROGRAM text_billboard_vertex_shader.vsh text_fragment_shader.fsh
-TEXT_FIXED_BILLBOARD_PROGRAM text_billboard_vertex_shader.vsh text_fixed_fragment_shader.fsh
-BOOKMARK_BILLBOARD_PROGRAM user_mark_billboard.vsh texturing_fragment_shader.fsh
-TRAFFIC_PROGRAM traffic_vertex_shader.vsh traffic_fragment_shader.fsh
-TRAFFIC_LINE_PROGRAM traffic_line_vertex_shader.vsh traffic_line_fragment_shader.fsh
+TEXTURING_PROGRAM texturing.vsh.glsl texturing.fsh.glsl
+MASKED_TEXTURING_PROGRAM masked_texturing.vsh.glsl masked_texturing.fsh.glsl
+COLORED_SYMBOL_PROGRAM colored_symbol.vsh.glsl colored_symbol.fsh.glsl
+TEXT_OUTLINED_PROGRAM text_outlined.vsh.glsl text.fsh.glsl
+TEXT_PROGRAM text.vsh.glsl text.fsh.glsl
+TEXT_FIXED_PROGRAM text.vsh.glsl text_fixed.fsh.glsl
+TEXT_OUTLINED_GUI_PROGRAM text_outlined_gui.vsh.glsl text.fsh.glsl
+AREA_PROGRAM area.vsh.glsl solid_color.fsh.glsl
+HATCHING_AREA_PROGRAM hatching_area.vsh.glsl hatching_area.fsh.glsl
+AREA_OUTLINE_PROGRAM area.vsh.glsl solid_color.fsh.glsl
+AREA_3D_PROGRAM area3d.vsh.glsl texturing3d.fsh.glsl
+AREA_3D_OUTLINE_PROGRAM area3d_outline.vsh.glsl solid_color.fsh.glsl
+LINE_PROGRAM line.vsh.glsl line.fsh.glsl
+CAP_JOIN_PROGRAM circle.vsh.glsl circle.fsh.glsl
+DASHED_LINE_PROGRAM dashed_line.vsh.glsl dashed_line.fsh.glsl
+PATH_SYMBOL_LINE path_symbol.vsh.glsl texturing.fsh.glsl
+TEXTURING_GUI_PROGRAM texturing_gui.vsh.glsl texturing.fsh.glsl
+RULER_PROGRAM ruler.vsh.glsl texturing.fsh.glsl
+ACCURACY_PROGRAM position_accuracy3d.vsh.glsl texturing.fsh.glsl
+MY_POSITION_PROGRAM my_position.vsh.glsl texturing.fsh.glsl
+BOOKMARK_PROGRAM user_mark.vsh.glsl texturing.fsh.glsl
+ROUTE_PROGRAM route.vsh.glsl route.fsh.glsl
+ROUTE_DASH_PROGRAM route.vsh.glsl route_dash.fsh.glsl
+ROUTE_ARROW_PROGRAM route_arrow.vsh.glsl discarded_texturing.fsh.glsl
+TRACK_POINT_PROGRAM trackpoint.vsh.glsl trackpoint.fsh.glsl
+DEBUG_RECT_PROGRAM debug_rect.vsh.glsl debug_rect.fsh.glsl
+SCREEN_QUAD_PROGRAM screen_quad.vsh.glsl texturing.fsh.glsl
+ARROW_3D_PROGRAM arrow3d.vsh.glsl arrow3d.fsh.glsl
+ARROW_3D_SHADOW_PROGRAM arrow3d_shadow.vsh.glsl arrow3d_shadow.fsh.glsl
+ARROW_3D_OUTLINE_PROGRAM arrow3d_shadow.vsh.glsl arrow3d_outline.fsh.glsl
+COLORED_SYMBOL_BILLBOARD_PROGRAM colored_symbol_billboard.vsh.glsl colored_symbol.fsh.glsl
+TEXTURING_BILLBOARD_PROGRAM texturing_billboard.vsh.glsl texturing.fsh.glsl
+MASKED_TEXTURING_BILLBOARD_PROGRAM masked_texturing_billboard.vsh.glsl masked_texturing.fsh.glsl
+TEXT_OUTLINED_BILLBOARD_PROGRAM text_outlined_billboard.vsh.glsl text.fsh.glsl
+TEXT_BILLBOARD_PROGRAM text_billboard.vsh.glsl text.fsh.glsl
+TEXT_FIXED_BILLBOARD_PROGRAM text_billboard.vsh.glsl text_fixed.fsh.glsl
+BOOKMARK_BILLBOARD_PROGRAM user_mark_billboard.vsh.glsl texturing.fsh.glsl
+TRAFFIC_PROGRAM traffic.vsh.glsl traffic.fsh.glsl
+TRAFFIC_LINE_PROGRAM traffic_line.vsh.glsl traffic_line.fsh.glsl
diff --git a/drape_frontend/shaders/shaders_lib.glsl b/drape_frontend/shaders/shaders_lib.glsl
new file mode 100644
index 0000000000..7921563a6a
--- /dev/null
+++ b/drape_frontend/shaders/shaders_lib.glsl
@@ -0,0 +1,48 @@
+// This is a library of functions which we are use in our shaders.
+// Common (DO NOT modify this comment, it marks up block of common functions).
+
+// Scale factor in shape's coordinates transformation from tile's coorinate
+// system.
+const float kShapeCoordScalar = 1000.0;
+
+// VS (DO NOT modify this comment, it marks up block of vertex shader functions).
+
+// This function applies a 2D->3D transformation matrix |pivotTransform| to |pivot|.
+vec4 applyPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ)
+{
+ vec4 transformedPivot = pivot;
+ float w = transformedPivot.w;
+ transformedPivot.xyw = (pivotTransform * vec4(transformedPivot.xy, pivotRealZ, w)).xyw;
+ transformedPivot.z *= transformedPivot.w / w;
+ return transformedPivot;
+}
+
+// This function applies a 2D->3D transformation matrix for billboards.
+vec4 applyBillboardPivotTransform(vec4 pivot, mat4 pivotTransform, float pivotRealZ, vec2 offset)
+{
+ float logicZ = pivot.z / pivot.w;
+ vec4 transformedPivot = pivotTransform * vec4(pivot.xy, pivotRealZ, pivot.w);
+ vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0);
+ return vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset / scale.w * scale.x, 0.0, 0.0);
+}
+
+// This function calculates transformed position on an axis for line shaders family.
+vec2 calcLineTransformedAxisPos(vec2 originalAxisPos, vec2 shiftedPos, mat4 modelView, float halfWidth)
+{
+ vec2 p = (vec4(shiftedPos, 0.0, 1.0) * modelView).xy;
+ return originalAxisPos + normalize(p - originalAxisPos) * halfWidth;
+}
+
+// FS (DO NOT modify this comment, it marks up block of fragment shader functions).
+
+// Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
+// Is must be used in shaders which do not have any sampler2D usage.
+vec4 samsungGoogleNexusWorkaround(vec4 color)
+{
+#ifdef SAMSUNG_GOOGLE_NEXUS
+ const float kFakeColorScalar = 0.0;
+ return color + texture2D(u_colorTex, vec2(0.0, 0.0)) * kFakeColorScalar;
+#else
+ return color;
+#endif
+}
diff --git a/drape_frontend/shaders/solid_color.fsh.glsl b/drape_frontend/shaders/solid_color.fsh.glsl
index 49b2fd0507..143240dea1 100644
--- a/drape_frontend/shaders/solid_color.fsh.glsl
+++ b/drape_frontend/shaders/solid_color.fsh.glsl
@@ -7,7 +7,7 @@ uniform sampler2D u_colorTex;
varying vec2 v_colorTexCoords;
#endif
-void main(void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 finalColor = v_color;
diff --git a/drape_frontend/shaders/text.fsh.glsl b/drape_frontend/shaders/text.fsh.glsl
index 132daeaaa1..ca47366d34 100755
--- a/drape_frontend/shaders/text.fsh.glsl
+++ b/drape_frontend/shaders/text.fsh.glsl
@@ -11,7 +11,7 @@ uniform sampler2D u_maskTex;
uniform float u_opacity;
uniform vec2 u_contrastGamma;
-void main (void)
+void main()
{
#ifdef ENABLE_VTF
lowp vec4 glyphColor = v_color;
diff --git a/drape_frontend/shaders/text.vsh.glsl b/drape_frontend/shaders/text.vsh.glsl
index dd11320841..1e8858d785 100644
--- a/drape_frontend/shaders/text.vsh.glsl
+++ b/drape_frontend/shaders/text.vsh.glsl
@@ -6,7 +6,6 @@ attribute vec2 a_maskTexCoord;
uniform mat4 modelView;
uniform mat4 projection;
uniform mat4 pivotTransform;
-uniform float u_isOutlinePass;
#ifdef ENABLE_VTF
uniform sampler2D u_colorTex;
@@ -17,18 +16,11 @@ varying vec2 v_colorTexCoord;
varying vec2 v_maskTexCoord;
-const float Zero = 0.0;
-const float One = 1.0;
-
void main()
{
vec4 pos = vec4(a_position.xyz, 1) * modelView;
- vec4 shiftedPos = vec4(a_normal, Zero, Zero) + pos;
- shiftedPos = shiftedPos * projection;
- float w = shiftedPos.w;
- shiftedPos.xyw = (pivotTransform * vec4(shiftedPos.xy, 0.0, w)).xyw;
- shiftedPos.z *= shiftedPos.w / w;
- gl_Position = shiftedPos;
+ vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoord);
diff --git a/drape_frontend/shaders/text_billboard.vsh.glsl b/drape_frontend/shaders/text_billboard.vsh.glsl
index 7e303fedba..8652bece20 100755
--- a/drape_frontend/shaders/text_billboard.vsh.glsl
+++ b/drape_frontend/shaders/text_billboard.vsh.glsl
@@ -22,15 +22,7 @@ void main()
{
vec4 pivot = vec4(a_position.xyz, 1.0) * modelView;
vec4 offset = vec4(a_normal, 0.0, 0.0) * projection;
-
- float pivotZ = a_position.w;
-
- vec4 projectedPivot = pivot * projection;
- float logicZ = projectedPivot.z / projectedPivot.w;
- vec4 transformedPivot = pivotTransform * vec4(projectedPivot.xy, pivotZ * zScale, projectedPivot.w);
-
- vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0);
- gl_Position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset.xy / scale.w * scale.x, 0.0, 0.0);
+ gl_Position = applyBillboardPivotTransform(pivot * projection, pivotTransform, a_position.w * zScale, offset.xy);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, a_colorTexCoord);
diff --git a/drape_frontend/shaders/text_outlined.vsh.glsl b/drape_frontend/shaders/text_outlined.vsh.glsl
index 2631954ce2..8869246d19 100755
--- a/drape_frontend/shaders/text_outlined.vsh.glsl
+++ b/drape_frontend/shaders/text_outlined.vsh.glsl
@@ -18,23 +18,17 @@ varying vec2 v_colorTexCoord;
varying vec2 v_maskTexCoord;
-const float Zero = 0.0;
-const float One = 1.0;
const float BaseDepthShift = -10.0;
void main()
{
float isOutline = step(0.5, u_isOutlinePass);
- float notOutline = One - isOutline;
+ float notOutline = 1.0 - isOutline;
float depthShift = BaseDepthShift * isOutline;
- vec4 pos = (vec4(a_position.xyz, 1) + vec4(Zero, Zero, depthShift, Zero)) * modelView;
- vec4 shiftedPos = vec4(a_normal, Zero, Zero) + pos;
- shiftedPos = shiftedPos * projection;
- float w = shiftedPos.w;
- shiftedPos.xyw = (pivotTransform * vec4(shiftedPos.xy, 0.0, w)).xyw;
- shiftedPos.z *= shiftedPos.w / w;
- gl_Position = shiftedPos;
+ vec4 pos = (vec4(a_position.xyz, 1) + vec4(0.0, 0.0, depthShift, 0.0)) * modelView;
+ vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
vec2 colorTexCoord = a_colorTexCoord * notOutline + a_outlineColorTexCoord * isOutline;
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, colorTexCoord);
diff --git a/drape_frontend/shaders/text_outlined_billboard.vsh.glsl b/drape_frontend/shaders/text_outlined_billboard.vsh.glsl
index 86ca6f163d..c69fcea736 100755
--- a/drape_frontend/shaders/text_outlined_billboard.vsh.glsl
+++ b/drape_frontend/shaders/text_outlined_billboard.vsh.glsl
@@ -19,27 +19,18 @@ varying vec2 v_colorTexCoord;
varying vec2 v_maskTexCoord;
-const float BaseDepthShift = -10.0;
+const float kBaseDepthShift = -10.0;
void main()
{
float isOutline = step(0.5, u_isOutlinePass);
- float notOutline = 1.0 - isOutline;
- float depthShift = BaseDepthShift * isOutline;
+ float depthShift = kBaseDepthShift * isOutline;
vec4 pivot = (vec4(a_position.xyz, 1.0) + vec4(0.0, 0.0, depthShift, 0.0)) * modelView;
vec4 offset = vec4(a_normal, 0.0, 0.0) * projection;
-
- float pivotZ = a_position.w;
-
- vec4 projectedPivot = pivot * projection;
- float logicZ = projectedPivot.z / projectedPivot.w;
- vec4 transformedPivot = pivotTransform * vec4(projectedPivot.xy, pivotZ * zScale, projectedPivot.w);
-
- vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0);
- gl_Position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset.xy / scale.w * scale.x, 0.0, 0.0);
-
- vec2 colorTexCoord = a_colorTexCoord * notOutline + a_outlineColorTexCoord * isOutline;
+ gl_Position = applyBillboardPivotTransform(pivot * projection, pivotTransform, a_position.w * zScale, offset.xy);
+
+ vec2 colorTexCoord = mix(a_colorTexCoord, a_outlineColorTexCoord, isOutline);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, colorTexCoord);
#else
diff --git a/drape_frontend/shaders/text_outlined_gui.vsh.glsl b/drape_frontend/shaders/text_outlined_gui.vsh.glsl
index d789392d11..3852b45250 100755
--- a/drape_frontend/shaders/text_outlined_gui.vsh.glsl
+++ b/drape_frontend/shaders/text_outlined_gui.vsh.glsl
@@ -17,20 +17,17 @@ varying vec2 v_colorTexCoord;
varying vec2 v_maskTexCoord;
-const float Zero = 0.0;
-const float One = 1.0;
-const float BaseDepthShift = -10.0;
+const float kBaseDepthShift = -10.0;
void main()
{
float isOutline = step(0.5, u_isOutlinePass);
- float notOutline = One - isOutline;
- float depthShift = BaseDepthShift * isOutline;
+ float depthShift = kBaseDepthShift * isOutline;
- vec4 pos = (vec4(a_position.xyz, 1.0) + vec4(Zero, Zero, depthShift, Zero)) * modelView;
- vec4 shiftedPos = vec4(a_normal, Zero, Zero) + pos;
+ vec4 pos = (vec4(a_position.xyz, 1.0) + vec4(0.0, 0.0, depthShift, 0.0)) * modelView;
+ vec4 shiftedPos = vec4(a_normal, 0.0, 0.0) + pos;
gl_Position = shiftedPos * projection;
- vec2 colorTexCoord = a_colorTexCoord * notOutline + a_outlineColorTexCoord * isOutline;
+ vec2 colorTexCoord = mix(a_colorTexCoord, a_outlineColorTexCoord, isOutline);
#ifdef ENABLE_VTF
v_color = texture2D(u_colorTex, colorTexCoord);
#else
diff --git a/drape_frontend/shaders/texturing.fsh.glsl b/drape_frontend/shaders/texturing.fsh.glsl
index 1f70af3dca..8cc8109387 100644
--- a/drape_frontend/shaders/texturing.fsh.glsl
+++ b/drape_frontend/shaders/texturing.fsh.glsl
@@ -3,7 +3,7 @@ uniform float u_opacity;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec4 finalColor = texture2D(u_colorTex, v_colorTexCoords);
finalColor.a *= u_opacity;
diff --git a/drape_frontend/shaders/texturing.vsh.glsl b/drape_frontend/shaders/texturing.vsh.glsl
index fd05958500..5a124f8595 100644
--- a/drape_frontend/shaders/texturing.vsh.glsl
+++ b/drape_frontend/shaders/texturing.vsh.glsl
@@ -8,14 +8,10 @@ uniform mat4 pivotTransform;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec4 pos = vec4(a_position.xyz, 1) * modelView;
vec4 shiftedPos = vec4(a_normal, 0, 0) + pos;
- shiftedPos = shiftedPos * projection;
- float w = shiftedPos.w;
- shiftedPos.xyw = (pivotTransform * vec4(shiftedPos.xy, 0.0, w)).xyw;
- shiftedPos.z *= shiftedPos.w / w;
- gl_Position = shiftedPos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/shaders/texturing3d.fsh.glsl b/drape_frontend/shaders/texturing3d.fsh.glsl
index a756729897..961ab161f4 100644
--- a/drape_frontend/shaders/texturing3d.fsh.glsl
+++ b/drape_frontend/shaders/texturing3d.fsh.glsl
@@ -4,7 +4,7 @@ uniform float u_opacity;
varying vec2 v_colorTexCoords;
varying float v_intensity;
-void main(void)
+void main()
{
vec4 finalColor = vec4(texture2D(u_colorTex, v_colorTexCoords).rgb, u_opacity);
gl_FragColor = vec4((v_intensity * 0.2 + 0.8) * finalColor.rgb, finalColor.a);
diff --git a/drape_frontend/shaders/texturing_billboard.vsh.glsl b/drape_frontend/shaders/texturing_billboard.vsh.glsl
index 11e06ca9a8..5a2c07f40a 100644
--- a/drape_frontend/shaders/texturing_billboard.vsh.glsl
+++ b/drape_frontend/shaders/texturing_billboard.vsh.glsl
@@ -9,19 +9,11 @@ uniform float zScale;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec4 pivot = vec4(a_position.xyz, 1.0) * modelView;
vec4 offset = vec4(a_normal, 0.0, 0.0) * projection;
-
- float pivotZ = a_position.w;
-
- vec4 projectedPivot = pivot * projection;
- float logicZ = projectedPivot.z / projectedPivot.w;
- vec4 transformedPivot = pivotTransform * vec4(projectedPivot.xy, pivotZ * zScale, projectedPivot.w);
-
- vec4 scale = pivotTransform * vec4(1.0, -1.0, 0.0, 1.0);
- gl_Position = vec4(transformedPivot.xy / transformedPivot.w, logicZ, 1.0) + vec4(offset.xy / scale.w * scale.x, 0.0, 0.0);
+ gl_Position = applyBillboardPivotTransform(pivot * projection, pivotTransform, a_position.w * zScale, offset.xy);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/shaders/texturing_gui.vsh.glsl b/drape_frontend/shaders/texturing_gui.vsh.glsl
index a7d1525415..c96683ce48 100644
--- a/drape_frontend/shaders/texturing_gui.vsh.glsl
+++ b/drape_frontend/shaders/texturing_gui.vsh.glsl
@@ -6,7 +6,7 @@ uniform mat4 projection;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
gl_Position = vec4(a_position, 0, 1) * modelView * projection;
v_colorTexCoords = a_colorTexCoords;
diff --git a/drape_frontend/shaders/trackpoint.fsh.glsl b/drape_frontend/shaders/trackpoint.fsh.glsl
index 601bb62c3e..f96beba503 100644
--- a/drape_frontend/shaders/trackpoint.fsh.glsl
+++ b/drape_frontend/shaders/trackpoint.fsh.glsl
@@ -1,5 +1,5 @@
#ifdef SAMSUNG_GOOGLE_NEXUS
-varying lowp vec4 v_fakeColor;
+uniform sampler2D u_colorTex;
#endif
uniform float u_opacity;
@@ -9,14 +9,8 @@ varying vec4 v_color;
const float kAntialiasingScalar = 0.9;
-void main(void)
+void main()
{
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- const float kFakeColorScalar = 0.0;
- lowp vec4 fakeColor = v_fakeColor * kFakeColorScalar;
-#endif
-
float d = dot(v_radius.xy, v_radius.xy);
vec4 finalColor = v_color;
@@ -24,9 +18,5 @@ void main(void)
float stepValue = smoothstep(aaRadius * aaRadius, v_radius.z * v_radius.z, d);
finalColor.a = finalColor.a * u_opacity * (1.0 - stepValue);
-#ifdef SAMSUNG_GOOGLE_NEXUS
- gl_FragColor = finalColor + fakeColor;
-#else
- gl_FragColor = finalColor;
-#endif
+ gl_FragColor = samsungGoogleNexusWorkaround(finalColor);
}
diff --git a/drape_frontend/shaders/trackpoint.vsh.glsl b/drape_frontend/shaders/trackpoint.vsh.glsl
index 4c87712fc2..7d658bc5ed 100644
--- a/drape_frontend/shaders/trackpoint.vsh.glsl
+++ b/drape_frontend/shaders/trackpoint.vsh.glsl
@@ -6,30 +6,16 @@ uniform mat4 modelView;
uniform mat4 projection;
uniform mat4 pivotTransform;
-#ifdef SAMSUNG_GOOGLE_NEXUS
-uniform sampler2D u_colorTex;
-varying lowp vec4 v_fakeColor;
-#endif
-
varying vec3 v_radius;
varying vec4 v_color;
-void main(void)
+void main()
{
vec3 radius = a_normal * a_position.z;
vec4 pos = vec4(a_position.xy, 0, 1) * modelView;
vec4 shiftedPos = vec4(radius.xy, 0, 0) + pos;
- vec4 finalPos = shiftedPos * projection;
- float w = finalPos.w;
- finalPos.xyw = (pivotTransform * vec4(finalPos.xy, 0.0, w)).xyw;
- finalPos.z *= finalPos.w / w;
- gl_Position = finalPos;
+ gl_Position = applyPivotTransform(shiftedPos * projection, pivotTransform, 0.0);
v_radius = radius;
v_color = a_color;
-
-#ifdef SAMSUNG_GOOGLE_NEXUS
- // Because of a bug in OpenGL driver on Samsung Google Nexus this workaround is here.
- v_fakeColor = texture2D(u_colorTex, vec2(0.0, 0.0));
-#endif
}
diff --git a/drape_frontend/shaders/traffic.fsh.glsl b/drape_frontend/shaders/traffic.fsh.glsl
index 6d709d2a4c..82a43bf0ad 100644
--- a/drape_frontend/shaders/traffic.fsh.glsl
+++ b/drape_frontend/shaders/traffic.fsh.glsl
@@ -18,7 +18,7 @@ const float kOutlineThreshold2 = 0.5;
const float kMaskOpacity = 0.7;
-void main(void)
+void main()
{
vec4 color = texture2D(u_colorTex, v_colorTexCoord);
float alphaCode = color.a;
diff --git a/drape_frontend/shaders/traffic.vsh.glsl b/drape_frontend/shaders/traffic.vsh.glsl
index 6aba2dbb21..3ce4fafed8 100644
--- a/drape_frontend/shaders/traffic.vsh.glsl
+++ b/drape_frontend/shaders/traffic.vsh.glsl
@@ -12,10 +12,9 @@ varying vec2 v_colorTexCoord;
varying vec2 v_maskTexCoord;
varying float v_halfLength;
-const float kShapeCoordScalar = 1000.0;
const float kArrowVSize = 0.25;
-void main(void)
+void main()
{
vec2 normal = a_normal.xy;
float halfWidth = length(normal);
@@ -25,11 +24,8 @@ void main(void)
vec2 norm = normal * u_trafficParams.x;
if (a_normal.z < 0.0)
norm = normal * u_trafficParams.y;
- halfWidth = length(norm);
-
- vec4 glbShiftPos = vec4(a_position.xy + norm, 0.0, 1.0);
- vec2 shiftPos = (glbShiftPos * modelView).xy;
- transformedAxisPos = transformedAxisPos + normalize(shiftPos - transformedAxisPos) * halfWidth;
+ transformedAxisPos = calcLineTransformedAxisPos(transformedAxisPos, a_position.xy + norm,
+ modelView, length(norm));
}
float uOffset = length(vec4(kShapeCoordScalar, 0, 0, 0) * modelView) * a_normal.w;
@@ -39,8 +35,5 @@ void main(void)
v_maskTexCoord.x *= step(a_colorTexCoord.w, v_maskTexCoord.x);
v_halfLength = a_normal.z;
vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
}
diff --git a/drape_frontend/shaders/traffic_line.fsh.glsl b/drape_frontend/shaders/traffic_line.fsh.glsl
index 37403d8f2e..ad8a8fdbba 100644
--- a/drape_frontend/shaders/traffic_line.fsh.glsl
+++ b/drape_frontend/shaders/traffic_line.fsh.glsl
@@ -1,9 +1,9 @@
-varying vec2 v_colorTexCoord;
-
uniform sampler2D u_colorTex;
uniform float u_opacity;
-void main(void)
+varying vec2 v_colorTexCoord;
+
+void main()
{
vec4 color = texture2D(u_colorTex, v_colorTexCoord);
gl_FragColor = vec4(color.rgb, u_opacity);
diff --git a/drape_frontend/shaders/traffic_line.vsh.glsl b/drape_frontend/shaders/traffic_line.vsh.glsl
index 63ad1bef3c..ef808bc568 100644
--- a/drape_frontend/shaders/traffic_line.vsh.glsl
+++ b/drape_frontend/shaders/traffic_line.vsh.glsl
@@ -7,13 +7,10 @@ uniform mat4 pivotTransform;
varying vec2 v_colorTexCoord;
-void main(void)
+void main()
{
vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * modelView).xy;
vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
v_colorTexCoord = a_colorTexCoord;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos, pivotTransform, 0.0);
}
diff --git a/drape_frontend/shaders/user_mark.vsh.glsl b/drape_frontend/shaders/user_mark.vsh.glsl
index 0fce199d47..1ee417a8f2 100644
--- a/drape_frontend/shaders/user_mark.vsh.glsl
+++ b/drape_frontend/shaders/user_mark.vsh.glsl
@@ -10,7 +10,7 @@ uniform float u_interpolationT;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec2 normal = a_normal;
if (a_animate > 0.0)
@@ -18,10 +18,6 @@ void main(void)
vec4 p = vec4(a_position, 1) * modelView;
vec4 pos = vec4(normal, 0, 0) + p;
- pos = pos * projection;
- float w = pos.w;
- pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
- pos.z *= pos.w / w;
- gl_Position = pos;
+ gl_Position = applyPivotTransform(pos * projection, pivotTransform, 0.0);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/shaders/user_mark_billboard.vsh.glsl b/drape_frontend/shaders/user_mark_billboard.vsh.glsl
index afd6c6d7b4..fc353fe4ee 100644
--- a/drape_frontend/shaders/user_mark_billboard.vsh.glsl
+++ b/drape_frontend/shaders/user_mark_billboard.vsh.glsl
@@ -10,7 +10,7 @@ uniform float u_interpolationT;
varying vec2 v_colorTexCoords;
-void main(void)
+void main()
{
vec2 normal = a_normal;
if (a_animate > 0.0)
@@ -18,12 +18,7 @@ void main(void)
vec4 pivot = vec4(a_position.xyz, 1.0) * modelView;
vec4 offset = vec4(normal, 0.0, 0.0) * projection;
-
- vec4 projectedPivot = pivot * projection;
- vec4 transformedPivot = pivotTransform * vec4(projectedPivot.xy, 0.0, 1.0);
-
- vec4 scale = pivotTransform * vec4(1.0, -1.0, 0, 1.0);
- gl_Position = transformedPivot + vec4(offset.xy * transformedPivot.w / scale.w * scale.x, 0, 0);
+ gl_Position = applyBillboardPivotTransform(pivot * projection, pivotTransform, 0.0, offset.xy);
v_colorTexCoords = a_colorTexCoords;
}
diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp
index 01d10f5182..cbb539c11c 100644
--- a/drape_frontend/text_shape.cpp
+++ b/drape_frontend/text_shape.cpp
@@ -1,9 +1,9 @@
#include "drape_frontend/text_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/text_handle.hpp"
#include "drape_frontend/text_layout.hpp"
#include "drape/utils/vertex_decl.hpp"
-#include "drape/shader_def.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/batcher.hpp"
#include "drape/glstate.hpp"
diff --git a/drape_frontend/traffic_generator.cpp b/drape_frontend/traffic_generator.cpp
index 2151dc96ee..5a1178c60e 100644
--- a/drape_frontend/traffic_generator.cpp
+++ b/drape_frontend/traffic_generator.cpp
@@ -2,6 +2,7 @@
#include "drape_frontend/line_shape_helper.hpp"
#include "drape_frontend/map_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/tile_utils.hpp"
#include "drape_frontend/traffic_renderer.hpp"
@@ -9,7 +10,6 @@
#include "drape/attribute_provider.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
#include "indexer/map_style_reader.hpp"
diff --git a/drape_frontend/traffic_renderer.cpp b/drape_frontend/traffic_renderer.cpp
index c54004ba52..edd71a5821 100644
--- a/drape_frontend/traffic_renderer.cpp
+++ b/drape_frontend/traffic_renderer.cpp
@@ -1,9 +1,9 @@
#include "drape_frontend/traffic_renderer.hpp"
#include "drape_frontend/color_constants.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/visual_params.hpp"
#include "drape/glsl_func.hpp"
-#include "drape/shader_def.hpp"
#include "drape/support_manager.hpp"
#include "drape/vertex_array_buffer.hpp"
diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp
index ac821096cc..973fda6590 100644
--- a/drape_frontend/user_mark_shapes.cpp
+++ b/drape_frontend/user_mark_shapes.cpp
@@ -2,11 +2,11 @@
#include "drape_frontend/line_shape.hpp"
#include "drape_frontend/map_shape.hpp"
+#include "drape_frontend/shader_def.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/tile_utils.hpp"
#include "drape/utils/vertex_decl.hpp"
-#include "drape/shader_def.hpp"
#include "drape/attribute_provider.hpp"
#include "geometry/spline.hpp"
diff --git a/omim.pro b/omim.pro
index 3bf4ef0808..ed815a9985 100644
--- a/omim.pro
+++ b/omim.pro
@@ -73,11 +73,6 @@ SUBDIRS = 3party base coding geometry editor indexer routing routing_common sear
}
CONFIG(desktop) {
- drape_head.depends = $$SUBDIRS
- SUBDIRS *= drape_head
- }
-
- CONFIG(desktop) {
benchmark_tool.subdir = map/benchmark_tool
benchmark_tool.depends = 3party base coding geometry platform indexer search map
mapshot.depends = $$SUBDIRS
diff --git a/qt/qt_common/map_widget.cpp b/qt/qt_common/map_widget.cpp
index a92c38b80a..1adb8fd186 100644
--- a/qt/qt_common/map_widget.cpp
+++ b/qt/qt_common/map_widget.cpp
@@ -200,7 +200,7 @@ void MapWidget::paintGL()
uniform mat4 u_projection; \
varying vec2 v_texCoord; \
\
- void main(void) \
+ void main() \
{ \
gl_Position = u_projection * vec4(a_position, 0.0, 1.0);\
v_texCoord = a_texCoord; \
@@ -211,7 +211,7 @@ void MapWidget::paintGL()
uniform sampler2D u_sampler; \
varying vec2 v_texCoord; \
\
- void main(void) \
+ void main() \
{ \
gl_FragColor = vec4(texture2D(u_sampler, v_texCoord).rgb, 1.0); \
}";
diff --git a/tools/autobuild/shader_preprocessor.py b/tools/autobuild/shader_preprocessor.py
index e58da5d3bf..844c78dcf9 100644
--- a/tools/autobuild/shader_preprocessor.py
+++ b/tools/autobuild/shader_preprocessor.py
@@ -2,258 +2,317 @@ import os
import sys
import hashlib
-lowPDefine = "LOW_P"
-lowPSearch = "lowp"
-mediumPDefine = "MEDIUM_P"
-mediumPSearch = "mediump"
-highPDefine = "HIGH_P"
-highPSearch = "highp"
-maxPrecDefine = "MAXPREC_P"
-maxPrecSearch = "MAXPREC"
-
-def formatOutFilePath(baseDir, fileName):
- return os.path.join(baseDir, "..", fileName)
-
-def formatShaderSourceName(shaderFileName):
- shaderSourceName = shaderFileName
- return shaderSourceName.replace(".", "_").upper()
-
-def formatShaderIndexName(shaderFileName):
- return formatShaderSourceName(shaderFileName) + "_INDEX"
-
-def formatShaderDocName(shaderName):
- return shaderName.replace(".", "_") + ".txt"
-
-def readIndexFile(filePath):
- f = open(filePath)
- gpuPrograms = dict()
- index = 0
- for line in f:
- lineParts = line.strip().split()
- if len(lineParts) != 3:
- print("Incorrect GPU program definition : " + line)
- exit(10)
-
- vertexShader = next( f for f in lineParts if f.endswith(".vsh"))
- fragmentShader = next( f for f in lineParts if f.endswith(".fsh"))
-
- if not vertexShader:
- print("Vertex shader not found in GPU program definition : " + line)
- exit(11)
-
- if not fragmentShader:
- print("Fragment shader not found in GPU program definition : " + line)
- exit(12)
-
- if lineParts[0] in gpuPrograms.keys():
- print("More than one difinition of %s gpu program" % lineParts[0])
- exit(13)
-
- gpuPrograms[index] = (vertexShader, fragmentShader, lineParts[0])
- index += 1
-
- return gpuPrograms
-
-def generateShaderIndexes(shaders):
+LOWP_DEFINE = "LOW_P"
+LOWP_SEARCH = "lowp"
+MEDIUMP_DEFINE = "MEDIUM_P"
+MEDIUMP_SEARCH = "mediump"
+HIGHP_DEFINE = "HIGH_P"
+HIGHP_SEARCH = "highp"
+MAX_PREC_DEFINE = "MAXPREC_P"
+MAX_PREC_SEARCH = "MAXPREC"
+VERTEX_SHADER_EXT = ".vsh.glsl"
+FRAG_SHADER_EXT = ".fsh.glsl"
+
+SHADERS_LIB_COMMON_PATTERN = "// Common"
+SHADERS_LIB_VS_PATTERN = "// VS"
+SHADERS_LIB_FS_PATTERN = "// FS"
+SHADERS_LIB_COMMON_INDEX = 0
+SHADERS_LIB_VS_INDEX = 1
+SHADERS_LIB_FS_INDEX = 2
+
+
+def format_shader_source_name(shader_file_name):
+ shader_source_name = shader_file_name
+ return shader_source_name.replace(".glsl", "").replace(".", "_").upper()
+
+
+def format_shader_index_name(shader_file_name):
+ return format_shader_source_name(shader_file_name) + "_INDEX"
+
+
+def read_index_file(file_path):
+ gpu_programs = dict()
+ with open(file_path, 'r') as f:
+ index = 0
+ for line in f:
+ line_parts = line.strip().split()
+ if len(line_parts) != 3:
+ print("Incorrect GPU program definition : " + line)
+ exit(10)
+
+ vertex_shader = next(f for f in line_parts if f.endswith(VERTEX_SHADER_EXT))
+ fragment_shader = next(f for f in line_parts if f.endswith(FRAG_SHADER_EXT))
+
+ if not vertex_shader:
+ print("Vertex shader not found in GPU program definition : " + line)
+ exit(11)
+
+ if not fragment_shader:
+ print("Fragment shader not found in GPU program definition : " + line)
+ exit(12)
+
+ if line_parts[0] in gpu_programs.keys():
+ print("More than one difinition of %s gpu program" % line_parts[0])
+ exit(13)
+
+ gpu_programs[index] = (vertex_shader, fragment_shader, line_parts[0])
+ index += 1
+
+ return gpu_programs
+
+
+def read_shaders_lib_file(file_path):
+ shaders_library = ['', '', '']
+ with open(file_path, 'r') as f:
+ shaders_lib_content = f.read()
+ if len(shaders_lib_content) == 0:
+ return shaders_library
+
+ common_index = shaders_lib_content.find(SHADERS_LIB_COMMON_PATTERN)
+ if common_index < 0:
+ print("Common functions block is not found in " + file_path)
+ exit(14)
+ vs_index = shaders_lib_content.find(SHADERS_LIB_VS_PATTERN)
+ if vs_index < 0:
+ print("Vertex shaders functions block is not found in " + file_path)
+ exit(15)
+ fs_index = shaders_lib_content.find(SHADERS_LIB_FS_PATTERN)
+ if fs_index < 0:
+ print("Vertex shaders functions block is not found in " + file_path)
+ exit(16)
+ if not (common_index < vs_index < fs_index):
+ print("Order of functions block is incorrect in " + file_path)
+ exit(17)
+
+ shaders_library[SHADERS_LIB_COMMON_INDEX] = shaders_lib_content[common_index:vs_index - 1]
+ shaders_library[SHADERS_LIB_VS_INDEX] = shaders_lib_content[vs_index:fs_index - 1]
+ shaders_library[SHADERS_LIB_FS_INDEX] = shaders_lib_content[fs_index:]
+
+ return shaders_library
+
+
+def generate_shader_indexes(shaders):
return dict((v, k) for k, v in enumerate(shaders))
-def definitionChanged(newHeaderContent, defFilePath):
- if not os.path.isfile(defFilePath):
+
+def definition_changed(new_header_content, def_file_path):
+ if not os.path.isfile(def_file_path):
return True
- defContent = open(defFilePath, 'r').read()
- oldMD5 = hashlib.md5()
- oldMD5.update(defContent)
+ def_content = open(def_file_path, 'r').read()
+ old_md5 = hashlib.md5()
+ old_md5.update(def_content)
+
+ new_md5 = hashlib.md5()
+ new_md5.update(new_header_content)
- newMd5 = hashlib.md5()
- newMd5.update(newHeaderContent)
+ return old_md5.digest() != new_md5.digest()
- return oldMD5.digest() != newMd5.digest()
-def writeDefinitionFile(programIndex):
+def write_definition_file(program_index):
result = ""
result += "#pragma once\n\n"
- result += "#include \"std/map.hpp\"\n"
- result += "#include \"std/string.hpp\"\n"
- result += "#include \"std/target_os.hpp\"\n"
- result += "#include \"std/vector.hpp\"\n\n"
+ result += "#include \"drape/gpu_program_info.hpp\"\n\n"
+ result += "#include \"std/target_os.hpp\"\n\n"
+ result += "#include <map>\n"
+ result += "#include <string>\n"
+ result += "#include <vector>\n\n"
result += "namespace gpu\n"
result += "{\n"
- result += "\n"
result += "#if defined(OMIM_OS_DESKTOP) && !defined(COMPILER_TESTS)\n"
- result += " #define %s \"\" \n" % (lowPDefine)
- result += " #define %s \"\" \n" % (mediumPDefine)
- result += " #define %s \"\" \n" % (highPDefine)
- result += " #define %s \"\" \n" % (maxPrecDefine)
+ result += " #define %s \"\" \n" % (LOWP_DEFINE)
+ result += " #define %s \"\" \n" % (MEDIUMP_DEFINE)
+ result += " #define %s \"\" \n" % (HIGHP_DEFINE)
+ result += " #define %s \"\" \n" % (MAX_PREC_DEFINE)
result += "#else\n"
- result += " #define %s \"%s\"\n" % (lowPDefine, lowPSearch)
- result += " #define %s \"%s\"\n" % (mediumPDefine, mediumPSearch)
- result += " #define %s \"%s\"\n" % (highPDefine, highPSearch)
- result += " #define %s \"%s\"\n" % (maxPrecDefine, maxPrecSearch)
+ result += " #define %s \"%s\"\n" % (LOWP_DEFINE, LOWP_SEARCH)
+ result += " #define %s \"%s\"\n" % (MEDIUMP_DEFINE, MEDIUMP_SEARCH)
+ result += " #define %s \"%s\"\n" % (HIGHP_DEFINE, HIGHP_SEARCH)
+ result += " #define %s \"%s\"\n" % (MAX_PREC_DEFINE, MAX_PREC_SEARCH)
result += "#endif\n\n"
- result += "struct ProgramInfo\n"
- result += "{\n"
- result += " ProgramInfo();\n"
- result += " ProgramInfo(int vertexIndex, int fragmentIndex,\n"
- result += " char const * vertexSource, char const * fragmentSource);\n"
- result += " int m_vertexIndex;\n"
- result += " int m_fragmentIndex;\n"
- result += " char const * m_vertexSource;\n"
- result += " char const * m_fragmentSource;\n"
- result += "};\n\n"
-
- for programName in programIndex.keys():
- result += "extern int const %s;\n" % (programIndex[programName][2])
+
+ for programName in program_index.keys():
+ result += "extern int const %s;\n" % (program_index[programName][2])
result += "\n"
- result += "void InitGpuProgramsLib(map<int, ProgramInfo> & gpuIndex);\n\n"
- result += "uint8_t GetTextureSlotsCount(int gpuIndex);\n\n"
+ result += "#if !defined(COMPILER_TESTS)\n"
+ result += "class ShaderMapper : public GpuProgramGetter\n"
+ result += "{\n"
+ result += "public:\n"
+ result += " ShaderMapper();\n"
+ result += " GpuProgramInfo const & GetProgramInfo(int program) const override;\n"
+ result += "private:\n"
+ result += " std::map<int, gpu::GpuProgramInfo> m_mapping;\n"
+ result += "};\n"
+ result += "#endif\n\n"
result += "#if defined(COMPILER_TESTS)\n"
- result += "extern vector<string> VertexEnum;\n"
- result += "extern vector<string> FragmentEnum;\n\n"
- result += "void InitEnumeration();\n\n"
+ result += "extern std::vector<std::pair<std::string, std::string>> const & GetVertexEnum();\n"
+ result += "extern std::vector<std::pair<std::string, std::string>> const & GetFragmentEnum();\n"
result += "#endif\n"
result += "} // namespace gpu\n"
return result
-def writeShader(outputFile, shaderFile, shaderDir):
- outputFile.write(" static char const %s[] = \" \\\n" % (formatShaderSourceName(shaderFile)))
- outputFile.write(" #ifdef GL_ES \\n\\\n")
- outputFile.write(" #ifdef GL_FRAGMENT_PRECISION_HIGH \\n\\\n")
- outputFile.write(" #define MAXPREC \" HIGH_P \" \\n\\\n")
- outputFile.write(" #else \\n\\\n")
- outputFile.write(" #define MAXPREC \" MEDIUM_P \" \\n\\\n")
- outputFile.write(" #endif \\n\\\n")
- outputFile.write(" precision MAXPREC float; \\n\\\n")
- outputFile.write(" #endif \\n\\\n")
-
- for line in open(os.path.join(shaderDir, shaderFile)):
- if not line.lstrip().startswith("//"):
- outputLine = line.rstrip().replace(lowPSearch, "\" " + lowPDefine + " \"")
- outputLine = outputLine.replace(mediumPSearch, "\" " + mediumPDefine + " \"")
- outputLine = outputLine.replace(highPSearch, "\" " + highPDefine+ " \"")
- outputFile.write(" %s \\n\\\n" % (outputLine))
- outputFile.write(" \";\n\n")
-
-def calcTextureSlots(vertexShaderFile, fragmentShaderFile, shaderDir):
+
+def write_shader_line(output_file, line):
+ if line.lstrip().startswith("//") or line == '\n' or len(line) == 0:
+ return
+ output_line = line.rstrip().replace(LOWP_SEARCH, "\" " + LOWP_DEFINE + " \"")
+ output_line = output_line.replace(MEDIUMP_SEARCH, "\" " + MEDIUMP_DEFINE + " \"")
+ output_line = output_line.replace(HIGHP_SEARCH, "\" " + HIGHP_DEFINE + " \"")
+ output_file.write(" %s \\n\\\n" % output_line)
+
+
+def write_shader(output_file, shader_file, shader_dir, shaders_library):
+ output_file.write("static char const %s[] = \" \\\n" % (format_shader_source_name(shader_file)))
+ output_file.write(" #ifdef GL_ES \\n\\\n")
+ output_file.write(" #ifdef GL_FRAGMENT_PRECISION_HIGH \\n\\\n")
+ output_file.write(" #define MAXPREC \" HIGH_P \" \\n\\\n")
+ output_file.write(" #else \\n\\\n")
+ output_file.write(" #define MAXPREC \" MEDIUM_P \" \\n\\\n")
+ output_file.write(" #endif \\n\\\n")
+ output_file.write(" precision MAXPREC float; \\n\\\n")
+ output_file.write(" #endif \\n\\\n")
+
+ lib_content = shaders_library[SHADERS_LIB_COMMON_INDEX]
+ if shader_file.find(VERTEX_SHADER_EXT) >= 0:
+ lib_content += shaders_library[SHADERS_LIB_VS_INDEX]
+ elif shader_file.find(FRAG_SHADER_EXT) >= 0:
+ lib_content += shaders_library[SHADERS_LIB_FS_INDEX]
+
+ for line in open(os.path.join(shader_dir, shader_file)):
+ if line.lstrip().startswith("void main"):
+ for lib_line in lib_content.splitlines():
+ write_shader_line(output_file, lib_line)
+ write_shader_line(output_file, line)
+ output_file.write("\";\n\n")
+
+
+def calc_texture_slots(vertex_shader_file, fragment_shader_file, shader_dir):
slots = set()
- for line in open(os.path.join(shaderDir, vertexShaderFile)):
+ for line in open(os.path.join(shader_dir, vertex_shader_file)):
line = line.replace(" ", "")
- if (line.find("uniformsampler") != -1):
+ if line.find("uniformsampler") != -1:
slots.add(line)
- for line in open(os.path.join(shaderDir, fragmentShaderFile)):
+ for line in open(os.path.join(shader_dir, fragment_shader_file)):
line = line.replace(" ", "")
- if (line.find("uniformsampler") != -1):
+ if line.find("uniformsampler") != -1:
slots.add(line)
return len(slots)
-def writeShadersIndex(outputFile, shaderIndex):
- for shader in shaderIndex:
- outputFile.write("#define %s %s\n" % (formatShaderIndexName(shader), shaderIndex[shader]))
-def writeImplementationFile(programsDef, shaderIndex, shaderDir, implFile, defFile, shaders):
- vertexShaders = [s for s in shaders if s.endswith(".vsh")]
- fragmentShaders = [s for s in shaders if s.endswith(".fsh")]
- file = open(formatOutFilePath(shaderDir, implFile), 'w')
- file.write("#include \"%s\"\n\n" % (defFile))
- file.write("#include \"std/utility.hpp\"\n\n")
- file.write("#include \"std/unordered_map.hpp\"\n\n")
+def write_shaders_index(output_file, shader_index):
+ for shader in shader_index:
+ output_file.write("#define %s %s\n" % (format_shader_index_name(shader), shader_index[shader]))
+
+
+def write_implementation_file(programs_def, shader_index, shader_dir, impl_file, def_file, generation_dir, shaders,
+ shaders_library):
+ vertex_shaders = [s for s in shaders if s.endswith(VERTEX_SHADER_EXT)]
+ fragment_shaders = [s for s in shaders if s.endswith(FRAG_SHADER_EXT)]
+ file = open(os.path.join(generation_dir, impl_file), 'w')
+ file.write("#include \"%s\"\n\n" % (def_file))
+ file.write("#include \"base/assert.hpp\"\n\n")
+ file.write("#include <unordered_map>\n")
+ file.write("#include <utility>\n\n")
file.write("namespace gpu\n")
- file.write("{\n\n")
+ file.write("{\n")
- for shader in shaderIndex.keys():
- writeShader(file, shader, shaderDir)
+ for shader in shader_index.keys():
+ write_shader(file, shader, shader_dir, shaders_library)
- file.write("//---------------------------------------------//\n")
- writeShadersIndex(file, shaderIndex)
- file.write("//---------------------------------------------//\n")
- file.write("#if defined(COMPILER_TESTS)\n")
- file.write("vector<string> VertexEnum;\n")
- file.write("vector<string> FragmentEnum;\n\n")
- file.write("#endif\n")
- file.write("//---------------------------------------------//\n")
- for program in programsDef:
- file.write("const int %s = %s;\n" % (programsDef[program][2], program));
- file.write("//---------------------------------------------//\n")
+ write_shaders_index(file, shader_index)
file.write("\n")
- file.write("ProgramInfo::ProgramInfo()\n")
- file.write(" : m_vertexIndex(-1)\n")
- file.write(" , m_fragmentIndex(-1)\n")
- file.write(" , m_vertexSource(NULL)\n")
- file.write(" , m_fragmentSource(NULL) {}\n\n")
- file.write("ProgramInfo::ProgramInfo(int vertexIndex, int fragmentIndex,\n")
- file.write(" char const * vertexSource, char const * fragmentSource)\n")
- file.write(" : m_vertexIndex(vertexIndex)\n")
- file.write(" , m_fragmentIndex(fragmentIndex)\n")
- file.write(" , m_vertexSource(vertexSource)\n")
- file.write(" , m_fragmentSource(fragmentSource)\n")
+ for program in programs_def:
+ file.write("int const %s = %s;\n" % (programs_def[program][2], program));
+ file.write("\n")
+ file.write("namespace\n")
+ file.write("{\n")
+ file.write("void InitGpuProgramsLib(std::map<int, GpuProgramInfo> & gpuIndex)\n")
file.write("{\n")
+ for program in programs_def.keys():
+ vertex_shader = programs_def[program][0]
+ vertex_index_name = format_shader_index_name(vertex_shader)
+ vertex_source_name = format_shader_source_name(vertex_shader)
+
+ fragment_shader = programs_def[program][1]
+ fragment_index_name = format_shader_index_name(fragment_shader)
+ fragment_source_name = format_shader_source_name(fragment_shader)
+ texture_slots = calc_texture_slots(vertex_shader, fragment_shader, shader_dir)
+
+ file.write(" gpuIndex.insert(std::make_pair(%s, GpuProgramInfo(%s, %s, %s, %s, %d)));\n" % (
+ program, vertex_index_name, fragment_index_name, vertex_source_name, fragment_source_name, texture_slots))
file.write("}\n")
- file.write("\n")
- file.write("void InitGpuProgramsLib(map<int, ProgramInfo> & gpuIndex)\n")
+ file.write("} // namespace\n\n")
+
+ file.write("#if !defined(COMPILER_TESTS)\n")
+ file.write("ShaderMapper::ShaderMapper() { gpu::InitGpuProgramsLib(m_mapping); }\n")
+ file.write("GpuProgramInfo const & ShaderMapper::GetProgramInfo(int program) const\n")
file.write("{\n")
- for program in programsDef.keys():
- vertexShader = programsDef[program][0]
- vertexIndexName = formatShaderIndexName(vertexShader)
- vertexSourceName = formatShaderSourceName(vertexShader)
-
- fragmentShader = programsDef[program][1]
- fragmentIndexName = formatShaderIndexName(fragmentShader)
- fragmentSourceName = formatShaderSourceName(fragmentShader)
-
- file.write(" gpuIndex.insert(make_pair(%s, ProgramInfo(%s, %s, %s, %s)));\n" % (program, vertexIndexName, fragmentIndexName, vertexSourceName, fragmentSourceName))
- file.write("}\n\n")
-
- file.write("uint8_t GetTextureSlotsCount(int gpuIndex)\n")
+ file.write(" auto it = m_mapping.find(program);\n")
+ file.write(" ASSERT(it != m_mapping.end(), ());\n")
+ file.write(" return it->second;\n")
+ file.write("}\n")
+ file.write("#endif\n\n")
+
+ file.write("#if defined(COMPILER_TESTS)\n")
+ file.write("std::vector<std::pair<std::string, std::string>> const & GetVertexEnum()\n")
file.write("{\n")
- file.write(" static unordered_map<int, uint8_t> textureSlots;\n")
- file.write(" if (textureSlots.empty())\n")
+ file.write(" static std::vector<std::pair<std::string, std::string>> vertexEnum;\n")
+ file.write(" if (vertexEnum.empty())\n")
file.write(" {\n")
- for program in programsDef.keys():
- vertexShader = programsDef[program][0]
- fragmentShader = programsDef[program][1]
- file.write(" textureSlots[%s] = %d;\n" % (programsDef[program][2], calcTextureSlots(vertexShader, fragmentShader, shaderDir)))
+ for s in vertex_shaders:
+ source_name = format_shader_source_name(s)
+ file.write(" vertexEnum.push_back(std::make_pair(\"%s\", std::string(%s)));\n" % (
+ source_name, format_shader_source_name(s)))
file.write(" }\n")
- file.write(" return textureSlots[gpuIndex];\n")
- file.write("}\n\n")
+ file.write(" return vertexEnum;\n")
+ file.write("}\n")
- file.write("#if defined(COMPILER_TESTS)\n")
- file.write("void InitEnumeration()\n")
+ file.write("std::vector<std::pair<std::string, std::string>> const & GetFragmentEnum()\n")
file.write("{\n")
-
- for s in vertexShaders:
- file.write(" VertexEnum.push_back(string(%s));\n" % formatShaderSourceName(s))
-
- for s in fragmentShaders:
- file.write(" FragmentEnum.push_back(string(%s));\n" % formatShaderSourceName(s))
-
- file.write("}\n\n")
+ file.write(" static std::vector<std::pair<std::string, std::string>> fragmentEnum;\n")
+ file.write(" if (fragmentEnum.empty())\n")
+ file.write(" {\n")
+ for s in fragment_shaders:
+ source_name = format_shader_source_name(s)
+ file.write(" fragmentEnum.push_back(std::make_pair(\"%s\", std::string(%s)));\n" % (
+ source_name, format_shader_source_name(s)))
+ file.write(" }\n")
+ file.write(" return fragmentEnum;\n")
+ file.write("}\n")
file.write("#endif\n")
- file.write("} // namespace gpu\n")
+
+ file.write("} // namespace gpu\n")
file.close()
-###############################
+if __name__ == '__main__':
+ if len(sys.argv) < 6:
+ print("Usage : " + sys.argv[0] + " <shader_dir> <index_file> <shaders_lib> <generation_dir> <generated_file>")
+ exit(1)
-if len(sys.argv) < 4:
- print("Usage : " + sys.argv[0] + " <shader_dir> <index_file_name> <generate_file_name>")
- exit(1)
+ shader_dir = sys.argv[1]
+ index_file_name = sys.argv[2]
+ shaders_lib_file = sys.argv[3]
+ generation_dir = sys.argv[4]
+ defines_file = sys.argv[5] + ".hpp"
+ impl_file = sys.argv[5] + ".cpp"
-shaderDir = sys.argv[1]
-indexFileName = sys.argv[2]
-definesFile = sys.argv[3] + ".hpp"
-implFile = sys.argv[3] + ".cpp"
+ shaders = [file for file in os.listdir(shader_dir) if
+ os.path.isfile(os.path.join(shader_dir, file)) and (
+ file.endswith(VERTEX_SHADER_EXT) or file.endswith(FRAG_SHADER_EXT))]
+ shaderIndex = generate_shader_indexes(shaders)
-shaders = [file for file in os.listdir(shaderDir) if os.path.isfile(os.path.join(shaderDir, file)) and (file.endswith(".vsh") or file.endswith(".fsh"))]
-shaderIndex = generateShaderIndexes(shaders)
+ programDefinition = read_index_file(os.path.join(shader_dir, index_file_name))
-programDefinition = readIndexFile(os.path.join(shaderDir, indexFileName))
+ shaders_library = read_shaders_lib_file(os.path.join(shader_dir, shaders_lib_file))
-headerFile = writeDefinitionFile(programDefinition)
-if definitionChanged(headerFile, formatOutFilePath(shaderDir, definesFile)):
- f = open(formatOutFilePath(shaderDir, definesFile), 'w')
- f.write(headerFile)
- f.close()
-writeImplementationFile(programDefinition, shaderIndex, shaderDir, implFile, definesFile, shaders)
+ headerFile = write_definition_file(programDefinition)
+ if definition_changed(headerFile, os.path.join(generation_dir, defines_file)):
+ f = open(os.path.join(generation_dir, defines_file), 'w')
+ f.write(headerFile)
+ f.close()
+ write_implementation_file(programDefinition, shaderIndex, shader_dir, impl_file, defines_file, generation_dir,
+ shaders, shaders_library)
diff --git a/xcode/drape/drape.xcodeproj/project.pbxproj b/xcode/drape/drape.xcodeproj/project.pbxproj
index 17708e575b..c845bcd9f5 100644
--- a/xcode/drape/drape.xcodeproj/project.pbxproj
+++ b/xcode/drape/drape.xcodeproj/project.pbxproj
@@ -13,6 +13,7 @@
34C624C91DABDB2000510300 /* static_texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34C624C71DABDB2000510300 /* static_texture.cpp */; };
34C624CA1DABDB2000510300 /* static_texture.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 34C624C81DABDB2000510300 /* static_texture.hpp */; };
45201E951CE605B1008A4842 /* constants.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45201E941CE605B1008A4842 /* constants.hpp */; };
+ 45FA6D141EB3690B00AE67BD /* gpu_program_info.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45FA6D131EB3690B00AE67BD /* gpu_program_info.hpp */; };
670947231BDF9A4F005014C0 /* data_buffer_impl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947151BDF9A4F005014C0 /* data_buffer_impl.hpp */; };
670947251BDF9A4F005014C0 /* bidi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947171BDF9A4F005014C0 /* bidi.cpp */; };
670947261BDF9A4F005014C0 /* bidi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947181BDF9A4F005014C0 /* bidi.hpp */; };
@@ -24,8 +25,6 @@
6709472C1BDF9A4F005014C0 /* hw_texture.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6709471E1BDF9A4F005014C0 /* hw_texture.hpp */; };
6709472D1BDF9A4F005014C0 /* index_storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6709471F1BDF9A4F005014C0 /* index_storage.cpp */; };
6709472E1BDF9A4F005014C0 /* index_storage.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947201BDF9A4F005014C0 /* index_storage.hpp */; };
- 6709472F1BDF9A4F005014C0 /* shader_def.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947211BDF9A4F005014C0 /* shader_def.cpp */; };
- 670947301BDF9A4F005014C0 /* shader_def.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947221BDF9A4F005014C0 /* shader_def.hpp */; };
6729A5631A69213A007D5872 /* attribute_buffer_mutator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6729A4FF1A69213A007D5872 /* attribute_buffer_mutator.cpp */; };
6729A5641A69213A007D5872 /* attribute_buffer_mutator.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6729A5001A69213A007D5872 /* attribute_buffer_mutator.hpp */; };
6729A5651A69213A007D5872 /* attribute_provider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5011A69213A007D5872 /* attribute_provider.cpp */; };
@@ -106,70 +105,8 @@
675D21991BFB876E00717E4F /* projection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675D21971BFB876E00717E4F /* projection.cpp */; };
675D219A1BFB876E00717E4F /* projection.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675D21981BFB876E00717E4F /* projection.hpp */; };
BB035F6C1E3A2A5C00519962 /* drape_diagnostics.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BB035F6B1E3A2A5C00519962 /* drape_diagnostics.hpp */; };
- BB06FBE91DDDFFBE00B41AF0 /* area_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC01DDDFDC300B41AF0 /* area_vertex_shader.vsh */; };
- BB06FBEA1DDDFFBE00B41AF0 /* area3d_outline_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC11DDDFDC300B41AF0 /* area3d_outline_vertex_shader.vsh */; };
- BB06FBEB1DDDFFBE00B41AF0 /* area3d_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC21DDDFDC300B41AF0 /* area3d_vertex_shader.vsh */; };
- BB06FBEC1DDDFFBE00B41AF0 /* arrow3d_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC31DDDFDC300B41AF0 /* arrow3d_fragment_shader.fsh */; };
- BB06FBED1DDDFFBE00B41AF0 /* arrow3d_shadow_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC41DDDFDC300B41AF0 /* arrow3d_shadow_fragment_shader.fsh */; };
- BB06FBEE1DDDFFBE00B41AF0 /* arrow3d_shadow_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC51DDDFDC300B41AF0 /* arrow3d_shadow_vertex_shader.vsh */; };
- BB06FBEF1DDDFFBE00B41AF0 /* arrow3d_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC61DDDFDC300B41AF0 /* arrow3d_vertex_shader.vsh */; };
- BB06FBF01DDDFFBE00B41AF0 /* circle_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC71DDDFDC300B41AF0 /* circle_shader.fsh */; };
- BB06FBF11DDDFFBE00B41AF0 /* circle_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC81DDDFDC300B41AF0 /* circle_shader.vsh */; };
- BB06FBF21DDDFFBE00B41AF0 /* dashed_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC91DDDFDC300B41AF0 /* dashed_fragment_shader.fsh */; };
- BB06FBF31DDDFFBE00B41AF0 /* dashed_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCA1DDDFDC300B41AF0 /* dashed_vertex_shader.vsh */; };
- BB06FBF41DDDFFBE00B41AF0 /* debug_rect_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCB1DDDFDC300B41AF0 /* debug_rect_fragment_shader.fsh */; };
- BB06FBF51DDDFFBE00B41AF0 /* debug_rect_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCC1DDDFDC300B41AF0 /* debug_rect_vertex_shader.vsh */; };
- BB06FBF61DDDFFBE00B41AF0 /* masked_texturing_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCD1DDDFDC300B41AF0 /* masked_texturing_billboard_vertex_shader.vsh */; };
- BB06FBF71DDDFFBE00B41AF0 /* masked_texturing_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCE1DDDFDC300B41AF0 /* masked_texturing_fragment_shader.fsh */; };
- BB06FBF81DDDFFBE00B41AF0 /* masked_texturing_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCF1DDDFDC300B41AF0 /* masked_texturing_vertex_shader.vsh */; };
- BB06FBF91DDDFFBE00B41AF0 /* my_position_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD01DDDFDC300B41AF0 /* my_position_shader.vsh */; };
- BB06FBFA1DDDFFBE00B41AF0 /* path_symbol_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD11DDDFDC300B41AF0 /* path_symbol_vertex_shader.vsh */; };
- BB06FBFB1DDDFFBE00B41AF0 /* position_accuracy3d_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD21DDDFDC300B41AF0 /* position_accuracy3d_shader.vsh */; };
- BB06FBFC1DDDFFBE00B41AF0 /* route_arrow_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD31DDDFDC300B41AF0 /* route_arrow_vertex_shader.vsh */; };
- BB06FBFD1DDDFFBE00B41AF0 /* route_dash_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD41DDDFDC300B41AF0 /* route_dash_fragment_shader.fsh */; };
- BB06FBFE1DDDFFBE00B41AF0 /* route_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD51DDDFDC300B41AF0 /* route_fragment_shader.fsh */; };
- BB06FBFF1DDDFFBE00B41AF0 /* route_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD61DDDFDC300B41AF0 /* route_vertex_shader.vsh */; };
- BB06FC001DDDFFBE00B41AF0 /* ruler_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD71DDDFDC300B41AF0 /* ruler_vertex_shader.vsh */; };
- BB06FC011DDDFFBE00B41AF0 /* solid_color_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD81DDDFDC300B41AF0 /* solid_color_fragment_shader.fsh */; };
- BB06FC021DDDFFBE00B41AF0 /* text_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD91DDDFDC300B41AF0 /* text_billboard_vertex_shader.vsh */; };
- BB06FC031DDDFFBE00B41AF0 /* text_outlined_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDA1DDDFDC300B41AF0 /* text_outlined_billboard_vertex_shader.vsh */; };
- BB06FC041DDDFFBE00B41AF0 /* text_outlined_gui_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDB1DDDFDC300B41AF0 /* text_outlined_gui_vertex_shader.vsh */; };
- BB06FC051DDDFFBE00B41AF0 /* text_outlined_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDC1DDDFDC300B41AF0 /* text_outlined_vertex_shader.vsh */; };
- BB06FC061DDDFFBE00B41AF0 /* texturing_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDD1DDDFDC300B41AF0 /* texturing_billboard_vertex_shader.vsh */; };
- BB06FC071DDDFFBE00B41AF0 /* texturing_gui_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDE1DDDFDC300B41AF0 /* texturing_gui_vertex_shader.vsh */; };
- BB06FC081DDDFFBE00B41AF0 /* texturing3d_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDF1DDDFDC300B41AF0 /* texturing3d_fragment_shader.fsh */; };
- BB06FC091DDDFFBE00B41AF0 /* trackpoint_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE01DDDFDC300B41AF0 /* trackpoint_fragment_shader.fsh */; };
- BB06FC0A1DDDFFBE00B41AF0 /* trackpoint_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE11DDDFDC300B41AF0 /* trackpoint_vertex_shader.vsh */; };
- BB06FC0B1DDDFFBE00B41AF0 /* traffic_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE21DDDFDC300B41AF0 /* traffic_fragment_shader.fsh */; };
- BB06FC0C1DDDFFBE00B41AF0 /* traffic_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE31DDDFDC300B41AF0 /* traffic_vertex_shader.vsh */; };
- BB06FC0D1DDDFFBE00B41AF0 /* transparent_layer_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE41DDDFDC300B41AF0 /* transparent_layer_fragment_shader.fsh */; };
- BB06FC0E1DDDFFBE00B41AF0 /* transparent_layer_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE51DDDFDC300B41AF0 /* transparent_layer_vertex_shader.vsh */; };
- BB06FC0F1DDDFFBE00B41AF0 /* user_mark_billboard.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE61DDDFDC300B41AF0 /* user_mark_billboard.vsh */; };
- BB06FC101DDDFFBE00B41AF0 /* user_mark.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE71DDDFDC300B41AF0 /* user_mark.vsh */; };
- BB06FC111DDDFFBE00B41AF0 /* line_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5471A69213A007D5872 /* line_fragment_shader.fsh */; };
- BB06FC121DDDFFBE00B41AF0 /* line_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5481A69213A007D5872 /* line_vertex_shader.vsh */; };
- BB06FC131DDDFFBE00B41AF0 /* shader_index.txt in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5491A69213A007D5872 /* shader_index.txt */; };
- BB06FC141DDDFFBE00B41AF0 /* text_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54A1A69213A007D5872 /* text_fragment_shader.fsh */; };
- BB06FC151DDDFFBE00B41AF0 /* text_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54B1A69213A007D5872 /* text_vertex_shader.vsh */; };
- BB06FC161DDDFFBE00B41AF0 /* texturing_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54C1A69213A007D5872 /* texturing_fragment_shader.fsh */; };
- BB06FC171DDDFFBE00B41AF0 /* texturing_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54D1A69213A007D5872 /* texturing_vertex_shader.vsh */; };
/* End PBXBuildFile section */
-/* Begin PBXBuildRule section */
- 670D055F1B0C9E4D0013A7AC /* PBXBuildRule */ = {
- isa = PBXBuildRule;
- compilerSpec = com.apple.compilers.proxy.script;
- filePatterns = "*.vsh *.fsh */shader_index.txt";
- fileType = pattern.proxy;
- isEditable = 1;
- name = "Shader compiler";
- outputFiles = (
- "$(INPUT_FILE_DIR)/../shader_def.cpp",
- );
- script = "python ${SRCROOT}/../../tools/autobuild/shader_preprocessor.py ${INPUT_FILE_DIR} shader_index.txt ${INPUT_FILE_DIR}/../shader_def";
- };
-/* End PBXBuildRule section */
-
/* Begin PBXFileReference section */
347F32F71C45383E009758CC /* debug_rect_renderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = debug_rect_renderer.cpp; sourceTree = "<group>"; };
347F32F81C45383E009758CC /* debug_rect_renderer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = debug_rect_renderer.hpp; sourceTree = "<group>"; };
@@ -179,6 +116,7 @@
34C624C71DABDB2000510300 /* static_texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = static_texture.cpp; sourceTree = "<group>"; };
34C624C81DABDB2000510300 /* static_texture.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = static_texture.hpp; sourceTree = "<group>"; };
45201E941CE605B1008A4842 /* constants.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = constants.hpp; sourceTree = "<group>"; };
+ 45FA6D131EB3690B00AE67BD /* gpu_program_info.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = gpu_program_info.hpp; sourceTree = "<group>"; };
670947151BDF9A4F005014C0 /* data_buffer_impl.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = data_buffer_impl.hpp; sourceTree = "<group>"; };
670947171BDF9A4F005014C0 /* bidi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bidi.cpp; sourceTree = "<group>"; };
670947181BDF9A4F005014C0 /* bidi.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = bidi.hpp; sourceTree = "<group>"; };
@@ -190,8 +128,6 @@
6709471E1BDF9A4F005014C0 /* hw_texture.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = hw_texture.hpp; sourceTree = "<group>"; };
6709471F1BDF9A4F005014C0 /* index_storage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = index_storage.cpp; sourceTree = "<group>"; };
670947201BDF9A4F005014C0 /* index_storage.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = index_storage.hpp; sourceTree = "<group>"; };
- 670947211BDF9A4F005014C0 /* shader_def.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader_def.cpp; sourceTree = "<group>"; };
- 670947221BDF9A4F005014C0 /* shader_def.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shader_def.hpp; sourceTree = "<group>"; };
6729A4F11A691F6A007D5872 /* libdrape.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libdrape.a; sourceTree = BUILT_PRODUCTS_DIR; };
6729A4FF1A69213A007D5872 /* attribute_buffer_mutator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attribute_buffer_mutator.cpp; sourceTree = "<group>"; };
6729A5001A69213A007D5872 /* attribute_buffer_mutator.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = attribute_buffer_mutator.hpp; sourceTree = "<group>"; };
@@ -250,13 +186,6 @@
6729A5371A69213A007D5872 /* render_bucket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = render_bucket.hpp; sourceTree = "<group>"; };
6729A53C1A69213A007D5872 /* shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = "<group>"; };
6729A53D1A69213A007D5872 /* shader.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shader.hpp; sourceTree = "<group>"; };
- 6729A5471A69213A007D5872 /* line_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = line_fragment_shader.fsh; sourceTree = "<group>"; };
- 6729A5481A69213A007D5872 /* line_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = line_vertex_shader.vsh; sourceTree = "<group>"; };
- 6729A5491A69213A007D5872 /* shader_index.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shader_index.txt; sourceTree = "<group>"; };
- 6729A54A1A69213A007D5872 /* text_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_fragment_shader.fsh; sourceTree = "<group>"; };
- 6729A54B1A69213A007D5872 /* text_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_vertex_shader.vsh; sourceTree = "<group>"; };
- 6729A54C1A69213A007D5872 /* texturing_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing_fragment_shader.fsh; sourceTree = "<group>"; };
- 6729A54D1A69213A007D5872 /* texturing_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing_vertex_shader.vsh; sourceTree = "<group>"; };
6729A54E1A69213A007D5872 /* stipple_pen_resource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stipple_pen_resource.cpp; sourceTree = "<group>"; };
6729A54F1A69213A007D5872 /* stipple_pen_resource.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = stipple_pen_resource.hpp; sourceTree = "<group>"; };
6729A5501A69213A007D5872 /* symbols_texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = symbols_texture.cpp; sourceTree = "<group>"; };
@@ -280,46 +209,6 @@
675D21971BFB876E00717E4F /* projection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = projection.cpp; sourceTree = "<group>"; };
675D21981BFB876E00717E4F /* projection.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = projection.hpp; sourceTree = "<group>"; };
BB035F6B1E3A2A5C00519962 /* drape_diagnostics.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = drape_diagnostics.hpp; sourceTree = "<group>"; };
- BB06FBC01DDDFDC300B41AF0 /* area_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = area_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBC11DDDFDC300B41AF0 /* area3d_outline_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = area3d_outline_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBC21DDDFDC300B41AF0 /* area3d_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = area3d_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBC31DDDFDC300B41AF0 /* arrow3d_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBC41DDDFDC300B41AF0 /* arrow3d_shadow_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_shadow_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBC51DDDFDC300B41AF0 /* arrow3d_shadow_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_shadow_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBC61DDDFDC300B41AF0 /* arrow3d_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBC71DDDFDC300B41AF0 /* circle_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = circle_shader.fsh; sourceTree = "<group>"; };
- BB06FBC81DDDFDC300B41AF0 /* circle_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = circle_shader.vsh; sourceTree = "<group>"; };
- BB06FBC91DDDFDC300B41AF0 /* dashed_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = dashed_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBCA1DDDFDC300B41AF0 /* dashed_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = dashed_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBCB1DDDFDC300B41AF0 /* debug_rect_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = debug_rect_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBCC1DDDFDC300B41AF0 /* debug_rect_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = debug_rect_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBCD1DDDFDC300B41AF0 /* masked_texturing_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = masked_texturing_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBCE1DDDFDC300B41AF0 /* masked_texturing_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = masked_texturing_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBCF1DDDFDC300B41AF0 /* masked_texturing_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = masked_texturing_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBD01DDDFDC300B41AF0 /* my_position_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = my_position_shader.vsh; sourceTree = "<group>"; };
- BB06FBD11DDDFDC300B41AF0 /* path_symbol_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = path_symbol_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBD21DDDFDC300B41AF0 /* position_accuracy3d_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = position_accuracy3d_shader.vsh; sourceTree = "<group>"; };
- BB06FBD31DDDFDC300B41AF0 /* route_arrow_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_arrow_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBD41DDDFDC300B41AF0 /* route_dash_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_dash_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBD51DDDFDC300B41AF0 /* route_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBD61DDDFDC300B41AF0 /* route_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBD71DDDFDC300B41AF0 /* ruler_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ruler_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBD81DDDFDC300B41AF0 /* solid_color_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = solid_color_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBD91DDDFDC300B41AF0 /* text_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBDA1DDDFDC300B41AF0 /* text_outlined_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_outlined_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBDB1DDDFDC300B41AF0 /* text_outlined_gui_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_outlined_gui_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBDC1DDDFDC300B41AF0 /* text_outlined_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_outlined_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBDD1DDDFDC300B41AF0 /* texturing_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBDE1DDDFDC300B41AF0 /* texturing_gui_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing_gui_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBDF1DDDFDC300B41AF0 /* texturing3d_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing3d_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBE01DDDFDC300B41AF0 /* trackpoint_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = trackpoint_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBE11DDDFDC300B41AF0 /* trackpoint_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = trackpoint_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBE21DDDFDC300B41AF0 /* traffic_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = traffic_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBE31DDDFDC300B41AF0 /* traffic_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = traffic_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBE41DDDFDC300B41AF0 /* transparent_layer_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = transparent_layer_fragment_shader.fsh; sourceTree = "<group>"; };
- BB06FBE51DDDFDC300B41AF0 /* transparent_layer_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = transparent_layer_vertex_shader.vsh; sourceTree = "<group>"; };
- BB06FBE61DDDFDC300B41AF0 /* user_mark_billboard.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = user_mark_billboard.vsh; sourceTree = "<group>"; };
- BB06FBE71DDDFDC300B41AF0 /* user_mark.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = user_mark.vsh; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -354,12 +243,12 @@
6729A4F31A691F6A007D5872 /* drape */ = {
isa = PBXGroup;
children = (
+ 45FA6D131EB3690B00AE67BD /* gpu_program_info.hpp */,
34C624C71DABDB2000510300 /* static_texture.cpp */,
34C624C81DABDB2000510300 /* static_texture.hpp */,
3492DA0A1CA2D91C00C1F3B3 /* visual_scale.hpp */,
6743D3421C3533AE0095054B /* support_manager.cpp */,
6743D3431C3533AE0095054B /* support_manager.hpp */,
- 6729A53E1A69213A007D5872 /* shaders */,
6729A55C1A69213A007D5872 /* utils */,
45201E941CE605B1008A4842 /* constants.hpp */,
670947151BDF9A4F005014C0 /* data_buffer_impl.hpp */,
@@ -373,8 +262,6 @@
6709471E1BDF9A4F005014C0 /* hw_texture.hpp */,
6709471F1BDF9A4F005014C0 /* index_storage.cpp */,
670947201BDF9A4F005014C0 /* index_storage.hpp */,
- 670947211BDF9A4F005014C0 /* shader_def.cpp */,
- 670947221BDF9A4F005014C0 /* shader_def.hpp */,
6729A4FF1A69213A007D5872 /* attribute_buffer_mutator.cpp */,
6729A5001A69213A007D5872 /* attribute_buffer_mutator.hpp */,
6729A5011A69213A007D5872 /* attribute_provider.cpp */,
@@ -456,60 +343,6 @@
path = ../../drape;
sourceTree = SOURCE_ROOT;
};
- 6729A53E1A69213A007D5872 /* shaders */ = {
- isa = PBXGroup;
- children = (
- BB06FBC01DDDFDC300B41AF0 /* area_vertex_shader.vsh */,
- BB06FBC11DDDFDC300B41AF0 /* area3d_outline_vertex_shader.vsh */,
- BB06FBC21DDDFDC300B41AF0 /* area3d_vertex_shader.vsh */,
- BB06FBC31DDDFDC300B41AF0 /* arrow3d_fragment_shader.fsh */,
- BB06FBC41DDDFDC300B41AF0 /* arrow3d_shadow_fragment_shader.fsh */,
- BB06FBC51DDDFDC300B41AF0 /* arrow3d_shadow_vertex_shader.vsh */,
- BB06FBC61DDDFDC300B41AF0 /* arrow3d_vertex_shader.vsh */,
- BB06FBC71DDDFDC300B41AF0 /* circle_shader.fsh */,
- BB06FBC81DDDFDC300B41AF0 /* circle_shader.vsh */,
- BB06FBC91DDDFDC300B41AF0 /* dashed_fragment_shader.fsh */,
- BB06FBCA1DDDFDC300B41AF0 /* dashed_vertex_shader.vsh */,
- BB06FBCB1DDDFDC300B41AF0 /* debug_rect_fragment_shader.fsh */,
- BB06FBCC1DDDFDC300B41AF0 /* debug_rect_vertex_shader.vsh */,
- BB06FBCD1DDDFDC300B41AF0 /* masked_texturing_billboard_vertex_shader.vsh */,
- BB06FBCE1DDDFDC300B41AF0 /* masked_texturing_fragment_shader.fsh */,
- BB06FBCF1DDDFDC300B41AF0 /* masked_texturing_vertex_shader.vsh */,
- BB06FBD01DDDFDC300B41AF0 /* my_position_shader.vsh */,
- BB06FBD11DDDFDC300B41AF0 /* path_symbol_vertex_shader.vsh */,
- BB06FBD21DDDFDC300B41AF0 /* position_accuracy3d_shader.vsh */,
- BB06FBD31DDDFDC300B41AF0 /* route_arrow_vertex_shader.vsh */,
- BB06FBD41DDDFDC300B41AF0 /* route_dash_fragment_shader.fsh */,
- BB06FBD51DDDFDC300B41AF0 /* route_fragment_shader.fsh */,
- BB06FBD61DDDFDC300B41AF0 /* route_vertex_shader.vsh */,
- BB06FBD71DDDFDC300B41AF0 /* ruler_vertex_shader.vsh */,
- BB06FBD81DDDFDC300B41AF0 /* solid_color_fragment_shader.fsh */,
- BB06FBD91DDDFDC300B41AF0 /* text_billboard_vertex_shader.vsh */,
- BB06FBDA1DDDFDC300B41AF0 /* text_outlined_billboard_vertex_shader.vsh */,
- BB06FBDB1DDDFDC300B41AF0 /* text_outlined_gui_vertex_shader.vsh */,
- BB06FBDC1DDDFDC300B41AF0 /* text_outlined_vertex_shader.vsh */,
- BB06FBDD1DDDFDC300B41AF0 /* texturing_billboard_vertex_shader.vsh */,
- BB06FBDE1DDDFDC300B41AF0 /* texturing_gui_vertex_shader.vsh */,
- BB06FBDF1DDDFDC300B41AF0 /* texturing3d_fragment_shader.fsh */,
- BB06FBE01DDDFDC300B41AF0 /* trackpoint_fragment_shader.fsh */,
- BB06FBE11DDDFDC300B41AF0 /* trackpoint_vertex_shader.vsh */,
- BB06FBE21DDDFDC300B41AF0 /* traffic_fragment_shader.fsh */,
- BB06FBE31DDDFDC300B41AF0 /* traffic_vertex_shader.vsh */,
- BB06FBE41DDDFDC300B41AF0 /* transparent_layer_fragment_shader.fsh */,
- BB06FBE51DDDFDC300B41AF0 /* transparent_layer_vertex_shader.vsh */,
- BB06FBE61DDDFDC300B41AF0 /* user_mark_billboard.vsh */,
- BB06FBE71DDDFDC300B41AF0 /* user_mark.vsh */,
- 6729A5471A69213A007D5872 /* line_fragment_shader.fsh */,
- 6729A5481A69213A007D5872 /* line_vertex_shader.vsh */,
- 6729A5491A69213A007D5872 /* shader_index.txt */,
- 6729A54A1A69213A007D5872 /* text_fragment_shader.fsh */,
- 6729A54B1A69213A007D5872 /* text_vertex_shader.vsh */,
- 6729A54C1A69213A007D5872 /* texturing_fragment_shader.fsh */,
- 6729A54D1A69213A007D5872 /* texturing_vertex_shader.vsh */,
- );
- path = shaders;
- sourceTree = "<group>";
- };
6729A55C1A69213A007D5872 /* utils */ = {
isa = PBXGroup;
children = (
@@ -530,7 +363,6 @@
files = (
6729A5A31A69213A007D5872 /* stipple_pen_resource.hpp in Headers */,
6729A5661A69213A007D5872 /* attribute_provider.hpp in Headers */,
- 670947301BDF9A4F005014C0 /* shader_def.hpp in Headers */,
6729A57C1A69213A007D5872 /* glextensions_list.hpp in Headers */,
6729A58D1A69213A007D5872 /* index_buffer_mutator.hpp in Headers */,
6729A5781A69213A007D5872 /* font_texture.hpp in Headers */,
@@ -544,6 +376,7 @@
6729A5701A69213A007D5872 /* color.hpp in Headers */,
6729A5801A69213A007D5872 /* glsl_func.hpp in Headers */,
6729A5761A69213A007D5872 /* dynamic_texture.hpp in Headers */,
+ 45FA6D141EB3690B00AE67BD /* gpu_program_info.hpp in Headers */,
6729A5681A69213A007D5872 /* batcher_helpers.hpp in Headers */,
6729A5931A69213A007D5872 /* oglcontextfactory.hpp in Headers */,
6729A56A1A69213A007D5872 /* batcher.hpp in Headers */,
@@ -598,7 +431,6 @@
6729A4EF1A691F6A007D5872 /* Headers */,
);
buildRules = (
- 670D055F1B0C9E4D0013A7AC /* PBXBuildRule */,
);
dependencies = (
);
@@ -643,53 +475,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- BB06FBE91DDDFFBE00B41AF0 /* area_vertex_shader.vsh in Sources */,
- BB06FBEA1DDDFFBE00B41AF0 /* area3d_outline_vertex_shader.vsh in Sources */,
- BB06FBEB1DDDFFBE00B41AF0 /* area3d_vertex_shader.vsh in Sources */,
- BB06FBEC1DDDFFBE00B41AF0 /* arrow3d_fragment_shader.fsh in Sources */,
- BB06FBED1DDDFFBE00B41AF0 /* arrow3d_shadow_fragment_shader.fsh in Sources */,
- BB06FBEE1DDDFFBE00B41AF0 /* arrow3d_shadow_vertex_shader.vsh in Sources */,
- BB06FBEF1DDDFFBE00B41AF0 /* arrow3d_vertex_shader.vsh in Sources */,
- BB06FBF01DDDFFBE00B41AF0 /* circle_shader.fsh in Sources */,
- BB06FBF11DDDFFBE00B41AF0 /* circle_shader.vsh in Sources */,
- BB06FBF21DDDFFBE00B41AF0 /* dashed_fragment_shader.fsh in Sources */,
- BB06FBF31DDDFFBE00B41AF0 /* dashed_vertex_shader.vsh in Sources */,
- BB06FBF41DDDFFBE00B41AF0 /* debug_rect_fragment_shader.fsh in Sources */,
- BB06FBF51DDDFFBE00B41AF0 /* debug_rect_vertex_shader.vsh in Sources */,
- BB06FBF61DDDFFBE00B41AF0 /* masked_texturing_billboard_vertex_shader.vsh in Sources */,
- BB06FBF71DDDFFBE00B41AF0 /* masked_texturing_fragment_shader.fsh in Sources */,
- BB06FBF81DDDFFBE00B41AF0 /* masked_texturing_vertex_shader.vsh in Sources */,
- BB06FBF91DDDFFBE00B41AF0 /* my_position_shader.vsh in Sources */,
- BB06FBFA1DDDFFBE00B41AF0 /* path_symbol_vertex_shader.vsh in Sources */,
- BB06FBFB1DDDFFBE00B41AF0 /* position_accuracy3d_shader.vsh in Sources */,
- BB06FBFC1DDDFFBE00B41AF0 /* route_arrow_vertex_shader.vsh in Sources */,
- BB06FBFD1DDDFFBE00B41AF0 /* route_dash_fragment_shader.fsh in Sources */,
- BB06FBFE1DDDFFBE00B41AF0 /* route_fragment_shader.fsh in Sources */,
- BB06FBFF1DDDFFBE00B41AF0 /* route_vertex_shader.vsh in Sources */,
- BB06FC001DDDFFBE00B41AF0 /* ruler_vertex_shader.vsh in Sources */,
- BB06FC011DDDFFBE00B41AF0 /* solid_color_fragment_shader.fsh in Sources */,
- BB06FC021DDDFFBE00B41AF0 /* text_billboard_vertex_shader.vsh in Sources */,
- BB06FC031DDDFFBE00B41AF0 /* text_outlined_billboard_vertex_shader.vsh in Sources */,
- BB06FC041DDDFFBE00B41AF0 /* text_outlined_gui_vertex_shader.vsh in Sources */,
- BB06FC051DDDFFBE00B41AF0 /* text_outlined_vertex_shader.vsh in Sources */,
- BB06FC061DDDFFBE00B41AF0 /* texturing_billboard_vertex_shader.vsh in Sources */,
- BB06FC071DDDFFBE00B41AF0 /* texturing_gui_vertex_shader.vsh in Sources */,
- BB06FC081DDDFFBE00B41AF0 /* texturing3d_fragment_shader.fsh in Sources */,
- BB06FC091DDDFFBE00B41AF0 /* trackpoint_fragment_shader.fsh in Sources */,
- BB06FC0A1DDDFFBE00B41AF0 /* trackpoint_vertex_shader.vsh in Sources */,
- BB06FC0B1DDDFFBE00B41AF0 /* traffic_fragment_shader.fsh in Sources */,
- BB06FC0C1DDDFFBE00B41AF0 /* traffic_vertex_shader.vsh in Sources */,
- BB06FC0D1DDDFFBE00B41AF0 /* transparent_layer_fragment_shader.fsh in Sources */,
- BB06FC0E1DDDFFBE00B41AF0 /* transparent_layer_vertex_shader.vsh in Sources */,
- BB06FC0F1DDDFFBE00B41AF0 /* user_mark_billboard.vsh in Sources */,
- BB06FC101DDDFFBE00B41AF0 /* user_mark.vsh in Sources */,
- BB06FC111DDDFFBE00B41AF0 /* line_fragment_shader.fsh in Sources */,
- BB06FC121DDDFFBE00B41AF0 /* line_vertex_shader.vsh in Sources */,
- BB06FC131DDDFFBE00B41AF0 /* shader_index.txt in Sources */,
- BB06FC141DDDFFBE00B41AF0 /* text_fragment_shader.fsh in Sources */,
- BB06FC151DDDFFBE00B41AF0 /* text_vertex_shader.vsh in Sources */,
- BB06FC161DDDFFBE00B41AF0 /* texturing_fragment_shader.fsh in Sources */,
- BB06FC171DDDFFBE00B41AF0 /* texturing_vertex_shader.vsh in Sources */,
6729A5711A69213A007D5872 /* cpu_buffer.cpp in Sources */,
6729A5631A69213A007D5872 /* attribute_buffer_mutator.cpp in Sources */,
6729A56B1A69213A007D5872 /* binding_info.cpp in Sources */,
@@ -710,7 +495,6 @@
6729A56D1A69213A007D5872 /* buffer_base.cpp in Sources */,
6743D3441C3533AE0095054B /* support_manager.cpp in Sources */,
6729A5A01A69213A007D5872 /* shader.cpp in Sources */,
- 6709472F1BDF9A4F005014C0 /* shader_def.cpp in Sources */,
6729A5A21A69213A007D5872 /* stipple_pen_resource.cpp in Sources */,
6729A5691A69213A007D5872 /* batcher.cpp in Sources */,
670947251BDF9A4F005014C0 /* bidi.cpp in Sources */,
diff --git a/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj b/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj
index 17753192ff..5340b67a7b 100644
--- a/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj
+++ b/xcode/drape_frontend/drape_frontend.xcodeproj/project.pbxproj
@@ -50,6 +50,8 @@
45B4B8CC1CF5C16B00A54761 /* screen_animations.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45B4B8C81CF5C16B00A54761 /* screen_animations.hpp */; };
45B4B8CD1CF5C16B00A54761 /* screen_operations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45B4B8C91CF5C16B00A54761 /* screen_operations.cpp */; };
45B4B8CE1CF5C16B00A54761 /* screen_operations.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45B4B8CA1CF5C16B00A54761 /* screen_operations.hpp */; };
+ 45BB025D1EB8BE5200FE5C0C /* shader_def.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45BB025B1EB8BE5200FE5C0C /* shader_def.cpp */; };
+ 45BB025E1EB8BE5200FE5C0C /* shader_def.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45BB025C1EB8BE5200FE5C0C /* shader_def.hpp */; };
56BF56DA1C7608C0006DD7CB /* choose_position_mark.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56BF56D81C7608C0006DD7CB /* choose_position_mark.cpp */; };
56BF56DB1C7608C0006DD7CB /* choose_position_mark.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 56BF56D91C7608C0006DD7CB /* choose_position_mark.hpp */; };
56D545661C74A44900E3719C /* overlay_batcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56D545641C74A44900E3719C /* overlay_batcher.cpp */; };
@@ -221,6 +223,20 @@
F6B283141C1B04680081957A /* gps_track_shape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F6B2830F1C1B04680081957A /* gps_track_shape.hpp */; };
/* End PBXBuildFile section */
+/* Begin PBXBuildRule section */
+ 45BB025F1EB8BE9400FE5C0C /* PBXBuildRule */ = {
+ isa = PBXBuildRule;
+ compilerSpec = com.apple.compilers.proxy.script;
+ filePatterns = "*.glsl */shader_index.txt";
+ fileType = pattern.proxy;
+ isEditable = 1;
+ name = "Shader Generator";
+ outputFiles = (
+ );
+ script = "python ${SRCROOT}/../../tools/autobuild/shader_preprocessor.py ${INPUT_FILE_DIR} shader_index.txt shaders_lib.glsl ${INPUT_FILE_DIR}/.. shader_def";
+ };
+/* End PBXBuildRule section */
+
/* Begin PBXFileReference section */
347F52071DC2334A0064B273 /* drape_api_builder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = drape_api_builder.cpp; sourceTree = "<group>"; };
347F52081DC2334A0064B273 /* drape_api_builder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = drape_api_builder.hpp; sourceTree = "<group>"; };
@@ -262,11 +278,70 @@
454C19BA1CCE3EC0002A2C86 /* animation_system.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = animation_system.hpp; sourceTree = "<group>"; };
45580AB81E28DB2600CD535D /* scenario_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scenario_manager.cpp; sourceTree = "<group>"; };
45580AB91E28DB2600CD535D /* scenario_manager.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = scenario_manager.hpp; sourceTree = "<group>"; };
+ 4560692B1EB9F9D2009AB7B7 /* shaders_lib.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = shaders_lib.glsl; path = shaders/shaders_lib.glsl; sourceTree = "<group>"; };
457D89241E7AE89500049500 /* custom_symbol.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = custom_symbol.hpp; sourceTree = "<group>"; };
45B4B8C71CF5C16B00A54761 /* screen_animations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = screen_animations.cpp; sourceTree = "<group>"; };
45B4B8C81CF5C16B00A54761 /* screen_animations.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = screen_animations.hpp; sourceTree = "<group>"; };
45B4B8C91CF5C16B00A54761 /* screen_operations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = screen_operations.cpp; sourceTree = "<group>"; };
45B4B8CA1CF5C16B00A54761 /* screen_operations.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = screen_operations.hpp; sourceTree = "<group>"; };
+ 45BB02231EB8BE2B00FE5C0C /* area.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = area.vsh.glsl; path = shaders/area.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02241EB8BE2B00FE5C0C /* area3d_outline.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = area3d_outline.vsh.glsl; path = shaders/area3d_outline.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02251EB8BE2B00FE5C0C /* area3d.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = area3d.vsh.glsl; path = shaders/area3d.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02261EB8BE2B00FE5C0C /* arrow3d_outline.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = arrow3d_outline.fsh.glsl; path = shaders/arrow3d_outline.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02271EB8BE2B00FE5C0C /* arrow3d_shadow.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = arrow3d_shadow.fsh.glsl; path = shaders/arrow3d_shadow.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02281EB8BE2B00FE5C0C /* arrow3d_shadow.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = arrow3d_shadow.vsh.glsl; path = shaders/arrow3d_shadow.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02291EB8BE2B00FE5C0C /* arrow3d.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = arrow3d.fsh.glsl; path = shaders/arrow3d.fsh.glsl; sourceTree = "<group>"; };
+ 45BB022A1EB8BE2B00FE5C0C /* arrow3d.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = arrow3d.vsh.glsl; path = shaders/arrow3d.vsh.glsl; sourceTree = "<group>"; };
+ 45BB022B1EB8BE2B00FE5C0C /* circle.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = circle.fsh.glsl; path = shaders/circle.fsh.glsl; sourceTree = "<group>"; };
+ 45BB022C1EB8BE2B00FE5C0C /* circle.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = circle.vsh.glsl; path = shaders/circle.vsh.glsl; sourceTree = "<group>"; };
+ 45BB022D1EB8BE2B00FE5C0C /* colored_symbol_billboard.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = colored_symbol_billboard.vsh.glsl; path = shaders/colored_symbol_billboard.vsh.glsl; sourceTree = "<group>"; };
+ 45BB022E1EB8BE2B00FE5C0C /* colored_symbol.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = colored_symbol.fsh.glsl; path = shaders/colored_symbol.fsh.glsl; sourceTree = "<group>"; };
+ 45BB022F1EB8BE2B00FE5C0C /* colored_symbol.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = colored_symbol.vsh.glsl; path = shaders/colored_symbol.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02301EB8BE2B00FE5C0C /* dashed_line.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = dashed_line.fsh.glsl; path = shaders/dashed_line.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02311EB8BE2B00FE5C0C /* dashed_line.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = dashed_line.vsh.glsl; path = shaders/dashed_line.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02321EB8BE2B00FE5C0C /* debug_rect.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = debug_rect.fsh.glsl; path = shaders/debug_rect.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02331EB8BE2B00FE5C0C /* debug_rect.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = debug_rect.vsh.glsl; path = shaders/debug_rect.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02341EB8BE2B00FE5C0C /* discarded_texturing.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = discarded_texturing.fsh.glsl; path = shaders/discarded_texturing.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02351EB8BE2B00FE5C0C /* hatching_area.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = hatching_area.fsh.glsl; path = shaders/hatching_area.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02361EB8BE2B00FE5C0C /* hatching_area.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = hatching_area.vsh.glsl; path = shaders/hatching_area.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02371EB8BE2B00FE5C0C /* line.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = line.fsh.glsl; path = shaders/line.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02381EB8BE2B00FE5C0C /* line.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = line.vsh.glsl; path = shaders/line.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02391EB8BE2B00FE5C0C /* masked_texturing_billboard.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = masked_texturing_billboard.vsh.glsl; path = shaders/masked_texturing_billboard.vsh.glsl; sourceTree = "<group>"; };
+ 45BB023A1EB8BE2B00FE5C0C /* masked_texturing.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = masked_texturing.fsh.glsl; path = shaders/masked_texturing.fsh.glsl; sourceTree = "<group>"; };
+ 45BB023B1EB8BE2B00FE5C0C /* masked_texturing.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = masked_texturing.vsh.glsl; path = shaders/masked_texturing.vsh.glsl; sourceTree = "<group>"; };
+ 45BB023C1EB8BE2B00FE5C0C /* my_position.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = my_position.vsh.glsl; path = shaders/my_position.vsh.glsl; sourceTree = "<group>"; };
+ 45BB023D1EB8BE2B00FE5C0C /* path_symbol.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = path_symbol.vsh.glsl; path = shaders/path_symbol.vsh.glsl; sourceTree = "<group>"; };
+ 45BB023E1EB8BE2B00FE5C0C /* position_accuracy3d.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = position_accuracy3d.vsh.glsl; path = shaders/position_accuracy3d.vsh.glsl; sourceTree = "<group>"; };
+ 45BB023F1EB8BE2B00FE5C0C /* route_arrow.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = route_arrow.vsh.glsl; path = shaders/route_arrow.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02401EB8BE2B00FE5C0C /* route_dash.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = route_dash.fsh.glsl; path = shaders/route_dash.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02411EB8BE2B00FE5C0C /* route.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = route.fsh.glsl; path = shaders/route.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02421EB8BE2B00FE5C0C /* route.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = route.vsh.glsl; path = shaders/route.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02431EB8BE2B00FE5C0C /* ruler.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ruler.vsh.glsl; path = shaders/ruler.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02441EB8BE2B00FE5C0C /* screen_quad.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = screen_quad.vsh.glsl; path = shaders/screen_quad.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02451EB8BE2B00FE5C0C /* shader_index.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = shader_index.txt; path = shaders/shader_index.txt; sourceTree = "<group>"; };
+ 45BB02461EB8BE2B00FE5C0C /* solid_color.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = solid_color.fsh.glsl; path = shaders/solid_color.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02471EB8BE2B00FE5C0C /* text_billboard.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text_billboard.vsh.glsl; path = shaders/text_billboard.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02481EB8BE2B00FE5C0C /* text_fixed.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text_fixed.fsh.glsl; path = shaders/text_fixed.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02491EB8BE2B00FE5C0C /* text_outlined_billboard.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text_outlined_billboard.vsh.glsl; path = shaders/text_outlined_billboard.vsh.glsl; sourceTree = "<group>"; };
+ 45BB024A1EB8BE2B00FE5C0C /* text_outlined_gui.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text_outlined_gui.vsh.glsl; path = shaders/text_outlined_gui.vsh.glsl; sourceTree = "<group>"; };
+ 45BB024B1EB8BE2B00FE5C0C /* text_outlined.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text_outlined.vsh.glsl; path = shaders/text_outlined.vsh.glsl; sourceTree = "<group>"; };
+ 45BB024C1EB8BE2B00FE5C0C /* text.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text.fsh.glsl; path = shaders/text.fsh.glsl; sourceTree = "<group>"; };
+ 45BB024D1EB8BE2B00FE5C0C /* text.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = text.vsh.glsl; path = shaders/text.vsh.glsl; sourceTree = "<group>"; };
+ 45BB024E1EB8BE2B00FE5C0C /* texturing_billboard.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = texturing_billboard.vsh.glsl; path = shaders/texturing_billboard.vsh.glsl; sourceTree = "<group>"; };
+ 45BB024F1EB8BE2B00FE5C0C /* texturing_gui.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = texturing_gui.vsh.glsl; path = shaders/texturing_gui.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02501EB8BE2B00FE5C0C /* texturing.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = texturing.fsh.glsl; path = shaders/texturing.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02511EB8BE2B00FE5C0C /* texturing.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = texturing.vsh.glsl; path = shaders/texturing.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02521EB8BE2B00FE5C0C /* texturing3d.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = texturing3d.fsh.glsl; path = shaders/texturing3d.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02531EB8BE2B00FE5C0C /* trackpoint.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = trackpoint.fsh.glsl; path = shaders/trackpoint.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02541EB8BE2B00FE5C0C /* trackpoint.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = trackpoint.vsh.glsl; path = shaders/trackpoint.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02551EB8BE2B00FE5C0C /* traffic_line.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = traffic_line.fsh.glsl; path = shaders/traffic_line.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02561EB8BE2B00FE5C0C /* traffic_line.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = traffic_line.vsh.glsl; path = shaders/traffic_line.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02571EB8BE2B00FE5C0C /* traffic.fsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = traffic.fsh.glsl; path = shaders/traffic.fsh.glsl; sourceTree = "<group>"; };
+ 45BB02581EB8BE2B00FE5C0C /* traffic.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = traffic.vsh.glsl; path = shaders/traffic.vsh.glsl; sourceTree = "<group>"; };
+ 45BB02591EB8BE2B00FE5C0C /* user_mark_billboard.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = user_mark_billboard.vsh.glsl; path = shaders/user_mark_billboard.vsh.glsl; sourceTree = "<group>"; };
+ 45BB025A1EB8BE2B00FE5C0C /* user_mark.vsh.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = user_mark.vsh.glsl; path = shaders/user_mark.vsh.glsl; sourceTree = "<group>"; };
+ 45BB025B1EB8BE5200FE5C0C /* shader_def.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader_def.cpp; sourceTree = "<group>"; };
+ 45BB025C1EB8BE5200FE5C0C /* shader_def.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shader_def.hpp; sourceTree = "<group>"; };
56BF56D81C7608C0006DD7CB /* choose_position_mark.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = choose_position_mark.cpp; sourceTree = "<group>"; };
56BF56D91C7608C0006DD7CB /* choose_position_mark.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = choose_position_mark.hpp; sourceTree = "<group>"; };
56D545641C74A44900E3719C /* overlay_batcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = overlay_batcher.cpp; sourceTree = "<group>"; };
@@ -452,6 +527,70 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 45BB02221EB8BE1400FE5C0C /* shaders */ = {
+ isa = PBXGroup;
+ children = (
+ 4560692B1EB9F9D2009AB7B7 /* shaders_lib.glsl */,
+ 45BB02231EB8BE2B00FE5C0C /* area.vsh.glsl */,
+ 45BB02241EB8BE2B00FE5C0C /* area3d_outline.vsh.glsl */,
+ 45BB02251EB8BE2B00FE5C0C /* area3d.vsh.glsl */,
+ 45BB02261EB8BE2B00FE5C0C /* arrow3d_outline.fsh.glsl */,
+ 45BB02271EB8BE2B00FE5C0C /* arrow3d_shadow.fsh.glsl */,
+ 45BB02281EB8BE2B00FE5C0C /* arrow3d_shadow.vsh.glsl */,
+ 45BB02291EB8BE2B00FE5C0C /* arrow3d.fsh.glsl */,
+ 45BB022A1EB8BE2B00FE5C0C /* arrow3d.vsh.glsl */,
+ 45BB022B1EB8BE2B00FE5C0C /* circle.fsh.glsl */,
+ 45BB022C1EB8BE2B00FE5C0C /* circle.vsh.glsl */,
+ 45BB022D1EB8BE2B00FE5C0C /* colored_symbol_billboard.vsh.glsl */,
+ 45BB022E1EB8BE2B00FE5C0C /* colored_symbol.fsh.glsl */,
+ 45BB022F1EB8BE2B00FE5C0C /* colored_symbol.vsh.glsl */,
+ 45BB02301EB8BE2B00FE5C0C /* dashed_line.fsh.glsl */,
+ 45BB02311EB8BE2B00FE5C0C /* dashed_line.vsh.glsl */,
+ 45BB02321EB8BE2B00FE5C0C /* debug_rect.fsh.glsl */,
+ 45BB02331EB8BE2B00FE5C0C /* debug_rect.vsh.glsl */,
+ 45BB02341EB8BE2B00FE5C0C /* discarded_texturing.fsh.glsl */,
+ 45BB02351EB8BE2B00FE5C0C /* hatching_area.fsh.glsl */,
+ 45BB02361EB8BE2B00FE5C0C /* hatching_area.vsh.glsl */,
+ 45BB02371EB8BE2B00FE5C0C /* line.fsh.glsl */,
+ 45BB02381EB8BE2B00FE5C0C /* line.vsh.glsl */,
+ 45BB02391EB8BE2B00FE5C0C /* masked_texturing_billboard.vsh.glsl */,
+ 45BB023A1EB8BE2B00FE5C0C /* masked_texturing.fsh.glsl */,
+ 45BB023B1EB8BE2B00FE5C0C /* masked_texturing.vsh.glsl */,
+ 45BB023C1EB8BE2B00FE5C0C /* my_position.vsh.glsl */,
+ 45BB023D1EB8BE2B00FE5C0C /* path_symbol.vsh.glsl */,
+ 45BB023E1EB8BE2B00FE5C0C /* position_accuracy3d.vsh.glsl */,
+ 45BB023F1EB8BE2B00FE5C0C /* route_arrow.vsh.glsl */,
+ 45BB02401EB8BE2B00FE5C0C /* route_dash.fsh.glsl */,
+ 45BB02411EB8BE2B00FE5C0C /* route.fsh.glsl */,
+ 45BB02421EB8BE2B00FE5C0C /* route.vsh.glsl */,
+ 45BB02431EB8BE2B00FE5C0C /* ruler.vsh.glsl */,
+ 45BB02441EB8BE2B00FE5C0C /* screen_quad.vsh.glsl */,
+ 45BB02451EB8BE2B00FE5C0C /* shader_index.txt */,
+ 45BB02461EB8BE2B00FE5C0C /* solid_color.fsh.glsl */,
+ 45BB02471EB8BE2B00FE5C0C /* text_billboard.vsh.glsl */,
+ 45BB02481EB8BE2B00FE5C0C /* text_fixed.fsh.glsl */,
+ 45BB02491EB8BE2B00FE5C0C /* text_outlined_billboard.vsh.glsl */,
+ 45BB024A1EB8BE2B00FE5C0C /* text_outlined_gui.vsh.glsl */,
+ 45BB024B1EB8BE2B00FE5C0C /* text_outlined.vsh.glsl */,
+ 45BB024C1EB8BE2B00FE5C0C /* text.fsh.glsl */,
+ 45BB024D1EB8BE2B00FE5C0C /* text.vsh.glsl */,
+ 45BB024E1EB8BE2B00FE5C0C /* texturing_billboard.vsh.glsl */,
+ 45BB024F1EB8BE2B00FE5C0C /* texturing_gui.vsh.glsl */,
+ 45BB02501EB8BE2B00FE5C0C /* texturing.fsh.glsl */,
+ 45BB02511EB8BE2B00FE5C0C /* texturing.vsh.glsl */,
+ 45BB02521EB8BE2B00FE5C0C /* texturing3d.fsh.glsl */,
+ 45BB02531EB8BE2B00FE5C0C /* trackpoint.fsh.glsl */,
+ 45BB02541EB8BE2B00FE5C0C /* trackpoint.vsh.glsl */,
+ 45BB02551EB8BE2B00FE5C0C /* traffic_line.fsh.glsl */,
+ 45BB02561EB8BE2B00FE5C0C /* traffic_line.vsh.glsl */,
+ 45BB02571EB8BE2B00FE5C0C /* traffic.fsh.glsl */,
+ 45BB02581EB8BE2B00FE5C0C /* traffic.vsh.glsl */,
+ 45BB02591EB8BE2B00FE5C0C /* user_mark_billboard.vsh.glsl */,
+ 45BB025A1EB8BE2B00FE5C0C /* user_mark.vsh.glsl */,
+ );
+ name = shaders;
+ sourceTree = "<group>";
+ };
670947311BDF9B82005014C0 = {
isa = PBXGroup;
children = (
@@ -474,6 +613,9 @@
670947411BDF9B99005014C0 /* drape_frontend */ = {
isa = PBXGroup;
children = (
+ 45BB025B1EB8BE5200FE5C0C /* shader_def.cpp */,
+ 45BB025C1EB8BE5200FE5C0C /* shader_def.hpp */,
+ 45BB02221EB8BE1400FE5C0C /* shaders */,
672D24981E892768004BB7B1 /* overlays_tracker.cpp */,
672D24991E892768004BB7B1 /* overlays_tracker.hpp */,
457D89241E7AE89500049500 /* custom_symbol.hpp */,
@@ -789,6 +931,7 @@
452FE5C41EB2004F00EE470C /* screen_quad_renderer.hpp in Headers */,
452C9EDB1CEDCF3200A55E57 /* interpolators.hpp in Headers */,
670948171BDF9C39005014C0 /* interpolation_holder.hpp in Headers */,
+ 45BB025E1EB8BE5200FE5C0C /* shader_def.hpp in Headers */,
670947FD1BDF9BF5005014C0 /* base_renderer.hpp in Headers */,
670947D51BDF9BE1005014C0 /* tile_utils.hpp in Headers */,
670947D91BDF9BE1005014C0 /* user_mark_shapes.hpp in Headers */,
@@ -851,6 +994,7 @@
670947381BDF9B82005014C0 /* Headers */,
);
buildRules = (
+ 45BB025F1EB8BE9400FE5C0C /* PBXBuildRule */,
);
dependencies = (
);
@@ -951,6 +1095,7 @@
670948681BDF9C7F005014C0 /* agg_curves.cpp in Sources */,
670947A91BDF9BE1005014C0 /* path_symbol_shape.cpp in Sources */,
670947FA1BDF9BF5005014C0 /* backend_renderer.cpp in Sources */,
+ 45BB025D1EB8BE5200FE5C0C /* shader_def.cpp in Sources */,
670948451BDF9C48005014C0 /* gui_text.cpp in Sources */,
670948141BDF9C39005014C0 /* base_interpolator.cpp in Sources */,
670948491BDF9C48005014C0 /* ruler_helper.cpp in Sources */,