From 84ec4f82349ebd191ff885e9e7bec41cff3396d9 Mon Sep 17 00:00:00 2001 From: Alex Cristici Date: Fri, 26 Apr 2024 19:15:42 +0300 Subject: [PATCH] Symbol UBOs fixes (#2331) --- include/mbgl/shaders/gl/drawable_symbol_icon.hpp | 9 --------- include/mbgl/shaders/gl/drawable_symbol_sdf.hpp | 9 --------- .../mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp | 9 --------- include/mbgl/shaders/mtl/symbol_icon.hpp | 4 +--- include/mbgl/shaders/mtl/symbol_sdf.hpp | 3 +-- include/mbgl/shaders/mtl/symbol_text_and_icon.hpp | 3 +-- shaders/drawable.symbol_icon.fragment.glsl | 9 --------- shaders/drawable.symbol_sdf.fragment.glsl | 9 --------- shaders/drawable.symbol_text_and_icon.fragment.glsl | 9 --------- src/mbgl/renderer/layers/render_symbol_layer.cpp | 6 +++--- src/mbgl/shaders/mtl/symbol_icon.cpp | 4 ++-- src/mbgl/shaders/mtl/symbol_sdf.cpp | 2 +- src/mbgl/shaders/mtl/symbol_text_and_icon.cpp | 2 +- 13 files changed, 10 insertions(+), 68 deletions(-) diff --git a/include/mbgl/shaders/gl/drawable_symbol_icon.hpp b/include/mbgl/shaders/gl/drawable_symbol_icon.hpp index 5a9b14ac0..ecc372e8a 100644 --- a/include/mbgl/shaders/gl/drawable_symbol_icon.hpp +++ b/include/mbgl/shaders/gl/drawable_symbol_icon.hpp @@ -152,15 +152,6 @@ lowp float opacity = u_opacity; )"; static constexpr const char* fragment = R"(uniform sampler2D u_texture; -layout (std140) uniform SymbolInterpolateUBO { - highp float u_fill_color_t; - highp float u_halo_color_t; - highp float u_opacity_t; - highp float u_halo_width_t; - highp float u_halo_blur_t; - highp float interp_pad1, interp_pad2,interp_pad3; -}; - layout (std140) uniform SymbolTilePropsUBO { bool u_is_text; bool u_is_halo; diff --git a/include/mbgl/shaders/gl/drawable_symbol_sdf.hpp b/include/mbgl/shaders/gl/drawable_symbol_sdf.hpp index a0ce6a101..4b75ae408 100644 --- a/include/mbgl/shaders/gl/drawable_symbol_sdf.hpp +++ b/include/mbgl/shaders/gl/drawable_symbol_sdf.hpp @@ -233,15 +233,6 @@ layout (std140) uniform SymbolTilePropsUBO { bool tileprops_pad1; }; -layout (std140) uniform SymbolInterpolateUBO { - highp float u_fill_color_t; - highp float u_halo_color_t; - highp float u_opacity_t; - highp float u_halo_width_t; - highp float u_halo_blur_t; - highp float interp_pad1, interp_pad2, interp_pad3; -}; - layout (std140) uniform SymbolEvaluatedPropsUBO { highp vec4 u_text_fill_color; highp vec4 u_text_halo_color; diff --git a/include/mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp b/include/mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp index fffa38067..8f47d12c0 100644 --- a/include/mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp +++ b/include/mbgl/shaders/gl/drawable_symbol_text_and_icon.hpp @@ -236,15 +236,6 @@ layout (std140) uniform SymbolTilePropsUBO { bool tileprops_pad1; }; -layout (std140) uniform SymbolInterpolateUBO { - highp float u_fill_color_t; - highp float u_halo_color_t; - highp float u_opacity_t; - highp float u_halo_width_t; - highp float u_halo_blur_t; - highp float interp_pad1, interp_pad2,interp_pad3; -}; - layout (std140) uniform SymbolEvaluatedPropsUBO { highp vec4 u_text_fill_color; highp vec4 u_text_halo_color; diff --git a/include/mbgl/shaders/mtl/symbol_icon.hpp b/include/mbgl/shaders/mtl/symbol_icon.hpp index 9898812ab..31ebaf5ff 100644 --- a/include/mbgl/shaders/mtl/symbol_icon.hpp +++ b/include/mbgl/shaders/mtl/symbol_icon.hpp @@ -49,8 +49,7 @@ FragmentStage vertex vertexMain(thread const VertexStage vertx [[stage_in]], device const GlobalPaintParamsUBO& paintParams [[buffer(0)]], device const SymbolDrawableUBO& drawable [[buffer(1)]], device const SymbolTilePropsUBO& tileprops [[buffer(2)]], - device const SymbolInterpolateUBO& interp [[buffer(3)]], - device const SymbolEvaluatedPropsUBO& paint [[buffer(4)]]) { + device const SymbolInterpolateUBO& interp [[buffer(3)]]) { const float2 a_pos = vertx.pos_offset.xy; const float2 a_offset = vertx.pos_offset.zw; @@ -123,7 +122,6 @@ FragmentStage vertex vertexMain(thread const VertexStage vertx [[stage_in]], } half4 fragment fragmentMain(FragmentStage in [[stage_in]], - device const SymbolDrawableUBO& drawable [[buffer(1)]], device const SymbolTilePropsUBO& tileprops [[buffer(2)]], device const SymbolEvaluatedPropsUBO& props [[buffer(4)]], texture2d image [[texture(0)]], diff --git a/include/mbgl/shaders/mtl/symbol_sdf.hpp b/include/mbgl/shaders/mtl/symbol_sdf.hpp index 6d793dae7..c4c784d05 100644 --- a/include/mbgl/shaders/mtl/symbol_sdf.hpp +++ b/include/mbgl/shaders/mtl/symbol_sdf.hpp @@ -74,8 +74,7 @@ FragmentStage vertex vertexMain(thread const VertexStage vertx [[stage_in]], device const GlobalPaintParamsUBO& paintParams [[buffer(0)]], device const SymbolDrawableUBO& drawable [[buffer(1)]], device const SymbolTilePropsUBO& tileprops [[buffer(2)]], - device const SymbolInterpolateUBO& interp [[buffer(3)]], - device const SymbolEvaluatedPropsUBO& props [[buffer(4)]]) { + device const SymbolInterpolateUBO& interp [[buffer(3)]]) { const float2 a_pos = vertx.pos_offset.xy; const float2 a_offset = vertx.pos_offset.zw; diff --git a/include/mbgl/shaders/mtl/symbol_text_and_icon.hpp b/include/mbgl/shaders/mtl/symbol_text_and_icon.hpp index df00b2cb7..195150c16 100644 --- a/include/mbgl/shaders/mtl/symbol_text_and_icon.hpp +++ b/include/mbgl/shaders/mtl/symbol_text_and_icon.hpp @@ -78,8 +78,7 @@ FragmentStage vertex vertexMain(thread const VertexStage vertx [[stage_in]], device const GlobalPaintParamsUBO& paintParams [[buffer(0)]], device const SymbolDrawableUBO& drawable [[buffer(1)]], device const SymbolTilePropsUBO& tileprops [[buffer(2)]], - device const SymbolInterpolateUBO& interp [[buffer(3)]], - device const SymbolEvaluatedPropsUBO& props [[buffer(4)]]) { + device const SymbolInterpolateUBO& interp [[buffer(3)]]) { const float2 a_pos = vertx.pos_offset.xy; const float2 a_offset = vertx.pos_offset.zw; diff --git a/shaders/drawable.symbol_icon.fragment.glsl b/shaders/drawable.symbol_icon.fragment.glsl index e7cd065e2..2350acdcf 100644 --- a/shaders/drawable.symbol_icon.fragment.glsl +++ b/shaders/drawable.symbol_icon.fragment.glsl @@ -1,14 +1,5 @@ uniform sampler2D u_texture; -layout (std140) uniform SymbolInterpolateUBO { - highp float u_fill_color_t; - highp float u_halo_color_t; - highp float u_opacity_t; - highp float u_halo_width_t; - highp float u_halo_blur_t; - highp float interp_pad1, interp_pad2,interp_pad3; -}; - layout (std140) uniform SymbolTilePropsUBO { bool u_is_text; bool u_is_halo; diff --git a/shaders/drawable.symbol_sdf.fragment.glsl b/shaders/drawable.symbol_sdf.fragment.glsl index 562401776..06385d611 100644 --- a/shaders/drawable.symbol_sdf.fragment.glsl +++ b/shaders/drawable.symbol_sdf.fragment.glsl @@ -24,15 +24,6 @@ layout (std140) uniform SymbolTilePropsUBO { bool tileprops_pad1; }; -layout (std140) uniform SymbolInterpolateUBO { - highp float u_fill_color_t; - highp float u_halo_color_t; - highp float u_opacity_t; - highp float u_halo_width_t; - highp float u_halo_blur_t; - highp float interp_pad1, interp_pad2, interp_pad3; -}; - layout (std140) uniform SymbolEvaluatedPropsUBO { highp vec4 u_text_fill_color; highp vec4 u_text_halo_color; diff --git a/shaders/drawable.symbol_text_and_icon.fragment.glsl b/shaders/drawable.symbol_text_and_icon.fragment.glsl index 3438e655b..15a0cdbdd 100644 --- a/shaders/drawable.symbol_text_and_icon.fragment.glsl +++ b/shaders/drawable.symbol_text_and_icon.fragment.glsl @@ -27,15 +27,6 @@ layout (std140) uniform SymbolTilePropsUBO { bool tileprops_pad1; }; -layout (std140) uniform SymbolInterpolateUBO { - highp float u_fill_color_t; - highp float u_halo_color_t; - highp float u_opacity_t; - highp float u_halo_width_t; - highp float u_halo_blur_t; - highp float interp_pad1, interp_pad2,interp_pad3; -}; - layout (std140) uniform SymbolEvaluatedPropsUBO { highp vec4 u_text_fill_color; highp vec4 u_text_halo_color; diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index f5275ab63..cadb9d2f3 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -1079,8 +1079,8 @@ void RenderSymbolLayer::update(gfx::ShaderRegistry& shaders, auto addCollisionDrawables = [&](const bool isText, const bool hasCollisionBox, const bool hasCollisionCircle) { if (!hasCollisionBox && !hasCollisionCircle) return; - const auto& group = getCollisionTileLayerGroup(); - if (!group) { + const auto& collisionGroup = getCollisionTileLayerGroup(); + if (!collisionGroup) { return; } @@ -1132,7 +1132,7 @@ void RenderSymbolLayer::update(gfx::ShaderRegistry& shaders, auto drawData = std::make_unique(values.translate, values.translateAnchor); drawable->setData(std::move(drawData)); - group->addDrawable(passes, tileID, std::move(drawable)); + collisionGroup->addDrawable(passes, tileID, std::move(drawable)); ++stats.drawablesAdded; } }; diff --git a/src/mbgl/shaders/mtl/symbol_icon.cpp b/src/mbgl/shaders/mtl/symbol_icon.cpp index c01f1d9f5..7aa78e46a 100644 --- a/src/mbgl/shaders/mtl/symbol_icon.cpp +++ b/src/mbgl/shaders/mtl/symbol_icon.cpp @@ -5,10 +5,10 @@ namespace shaders { const std::array ShaderSource::uniforms = { UniformBlockInfo{true, false, sizeof(GlobalPaintParamsUBO), idGlobalPaintParamsUBO}, - UniformBlockInfo{true, true, sizeof(SymbolDrawableUBO), idSymbolDrawableUBO}, + UniformBlockInfo{true, false, sizeof(SymbolDrawableUBO), idSymbolDrawableUBO}, UniformBlockInfo{true, true, sizeof(SymbolTilePropsUBO), idSymbolTilePropsUBO}, UniformBlockInfo{true, false, sizeof(SymbolInterpolateUBO), idSymbolInterpolateUBO}, - UniformBlockInfo{true, true, sizeof(SymbolEvaluatedPropsUBO), idSymbolEvaluatedPropsUBO}, + UniformBlockInfo{false, true, sizeof(SymbolEvaluatedPropsUBO), idSymbolEvaluatedPropsUBO}, }; const std::array ShaderSource::attributes = { // always attributes diff --git a/src/mbgl/shaders/mtl/symbol_sdf.cpp b/src/mbgl/shaders/mtl/symbol_sdf.cpp index fc5a94c4b..1b7131d01 100644 --- a/src/mbgl/shaders/mtl/symbol_sdf.cpp +++ b/src/mbgl/shaders/mtl/symbol_sdf.cpp @@ -9,7 +9,7 @@ const std::array ShaderSource ShaderSource::attributes = { diff --git a/src/mbgl/shaders/mtl/symbol_text_and_icon.cpp b/src/mbgl/shaders/mtl/symbol_text_and_icon.cpp index 26f7cc221..3d8a0e1c1 100644 --- a/src/mbgl/shaders/mtl/symbol_text_and_icon.cpp +++ b/src/mbgl/shaders/mtl/symbol_text_and_icon.cpp @@ -9,7 +9,7 @@ const std::array UniformBlockInfo{true, true, sizeof(SymbolDrawableUBO), idSymbolDrawableUBO}, UniformBlockInfo{true, true, sizeof(SymbolTilePropsUBO), idSymbolTilePropsUBO}, UniformBlockInfo{true, false, sizeof(SymbolInterpolateUBO), idSymbolInterpolateUBO}, - UniformBlockInfo{true, true, sizeof(SymbolEvaluatedPropsUBO), idSymbolEvaluatedPropsUBO}, + UniformBlockInfo{false, true, sizeof(SymbolEvaluatedPropsUBO), idSymbolEvaluatedPropsUBO}, }; const std::array ShaderSource::attributes = {