Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Global UBO #2292

Merged
merged 98 commits into from
Apr 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
84d84b2
Layer group UBOs for Metal.
alexcristici Apr 9, 2024
583d969
Layer group UBOs for GL.
alexcristici Apr 9, 2024
b946b48
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 9, 2024
7fd733b
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 9, 2024
b63086f
Removed symbol dynamic buffer.
alexcristici Apr 9, 2024
ffe0e04
Moved line dynamic UBO to layer group.
alexcristici Apr 9, 2024
4909f16
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 9, 2024
36d647b
OpenGL fixes.
alexcristici Apr 9, 2024
84dbff6
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 9, 2024
32d0411
Background layer.
alexcristici Apr 9, 2024
8e447b9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 9, 2024
b7e17dc
Brackground layer fixes.
alexcristici Apr 9, 2024
7e62f9a
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 9, 2024
050810b
Background layer GL fixes.
alexcristici Apr 9, 2024
1394bd8
Circle layer uniforms.
alexcristici Apr 10, 2024
f500b36
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 10, 2024
4a563af
Fill extrusion layer uniforms.
alexcristici Apr 10, 2024
e0781d2
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 10, 2024
de729ee
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 10, 2024
db3a0ef
Fill extrusion OpenGL fixes.
alexcristici Apr 10, 2024
ddff82b
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 11, 2024
109325e
Heatmap layer uniforms.
alexcristici Apr 11, 2024
dd96cff
Heatmap layer uniform GL fixes.
alexcristici Apr 11, 2024
f1dc25a
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 15, 2024
1ae5549
Hillshade.
alexcristici Apr 15, 2024
62d1a61
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
03fa6ba
Raster.
alexcristici Apr 15, 2024
be4f9ab
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 15, 2024
f4a03be
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
0470ca6
Raster GL fixes.
alexcristici Apr 15, 2024
9671913
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 15, 2024
060d2b6
Fixes.
alexcristici Apr 15, 2024
cf5a584
Reorganized.
alexcristici Apr 15, 2024
7d3ef24
Fill outline triangulated reorganized.
alexcristici Apr 15, 2024
a114639
Fill outline triangulated GL fixes.
alexcristici Apr 15, 2024
2999854
Merge branch 'main' into fill-outline-triangulated-reorganized
alexcristici Apr 15, 2024
65872b8
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
5c19bbe
Merge branch 'fill-outline-triangulated-reorganized' into layer-group…
alexcristici Apr 15, 2024
5e44c94
Fixes after merge.
alexcristici Apr 15, 2024
176bc4f
Minor fix.
alexcristici Apr 15, 2024
8e46bbd
Merge branch 'fill-outline-triangulated-reorganized' into layer-group…
alexcristici Apr 15, 2024
cf15695
More fixes after merge.
alexcristici Apr 15, 2024
97d2e2d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
01cfa2a
Fill layer.
alexcristici Apr 15, 2024
f1c7324
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 15, 2024
8998690
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
d6c0d0c
Fill layer GL fixes.
alexcristici Apr 15, 2024
c1ac5f2
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 15, 2024
b63bb13
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
6877333
Typo.
alexcristici Apr 15, 2024
6b61579
Fill layer uniforms.
alexcristici Apr 15, 2024
6fa1408
Fill layer GL fixes.
alexcristici Apr 15, 2024
395f7f5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 15, 2024
7b79282
Reflected change in CMakeLists.txt.
alexcristici Apr 15, 2024
58cda0a
Merge branch 'fill-outline-triangulated-reorganized' into layer-group…
alexcristici Apr 15, 2024
7103a18
Merge branch 'main' into fill-outline-triangulated-reorganized
alexcristici Apr 16, 2024
8d3ffe5
Merge branch 'fill-outline-triangulated-reorganized' into layer-group…
alexcristici Apr 16, 2024
b8a19e0
Fixed render test failing.
alexcristici Apr 16, 2024
13eea48
Line evaluated props UBO moved to layer level.
alexcristici Apr 16, 2024
9c8e12f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 16, 2024
5850ca7
Line GL fixes.
alexcristici Apr 16, 2024
19bea9f
Shaders padding renamed.
alexcristici Apr 16, 2024
8c5c6b6
Symbol evaluated props moved a layer level.
alexcristici Apr 16, 2024
1642996
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 16, 2024
7c982ea
Symbol GL fixes.
alexcristici Apr 16, 2024
84a37ed
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 16, 2024
7ba3f33
Changed order in shader info.
alexcristici Apr 16, 2024
e6cb30c
Fixes.
alexcristici Apr 16, 2024
554e26d
Fixed custom drawable icon shader.
alexcristici Apr 16, 2024
7530209
Merge branch 'main' into fill-outline-triangulated-reorganized
alexcristici Apr 16, 2024
23c896a
Merge branch 'fill-outline-triangulated-reorganized' into layer-group…
alexcristici Apr 16, 2024
e4bacba
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 16, 2024
c9092d5
Fix render tests.
alexcristici Apr 16, 2024
4732319
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 16, 2024
2c4e39e
Metal fixes.
alexcristici Apr 17, 2024
effd1b2
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 17, 2024
fe3aaaf
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 17, 2024
39b69c9
OpenGL fixes.
alexcristici Apr 17, 2024
ce9f8df
Merge branch 'layer-group-uniforms' of https://github.com/alexcristic…
alexcristici Apr 17, 2024
c1a8dbd
Extracted properties that goes into the global UBO.
alexcristici Apr 17, 2024
a0c8dc9
Removed commented code.
alexcristici Apr 17, 2024
bb8c9c6
Merge branch 'main' into layer-group-uniforms
alexcristici Apr 17, 2024
5040385
Merge branch 'layer-group-uniforms' into global-ubo
alexcristici Apr 17, 2024
b580dd6
Fixed crash in Symbol Icon Shader, missing tileprops.
alexcristici Apr 17, 2024
9d54326
UBO fix.
alexcristici Apr 17, 2024
07c17c4
Merge branch 'layer-group-uniforms' into global-ubo
alexcristici Apr 17, 2024
491b0e3
Merge branch 'main' into global-ubo
alexcristici Apr 18, 2024
edee405
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 18, 2024
7a71cf4
Merge branch 'main' into global-ubo
alexcristici Apr 22, 2024
48af7d4
Increased buffer index with 1 for all shaders to make space to global…
alexcristici Apr 22, 2024
3b9cf5b
Metal layers UBOs optimized by using the global UBO.
alexcristici Apr 22, 2024
8d111c9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 22, 2024
9265df0
Merge branch 'main' into global-ubo
alexcristici Apr 22, 2024
74bdf77
OpenGL shaders optimized by using the global UBO.
alexcristici Apr 23, 2024
84de032
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Apr 23, 2024
a33696f
Fixes.
alexcristici Apr 23, 2024
67dfd4f
Merge branch 'main' into global-ubo
alexcristici Apr 23, 2024
052dd62
Merge branch 'main' into global-ubo
alexcristici Apr 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions include/mbgl/gfx/context.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,17 @@ class Context {
return emplaceOrUpdateUniformBuffer(ptr, data, sizeof(T), persistent);
}

/// Get the global uniform buffers
virtual const gfx::UniformBufferArray& getGlobalUniformBuffers() const = 0;

/// Get the mutable global uniform buffer array
virtual gfx::UniformBufferArray& mutableGlobalUniformBuffers() = 0;

/// Bind the global uniform buffers
virtual void bindGlobalUniformBuffers(gfx::RenderPass&) const noexcept = 0;

/// Unbind the global uniform buffers
virtual void unbindGlobalUniformBuffers(gfx::RenderPass&) const noexcept = 0;
#endif

protected:
Expand Down
15 changes: 15 additions & 0 deletions include/mbgl/mtl/context.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <mbgl/gfx/context.hpp>
#include <mbgl/mtl/buffer_resource.hpp>
#include <mbgl/mtl/mtl_fwd.hpp>
#include <mbgl/mtl/uniform_buffer.hpp>
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/containers.hpp>

Expand Down Expand Up @@ -144,6 +145,18 @@ class Context final : public gfx::Context {
RenderStaticData& staticData,
const std::vector<shaders::ClipUBO>& tileUBOs);

/// Get the global uniform buffers
const gfx::UniformBufferArray& getGlobalUniformBuffers() const override { return globalUniformBuffers; };

/// Get the mutable global uniform buffer array
gfx::UniformBufferArray& mutableGlobalUniformBuffers() override { return globalUniformBuffers; };

/// Bind the global uniform buffers
void bindGlobalUniformBuffers(gfx::RenderPass&) const noexcept override;

/// Unbind the global uniform buffers
void unbindGlobalUniformBuffers(gfx::RenderPass&) const noexcept override {}

private:
RendererBackend& backend;
bool cleanupOnDestruction = true;
Expand All @@ -160,6 +173,8 @@ class Context final : public gfx::Context {
std::optional<BufferResource> clipMaskUniformsBuffer;
bool clipMaskUniformsBufferUsed = false;
const gfx::Renderable* stencilStateRenderable = nullptr;

UniformBufferArray globalUniformBuffers;
};

} // namespace mtl
Expand Down
20 changes: 9 additions & 11 deletions include/mbgl/shaders/background_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,18 @@ struct alignas(16) BackgroundPatternLayerUBO {
/* 8 */ std::array<float, 2> pattern_br_a;
/* 16 */ std::array<float, 2> pattern_tl_b;
/* 24 */ std::array<float, 2> pattern_br_b;
/* 32 */ std::array<float, 2> texsize;
/* 40 */ std::array<float, 2> pattern_size_a;
/* 48 */ std::array<float, 2> pattern_size_b;
/* 56 */ float scale_a;
/* 60 */ float scale_b;
/* 64 */ float mix;
/* 68 */ float opacity;
/* 72 */ float pad1, pad2;
/* 80 */
/* 32 */ std::array<float, 2> pattern_size_a;
/* 40 */ std::array<float, 2> pattern_size_b;
/* 48 */ float scale_a;
/* 52 */ float scale_b;
/* 56 */ float mix;
/* 60 */ float opacity;
/* 64 */
};
static_assert(sizeof(BackgroundPatternLayerUBO) == 80);
static_assert(sizeof(BackgroundPatternLayerUBO) == 64);

enum {
idBackgroundDrawableUBO,
idBackgroundDrawableUBO = globalUBOCount,
idBackgroundLayerUBO,
backgroundUBOCount
};
Expand Down
3 changes: 1 addition & 2 deletions include/mbgl/shaders/circle_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ struct alignas(16) CircleInterpolateUBO {
static_assert(sizeof(CircleInterpolateUBO) % 16 == 0);

enum {
idCircleDrawableUBO,
idCirclePaintParamsUBO,
idCircleDrawableUBO = globalUBOCount,
idCircleEvaluatedPropsUBO,
idCircleInterpolateUBO,
circleUBOCount
Expand Down
4 changes: 2 additions & 2 deletions include/mbgl/shaders/collision_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ namespace shaders {
struct alignas(16) CollisionUBO {
std::array<float, 4 * 4> matrix;
std::array<float, 2> extrude_scale;
float camera_to_center_distance;
float overscale_factor;
float pad;
};
static_assert(sizeof(CollisionUBO) % 16 == 0);
static_assert(sizeof(CollisionUBO) == 80);

enum {
idCollisionUBO,
idCollisionUBO = globalUBOCount,
collisionUBOCount
};

Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/shaders/custom_drawable_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct alignas(16) CustomSymbolIconParametersUBO {
static_assert(sizeof(CustomSymbolIconParametersUBO) == 3 * 16);

enum {
idCustomSymbolDrawableUBO,
idCustomSymbolDrawableUBO = globalUBOCount,
idCustomSymbolParametersUBO,
customSymbolUBOCount
};
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/shaders/debug_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ struct alignas(16) DebugUBO {
static_assert(sizeof(DebugUBO) % 16 == 0);

enum {
idDebugUBO,
idDebugUBO = globalUBOCount,
debugUBOCount
};

Expand Down
23 changes: 12 additions & 11 deletions include/mbgl/shaders/fill_extrusion_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@ namespace mbgl {
namespace shaders {

struct alignas(16) FillExtrusionDrawableUBO {
/* 0 */ std::array<float, 4 * 4> matrix;
/* 64 */ std::array<float, 4> scale;
/* 80 */ std::array<float, 2> texsize;
/* 88 */ std::array<float, 2> pixel_coord_upper;
/* 96 */ std::array<float, 2> pixel_coord_lower;
/* 104 */ float height_factor;
/* 108 */ float pad;
/* 112 */
/* 0 */ std::array<float, 4 * 4> matrix;
/* 64 */ std::array<float, 2> texsize;
/* 72 */ std::array<float, 2> pixel_coord_upper;
/* 80 */ std::array<float, 2> pixel_coord_lower;
/* 88 */ float height_factor;
/* 92 */ float tile_ratio;
/* 96 */
};
static_assert(sizeof(FillExtrusionDrawableUBO) == 7 * 16);
static_assert(sizeof(FillExtrusionDrawableUBO) == 6 * 16);

/// Evaluated properties that do not depend on the tile
struct alignas(16) FillExtrusionPropsUBO {
Expand All @@ -31,7 +30,9 @@ struct alignas(16) FillExtrusionPropsUBO {
/* 56 */ float vertical_gradient;
/* 60 */ float opacity;
/* 64 */ float fade;
/* 68 */ float pad2, pad3, pad4;
/* 68 */ float from_scale;
/* 72 */ float to_scale;
/* 76 */ float pad2;
/* 80 */
};
static_assert(sizeof(FillExtrusionPropsUBO) == 5 * 16);
Expand All @@ -57,7 +58,7 @@ struct alignas(16) FillExtrusionInterpolateUBO {
static_assert(sizeof(FillExtrusionInterpolateUBO) == 2 * 16);

enum {
idFillExtrusionDrawableUBO,
idFillExtrusionDrawableUBO = globalUBOCount,
idFillExtrusionPropsUBO,
idFillExtrusionTilePropsUBO,
idFillExtrusionInterpolateUBO,
Expand Down
43 changes: 21 additions & 22 deletions include/mbgl/shaders/fill_layer_ubo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ namespace shaders {

struct alignas(16) FillDrawableUBO {
/* 0 */ std::array<float, 4 * 4> matrix; // composite model-view-projection matrix
/* 64 */
};
static_assert(sizeof(FillDrawableUBO) == 4 * 16);

Expand All @@ -25,11 +26,9 @@ static_assert(sizeof(FillInterpolateUBO) % 16 == 0);

struct alignas(16) FillOutlineDrawableUBO {
/* 0 */ std::array<float, 4 * 4> matrix; // composite model-view-projection matrix
/* 64 */ std::array<float, 2> world;
/* 72 */ float pad1, pad2;
/* 80 */
/* 64 */
};
static_assert(sizeof(FillOutlineDrawableUBO) == 5 * 16);
static_assert(sizeof(FillOutlineDrawableUBO) == 4 * 16);

struct alignas(16) FillOutlineInterpolateUBO {
float outline_color_t;
Expand All @@ -43,14 +42,14 @@ static_assert(sizeof(FillOutlineInterpolateUBO) == 1 * 16);

struct alignas(16) FillPatternDrawableUBO {
/* 0 */ std::array<float, 4 * 4> matrix; // composite model-view-projection matrix
/* 64 */ std::array<float, 4> scale;
/* 80 */ std::array<float, 2> pixel_coord_upper;
/* 88 */ std::array<float, 2> pixel_coord_lower;
/* 96 */ std::array<float, 2> texsize;
/* 104 */ float pad1, pad2;
/* 112 */
/* 64 */ std::array<float, 2> pixel_coord_upper;
/* 72 */ std::array<float, 2> pixel_coord_lower;
/* 80 */ std::array<float, 2> texsize;
/* 88 */ float tile_ratio;
/* 92 */ float pad;
/* 96 */
};
static_assert(sizeof(FillPatternDrawableUBO) == 7 * 16);
static_assert(sizeof(FillPatternDrawableUBO) == 6 * 16);

struct alignas(16) FillPatternTilePropsUBO {
std::array<float, 4> pattern_from;
Expand All @@ -71,13 +70,14 @@ static_assert(sizeof(FillPatternInterpolateUBO) == 1 * 16);

struct alignas(16) FillOutlinePatternDrawableUBO {
/* 0 */ std::array<float, 4 * 4> matrix; // composite model-view-projection matrix
/* 64 */ std::array<float, 4> scale;
/* 80 */ std::array<float, 2> world;
/* 88 */ std::array<float, 2> pixel_coord_upper;
/* 96 */ std::array<float, 2> pixel_coord_lower;
/* 104 */ std::array<float, 2> texsize;
/* 64 */ std::array<float, 2> pixel_coord_upper;
/* 72 */ std::array<float, 2> pixel_coord_lower;
/* 80 */ std::array<float, 2> texsize;
/* 88 */ float tile_ratio;
/* 92 */ float pad;
/* 96 */
};
static_assert(sizeof(FillOutlinePatternDrawableUBO) == 7 * 16);
static_assert(sizeof(FillOutlinePatternDrawableUBO) == 6 * 16);

struct alignas(16) FillOutlinePatternTilePropsUBO {
std::array<float, 4> pattern_from;
Expand All @@ -98,9 +98,8 @@ static_assert(sizeof(FillOutlinePatternInterpolateUBO) == 1 * 16);

struct alignas(16) FillOutlineTriangulatedDrawableUBO {
std::array<float, 4 * 4> matrix;
std::array<float, 2> units_to_pixels;
float ratio;
float pad;
float pad1, pad2, pad3;
};
static_assert(sizeof(FillOutlineTriangulatedDrawableUBO) % 16 == 0);

Expand All @@ -112,13 +111,13 @@ struct alignas(16) FillEvaluatedPropsUBO {
Color outline_color;
float opacity;
float fade;
float width;
float pad1;
float from_scale;
float to_scale;
};
static_assert(sizeof(FillEvaluatedPropsUBO) == 3 * 16);

enum {
idFillDrawableUBO,
idFillDrawableUBO = globalUBOCount,
idFillTilePropsUBO,
idFillInterpolateUBO,
idFillEvaluatedPropsUBO,
Expand Down
21 changes: 14 additions & 7 deletions include/mbgl/shaders/gl/drawable_background_pattern.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@ layout (std140) uniform BackgroundPatternLayerUBO {
highp vec2 u_pattern_br_a;
highp vec2 u_pattern_tl_b;
highp vec2 u_pattern_br_b;
highp vec2 u_texsize;
highp vec2 u_pattern_size_a;
highp vec2 u_pattern_size_b;
highp float u_scale_a;
highp float u_scale_b;
highp float u_mix;
highp float u_opacity;
highp float layer_pad1, layer_pad2;
};

layout (location = 0) in vec2 a_pos;
Expand All @@ -41,19 +39,28 @@ void main() {
v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_b * u_pattern_size_b, u_tile_units_to_pixels, a_pos);
}
)";
static constexpr const char* fragment = R"(layout (std140) uniform BackgroundPatternLayerUBO {
static constexpr const char* fragment = R"(layout (std140) uniform GlobalPaintParamsUBO {
highp vec2 u_pattern_atlas_texsize;
highp vec2 u_units_to_pixels;
highp vec2 u_world_size;
highp float u_camera_to_center_distance;
highp float u_symbol_fade_change;
highp float u_aspect_ratio;
highp float u_pixel_ratio;
highp float global_pad1, global_pad2;
};

layout (std140) uniform BackgroundPatternLayerUBO {
highp vec2 u_pattern_tl_a;
highp vec2 u_pattern_br_a;
highp vec2 u_pattern_tl_b;
highp vec2 u_pattern_br_b;
highp vec2 u_texsize;
highp vec2 u_pattern_size_a;
highp vec2 u_pattern_size_b;
highp float u_scale_a;
highp float u_scale_b;
highp float u_mix;
highp float u_opacity;
highp float layer_pad1, layer_pad2;
};

uniform sampler2D u_image;
Expand All @@ -63,11 +70,11 @@ in mediump vec2 v_pos_b;

void main() {
vec2 imagecoord = mod(v_pos_a, 1.0);
vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);
vec2 pos = mix(u_pattern_tl_a / u_pattern_atlas_texsize, u_pattern_br_a / u_pattern_atlas_texsize, imagecoord);
vec4 color1 = texture(u_image, pos);

vec2 imagecoord_b = mod(v_pos_b, 1.0);
vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);
vec2 pos2 = mix(u_pattern_tl_b / u_pattern_atlas_texsize, u_pattern_br_b / u_pattern_atlas_texsize, imagecoord_b);
vec4 color2 = texture(u_image, pos2);

fragColor = mix(color1, color2, u_mix) * u_opacity;
Expand Down
17 changes: 11 additions & 6 deletions include/mbgl/shaders/gl/drawable_circle.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,23 @@ struct ShaderSource<BuiltIn::CircleShader, gfx::Backend::Type::OpenGL> {
static constexpr const char* vertex = R"(layout (location = 0) in vec2 a_pos;
out vec3 v_data;

layout (std140) uniform GlobalPaintParamsUBO {
highp vec2 u_pattern_atlas_texsize;
highp vec2 u_units_to_pixels;
highp vec2 u_world_size;
highp float u_camera_to_center_distance;
highp float u_symbol_fade_change;
highp float u_aspect_ratio;
highp float u_pixel_ratio;
highp float global_pad1, global_pad2;
};

layout (std140) uniform CircleDrawableUBO {
highp mat4 u_matrix;
highp vec2 u_extrude_scale;
lowp vec2 drawable_pad1;
};

layout (std140) uniform CirclePaintParamsUBO {
highp float u_camera_to_center_distance;
lowp float params_pad1;
lowp vec2 params_pad2;
};

layout (std140) uniform CircleEvaluatedPropsUBO {
highp vec4 u_color;
highp vec4 u_stroke_color;
Expand Down
19 changes: 15 additions & 4 deletions include/mbgl/shaders/gl/drawable_collision_box.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,21 @@ layout (location = 2) in vec2 a_extrude;
layout (location = 3) in vec2 a_placed;
layout (location = 4) in vec2 a_shift;

layout (std140) uniform CollisionBoxUBO {
layout (std140) uniform GlobalPaintParamsUBO {
highp vec2 u_pattern_atlas_texsize;
highp vec2 u_units_to_pixels;
highp vec2 u_world_size;
highp float u_camera_to_center_distance;
highp float u_symbol_fade_change;
highp float u_aspect_ratio;
highp float u_pixel_ratio;
highp float global_pad1, global_pad2;
};

layout (std140) uniform CollisionUBO {
highp mat4 u_matrix;
highp vec2 u_extrude_scale;
highp float u_camera_to_center_distance;
highp float u_overscale_factor;
highp float pad1;
};

Expand All @@ -39,10 +50,10 @@ void main() {
v_notUsed = a_placed.y;
}
)";
static constexpr const char* fragment = R"(layout (std140) uniform CollisionBoxUBO {
static constexpr const char* fragment = R"(layout (std140) uniform CollisionUBO {
highp mat4 u_matrix;
highp vec2 u_extrude_scale;
highp float u_camera_to_center_distance;
highp float u_overscale_factor;
highp float pad1;
};

Expand Down
Loading
Loading