@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,148 @@
|
|
|
1
|
+
#ifdef GL_ES
|
|
2
|
+
precision highp float;
|
|
3
|
+
#else
|
|
4
|
+
|
|
5
|
+
#if !defined(lowp)
|
|
6
|
+
#define lowp
|
|
7
|
+
#endif
|
|
8
|
+
|
|
9
|
+
#if !defined(mediump)
|
|
10
|
+
#define mediump
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
#if !defined(highp)
|
|
14
|
+
#define highp
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
// Unpack a pair of values that have been packed into a single float.
|
|
20
|
+
// The packed values are assumed to be 8-bit unsigned integers, and are
|
|
21
|
+
// packed like so:
|
|
22
|
+
// packedValue = floor(input[0]) * 256 + input[1],
|
|
23
|
+
vec2 unpack_float(const float packedValue) {
|
|
24
|
+
int packedIntValue = int(packedValue);
|
|
25
|
+
int v0 = packedIntValue / 256;
|
|
26
|
+
return vec2(v0, packedIntValue - v0 * 256);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
vec2 unpack_opacity(const float packedOpacity) {
|
|
30
|
+
int intOpacity = int(packedOpacity) / 2;
|
|
31
|
+
return vec2(float(intOpacity) / 127.0, mod(packedOpacity, 2.0));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// To minimize the number of ins needed, we encode a 4-component
|
|
35
|
+
// color into a pair of floats (i.e. a vec2) as follows:
|
|
36
|
+
// [ floor(color.r * 255) * 256 + color.g * 255,
|
|
37
|
+
// floor(color.b * 255) * 256 + color.g * 255 ]
|
|
38
|
+
vec4 decode_color(const vec2 encodedColor) {
|
|
39
|
+
return vec4(
|
|
40
|
+
unpack_float(encodedColor[0]) / 255.0,
|
|
41
|
+
unpack_float(encodedColor[1]) / 255.0
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Unpack a pair of paint values and interpolate between them.
|
|
46
|
+
float unpack_mix_vec2(const vec2 packedValue, const float t) {
|
|
47
|
+
return mix(packedValue[0], packedValue[1], t);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Unpack a pair of paint values and interpolate between them.
|
|
51
|
+
vec4 unpack_mix_color(const vec4 packedColors, const float t) {
|
|
52
|
+
vec4 minColor = decode_color(vec2(packedColors[0], packedColors[1]));
|
|
53
|
+
vec4 maxColor = decode_color(vec2(packedColors[2], packedColors[3]));
|
|
54
|
+
return mix(minColor, maxColor, t);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// The offset depends on how many pixels are between the world origin and the edge of the tile:
|
|
58
|
+
// vec2 offset = mod(pixel_coord, size)
|
|
59
|
+
//
|
|
60
|
+
// At high zoom levels there are a ton of pixels between the world origin and the edge of the tile.
|
|
61
|
+
// The glsl spec only guarantees 16 bits of precision for highp floats. We need more than that.
|
|
62
|
+
//
|
|
63
|
+
// The pixel_coord is passed in as two 16 bit values:
|
|
64
|
+
// pixel_coord_upper = floor(pixel_coord / 2^16)
|
|
65
|
+
// pixel_coord_lower = mod(pixel_coord, 2^16)
|
|
66
|
+
//
|
|
67
|
+
// The offset is calculated in a series of steps that should preserve this precision:
|
|
68
|
+
vec2 get_pattern_pos(const vec2 pixel_coord_upper, const vec2 pixel_coord_lower,
|
|
69
|
+
const vec2 pattern_size, const float tile_units_to_pixels, const vec2 pos) {
|
|
70
|
+
|
|
71
|
+
vec2 offset = mod(mod(mod(pixel_coord_upper, pattern_size) * 256.0, pattern_size) * 256.0 + pixel_coord_lower, pattern_size);
|
|
72
|
+
return (tile_units_to_pixels * pos + offset) / pattern_size;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// logic for terrain 3d
|
|
76
|
+
|
|
77
|
+
#ifdef TERRAIN3D
|
|
78
|
+
uniform sampler2D u_terrain;
|
|
79
|
+
uniform float u_terrain_dim;
|
|
80
|
+
uniform mat4 u_terrain_matrix;
|
|
81
|
+
uniform vec4 u_terrain_unpack;
|
|
82
|
+
uniform float u_terrain_exaggeration;
|
|
83
|
+
uniform highp sampler2D u_depth;
|
|
84
|
+
#endif
|
|
85
|
+
|
|
86
|
+
// methods for pack/unpack depth value to texture rgba
|
|
87
|
+
// https://stackoverflow.com/questions/34963366/encode-floating-point-data-in-a-rgba-texture
|
|
88
|
+
const highp vec4 bitSh = vec4(256. * 256. * 256., 256. * 256., 256., 1.);
|
|
89
|
+
const highp vec4 bitShifts = vec4(1.) / bitSh;
|
|
90
|
+
|
|
91
|
+
highp float unpack(highp vec4 color) {
|
|
92
|
+
return dot(color , bitShifts);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// calculate the opacity behind terrain, returns a value between 0 and 1.
|
|
96
|
+
highp float depthOpacity(vec3 frag) {
|
|
97
|
+
#ifdef TERRAIN3D
|
|
98
|
+
// create the delta between frag.z + terrain.z.
|
|
99
|
+
highp float d = unpack(texture(u_depth, frag.xy * 0.5 + 0.5)) + 0.0001 - frag.z;
|
|
100
|
+
// visibility range is between 0 and 0.002. 0 is visible, 0.002 is fully invisible.
|
|
101
|
+
return 1.0 - max(0.0, min(1.0, -d * 500.0));
|
|
102
|
+
#else
|
|
103
|
+
return 1.0;
|
|
104
|
+
#endif
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// calculate the visibility of a coordinate in terrain and return an opacity value.
|
|
108
|
+
// if a coordinate is behind the terrain reduce its opacity
|
|
109
|
+
float calculate_visibility(vec4 pos) {
|
|
110
|
+
#ifdef TERRAIN3D
|
|
111
|
+
vec3 frag = pos.xyz / pos.w;
|
|
112
|
+
// check if coordinate is fully visible
|
|
113
|
+
highp float d = depthOpacity(frag);
|
|
114
|
+
if (d > 0.95) return 1.0;
|
|
115
|
+
// if not, go some pixel above and check it this point is visible
|
|
116
|
+
return (d + depthOpacity(frag + vec3(0.0, 0.01, 0.0))) / 2.0;
|
|
117
|
+
#else
|
|
118
|
+
return 1.0;
|
|
119
|
+
#endif
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// grab an elevation value from a raster-dem texture
|
|
123
|
+
float ele(vec2 pos) {
|
|
124
|
+
#ifdef TERRAIN3D
|
|
125
|
+
vec4 rgb = (texture(u_terrain, pos) * 255.0) * u_terrain_unpack;
|
|
126
|
+
return rgb.r + rgb.g + rgb.b - u_terrain_unpack.a;
|
|
127
|
+
#else
|
|
128
|
+
return 0.0;
|
|
129
|
+
#endif
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// calculate the elevation with linear interpolation for a coordinate
|
|
133
|
+
float get_elevation(vec2 pos) {
|
|
134
|
+
#ifdef TERRAIN3D
|
|
135
|
+
vec2 coord = (u_terrain_matrix * vec4(pos, 0.0, 1.0)).xy * u_terrain_dim + 1.0;
|
|
136
|
+
vec2 f = fract(coord);
|
|
137
|
+
vec2 c = (floor(coord) + 0.5) / (u_terrain_dim + 2.0); // get the pixel center
|
|
138
|
+
float d = 1.0 / (u_terrain_dim + 2.0);
|
|
139
|
+
float tl = ele(c);
|
|
140
|
+
float tr = ele(c + vec2(d, 0.0));
|
|
141
|
+
float bl = ele(c + vec2(0.0, d));
|
|
142
|
+
float br = ele(c + vec2(d, d));
|
|
143
|
+
float elevation = mix(mix(tl, tr, f.x), mix(bl, br, f.x), f.y);
|
|
144
|
+
return elevation * u_terrain_exaggeration;
|
|
145
|
+
#else
|
|
146
|
+
return 0.0;
|
|
147
|
+
#endif
|
|
148
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default '#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
uniform vec2 u_pattern_tl_a;
|
|
2
|
+
uniform vec2 u_pattern_br_a;
|
|
3
|
+
uniform vec2 u_pattern_tl_b;
|
|
4
|
+
uniform vec2 u_pattern_br_b;
|
|
5
|
+
uniform vec2 u_texsize;
|
|
6
|
+
uniform float u_mix;
|
|
7
|
+
uniform float u_opacity;
|
|
8
|
+
|
|
9
|
+
uniform sampler2D u_image;
|
|
10
|
+
|
|
11
|
+
in vec2 v_pos_a;
|
|
12
|
+
in vec2 v_pos_b;
|
|
13
|
+
|
|
14
|
+
void main() {
|
|
15
|
+
vec2 imagecoord = mod(v_pos_a, 1.0);
|
|
16
|
+
vec2 pos = mix(u_pattern_tl_a / u_texsize, u_pattern_br_a / u_texsize, imagecoord);
|
|
17
|
+
vec4 color1 = texture(u_image, pos);
|
|
18
|
+
|
|
19
|
+
vec2 imagecoord_b = mod(v_pos_b, 1.0);
|
|
20
|
+
vec2 pos2 = mix(u_pattern_tl_b / u_texsize, u_pattern_br_b / u_texsize, imagecoord_b);
|
|
21
|
+
vec4 color2 = texture(u_image, pos2);
|
|
22
|
+
|
|
23
|
+
fragColor = mix(color1, color2, u_mix) * u_opacity;
|
|
24
|
+
|
|
25
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
26
|
+
fragColor = vec4(1.0);
|
|
27
|
+
#endif
|
|
28
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying 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);vec4 color1=texture2D(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);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec2 u_pattern_size_a;
|
|
3
|
+
uniform vec2 u_pattern_size_b;
|
|
4
|
+
uniform vec2 u_pixel_coord_upper;
|
|
5
|
+
uniform vec2 u_pixel_coord_lower;
|
|
6
|
+
uniform float u_scale_a;
|
|
7
|
+
uniform float u_scale_b;
|
|
8
|
+
uniform float u_tile_units_to_pixels;
|
|
9
|
+
|
|
10
|
+
in vec2 a_pos;
|
|
11
|
+
out vec2 v_pos_a;
|
|
12
|
+
out vec2 v_pos_b;
|
|
13
|
+
|
|
14
|
+
void main() {
|
|
15
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
16
|
+
|
|
17
|
+
v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, u_scale_a * u_pattern_size_a, u_tile_units_to_pixels, a_pos);
|
|
18
|
+
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);
|
|
19
|
+
}
|
|
@@ -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_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);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);}';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
in vec3 v_data;
|
|
2
|
+
in float v_visibility;
|
|
3
|
+
|
|
4
|
+
#pragma mapbox: define highp vec4 color
|
|
5
|
+
#pragma mapbox: define mediump float radius
|
|
6
|
+
#pragma mapbox: define lowp float blur
|
|
7
|
+
#pragma mapbox: define lowp float opacity
|
|
8
|
+
#pragma mapbox: define highp vec4 stroke_color
|
|
9
|
+
#pragma mapbox: define mediump float stroke_width
|
|
10
|
+
#pragma mapbox: define lowp float stroke_opacity
|
|
11
|
+
|
|
12
|
+
void main() {
|
|
13
|
+
#pragma mapbox: initialize highp vec4 color
|
|
14
|
+
#pragma mapbox: initialize mediump float radius
|
|
15
|
+
#pragma mapbox: initialize lowp float blur
|
|
16
|
+
#pragma mapbox: initialize lowp float opacity
|
|
17
|
+
#pragma mapbox: initialize highp vec4 stroke_color
|
|
18
|
+
#pragma mapbox: initialize mediump float stroke_width
|
|
19
|
+
#pragma mapbox: initialize lowp float stroke_opacity
|
|
20
|
+
|
|
21
|
+
vec2 extrude = v_data.xy;
|
|
22
|
+
float extrude_length = length(extrude);
|
|
23
|
+
float antialiased_blur = v_data.z;
|
|
24
|
+
|
|
25
|
+
float opacity_t = smoothstep(0.0, antialiased_blur, extrude_length - 1.0);
|
|
26
|
+
|
|
27
|
+
float color_t = stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur, 0.0, extrude_length - radius / (radius + stroke_width));
|
|
28
|
+
|
|
29
|
+
fragColor = v_visibility * opacity_t * mix(color * opacity, stroke_color * stroke_opacity, color_t);
|
|
30
|
+
|
|
31
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
32
|
+
fragColor = vec4(1.0);
|
|
33
|
+
#endif
|
|
34
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}';
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform bool u_scale_with_map;
|
|
3
|
+
uniform bool u_pitch_with_map;
|
|
4
|
+
uniform vec2 u_extrude_scale;
|
|
5
|
+
uniform lowp float u_device_pixel_ratio;
|
|
6
|
+
uniform highp float u_camera_to_center_distance;
|
|
7
|
+
|
|
8
|
+
in vec2 a_pos;
|
|
9
|
+
|
|
10
|
+
out vec3 v_data;
|
|
11
|
+
out float v_visibility;
|
|
12
|
+
|
|
13
|
+
#pragma mapbox: define highp vec4 color
|
|
14
|
+
#pragma mapbox: define mediump float radius
|
|
15
|
+
#pragma mapbox: define lowp float blur
|
|
16
|
+
#pragma mapbox: define lowp float opacity
|
|
17
|
+
#pragma mapbox: define highp vec4 stroke_color
|
|
18
|
+
#pragma mapbox: define mediump float stroke_width
|
|
19
|
+
#pragma mapbox: define lowp float stroke_opacity
|
|
20
|
+
|
|
21
|
+
void main(void) {
|
|
22
|
+
#pragma mapbox: initialize highp vec4 color
|
|
23
|
+
#pragma mapbox: initialize mediump float radius
|
|
24
|
+
#pragma mapbox: initialize lowp float blur
|
|
25
|
+
#pragma mapbox: initialize lowp float opacity
|
|
26
|
+
#pragma mapbox: initialize highp vec4 stroke_color
|
|
27
|
+
#pragma mapbox: initialize mediump float stroke_width
|
|
28
|
+
#pragma mapbox: initialize lowp float stroke_opacity
|
|
29
|
+
|
|
30
|
+
// decode the extrusion vector that we snuck into the a_pos vector
|
|
31
|
+
vec2 extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);
|
|
32
|
+
|
|
33
|
+
// multiply a_pos by 0.5, since we had it * 2 in order to sneak
|
|
34
|
+
// in extrusion data
|
|
35
|
+
vec2 circle_center = floor(a_pos * 0.5);
|
|
36
|
+
float ele = get_elevation(circle_center);
|
|
37
|
+
v_visibility = calculate_visibility(u_matrix * vec4(circle_center, ele, 1.0));
|
|
38
|
+
|
|
39
|
+
if (u_pitch_with_map) {
|
|
40
|
+
vec2 corner_position = circle_center;
|
|
41
|
+
if (u_scale_with_map) {
|
|
42
|
+
corner_position += extrude * (radius + stroke_width) * u_extrude_scale;
|
|
43
|
+
} else {
|
|
44
|
+
// Pitching the circle with the map effectively scales it with the map
|
|
45
|
+
// To counteract the effect for pitch-scale: viewport, we rescale the
|
|
46
|
+
// whole circle based on the pitch scaling effect at its central point
|
|
47
|
+
vec4 projected_center = u_matrix * vec4(circle_center, 0, 1);
|
|
48
|
+
corner_position += extrude * (radius + stroke_width) * u_extrude_scale * (projected_center.w / u_camera_to_center_distance);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
gl_Position = u_matrix * vec4(corner_position, ele, 1);
|
|
52
|
+
} else {
|
|
53
|
+
gl_Position = u_matrix * vec4(circle_center, ele, 1);
|
|
54
|
+
|
|
55
|
+
if (u_scale_with_map) {
|
|
56
|
+
gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * u_camera_to_center_distance;
|
|
57
|
+
} else {
|
|
58
|
+
gl_Position.xy += extrude * (radius + stroke_width) * u_extrude_scale * gl_Position.w;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// This is a minimum blur distance that serves as a faux-antialiasing for
|
|
63
|
+
// the circle. since blur is a ratio of the circle's size and the intent is
|
|
64
|
+
// to keep the blur at roughly 1px, the two are inversely related.
|
|
65
|
+
float antialiasblur = -max(1.0 / u_device_pixel_ratio / (radius + stroke_width), blur);
|
|
66
|
+
|
|
67
|
+
v_data = vec3(extrude.x, extrude.y, antialiasblur);
|
|
68
|
+
}
|
|
@@ -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 bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
in float v_placed;
|
|
2
|
+
in float v_notUsed;
|
|
3
|
+
|
|
4
|
+
void main() {
|
|
5
|
+
|
|
6
|
+
float alpha = 0.5;
|
|
7
|
+
|
|
8
|
+
// Red = collision, hide label
|
|
9
|
+
fragColor = vec4(1.0, 0.0, 0.0, 1.0) * alpha;
|
|
10
|
+
|
|
11
|
+
// Blue = no collision, label is showing
|
|
12
|
+
if (v_placed > 0.5) {
|
|
13
|
+
fragColor = vec4(0.0, 0.0, 1.0, 0.5) * alpha;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (v_notUsed > 0.5) {
|
|
17
|
+
// This box not used, fade it out
|
|
18
|
+
fragColor *= .1;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
in vec2 a_anchor_pos;
|
|
2
|
+
in vec2 a_placed;
|
|
3
|
+
in vec2 a_box_real;
|
|
4
|
+
|
|
5
|
+
uniform mat4 u_matrix;
|
|
6
|
+
uniform vec2 u_pixel_extrude_scale;
|
|
7
|
+
|
|
8
|
+
out float v_placed;
|
|
9
|
+
out float v_notUsed;
|
|
10
|
+
|
|
11
|
+
vec4 projectTileWithElevation(vec2 posInTile, float elevation) {
|
|
12
|
+
return u_matrix * vec4(posInTile, elevation, 1.0);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
void main() {
|
|
16
|
+
gl_Position = projectTileWithElevation(a_anchor_pos, get_elevation(a_anchor_pos));
|
|
17
|
+
gl_Position.xy = ((a_box_real + 0.5) * u_pixel_extrude_scale * 2.0 - 1.0) * vec2(1.0, -1.0) * gl_Position.w;
|
|
18
|
+
if (gl_Position.z / gl_Position.w < 1.1) {
|
|
19
|
+
// Globe projection would set Z beyond visible range if the anchor point gets hidden behind the planet's horizon.
|
|
20
|
+
// We force Z to a visible value, even for anchors that are slightly behind the horizon.
|
|
21
|
+
// Anchors that are too far beyond the horizon are still hidden.
|
|
22
|
+
gl_Position.z = 0.5;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
v_placed = a_placed.x;
|
|
26
|
+
v_notUsed = a_placed.y;
|
|
27
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
in float v_radius;
|
|
2
|
+
in vec2 v_extrude;
|
|
3
|
+
in float v_perspective_ratio;
|
|
4
|
+
in float v_collision;
|
|
5
|
+
|
|
6
|
+
void main() {
|
|
7
|
+
float alpha = 0.5 * min(v_perspective_ratio, 1.0);
|
|
8
|
+
float stroke_radius = 0.9 * max(v_perspective_ratio, 1.0);
|
|
9
|
+
|
|
10
|
+
float distance_to_center = length(v_extrude);
|
|
11
|
+
float distance_to_edge = abs(distance_to_center - v_radius);
|
|
12
|
+
float opacity_t = smoothstep(-stroke_radius, 0.0, -distance_to_edge);
|
|
13
|
+
|
|
14
|
+
vec4 color = mix(vec4(0.0, 0.0, 1.0, 0.5), vec4(1.0, 0.0, 0.0, 1.0), v_collision);
|
|
15
|
+
|
|
16
|
+
fragColor = color * alpha * opacity_t;
|
|
17
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
in vec2 a_pos;
|
|
2
|
+
in float a_radius;
|
|
3
|
+
in vec2 a_flags;
|
|
4
|
+
|
|
5
|
+
uniform mat4 u_matrix;
|
|
6
|
+
uniform mat4 u_inv_matrix;
|
|
7
|
+
uniform vec2 u_viewport_size;
|
|
8
|
+
uniform float u_camera_to_center_distance;
|
|
9
|
+
|
|
10
|
+
out float v_radius;
|
|
11
|
+
out vec2 v_extrude;
|
|
12
|
+
out float v_perspective_ratio;
|
|
13
|
+
out float v_collision;
|
|
14
|
+
|
|
15
|
+
vec3 toTilePosition(vec2 screenPos) {
|
|
16
|
+
// Shoot a ray towards the ground to reconstruct the depth-value
|
|
17
|
+
vec4 rayStart = u_inv_matrix * vec4(screenPos, -1.0, 1.0);
|
|
18
|
+
vec4 rayEnd = u_inv_matrix * vec4(screenPos, 1.0, 1.0);
|
|
19
|
+
|
|
20
|
+
rayStart.xyz /= rayStart.w;
|
|
21
|
+
rayEnd.xyz /= rayEnd.w;
|
|
22
|
+
|
|
23
|
+
highp float t = (0.0 - rayStart.z) / (rayEnd.z - rayStart.z);
|
|
24
|
+
return mix(rayStart.xyz, rayEnd.xyz, t);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void main() {
|
|
28
|
+
vec2 quadCenterPos = a_pos;
|
|
29
|
+
float radius = a_radius;
|
|
30
|
+
float collision = a_flags.x;
|
|
31
|
+
float vertexIdx = a_flags.y;
|
|
32
|
+
|
|
33
|
+
vec2 quadVertexOffset = vec2(
|
|
34
|
+
mix(-1.0, 1.0, float(vertexIdx >= 2.0)),
|
|
35
|
+
mix(-1.0, 1.0, float(vertexIdx >= 1.0 && vertexIdx <= 2.0)));
|
|
36
|
+
|
|
37
|
+
vec2 quadVertexExtent = quadVertexOffset * radius;
|
|
38
|
+
|
|
39
|
+
// Screen position of the quad might have been computed with different camera parameters.
|
|
40
|
+
// Transform the point to a proper position on the current viewport
|
|
41
|
+
vec3 tilePos = toTilePosition(quadCenterPos);
|
|
42
|
+
vec4 clipPos = u_matrix * vec4(tilePos, 1.0);
|
|
43
|
+
|
|
44
|
+
highp float camera_to_anchor_distance = clipPos.w;
|
|
45
|
+
highp float collision_perspective_ratio = clamp(
|
|
46
|
+
0.5 + 0.5 * (u_camera_to_center_distance / camera_to_anchor_distance),
|
|
47
|
+
0.0, // Prevents oversized near-field circles in pitched/overzoomed tiles
|
|
48
|
+
4.0);
|
|
49
|
+
|
|
50
|
+
// Apply small padding for the anti-aliasing effect to fit the quad
|
|
51
|
+
// Note that v_radius and v_extrude are in screen coordinates already
|
|
52
|
+
float padding_factor = 1.2;
|
|
53
|
+
v_radius = radius;
|
|
54
|
+
v_extrude = quadVertexExtent * padding_factor;
|
|
55
|
+
v_perspective_ratio = collision_perspective_ratio;
|
|
56
|
+
v_collision = collision;
|
|
57
|
+
|
|
58
|
+
gl_Position = vec4(clipPos.xyz / clipPos.w, 1.0) + vec4(quadVertexExtent * padding_factor / u_viewport_size * 2.0, 0.0, 0.0);
|
|
59
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
in vec2 a_pos;
|
|
2
|
+
out vec2 v_uv;
|
|
3
|
+
|
|
4
|
+
uniform mat4 u_matrix;
|
|
5
|
+
uniform float u_overlay_scale;
|
|
6
|
+
|
|
7
|
+
void main() {
|
|
8
|
+
// This vertex shader expects a EXTENT x EXTENT quad,
|
|
9
|
+
// The UV co-ordinates for the overlay texture can be calculated using that knowledge
|
|
10
|
+
v_uv = a_pos / 8192.0;
|
|
11
|
+
gl_Position = u_matrix * vec4(a_pos * u_overlay_scale, get_elevation(a_pos), 1);
|
|
12
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {packUint8ToFloat} from './encode_attribute';
|
|
2
|
+
|
|
3
|
+
test('packUint8ToFloat', () => {
|
|
4
|
+
expect(packUint8ToFloat(0, 0)).toBe(0);
|
|
5
|
+
expect(packUint8ToFloat(255, 255)).toBe(65535);
|
|
6
|
+
expect(packUint8ToFloat(123, 45)).toBe(31533);
|
|
7
|
+
|
|
8
|
+
expect(packUint8ToFloat(-1, -1)).toBe(0);
|
|
9
|
+
expect(packUint8ToFloat(256, 256)).toBe(65535);
|
|
10
|
+
|
|
11
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {clamp} from '../util/util';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Packs two numbers, interpreted as 8-bit unsigned integers, into a single
|
|
5
|
+
* float. Unpack them in the shader using the `unpack_float()` function,
|
|
6
|
+
* defined in _prelude.vertex.glsl
|
|
7
|
+
*/
|
|
8
|
+
export function packUint8ToFloat(a: number, b: number) {
|
|
9
|
+
// coerce a and b to 8-bit ints
|
|
10
|
+
a = clamp(Math.floor(a), 0, 255);
|
|
11
|
+
b = clamp(Math.floor(b), 0, 255);
|
|
12
|
+
return 256 * a + b;
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#pragma mapbox: define highp vec4 color
|
|
2
|
+
#pragma mapbox: define lowp float opacity
|
|
3
|
+
|
|
4
|
+
void main() {
|
|
5
|
+
#pragma mapbox: initialize highp vec4 color
|
|
6
|
+
#pragma mapbox: initialize lowp float opacity
|
|
7
|
+
|
|
8
|
+
fragColor = color * opacity;
|
|
9
|
+
|
|
10
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
11
|
+
fragColor = vec4(1.0);
|
|
12
|
+
#endif
|
|
13
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default '#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
in vec2 a_pos;
|
|
2
|
+
|
|
3
|
+
uniform mat4 u_matrix;
|
|
4
|
+
|
|
5
|
+
#pragma mapbox: define highp vec4 color
|
|
6
|
+
#pragma mapbox: define lowp float opacity
|
|
7
|
+
|
|
8
|
+
void main() {
|
|
9
|
+
#pragma mapbox: initialize highp vec4 color
|
|
10
|
+
#pragma mapbox: initialize lowp float opacity
|
|
11
|
+
|
|
12
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
13
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// This file is generated. Edit build/generate-shaders.ts, then run `npm run codegen`.
|
|
2
|
+
export default 'attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}';
|