@scoova/mgl 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +116 -0
- package/README.md +174 -0
- package/build/banner.ts +12 -0
- package/build/bump-version-changelog.js +26 -0
- package/build/check-bundle-size.js +77 -0
- package/build/generate-dist-package.js +26 -0
- package/build/generate-doc-images.ts +78 -0
- package/build/generate-docs.ts +190 -0
- package/build/generate-shaders.ts +68 -0
- package/build/generate-struct-arrays.ts +438 -0
- package/build/generate-style-code.ts +283 -0
- package/build/readme.md +56 -0
- package/build/release-notes.js +45 -0
- package/build/rollup/bundle_prelude.js +29 -0
- package/build/rollup/maplibregl.js +22 -0
- package/build/rollup_plugins.ts +58 -0
- package/dist/LICENSE.txt +116 -0
- package/dist/maplibre-gl.css +1 -0
- package/dist/maplibre-gl.d.ts +13304 -0
- package/dist/maplibre-gl.js +59 -0
- package/dist/maplibre-gl.js.map +1 -0
- package/dist/package.json +1 -0
- package/package.json +192 -0
- package/src/css/maplibre-gl.css +854 -0
- package/src/css/svg/maplibregl-ctrl-attrib.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-compass.svg +4 -0
- package/src/css/svg/maplibregl-ctrl-fullscreen.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-geolocate.svg +5 -0
- package/src/css/svg/maplibregl-ctrl-logo.svg +11 -0
- package/src/css/svg/maplibregl-ctrl-shrink.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-terrain.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-zoom-in.svg +3 -0
- package/src/css/svg/maplibregl-ctrl-zoom-out.svg +3 -0
- package/src/data/array_types.g.ts +1130 -0
- package/src/data/bucket/circle_attributes.ts +8 -0
- package/src/data/bucket/circle_bucket.ts +197 -0
- package/src/data/bucket/fill_attributes.ts +8 -0
- package/src/data/bucket/fill_bucket.test.ts +95 -0
- package/src/data/bucket/fill_bucket.ts +228 -0
- package/src/data/bucket/fill_extrusion_attributes.ts +13 -0
- package/src/data/bucket/fill_extrusion_bucket.ts +305 -0
- package/src/data/bucket/heatmap_bucket.ts +12 -0
- package/src/data/bucket/line_attributes.ts +8 -0
- package/src/data/bucket/line_attributes_ext.ts +8 -0
- package/src/data/bucket/line_bucket.test.ts +142 -0
- package/src/data/bucket/line_bucket.ts +592 -0
- package/src/data/bucket/pattern_attributes.ts +9 -0
- package/src/data/bucket/pattern_bucket_features.ts +57 -0
- package/src/data/bucket/symbol_attributes.ts +122 -0
- package/src/data/bucket/symbol_bucket.test.ts +243 -0
- package/src/data/bucket/symbol_bucket.ts +975 -0
- package/src/data/bucket.ts +123 -0
- package/src/data/dem_data.test.ts +237 -0
- package/src/data/dem_data.ts +171 -0
- package/src/data/evaluation_feature.ts +18 -0
- package/src/data/extent.ts +13 -0
- package/src/data/feature_index.ts +337 -0
- package/src/data/feature_position_map.test.ts +33 -0
- package/src/data/feature_position_map.ts +126 -0
- package/src/data/index_array_type.ts +9 -0
- package/src/data/load_geometry.test.ts +49 -0
- package/src/data/load_geometry.ts +44 -0
- package/src/data/pos3d_attributes.ts +5 -0
- package/src/data/pos_attributes.ts +5 -0
- package/src/data/program_configuration.ts +735 -0
- package/src/data/raster_bounds_attributes.ts +6 -0
- package/src/data/segment.ts +89 -0
- package/src/geo/edge_insets.test.ts +83 -0
- package/src/geo/edge_insets.ts +146 -0
- package/src/geo/lng_lat.test.ts +65 -0
- package/src/geo/lng_lat.ts +169 -0
- package/src/geo/lng_lat_bounds.test.ts +357 -0
- package/src/geo/lng_lat_bounds.ts +356 -0
- package/src/geo/mercator_coordinate.test.ts +34 -0
- package/src/geo/mercator_coordinate.ts +157 -0
- package/src/geo/projection/projection.ts +72 -0
- package/src/geo/transform.test.ts +509 -0
- package/src/geo/transform.ts +1072 -0
- package/src/gl/color_mode.ts +31 -0
- package/src/gl/context.ts +321 -0
- package/src/gl/cull_face_mode.ts +22 -0
- package/src/gl/depth_mode.ts +26 -0
- package/src/gl/framebuffer.ts +48 -0
- package/src/gl/index_buffer.ts +55 -0
- package/src/gl/render_pool.test.ts +69 -0
- package/src/gl/render_pool.ts +93 -0
- package/src/gl/state.test.ts +125 -0
- package/src/gl/stencil_mode.ts +27 -0
- package/src/gl/types.ts +59 -0
- package/src/gl/value.ts +534 -0
- package/src/gl/vertex_buffer.test.ts +57 -0
- package/src/gl/vertex_buffer.ts +111 -0
- package/src/gl/webgl2.ts +12 -0
- package/src/index.test.ts +121 -0
- package/src/index.ts +250 -0
- package/src/render/draw_background.ts +53 -0
- package/src/render/draw_circle.ts +113 -0
- package/src/render/draw_collision_debug.ts +168 -0
- package/src/render/draw_custom.test.ts +73 -0
- package/src/render/draw_custom.ts +45 -0
- package/src/render/draw_debug.test.ts +122 -0
- package/src/render/draw_debug.ts +148 -0
- package/src/render/draw_fill.test.ts +137 -0
- package/src/render/draw_fill.ts +128 -0
- package/src/render/draw_fill_extrusion.ts +97 -0
- package/src/render/draw_heatmap.ts +228 -0
- package/src/render/draw_hillshade.ts +119 -0
- package/src/render/draw_line.ts +125 -0
- package/src/render/draw_raster.ts +133 -0
- package/src/render/draw_sky.ts +44 -0
- package/src/render/draw_symbol.test.ts +223 -0
- package/src/render/draw_symbol.ts +499 -0
- package/src/render/draw_terrain.ts +99 -0
- package/src/render/glyph_atlas.ts +83 -0
- package/src/render/glyph_manager.test.ts +147 -0
- package/src/render/glyph_manager.ts +198 -0
- package/src/render/image_atlas.ts +159 -0
- package/src/render/image_manager.ts +337 -0
- package/src/render/line_atlas.test.ts +38 -0
- package/src/render/line_atlas.ts +214 -0
- package/src/render/mesh.ts +25 -0
- package/src/render/painter.test.ts +51 -0
- package/src/render/painter.ts +666 -0
- package/src/render/program/background_program.ts +100 -0
- package/src/render/program/circle_program.ts +61 -0
- package/src/render/program/clipping_mask_program.ts +19 -0
- package/src/render/program/collision_program.ts +47 -0
- package/src/render/program/debug_program.ts +29 -0
- package/src/render/program/fill_extrusion_program.ts +120 -0
- package/src/render/program/fill_program.ts +121 -0
- package/src/render/program/heatmap_program.ts +76 -0
- package/src/render/program/hillshade_program.ts +116 -0
- package/src/render/program/line_program.ts +207 -0
- package/src/render/program/pattern.ts +102 -0
- package/src/render/program/program_uniforms.ts +46 -0
- package/src/render/program/raster_program.ts +88 -0
- package/src/render/program/sky_program.ts +28 -0
- package/src/render/program/symbol_program.ts +266 -0
- package/src/render/program/terrain_program.ts +116 -0
- package/src/render/program.ts +233 -0
- package/src/render/render_to_texture.test.ts +151 -0
- package/src/render/render_to_texture.ts +197 -0
- package/src/render/terrain.test.ts +322 -0
- package/src/render/terrain.ts +464 -0
- package/src/render/texture.ts +114 -0
- package/src/render/uniform_binding.test.ts +122 -0
- package/src/render/uniform_binding.ts +157 -0
- package/src/render/update_pattern_positions_in_program.test.ts +74 -0
- package/src/render/update_pattern_positions_in_program.ts +50 -0
- package/src/render/vertex_array_object.ts +163 -0
- package/src/shaders/README.md +42 -0
- package/src/shaders/_prelude.fragment.glsl +19 -0
- package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
- package/src/shaders/_prelude.vertex.glsl +148 -0
- package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
- package/src/shaders/background.fragment.glsl +10 -0
- package/src/shaders/background.fragment.glsl.g.ts +2 -0
- package/src/shaders/background.vertex.glsl +7 -0
- package/src/shaders/background.vertex.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.fragment.glsl +28 -0
- package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/background_pattern.vertex.glsl +19 -0
- package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/circle.fragment.glsl +34 -0
- package/src/shaders/circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/circle.vertex.glsl +68 -0
- package/src/shaders/circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.fragment.glsl +3 -0
- package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
- package/src/shaders/clipping_mask.vertex.glsl +7 -0
- package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_box.fragment.glsl +20 -0
- package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_box.vertex.glsl +27 -0
- package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.fragment.glsl +17 -0
- package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
- package/src/shaders/collision_circle.vertex.glsl +59 -0
- package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
- package/src/shaders/debug.fragment.glsl +9 -0
- package/src/shaders/debug.fragment.glsl.g.ts +2 -0
- package/src/shaders/debug.vertex.glsl +12 -0
- package/src/shaders/debug.vertex.glsl.g.ts +2 -0
- package/src/shaders/encode_attribute.test.ts +11 -0
- package/src/shaders/encode_attribute.ts +13 -0
- package/src/shaders/fill.fragment.glsl +13 -0
- package/src/shaders/fill.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill.vertex.glsl +13 -0
- package/src/shaders/fill.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.fragment.glsl +9 -0
- package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion.vertex.glsl +84 -0
- package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl +47 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl +96 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.fragment.glsl +17 -0
- package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline.vertex.glsl +17 -0
- package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl +44 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.fragment.glsl +39 -0
- package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/fill_pattern.vertex.glsl +39 -0
- package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap.fragment.glsl +22 -0
- package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap.vertex.glsl +54 -0
- package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.fragment.glsl +15 -0
- package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
- package/src/shaders/heatmap_texture.vertex.glsl +11 -0
- package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade.fragment.glsl +52 -0
- package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade.vertex.glsl +11 -0
- package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.fragment.glsl +77 -0
- package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
- package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
- package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
- package/src/shaders/line.fragment.glsl +30 -0
- package/src/shaders/line.fragment.glsl.g.ts +2 -0
- package/src/shaders/line.vertex.glsl +89 -0
- package/src/shaders/line.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.fragment.glsl +34 -0
- package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_gradient.vertex.glsl +92 -0
- package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.fragment.glsl +77 -0
- package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_pattern.vertex.glsl +103 -0
- package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.fragment.glsl +45 -0
- package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/line_sdf.vertex.glsl +101 -0
- package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/raster.fragment.glsl +53 -0
- package/src/shaders/raster.fragment.glsl.g.ts +2 -0
- package/src/shaders/raster.vertex.glsl +21 -0
- package/src/shaders/raster.vertex.glsl.g.ts +2 -0
- package/src/shaders/shaders.ts +197 -0
- package/src/shaders/sky.fragment.glsl +17 -0
- package/src/shaders/sky.fragment.glsl.g.ts +2 -0
- package/src/shaders/sky.vertex.glsl +5 -0
- package/src/shaders/sky.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_icon.fragment.glsl +17 -0
- package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_icon.vertex.glsl +117 -0
- package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.fragment.glsl +58 -0
- package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_sdf.vertex.glsl +142 -0
- package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.fragment.glsl +68 -0
- package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
- package/src/shaders/symbol_text_and_icon.vertex.glsl +140 -0
- package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
- package/src/shaders/terrain.fragment.glsl +32 -0
- package/src/shaders/terrain.fragment.glsl.g.ts +2 -0
- package/src/shaders/terrain.vertex.glsl +17 -0
- package/src/shaders/terrain.vertex.glsl.g.ts +2 -0
- package/src/shaders/terrain_coords.fragment.glsl +11 -0
- package/src/shaders/terrain_coords.fragment.glsl.g.ts +2 -0
- package/src/shaders/terrain_coords.vertex.glsl +13 -0
- package/src/shaders/terrain_coords.vertex.glsl.g.ts +2 -0
- package/src/shaders/terrain_depth.fragment.glsl +15 -0
- package/src/shaders/terrain_depth.fragment.glsl.g.ts +2 -0
- package/src/shaders/terrain_depth.vertex.glsl +13 -0
- package/src/shaders/terrain_depth.vertex.glsl.g.ts +2 -0
- package/src/source/canvas_source.test.ts +210 -0
- package/src/source/canvas_source.ts +227 -0
- package/src/source/geojson_source.test.ts +492 -0
- package/src/source/geojson_source.ts +431 -0
- package/src/source/geojson_source_diff.test.ts +364 -0
- package/src/source/geojson_source_diff.ts +172 -0
- package/src/source/geojson_worker_source.test.ts +399 -0
- package/src/source/geojson_worker_source.ts +303 -0
- package/src/source/geojson_wrapper.test.ts +32 -0
- package/src/source/geojson_wrapper.ts +81 -0
- package/src/source/image_source.test.ts +235 -0
- package/src/source/image_source.ts +338 -0
- package/src/source/load_tilejson.ts +47 -0
- package/src/source/pixels_to_tile_units.ts +25 -0
- package/src/source/protocol_crud.ts +48 -0
- package/src/source/query_features.test.ts +31 -0
- package/src/source/query_features.ts +252 -0
- package/src/source/raster_dem_tile_source.test.ts +158 -0
- package/src/source/raster_dem_tile_source.ts +166 -0
- package/src/source/raster_dem_tile_worker_source.test.ts +36 -0
- package/src/source/raster_dem_tile_worker_source.ts +38 -0
- package/src/source/raster_tile_source.test.ts +206 -0
- package/src/source/raster_tile_source.ts +227 -0
- package/src/source/rtl_text_plugin_main_thread.test.ts +170 -0
- package/src/source/rtl_text_plugin_main_thread.ts +89 -0
- package/src/source/rtl_text_plugin_status.ts +33 -0
- package/src/source/rtl_text_plugin_worker.ts +49 -0
- package/src/source/source.test.ts +41 -0
- package/src/source/source.ts +186 -0
- package/src/source/source_cache.test.ts +2069 -0
- package/src/source/source_cache.ts +1102 -0
- package/src/source/source_state.ts +157 -0
- package/src/source/terrain_source_cache.test.ts +105 -0
- package/src/source/terrain_source_cache.ts +204 -0
- package/src/source/tile.test.ts +290 -0
- package/src/source/tile.ts +478 -0
- package/src/source/tile_bounds.ts +34 -0
- package/src/source/tile_cache.test.ts +130 -0
- package/src/source/tile_cache.ts +208 -0
- package/src/source/tile_id.test.ts +112 -0
- package/src/source/tile_id.ts +221 -0
- package/src/source/vector_tile_source.test.ts +401 -0
- package/src/source/vector_tile_source.ts +283 -0
- package/src/source/vector_tile_worker_source.test.ts +396 -0
- package/src/source/vector_tile_worker_source.ts +199 -0
- package/src/source/video_source.test.ts +124 -0
- package/src/source/video_source.ts +204 -0
- package/src/source/worker.test.ts +233 -0
- package/src/source/worker.ts +301 -0
- package/src/source/worker_source.ts +117 -0
- package/src/source/worker_tile.test.ts +226 -0
- package/src/source/worker_tile.ts +208 -0
- package/src/style/create_style_layer.ts +39 -0
- package/src/style/evaluation_parameters.ts +62 -0
- package/src/style/format_section_override.test.ts +62 -0
- package/src/style/format_section_override.ts +50 -0
- package/src/style/light.test.ts +86 -0
- package/src/style/light.ts +135 -0
- package/src/style/load_glyph_range.test.ts +40 -0
- package/src/style/load_glyph_range.ts +32 -0
- package/src/style/load_sprite.test.ts +227 -0
- package/src/style/load_sprite.ts +71 -0
- package/src/style/parse_glyph_pbf.ts +42 -0
- package/src/style/pauseable_placement.ts +138 -0
- package/src/style/properties.ts +726 -0
- package/src/style/query_utils.test.ts +107 -0
- package/src/style/query_utils.ts +70 -0
- package/src/style/sky.ts +127 -0
- package/src/style/style.test.ts +2654 -0
- package/src/style/style.ts +1814 -0
- package/src/style/style_glyph.ts +25 -0
- package/src/style/style_image.ts +188 -0
- package/src/style/style_layer/background_style_layer.ts +17 -0
- package/src/style/style_layer/background_style_layer_properties.g.ts +40 -0
- package/src/style/style_layer/circle_style_layer.ts +98 -0
- package/src/style/style_layer/circle_style_layer_properties.g.ts +76 -0
- package/src/style/style_layer/custom_style_layer.ts +233 -0
- package/src/style/style_layer/fill_extrusion_style_layer.ts +224 -0
- package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +55 -0
- package/src/style/style_layer/fill_style_layer.test.ts +37 -0
- package/src/style/style_layer/fill_style_layer.ts +65 -0
- package/src/style/style_layer/fill_style_layer_properties.g.ts +64 -0
- package/src/style/style_layer/heatmap_style_layer.ts +74 -0
- package/src/style/style_layer/heatmap_style_layer_properties.g.ts +46 -0
- package/src/style/style_layer/hillshade_style_layer.ts +21 -0
- package/src/style/style_layer/hillshade_style_layer_properties.g.ts +49 -0
- package/src/style/style_layer/line_style_layer.test.ts +50 -0
- package/src/style/style_layer/line_style_layer.ts +131 -0
- package/src/style/style_layer/line_style_layer_properties.g.ts +88 -0
- package/src/style/style_layer/overlap_mode.test.ts +57 -0
- package/src/style/style_layer/overlap_mode.ts +25 -0
- package/src/style/style_layer/raster_style_layer.ts +17 -0
- package/src/style/style_layer/raster_style_layer_properties.g.ts +55 -0
- package/src/style/style_layer/symbol_style_layer.ts +195 -0
- package/src/style/style_layer/symbol_style_layer_properties.g.ts +218 -0
- package/src/style/style_layer/typed_style_layer.ts +9 -0
- package/src/style/style_layer/variable_text_anchor.test.ts +117 -0
- package/src/style/style_layer/variable_text_anchor.ts +163 -0
- package/src/style/style_layer.test.ts +372 -0
- package/src/style/style_layer.ts +287 -0
- package/src/style/style_layer_index.test.ts +99 -0
- package/src/style/style_layer_index.ts +78 -0
- package/src/style/validate_style.ts +53 -0
- package/src/style/zoom_history.ts +40 -0
- package/src/symbol/anchor.test.ts +14 -0
- package/src/symbol/anchor.ts +22 -0
- package/src/symbol/check_max_angle.test.ts +54 -0
- package/src/symbol/check_max_angle.ts +76 -0
- package/src/symbol/clip_line.test.ts +154 -0
- package/src/symbol/clip_line.ts +66 -0
- package/src/symbol/collision_feature.test.ts +98 -0
- package/src/symbol/collision_feature.ts +114 -0
- package/src/symbol/collision_index.test.ts +19 -0
- package/src/symbol/collision_index.ts +618 -0
- package/src/symbol/cross_tile_symbol_index.test.ts +260 -0
- package/src/symbol/cross_tile_symbol_index.ts +367 -0
- package/src/symbol/get_anchors.test.ts +113 -0
- package/src/symbol/get_anchors.ts +167 -0
- package/src/symbol/grid_index.test.ts +75 -0
- package/src/symbol/grid_index.ts +414 -0
- package/src/symbol/merge_lines.test.ts +30 -0
- package/src/symbol/merge_lines.ts +80 -0
- package/src/symbol/one_em.ts +3 -0
- package/src/symbol/opacity_state.ts +23 -0
- package/src/symbol/path_interpolator.test.ts +134 -0
- package/src/symbol/path_interpolator.ts +55 -0
- package/src/symbol/placement.ts +1371 -0
- package/src/symbol/projection.test.ts +171 -0
- package/src/symbol/projection.ts +833 -0
- package/src/symbol/quads.test.ts +157 -0
- package/src/symbol/quads.ts +349 -0
- package/src/symbol/shaping.test.ts +360 -0
- package/src/symbol/shaping.ts +911 -0
- package/src/symbol/symbol_layout.ts +739 -0
- package/src/symbol/symbol_size.ts +129 -0
- package/src/symbol/symbol_style_layer.test.ts +103 -0
- package/src/symbol/transform_text.ts +27 -0
- package/src/ui/anchor.ts +27 -0
- package/src/ui/camera.test.ts +2301 -0
- package/src/ui/camera.ts +1520 -0
- package/src/ui/control/attribution_control.test.ts +543 -0
- package/src/ui/control/attribution_control.ts +209 -0
- package/src/ui/control/control.ts +67 -0
- package/src/ui/control/fullscreen_control.test.ts +114 -0
- package/src/ui/control/fullscreen_control.ts +189 -0
- package/src/ui/control/geolocate_control.test.ts +619 -0
- package/src/ui/control/geolocate_control.ts +725 -0
- package/src/ui/control/logo_control.test.ts +88 -0
- package/src/ui/control/logo_control.ts +86 -0
- package/src/ui/control/navigation_control.test.ts +238 -0
- package/src/ui/control/navigation_control.ts +294 -0
- package/src/ui/control/scale_control.test.ts +52 -0
- package/src/ui/control/scale_control.ts +152 -0
- package/src/ui/control/terrain_control.test.ts +58 -0
- package/src/ui/control/terrain_control.ts +74 -0
- package/src/ui/default_locale.ts +25 -0
- package/src/ui/events.ts +758 -0
- package/src/ui/handler/box_zoom.test.ts +163 -0
- package/src/ui/handler/box_zoom.ts +171 -0
- package/src/ui/handler/click_zoom.ts +55 -0
- package/src/ui/handler/cooperative_gestures.test.ts +338 -0
- package/src/ui/handler/cooperative_gestures.ts +111 -0
- package/src/ui/handler/dblclick_zoom.test.ts +151 -0
- package/src/ui/handler/drag_handler.ts +174 -0
- package/src/ui/handler/drag_move_state_manager.ts +115 -0
- package/src/ui/handler/drag_pan.test.ts +487 -0
- package/src/ui/handler/drag_rotate.test.ts +859 -0
- package/src/ui/handler/handler_util.ts +10 -0
- package/src/ui/handler/keyboard.test.ts +235 -0
- package/src/ui/handler/keyboard.ts +212 -0
- package/src/ui/handler/map_event.test.ts +158 -0
- package/src/ui/handler/map_event.ts +161 -0
- package/src/ui/handler/mouse.ts +92 -0
- package/src/ui/handler/mouse_handler_interface.test.ts +111 -0
- package/src/ui/handler/mouse_rotate.test.ts +62 -0
- package/src/ui/handler/one_finger_touch_drag.ts +45 -0
- package/src/ui/handler/one_finger_touch_drag_handler_interface.test.ts +77 -0
- package/src/ui/handler/scroll_zoom.test.ts +382 -0
- package/src/ui/handler/scroll_zoom.ts +379 -0
- package/src/ui/handler/shim/dblclick_zoom.ts +64 -0
- package/src/ui/handler/shim/drag_pan.ts +104 -0
- package/src/ui/handler/shim/drag_rotate.ts +76 -0
- package/src/ui/handler/shim/two_fingers_touch.ts +112 -0
- package/src/ui/handler/tap_drag_zoom.test.ts +113 -0
- package/src/ui/handler/tap_drag_zoom.ts +112 -0
- package/src/ui/handler/tap_recognizer.ts +138 -0
- package/src/ui/handler/tap_zoom.ts +98 -0
- package/src/ui/handler/touch_pan.ts +115 -0
- package/src/ui/handler/transform-provider.ts +44 -0
- package/src/ui/handler/two_fingers_touch.test.ts +283 -0
- package/src/ui/handler/two_fingers_touch.ts +336 -0
- package/src/ui/handler_inertia.ts +157 -0
- package/src/ui/handler_manager.ts +637 -0
- package/src/ui/hash.test.ts +404 -0
- package/src/ui/hash.ts +153 -0
- package/src/ui/map.ts +3393 -0
- package/src/ui/map_tests/map_animation.test.ts +61 -0
- package/src/ui/map_tests/map_basic.test.ts +223 -0
- package/src/ui/map_tests/map_bounds.test.ts +123 -0
- package/src/ui/map_tests/map_calculate_camera_options.test.ts +113 -0
- package/src/ui/map_tests/map_canvas.test.ts +59 -0
- package/src/ui/map_tests/map_control.test.ts +61 -0
- package/src/ui/map_tests/map_disable_handlers.test.ts +38 -0
- package/src/ui/map_tests/map_events.test.ts +1001 -0
- package/src/ui/map_tests/map_feature_state.test.ts +421 -0
- package/src/ui/map_tests/map_images.test.ts +175 -0
- package/src/ui/map_tests/map_is_moving.test.ts +164 -0
- package/src/ui/map_tests/map_is_rotating.test.ts +62 -0
- package/src/ui/map_tests/map_is_zooming.test.ts +86 -0
- package/src/ui/map_tests/map_layer.test.ts +457 -0
- package/src/ui/map_tests/map_options.test.ts +64 -0
- package/src/ui/map_tests/map_pitch.test.ts +90 -0
- package/src/ui/map_tests/map_pixel_ratio.test.ts +75 -0
- package/src/ui/map_tests/map_query_rendered_features.test.ts +93 -0
- package/src/ui/map_tests/map_render.test.ts +90 -0
- package/src/ui/map_tests/map_request_render_frame.test.ts +51 -0
- package/src/ui/map_tests/map_resize.test.ts +120 -0
- package/src/ui/map_tests/map_style.test.ts +541 -0
- package/src/ui/map_tests/map_terrian.test.ts +104 -0
- package/src/ui/map_tests/map_webgl.test.ts +72 -0
- package/src/ui/map_tests/map_world_copies.test.ts +103 -0
- package/src/ui/map_tests/map_zoom.test.ts +95 -0
- package/src/ui/marker.test.ts +1149 -0
- package/src/ui/marker.ts +880 -0
- package/src/ui/popup.test.ts +827 -0
- package/src/ui/popup.ts +717 -0
- package/src/util/abort_error.ts +21 -0
- package/src/util/actor.test.ts +218 -0
- package/src/util/actor.ts +241 -0
- package/src/util/actor_messages.ts +149 -0
- package/src/util/ajax.test.ts +237 -0
- package/src/util/ajax.ts +297 -0
- package/src/util/browser.test.ts +23 -0
- package/src/util/browser.ts +63 -0
- package/src/util/color_ramp.test.ts +105 -0
- package/src/util/color_ramp.ts +56 -0
- package/src/util/config.ts +29 -0
- package/src/util/dictionary_coder.ts +23 -0
- package/src/util/dispatcher.test.ts +76 -0
- package/src/util/dispatcher.ts +78 -0
- package/src/util/dom.ts +135 -0
- package/src/util/evented.test.ts +231 -0
- package/src/util/evented.ts +178 -0
- package/src/util/find_pole_of_inaccessibility.test.ts +21 -0
- package/src/util/find_pole_of_inaccessibility.ts +130 -0
- package/src/util/geolocation_support.test.ts +43 -0
- package/src/util/geolocation_support.ts +23 -0
- package/src/util/global_worker_pool.ts +65 -0
- package/src/util/image.ts +150 -0
- package/src/util/image_request.test.ts +408 -0
- package/src/util/image_request.ts +246 -0
- package/src/util/intersection_tests.ts +206 -0
- package/src/util/is_char_in_unicode_block.test.ts +15 -0
- package/src/util/is_char_in_unicode_block.ts +345 -0
- package/src/util/offscreen_canvas_distorted.test.ts +13 -0
- package/src/util/offscreen_canvas_distorted.ts +39 -0
- package/src/util/offscreen_canvas_supported.ts +11 -0
- package/src/util/performance.ts +117 -0
- package/src/util/primitives.test.ts +140 -0
- package/src/util/primitives.ts +143 -0
- package/src/util/request_manager.ts +42 -0
- package/src/util/resolve_tokens.test.ts +45 -0
- package/src/util/resolve_tokens.ts +17 -0
- package/src/util/script_detection.test.ts +138 -0
- package/src/util/script_detection.ts +376 -0
- package/src/util/smart_wrap.test.ts +97 -0
- package/src/util/smart_wrap.ts +58 -0
- package/src/util/struct_array.test.ts +101 -0
- package/src/util/struct_array.ts +246 -0
- package/src/util/style.test.ts +34 -0
- package/src/util/style.ts +28 -0
- package/src/util/task_queue.test.ts +114 -0
- package/src/util/task_queue.ts +64 -0
- package/src/util/test/util.ts +185 -0
- package/src/util/throttle.test.ts +42 -0
- package/src/util/throttle.ts +28 -0
- package/src/util/throttled_invoker.ts +41 -0
- package/src/util/transferable_grid_index.test.ts +56 -0
- package/src/util/transferable_grid_index.ts +214 -0
- package/src/util/util.test.ts +414 -0
- package/src/util/util.ts +724 -0
- package/src/util/vectortile_to_geojson.ts +72 -0
- package/src/util/verticalize_punctuation.ts +110 -0
- package/src/util/web_worker.ts +16 -0
- package/src/util/web_worker_transfer.test.ts +153 -0
- package/src/util/web_worker_transfer.ts +254 -0
- package/src/util/webp_supported.ts +63 -0
- package/src/util/worker_pool.test.ts +43 -0
- package/src/util/worker_pool.ts +58 -0
- package/src/util/world_bounds.test.ts +59 -0
- package/src/util/world_bounds.ts +46 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
uniform lowp float u_device_pixel_ratio;
|
|
3
|
+
uniform sampler2D u_image;
|
|
4
|
+
uniform float u_sdfgamma;
|
|
5
|
+
uniform float u_mix;
|
|
6
|
+
|
|
7
|
+
in vec2 v_normal;
|
|
8
|
+
in vec2 v_width2;
|
|
9
|
+
in vec2 v_tex_a;
|
|
10
|
+
in vec2 v_tex_b;
|
|
11
|
+
in float v_gamma_scale;
|
|
12
|
+
|
|
13
|
+
#pragma mapbox: define highp vec4 color
|
|
14
|
+
#pragma mapbox: define lowp float blur
|
|
15
|
+
#pragma mapbox: define lowp float opacity
|
|
16
|
+
#pragma mapbox: define mediump float width
|
|
17
|
+
#pragma mapbox: define lowp float floorwidth
|
|
18
|
+
|
|
19
|
+
void main() {
|
|
20
|
+
#pragma mapbox: initialize highp vec4 color
|
|
21
|
+
#pragma mapbox: initialize lowp float blur
|
|
22
|
+
#pragma mapbox: initialize lowp float opacity
|
|
23
|
+
#pragma mapbox: initialize mediump float width
|
|
24
|
+
#pragma mapbox: initialize lowp float floorwidth
|
|
25
|
+
|
|
26
|
+
// Calculate the distance of the pixel from the line in pixels.
|
|
27
|
+
float dist = length(v_normal) * v_width2.s;
|
|
28
|
+
|
|
29
|
+
// Calculate the antialiasing fade factor. This is either when fading in
|
|
30
|
+
// the line in case of an offset line (v_width2.t) or when fading out
|
|
31
|
+
// (v_width2.s)
|
|
32
|
+
float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale;
|
|
33
|
+
float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0);
|
|
34
|
+
|
|
35
|
+
float sdfdist_a = texture(u_image, v_tex_a).a;
|
|
36
|
+
float sdfdist_b = texture(u_image, v_tex_b).a;
|
|
37
|
+
float sdfdist = mix(sdfdist_a, sdfdist_b, u_mix);
|
|
38
|
+
alpha *= smoothstep(0.5 - u_sdfgamma / floorwidth, 0.5 + u_sdfgamma / floorwidth, sdfdist);
|
|
39
|
+
|
|
40
|
+
fragColor = color * (alpha * opacity);
|
|
41
|
+
|
|
42
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
43
|
+
fragColor = vec4(1.0);
|
|
44
|
+
#endif
|
|
45
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}';
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// floor(127 / 2) == 63.0
|
|
2
|
+
// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is
|
|
3
|
+
// stored in a byte (-128..127). we scale regular normals up to length 63, but
|
|
4
|
+
// there are also "special" normals that have a bigger length (of up to 126 in
|
|
5
|
+
// this case).
|
|
6
|
+
// #define scale 63.0
|
|
7
|
+
#define scale 0.015873016
|
|
8
|
+
|
|
9
|
+
// We scale the distance before adding it to the buffers so that we can store
|
|
10
|
+
// long distances for long segments. Use this value to unscale the distance.
|
|
11
|
+
#define LINE_DISTANCE_SCALE 2.0
|
|
12
|
+
|
|
13
|
+
in vec2 a_pos_normal;
|
|
14
|
+
in vec4 a_data;
|
|
15
|
+
|
|
16
|
+
uniform mat4 u_matrix;
|
|
17
|
+
uniform mediump float u_ratio;
|
|
18
|
+
uniform lowp float u_device_pixel_ratio;
|
|
19
|
+
uniform vec2 u_patternscale_a;
|
|
20
|
+
uniform float u_tex_y_a;
|
|
21
|
+
uniform vec2 u_patternscale_b;
|
|
22
|
+
uniform float u_tex_y_b;
|
|
23
|
+
uniform vec2 u_units_to_pixels;
|
|
24
|
+
|
|
25
|
+
out vec2 v_normal;
|
|
26
|
+
out vec2 v_width2;
|
|
27
|
+
out vec2 v_tex_a;
|
|
28
|
+
out vec2 v_tex_b;
|
|
29
|
+
out float v_gamma_scale;
|
|
30
|
+
|
|
31
|
+
#pragma mapbox: define highp vec4 color
|
|
32
|
+
#pragma mapbox: define lowp float blur
|
|
33
|
+
#pragma mapbox: define lowp float opacity
|
|
34
|
+
#pragma mapbox: define mediump float gapwidth
|
|
35
|
+
#pragma mapbox: define lowp float offset
|
|
36
|
+
#pragma mapbox: define mediump float width
|
|
37
|
+
#pragma mapbox: define lowp float floorwidth
|
|
38
|
+
|
|
39
|
+
void main() {
|
|
40
|
+
#pragma mapbox: initialize highp vec4 color
|
|
41
|
+
#pragma mapbox: initialize lowp float blur
|
|
42
|
+
#pragma mapbox: initialize lowp float opacity
|
|
43
|
+
#pragma mapbox: initialize mediump float gapwidth
|
|
44
|
+
#pragma mapbox: initialize lowp float offset
|
|
45
|
+
#pragma mapbox: initialize mediump float width
|
|
46
|
+
#pragma mapbox: initialize lowp float floorwidth
|
|
47
|
+
|
|
48
|
+
// the distance over which the line edge fades out.
|
|
49
|
+
// Retina devices need a smaller distance to avoid aliasing.
|
|
50
|
+
float ANTIALIASING = 1.0 / u_device_pixel_ratio / 2.0;
|
|
51
|
+
|
|
52
|
+
vec2 a_extrude = a_data.xy - 128.0;
|
|
53
|
+
float a_direction = mod(a_data.z, 4.0) - 1.0;
|
|
54
|
+
float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
|
|
55
|
+
|
|
56
|
+
vec2 pos = floor(a_pos_normal * 0.5);
|
|
57
|
+
|
|
58
|
+
// x is 1 if it's a round cap, 0 otherwise
|
|
59
|
+
// y is 1 if the normal points up, and -1 if it points down
|
|
60
|
+
// We store these in the least significant bit of a_pos_normal
|
|
61
|
+
mediump vec2 normal = a_pos_normal - 2.0 * pos;
|
|
62
|
+
normal.y = normal.y * 2.0 - 1.0;
|
|
63
|
+
v_normal = normal;
|
|
64
|
+
|
|
65
|
+
// these transformations used to be applied in the JS and native code bases.
|
|
66
|
+
// moved them into the shader for clarity and simplicity.
|
|
67
|
+
gapwidth = gapwidth / 2.0;
|
|
68
|
+
float halfwidth = width / 2.0;
|
|
69
|
+
offset = -1.0 * offset;
|
|
70
|
+
|
|
71
|
+
float inset = gapwidth + (gapwidth > 0.0 ? ANTIALIASING : 0.0);
|
|
72
|
+
float outset = gapwidth + halfwidth * (gapwidth > 0.0 ? 2.0 : 1.0) + (halfwidth == 0.0 ? 0.0 : ANTIALIASING);
|
|
73
|
+
|
|
74
|
+
// Scale the extrusion vector down to a normal and then up by the line width
|
|
75
|
+
// of this vertex.
|
|
76
|
+
mediump vec2 dist =outset * a_extrude * scale;
|
|
77
|
+
|
|
78
|
+
// Calculate the offset when drawing a line that is to the side of the actual line.
|
|
79
|
+
// We do this by creating a vector that points towards the extrude, but rotate
|
|
80
|
+
// it when we're drawing round end points (a_direction = -1 or 1) since their
|
|
81
|
+
// extrude vector points in another direction.
|
|
82
|
+
mediump float u = 0.5 * a_direction;
|
|
83
|
+
mediump float t = 1.0 - abs(u);
|
|
84
|
+
mediump vec2 offset2 = offset * a_extrude * scale * normal.y * mat2(t, -u, u, t);
|
|
85
|
+
|
|
86
|
+
vec4 projected_extrude = u_matrix * vec4(dist / u_ratio, 0.0, 0.0);
|
|
87
|
+
gl_Position = u_matrix * vec4(pos + offset2 / u_ratio, 0.0, 1.0) + projected_extrude;
|
|
88
|
+
|
|
89
|
+
// calculate how much the perspective view squishes or stretches the extrude
|
|
90
|
+
#ifdef TERRAIN3D
|
|
91
|
+
v_gamma_scale = 1.0; // not needed, because this is done automatically via the mesh
|
|
92
|
+
#else
|
|
93
|
+
float extrude_length_without_perspective = length(dist);
|
|
94
|
+
float extrude_length_with_perspective = length(projected_extrude.xy / gl_Position.w * u_units_to_pixels);
|
|
95
|
+
v_gamma_scale = extrude_length_without_perspective / extrude_length_with_perspective;
|
|
96
|
+
#endif
|
|
97
|
+
|
|
98
|
+
v_tex_a = vec2(a_linesofar * u_patternscale_a.x / floorwidth, normal.y * u_patternscale_a.y + u_tex_y_a);
|
|
99
|
+
v_tex_b = vec2(a_linesofar * u_patternscale_b.x / floorwidth, normal.y * u_patternscale_b.y + u_tex_y_b);
|
|
100
|
+
v_width2 = vec2(outset, inset);
|
|
101
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default '\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
uniform float u_fade_t;
|
|
2
|
+
uniform float u_opacity;
|
|
3
|
+
uniform sampler2D u_image0;
|
|
4
|
+
uniform sampler2D u_image1;
|
|
5
|
+
|
|
6
|
+
in vec2 v_pos0;
|
|
7
|
+
in vec2 v_pos1;
|
|
8
|
+
|
|
9
|
+
uniform float u_brightness_low;
|
|
10
|
+
uniform float u_brightness_high;
|
|
11
|
+
|
|
12
|
+
uniform float u_saturation_factor;
|
|
13
|
+
uniform float u_contrast_factor;
|
|
14
|
+
uniform vec3 u_spin_weights;
|
|
15
|
+
|
|
16
|
+
void main() {
|
|
17
|
+
|
|
18
|
+
// read and cross-fade colors from the main and parent tiles
|
|
19
|
+
vec4 color0 = texture(u_image0, v_pos0);
|
|
20
|
+
vec4 color1 = texture(u_image1, v_pos1);
|
|
21
|
+
if (color0.a > 0.0) {
|
|
22
|
+
color0.rgb = color0.rgb / color0.a;
|
|
23
|
+
}
|
|
24
|
+
if (color1.a > 0.0) {
|
|
25
|
+
color1.rgb = color1.rgb / color1.a;
|
|
26
|
+
}
|
|
27
|
+
vec4 color = mix(color0, color1, u_fade_t);
|
|
28
|
+
color.a *= u_opacity;
|
|
29
|
+
vec3 rgb = color.rgb;
|
|
30
|
+
|
|
31
|
+
// spin
|
|
32
|
+
rgb = vec3(
|
|
33
|
+
dot(rgb, u_spin_weights.xyz),
|
|
34
|
+
dot(rgb, u_spin_weights.zxy),
|
|
35
|
+
dot(rgb, u_spin_weights.yzx));
|
|
36
|
+
|
|
37
|
+
// saturation
|
|
38
|
+
float average = (color.r + color.g + color.b) / 3.0;
|
|
39
|
+
rgb += (average - rgb) * u_saturation_factor;
|
|
40
|
+
|
|
41
|
+
// contrast
|
|
42
|
+
rgb = (rgb - 0.5) * u_contrast_factor + 0.5;
|
|
43
|
+
|
|
44
|
+
// brightness
|
|
45
|
+
vec3 u_high_vec = vec3(u_brightness_low, u_brightness_low, u_brightness_low);
|
|
46
|
+
vec3 u_low_vec = vec3(u_brightness_high, u_brightness_high, u_brightness_high);
|
|
47
|
+
|
|
48
|
+
fragColor = vec4(mix(u_high_vec, u_low_vec, rgb) * color.a, color.a);
|
|
49
|
+
|
|
50
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
51
|
+
fragColor = vec4(1.0);
|
|
52
|
+
#endif
|
|
53
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec2 u_tl_parent;
|
|
3
|
+
uniform float u_scale_parent;
|
|
4
|
+
uniform float u_buffer_scale;
|
|
5
|
+
|
|
6
|
+
in vec2 a_pos;
|
|
7
|
+
in vec2 a_texture_pos;
|
|
8
|
+
|
|
9
|
+
out vec2 v_pos0;
|
|
10
|
+
out vec2 v_pos1;
|
|
11
|
+
|
|
12
|
+
void main() {
|
|
13
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
14
|
+
// We are using Int16 for texture position coordinates to give us enough precision for
|
|
15
|
+
// fractional coordinates. We use 8192 to scale the texture coordinates in the buffer
|
|
16
|
+
// as an arbitrarily high number to preserve adequate precision when rendering.
|
|
17
|
+
// This is also the same value as the EXTENT we are using for our tile buffer pos coordinates,
|
|
18
|
+
// so math for modifying either is consistent.
|
|
19
|
+
v_pos0 = (((a_texture_pos / 8192.0) - 0.5) / u_buffer_scale ) + 0.5;
|
|
20
|
+
v_pos1 = (v_pos0 * u_scale_parent) + u_tl_parent;
|
|
21
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}';
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
|
|
2
|
+
// Disable Flow annotations here because Flow doesn't support importing GLSL files
|
|
3
|
+
|
|
4
|
+
import preludeFrag from './_prelude.fragment.glsl.g';
|
|
5
|
+
import preludeVert from './_prelude.vertex.glsl.g';
|
|
6
|
+
import backgroundFrag from './background.fragment.glsl.g';
|
|
7
|
+
import backgroundVert from './background.vertex.glsl.g';
|
|
8
|
+
import backgroundPatternFrag from './background_pattern.fragment.glsl.g';
|
|
9
|
+
import backgroundPatternVert from './background_pattern.vertex.glsl.g';
|
|
10
|
+
import circleFrag from './circle.fragment.glsl.g';
|
|
11
|
+
import circleVert from './circle.vertex.glsl.g';
|
|
12
|
+
import clippingMaskFrag from './clipping_mask.fragment.glsl.g';
|
|
13
|
+
import clippingMaskVert from './clipping_mask.vertex.glsl.g';
|
|
14
|
+
import heatmapFrag from './heatmap.fragment.glsl.g';
|
|
15
|
+
import heatmapVert from './heatmap.vertex.glsl.g';
|
|
16
|
+
import heatmapTextureFrag from './heatmap_texture.fragment.glsl.g';
|
|
17
|
+
import heatmapTextureVert from './heatmap_texture.vertex.glsl.g';
|
|
18
|
+
import collisionBoxFrag from './collision_box.fragment.glsl.g';
|
|
19
|
+
import collisionBoxVert from './collision_box.vertex.glsl.g';
|
|
20
|
+
import collisionCircleFrag from './collision_circle.fragment.glsl.g';
|
|
21
|
+
import collisionCircleVert from './collision_circle.vertex.glsl.g';
|
|
22
|
+
import debugFrag from './debug.fragment.glsl.g';
|
|
23
|
+
import debugVert from './debug.vertex.glsl.g';
|
|
24
|
+
import fillFrag from './fill.fragment.glsl.g';
|
|
25
|
+
import fillVert from './fill.vertex.glsl.g';
|
|
26
|
+
import fillOutlineFrag from './fill_outline.fragment.glsl.g';
|
|
27
|
+
import fillOutlineVert from './fill_outline.vertex.glsl.g';
|
|
28
|
+
import fillOutlinePatternFrag from './fill_outline_pattern.fragment.glsl.g';
|
|
29
|
+
import fillOutlinePatternVert from './fill_outline_pattern.vertex.glsl.g';
|
|
30
|
+
import fillPatternFrag from './fill_pattern.fragment.glsl.g';
|
|
31
|
+
import fillPatternVert from './fill_pattern.vertex.glsl.g';
|
|
32
|
+
import fillExtrusionFrag from './fill_extrusion.fragment.glsl.g';
|
|
33
|
+
import fillExtrusionVert from './fill_extrusion.vertex.glsl.g';
|
|
34
|
+
import fillExtrusionPatternFrag from './fill_extrusion_pattern.fragment.glsl.g';
|
|
35
|
+
import fillExtrusionPatternVert from './fill_extrusion_pattern.vertex.glsl.g';
|
|
36
|
+
import hillshadePrepareFrag from './hillshade_prepare.fragment.glsl.g';
|
|
37
|
+
import hillshadePrepareVert from './hillshade_prepare.vertex.glsl.g';
|
|
38
|
+
import hillshadeFrag from './hillshade.fragment.glsl.g';
|
|
39
|
+
import hillshadeVert from './hillshade.vertex.glsl.g';
|
|
40
|
+
import lineFrag from './line.fragment.glsl.g';
|
|
41
|
+
import lineVert from './line.vertex.glsl.g';
|
|
42
|
+
import lineGradientFrag from './line_gradient.fragment.glsl.g';
|
|
43
|
+
import lineGradientVert from './line_gradient.vertex.glsl.g';
|
|
44
|
+
import linePatternFrag from './line_pattern.fragment.glsl.g';
|
|
45
|
+
import linePatternVert from './line_pattern.vertex.glsl.g';
|
|
46
|
+
import lineSDFFrag from './line_sdf.fragment.glsl.g';
|
|
47
|
+
import lineSDFVert from './line_sdf.vertex.glsl.g';
|
|
48
|
+
import rasterFrag from './raster.fragment.glsl.g';
|
|
49
|
+
import rasterVert from './raster.vertex.glsl.g';
|
|
50
|
+
import symbolIconFrag from './symbol_icon.fragment.glsl.g';
|
|
51
|
+
import symbolIconVert from './symbol_icon.vertex.glsl.g';
|
|
52
|
+
import symbolSDFFrag from './symbol_sdf.fragment.glsl.g';
|
|
53
|
+
import symbolSDFVert from './symbol_sdf.vertex.glsl.g';
|
|
54
|
+
import symbolTextAndIconFrag from './symbol_text_and_icon.fragment.glsl.g';
|
|
55
|
+
import symbolTextAndIconVert from './symbol_text_and_icon.vertex.glsl.g';
|
|
56
|
+
import terrainDepthFrag from './terrain_depth.fragment.glsl.g';
|
|
57
|
+
import terrainCoordsFrag from './terrain_coords.fragment.glsl.g';
|
|
58
|
+
import terrainFrag from './terrain.fragment.glsl.g';
|
|
59
|
+
import terrainDepthVert from './terrain_depth.vertex.glsl.g';
|
|
60
|
+
import terrainCoordsVert from './terrain_coords.vertex.glsl.g';
|
|
61
|
+
import terrainVert from './terrain.vertex.glsl.g';
|
|
62
|
+
import skyFrag from './sky.fragment.glsl.g';
|
|
63
|
+
import skyVert from './sky.vertex.glsl.g';
|
|
64
|
+
|
|
65
|
+
export const shaders = {
|
|
66
|
+
prelude: compile(preludeFrag, preludeVert),
|
|
67
|
+
background: compile(backgroundFrag, backgroundVert),
|
|
68
|
+
backgroundPattern: compile(backgroundPatternFrag, backgroundPatternVert),
|
|
69
|
+
circle: compile(circleFrag, circleVert),
|
|
70
|
+
clippingMask: compile(clippingMaskFrag, clippingMaskVert),
|
|
71
|
+
heatmap: compile(heatmapFrag, heatmapVert),
|
|
72
|
+
heatmapTexture: compile(heatmapTextureFrag, heatmapTextureVert),
|
|
73
|
+
collisionBox: compile(collisionBoxFrag, collisionBoxVert),
|
|
74
|
+
collisionCircle: compile(collisionCircleFrag, collisionCircleVert),
|
|
75
|
+
debug: compile(debugFrag, debugVert),
|
|
76
|
+
fill: compile(fillFrag, fillVert),
|
|
77
|
+
fillOutline: compile(fillOutlineFrag, fillOutlineVert),
|
|
78
|
+
fillOutlinePattern: compile(fillOutlinePatternFrag, fillOutlinePatternVert),
|
|
79
|
+
fillPattern: compile(fillPatternFrag, fillPatternVert),
|
|
80
|
+
fillExtrusion: compile(fillExtrusionFrag, fillExtrusionVert),
|
|
81
|
+
fillExtrusionPattern: compile(fillExtrusionPatternFrag, fillExtrusionPatternVert),
|
|
82
|
+
hillshadePrepare: compile(hillshadePrepareFrag, hillshadePrepareVert),
|
|
83
|
+
hillshade: compile(hillshadeFrag, hillshadeVert),
|
|
84
|
+
line: compile(lineFrag, lineVert),
|
|
85
|
+
lineGradient: compile(lineGradientFrag, lineGradientVert),
|
|
86
|
+
linePattern: compile(linePatternFrag, linePatternVert),
|
|
87
|
+
lineSDF: compile(lineSDFFrag, lineSDFVert),
|
|
88
|
+
raster: compile(rasterFrag, rasterVert),
|
|
89
|
+
symbolIcon: compile(symbolIconFrag, symbolIconVert),
|
|
90
|
+
symbolSDF: compile(symbolSDFFrag, symbolSDFVert),
|
|
91
|
+
symbolTextAndIcon: compile(symbolTextAndIconFrag, symbolTextAndIconVert),
|
|
92
|
+
terrain: compile(terrainFrag, terrainVert),
|
|
93
|
+
terrainDepth: compile(terrainDepthFrag, terrainDepthVert),
|
|
94
|
+
terrainCoords: compile(terrainCoordsFrag, terrainCoordsVert),
|
|
95
|
+
sky: compile(skyFrag, skyVert)};
|
|
96
|
+
|
|
97
|
+
// Expand #pragmas to #ifdefs.
|
|
98
|
+
|
|
99
|
+
function compile(fragmentSource, vertexSource) {
|
|
100
|
+
const re = /#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g;
|
|
101
|
+
|
|
102
|
+
const staticAttributes = vertexSource.match(/attribute ([\w]+) ([\w]+)/g);
|
|
103
|
+
const fragmentUniforms = fragmentSource.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g);
|
|
104
|
+
const vertexUniforms = vertexSource.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g);
|
|
105
|
+
const staticUniforms = vertexUniforms ? vertexUniforms.concat(fragmentUniforms) : fragmentUniforms;
|
|
106
|
+
|
|
107
|
+
const fragmentPragmas = {};
|
|
108
|
+
|
|
109
|
+
fragmentSource = fragmentSource.replace(re, (match, operation, precision, type, name) => {
|
|
110
|
+
fragmentPragmas[name] = true;
|
|
111
|
+
if (operation === 'define') {
|
|
112
|
+
return `
|
|
113
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
114
|
+
varying ${precision} ${type} ${name};
|
|
115
|
+
#else
|
|
116
|
+
uniform ${precision} ${type} u_${name};
|
|
117
|
+
#endif
|
|
118
|
+
`;
|
|
119
|
+
} else /* if (operation === 'initialize') */ {
|
|
120
|
+
return `
|
|
121
|
+
#ifdef HAS_UNIFORM_u_${name}
|
|
122
|
+
${precision} ${type} ${name} = u_${name};
|
|
123
|
+
#endif
|
|
124
|
+
`;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
vertexSource = vertexSource.replace(re, (match, operation, precision, type, name) => {
|
|
129
|
+
const attrType = type === 'float' ? 'vec2' : 'vec4';
|
|
130
|
+
const unpackType = name.match(/color/) ? 'color' : attrType;
|
|
131
|
+
|
|
132
|
+
if (fragmentPragmas[name]) {
|
|
133
|
+
if (operation === 'define') {
|
|
134
|
+
return `
|
|
135
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
136
|
+
uniform lowp float u_${name}_t;
|
|
137
|
+
attribute ${precision} ${attrType} a_${name};
|
|
138
|
+
varying ${precision} ${type} ${name};
|
|
139
|
+
#else
|
|
140
|
+
uniform ${precision} ${type} u_${name};
|
|
141
|
+
#endif
|
|
142
|
+
`;
|
|
143
|
+
} else /* if (operation === 'initialize') */ {
|
|
144
|
+
if (unpackType === 'vec4') {
|
|
145
|
+
// vec4 attributes are only used for cross-faded properties, and are not packed
|
|
146
|
+
return `
|
|
147
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
148
|
+
${name} = a_${name};
|
|
149
|
+
#else
|
|
150
|
+
${precision} ${type} ${name} = u_${name};
|
|
151
|
+
#endif
|
|
152
|
+
`;
|
|
153
|
+
} else {
|
|
154
|
+
return `
|
|
155
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
156
|
+
${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);
|
|
157
|
+
#else
|
|
158
|
+
${precision} ${type} ${name} = u_${name};
|
|
159
|
+
#endif
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
if (operation === 'define') {
|
|
165
|
+
return `
|
|
166
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
167
|
+
uniform lowp float u_${name}_t;
|
|
168
|
+
attribute ${precision} ${attrType} a_${name};
|
|
169
|
+
#else
|
|
170
|
+
uniform ${precision} ${type} u_${name};
|
|
171
|
+
#endif
|
|
172
|
+
`;
|
|
173
|
+
} else /* if (operation === 'initialize') */ {
|
|
174
|
+
if (unpackType === 'vec4') {
|
|
175
|
+
// vec4 attributes are only used for cross-faded properties, and are not packed
|
|
176
|
+
return `
|
|
177
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
178
|
+
${precision} ${type} ${name} = a_${name};
|
|
179
|
+
#else
|
|
180
|
+
${precision} ${type} ${name} = u_${name};
|
|
181
|
+
#endif
|
|
182
|
+
`;
|
|
183
|
+
} else /* */ {
|
|
184
|
+
return `
|
|
185
|
+
#ifndef HAS_UNIFORM_u_${name}
|
|
186
|
+
${precision} ${type} ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t);
|
|
187
|
+
#else
|
|
188
|
+
${precision} ${type} ${name} = u_${name};
|
|
189
|
+
#endif
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
return {fragmentSource, vertexSource, staticAttributes, staticUniforms};
|
|
197
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
uniform vec4 u_sky_color;
|
|
2
|
+
uniform vec4 u_horizon_color;
|
|
3
|
+
|
|
4
|
+
uniform float u_horizon;
|
|
5
|
+
uniform float u_sky_horizon_blend;
|
|
6
|
+
|
|
7
|
+
void main() {
|
|
8
|
+
float y = gl_FragCoord.y;
|
|
9
|
+
if (y > u_horizon) {
|
|
10
|
+
float blend = y - u_horizon;
|
|
11
|
+
if (blend < u_sky_horizon_blend) {
|
|
12
|
+
gl_FragColor = mix(u_sky_color, u_horizon_color, pow(1.0 - blend / u_sky_horizon_blend, 2.0));
|
|
13
|
+
} else {
|
|
14
|
+
gl_FragColor = u_sky_color;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
uniform sampler2D u_texture;
|
|
2
|
+
|
|
3
|
+
in vec2 v_tex;
|
|
4
|
+
in float v_fade_opacity;
|
|
5
|
+
|
|
6
|
+
#pragma mapbox: define lowp float opacity
|
|
7
|
+
|
|
8
|
+
void main() {
|
|
9
|
+
#pragma mapbox: initialize lowp float opacity
|
|
10
|
+
|
|
11
|
+
lowp float alpha = opacity * v_fade_opacity;
|
|
12
|
+
fragColor = texture(u_texture, v_tex) * alpha;
|
|
13
|
+
|
|
14
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
15
|
+
fragColor = vec4(1.0);
|
|
16
|
+
#endif
|
|
17
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}';
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
in vec4 a_pos_offset;
|
|
2
|
+
in vec4 a_data;
|
|
3
|
+
in vec4 a_pixeloffset;
|
|
4
|
+
in vec3 a_projected_pos;
|
|
5
|
+
in float a_fade_opacity;
|
|
6
|
+
|
|
7
|
+
uniform bool u_is_size_zoom_constant;
|
|
8
|
+
uniform bool u_is_size_feature_constant;
|
|
9
|
+
uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
|
|
10
|
+
uniform highp float u_size; // used when size is both zoom and feature constant
|
|
11
|
+
uniform highp float u_camera_to_center_distance;
|
|
12
|
+
uniform highp float u_pitch;
|
|
13
|
+
uniform bool u_rotate_symbol;
|
|
14
|
+
uniform highp float u_aspect_ratio;
|
|
15
|
+
uniform float u_fade_change;
|
|
16
|
+
uniform mat4 u_matrix;
|
|
17
|
+
uniform mat4 u_label_plane_matrix;
|
|
18
|
+
uniform mat4 u_coord_matrix;
|
|
19
|
+
uniform bool u_is_text;
|
|
20
|
+
uniform bool u_pitch_with_map;
|
|
21
|
+
uniform vec2 u_texsize;
|
|
22
|
+
uniform bool u_is_along_line;
|
|
23
|
+
uniform bool u_is_variable_anchor;
|
|
24
|
+
uniform vec2 u_translation;
|
|
25
|
+
uniform float u_pitched_scale;
|
|
26
|
+
|
|
27
|
+
out vec2 v_tex;
|
|
28
|
+
out float v_fade_opacity;
|
|
29
|
+
|
|
30
|
+
vec4 projectTileWithElevation(vec2 posInTile, float elevation) {
|
|
31
|
+
return u_matrix * vec4(posInTile, elevation, 1.0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
#pragma mapbox: define lowp float opacity
|
|
35
|
+
|
|
36
|
+
void main() {
|
|
37
|
+
#pragma mapbox: initialize lowp float opacity
|
|
38
|
+
|
|
39
|
+
vec2 a_pos = a_pos_offset.xy;
|
|
40
|
+
vec2 a_offset = a_pos_offset.zw;
|
|
41
|
+
|
|
42
|
+
vec2 a_tex = a_data.xy;
|
|
43
|
+
vec2 a_size = a_data.zw;
|
|
44
|
+
|
|
45
|
+
float a_size_min = floor(a_size[0] * 0.5);
|
|
46
|
+
vec2 a_pxoffset = a_pixeloffset.xy;
|
|
47
|
+
vec2 a_minFontScale = a_pixeloffset.zw / 256.0;
|
|
48
|
+
|
|
49
|
+
float ele = get_elevation(a_pos);
|
|
50
|
+
highp float segment_angle = -a_projected_pos[2];
|
|
51
|
+
float size;
|
|
52
|
+
|
|
53
|
+
if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {
|
|
54
|
+
size = mix(a_size_min, a_size[1], u_size_t) / 128.0;
|
|
55
|
+
} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {
|
|
56
|
+
size = a_size_min / 128.0;
|
|
57
|
+
} else {
|
|
58
|
+
size = u_size;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
vec2 translated_a_pos = a_pos + u_translation;
|
|
62
|
+
vec4 projectedPoint = projectTileWithElevation(translated_a_pos, ele);
|
|
63
|
+
|
|
64
|
+
highp float camera_to_anchor_distance = projectedPoint.w;
|
|
65
|
+
// See comments in symbol_sdf.vertex
|
|
66
|
+
highp float distance_ratio = u_pitch_with_map ?
|
|
67
|
+
camera_to_anchor_distance / u_camera_to_center_distance :
|
|
68
|
+
u_camera_to_center_distance / camera_to_anchor_distance;
|
|
69
|
+
highp float perspective_ratio = clamp(
|
|
70
|
+
0.5 + 0.5 * distance_ratio,
|
|
71
|
+
0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles
|
|
72
|
+
4.0);
|
|
73
|
+
|
|
74
|
+
size *= perspective_ratio;
|
|
75
|
+
|
|
76
|
+
float fontScale = u_is_text ? size / 24.0 : size;
|
|
77
|
+
|
|
78
|
+
highp float symbol_rotation = 0.0;
|
|
79
|
+
if (u_rotate_symbol) {
|
|
80
|
+
// See comments in symbol_sdf.vertex
|
|
81
|
+
vec4 offsetProjectedPoint = projectTileWithElevation(translated_a_pos + vec2(1, 0), ele);
|
|
82
|
+
|
|
83
|
+
vec2 a = projectedPoint.xy / projectedPoint.w;
|
|
84
|
+
vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;
|
|
85
|
+
|
|
86
|
+
symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
highp float angle_sin = sin(segment_angle + symbol_rotation);
|
|
90
|
+
highp float angle_cos = cos(segment_angle + symbol_rotation);
|
|
91
|
+
mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
|
|
92
|
+
|
|
93
|
+
vec4 projected_pos;
|
|
94
|
+
if (u_is_along_line || u_is_variable_anchor) {
|
|
95
|
+
projected_pos = vec4(a_projected_pos.xy, ele, 1.0);
|
|
96
|
+
} else if (u_pitch_with_map) {
|
|
97
|
+
projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy + u_translation, ele, 1.0);
|
|
98
|
+
} else {
|
|
99
|
+
projected_pos = u_label_plane_matrix * projectTileWithElevation(a_projected_pos.xy + u_translation, ele);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
float z = float(u_pitch_with_map) * projected_pos.z / projected_pos.w;
|
|
103
|
+
|
|
104
|
+
float projectionScaling = 1.0;
|
|
105
|
+
|
|
106
|
+
vec4 finalPos = u_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * max(a_minFontScale, fontScale) + a_pxoffset / 16.0) * projectionScaling, z, 1.0);
|
|
107
|
+
if(u_pitch_with_map) {
|
|
108
|
+
finalPos = projectTileWithElevation(finalPos.xy, finalPos.z);
|
|
109
|
+
}
|
|
110
|
+
gl_Position = finalPos;
|
|
111
|
+
|
|
112
|
+
v_tex = a_tex / u_texsize;
|
|
113
|
+
vec2 fade_opacity = unpack_opacity(a_fade_opacity);
|
|
114
|
+
float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;
|
|
115
|
+
float visibility = calculate_visibility(projectedPoint);
|
|
116
|
+
v_fade_opacity = max(0.0, min(visibility, fade_opacity[0] + fade_change));
|
|
117
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}';
|