Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
294 lines
8.5 KiB
C++
294 lines
8.5 KiB
C++
#pragma once
|
|
|
|
#include <mbgl/shaders/background_layer_ubo.hpp>
|
|
#include <mbgl/shaders/circle_layer_ubo.hpp>
|
|
#include <mbgl/shaders/collision_layer_ubo.hpp>
|
|
#include <mbgl/shaders/custom_drawable_layer_ubo.hpp>
|
|
#include <mbgl/shaders/debug_layer_ubo.hpp>
|
|
#include <mbgl/shaders/fill_layer_ubo.hpp>
|
|
#include <mbgl/shaders/fill_extrusion_layer_ubo.hpp>
|
|
#include <mbgl/shaders/heatmap_layer_ubo.hpp>
|
|
#include <mbgl/shaders/heatmap_texture_layer_ubo.hpp>
|
|
#include <mbgl/shaders/hillshade_layer_ubo.hpp>
|
|
#include <mbgl/shaders/hillshade_prepare_layer_ubo.hpp>
|
|
#include <mbgl/shaders/line_layer_ubo.hpp>
|
|
#include <mbgl/shaders/raster_layer_ubo.hpp>
|
|
#include <mbgl/shaders/symbol_layer_ubo.hpp>
|
|
#include <mbgl/shaders/widevector_ubo.hpp>
|
|
|
|
#include <algorithm>
|
|
|
|
namespace mbgl {
|
|
namespace shaders {
|
|
|
|
// UBO defines
|
|
enum {
|
|
idClippingMaskUBO = globalUBOCount,
|
|
clippingMaskUBOCount
|
|
};
|
|
|
|
static constexpr auto maxUBOCountPerShader = std::max({static_cast<size_t>(backgroundUBOCount),
|
|
static_cast<size_t>(circleUBOCount),
|
|
static_cast<size_t>(clippingMaskUBOCount),
|
|
static_cast<size_t>(collisionUBOCount),
|
|
static_cast<size_t>(customSymbolUBOCount),
|
|
static_cast<size_t>(debugUBOCount),
|
|
static_cast<size_t>(fillUBOCount),
|
|
static_cast<size_t>(fillExtrusionUBOCount),
|
|
static_cast<size_t>(heatmapUBOCount),
|
|
static_cast<size_t>(heatmapTextureUBOCount),
|
|
static_cast<size_t>(hillshadeUBOCount),
|
|
static_cast<size_t>(hillshadePrepareUBOCount),
|
|
static_cast<size_t>(lineUBOCount),
|
|
static_cast<size_t>(rasterUBOCount),
|
|
static_cast<size_t>(symbolUBOCount),
|
|
static_cast<size_t>(wideVectorUBOCount)});
|
|
|
|
// Texture defines
|
|
enum {
|
|
idBackgroundImageTexture,
|
|
backgroundTextureCount
|
|
};
|
|
|
|
enum {
|
|
circleTextureCount
|
|
};
|
|
|
|
enum {
|
|
clippingMaskTextureCount
|
|
};
|
|
|
|
enum {
|
|
collisionTextureCount
|
|
};
|
|
|
|
enum {
|
|
idCustomSymbolImageTexture,
|
|
customSymbolTextureCount
|
|
};
|
|
|
|
enum {
|
|
idDebugOverlayTexture,
|
|
debugTextureCount
|
|
};
|
|
|
|
enum {
|
|
idFillImageTexture,
|
|
fillTextureCount
|
|
};
|
|
|
|
enum {
|
|
idFillExtrusionImageTexture,
|
|
fillExtrusionTextureCount
|
|
};
|
|
|
|
enum {
|
|
idHeatmapImageTexture,
|
|
idHeatmapColorRampTexture,
|
|
heatmapTextureCount
|
|
};
|
|
|
|
enum {
|
|
idHillshadeImageTexture,
|
|
hillshadeTextureCount
|
|
};
|
|
|
|
enum {
|
|
idLineImageTexture,
|
|
lineTextureCount
|
|
};
|
|
|
|
enum {
|
|
idRasterImage0Texture,
|
|
idRasterImage1Texture,
|
|
rasterTextureCount
|
|
};
|
|
|
|
enum {
|
|
idSymbolImageTexture,
|
|
idSymbolImageIconTexture,
|
|
symbolTextureCount
|
|
};
|
|
|
|
static constexpr auto maxTextureCountPerShader = std::max({static_cast<size_t>(backgroundTextureCount),
|
|
static_cast<size_t>(circleTextureCount),
|
|
static_cast<size_t>(clippingMaskTextureCount),
|
|
static_cast<size_t>(collisionTextureCount),
|
|
static_cast<size_t>(customSymbolTextureCount),
|
|
static_cast<size_t>(debugTextureCount),
|
|
static_cast<size_t>(fillTextureCount),
|
|
static_cast<size_t>(fillExtrusionTextureCount),
|
|
static_cast<size_t>(heatmapTextureCount),
|
|
static_cast<size_t>(hillshadeTextureCount),
|
|
static_cast<size_t>(lineTextureCount),
|
|
static_cast<size_t>(rasterTextureCount),
|
|
static_cast<size_t>(symbolTextureCount)});
|
|
|
|
// Vertex attribute defines
|
|
enum {
|
|
idBackgroundPosVertexAttribute,
|
|
backgroundVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idCirclePosVertexAttribute,
|
|
|
|
// Data driven
|
|
idCircleColorVertexAttribute,
|
|
idCircleRadiusVertexAttribute,
|
|
idCircleBlurVertexAttribute,
|
|
idCircleOpacityVertexAttribute,
|
|
idCircleStrokeColorVertexAttribute,
|
|
idCircleStrokeWidthVertexAttribute,
|
|
idCircleStrokeOpacityVertexAttribute,
|
|
|
|
circleVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idClippingMaskPosVertexAttribute,
|
|
clippingMaskVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idCollisionPosVertexAttribute,
|
|
idCollisionAnchorPosVertexAttribute,
|
|
idCollisionExtrudeVertexAttribute,
|
|
idCollisionPlacedVertexAttribute,
|
|
idCollisionShiftVertexAttribute,
|
|
collisionVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idCustomSymbolPosVertexAttribute,
|
|
idCustomSymbolTexVertexAttribute,
|
|
customSymbolVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idDebugPosVertexAttribute,
|
|
debugVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idFillPosVertexAttribute,
|
|
|
|
// Data driven
|
|
idFillColorVertexAttribute,
|
|
idFillOpacityVertexAttribute,
|
|
idFillOutlineColorVertexAttribute,
|
|
idFillPatternFromVertexAttribute,
|
|
idFillPatternToVertexAttribute,
|
|
|
|
fillVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idFillExtrusionPosVertexAttribute,
|
|
idFillExtrusionNormalEdVertexAttribute,
|
|
|
|
// Data driven
|
|
idFillExtrusionBaseVertexAttribute,
|
|
idFillExtrusionColorVertexAttribute,
|
|
idFillExtrusionHeightVertexAttribute,
|
|
idFillExtrusionPatternFromVertexAttribute,
|
|
idFillExtrusionPatternToVertexAttribute,
|
|
|
|
fillExtrusionVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idHeatmapPosVertexAttribute,
|
|
|
|
// Data driven
|
|
idHeatmapWeightVertexAttribute,
|
|
idHeatmapRadiusVertexAttribute,
|
|
|
|
heatmapVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idHillshadePosVertexAttribute,
|
|
idHillshadeTexturePosVertexAttribute,
|
|
hillshadeVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idLinePosNormalVertexAttribute,
|
|
idLineDataVertexAttribute,
|
|
|
|
// Data driven
|
|
idLineColorVertexAttribute,
|
|
idLineBlurVertexAttribute,
|
|
idLineOpacityVertexAttribute,
|
|
idLineGapWidthVertexAttribute,
|
|
idLineOffsetVertexAttribute,
|
|
idLineWidthVertexAttribute,
|
|
idLineFloorWidthVertexAttribute,
|
|
idLinePatternFromVertexAttribute,
|
|
idLinePatternToVertexAttribute,
|
|
|
|
lineVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idRasterPosVertexAttribute,
|
|
idRasterTexturePosVertexAttribute,
|
|
rasterVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idSymbolPosOffsetVertexAttribute,
|
|
idSymbolDataVertexAttribute,
|
|
idSymbolPixelOffsetVertexAttribute,
|
|
idSymbolProjectedPosVertexAttribute,
|
|
idSymbolFadeOpacityVertexAttribute,
|
|
|
|
// Data driven
|
|
idSymbolOpacityVertexAttribute,
|
|
idSymbolColorVertexAttribute,
|
|
idSymbolHaloColorVertexAttribute,
|
|
idSymbolHaloWidthVertexAttribute,
|
|
idSymbolHaloBlurVertexAttribute,
|
|
|
|
symbolVertexAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idWideVectorScreenPos,
|
|
idWideVectorColor,
|
|
idWideVectorIndex,
|
|
|
|
wideVectorAttributeCount
|
|
};
|
|
|
|
enum {
|
|
idWideVectorInstanceCenter,
|
|
idWideVectorInstanceColor,
|
|
idWideVectorInstancePrevious,
|
|
idWideVectorInstanceNext,
|
|
|
|
wideVectorInstanceAttributeCount
|
|
};
|
|
|
|
static constexpr auto maxVertexAttributeCountPerShader = std::max({
|
|
static_cast<size_t>(backgroundVertexAttributeCount),
|
|
static_cast<size_t>(circleVertexAttributeCount),
|
|
static_cast<size_t>(clippingMaskVertexAttributeCount),
|
|
static_cast<size_t>(collisionVertexAttributeCount),
|
|
static_cast<size_t>(customSymbolVertexAttributeCount),
|
|
static_cast<size_t>(debugVertexAttributeCount),
|
|
static_cast<size_t>(fillVertexAttributeCount),
|
|
static_cast<size_t>(fillExtrusionVertexAttributeCount),
|
|
static_cast<size_t>(heatmapVertexAttributeCount),
|
|
static_cast<size_t>(hillshadeVertexAttributeCount),
|
|
static_cast<size_t>(lineVertexAttributeCount),
|
|
static_cast<size_t>(rasterVertexAttributeCount),
|
|
static_cast<size_t>(symbolVertexAttributeCount),
|
|
static_cast<size_t>(wideVectorAttributeCount),
|
|
static_cast<size_t>(wideVectorInstanceAttributeCount),
|
|
});
|
|
|
|
} // namespace shaders
|
|
} // namespace mbgl
|