@mapwhit/tilerenderer 0.47.1
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 +87 -0
- package/README.md +25 -0
- package/build/min/.dir +0 -0
- package/build/min/package.json +3 -0
- package/build/min/src/shaders/_prelude.fragment.glsl.txt +13 -0
- package/build/min/src/shaders/_prelude.vertex.glsl.txt +14 -0
- package/build/min/src/shaders/background.fragment.glsl.txt +5 -0
- package/build/min/src/shaders/background.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/background_pattern.fragment.glsl.txt +5 -0
- package/build/min/src/shaders/background_pattern.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/circle.fragment.glsl.txt +20 -0
- package/build/min/src/shaders/circle.vertex.glsl.txt +17 -0
- package/build/min/src/shaders/clipping_mask.fragment.glsl.txt +1 -0
- package/build/min/src/shaders/clipping_mask.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/collision_box.fragment.glsl.txt +1 -0
- package/build/min/src/shaders/collision_box.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/collision_circle.fragment.glsl.txt +1 -0
- package/build/min/src/shaders/collision_circle.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/debug.fragment.glsl.txt +1 -0
- package/build/min/src/shaders/debug.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/fill.fragment.glsl.txt +10 -0
- package/build/min/src/shaders/fill.vertex.glsl.txt +7 -0
- package/build/min/src/shaders/fill_extrusion.fragment.glsl.txt +13 -0
- package/build/min/src/shaders/fill_extrusion.vertex.glsl.txt +9 -0
- package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.txt +15 -0
- package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.txt +11 -0
- package/build/min/src/shaders/fill_outline.fragment.glsl.txt +10 -0
- package/build/min/src/shaders/fill_outline.vertex.glsl.txt +7 -0
- package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.txt +13 -0
- package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.txt +9 -0
- package/build/min/src/shaders/fill_pattern.fragment.glsl.txt +13 -0
- package/build/min/src/shaders/fill_pattern.vertex.glsl.txt +9 -0
- package/build/min/src/shaders/heatmap.fragment.glsl.txt +10 -0
- package/build/min/src/shaders/heatmap.vertex.glsl.txt +8 -0
- package/build/min/src/shaders/heatmap_texture.fragment.glsl.txt +5 -0
- package/build/min/src/shaders/heatmap_texture.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/hillshade.fragment.glsl.txt +7 -0
- package/build/min/src/shaders/hillshade.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/hillshade_prepare.fragment.glsl.txt +8 -0
- package/build/min/src/shaders/hillshade_prepare.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/line.fragment.glsl.txt +12 -0
- package/build/min/src/shaders/line.vertex.glsl.txt +17 -0
- package/build/min/src/shaders/line_gradient.fragment.glsl.txt +10 -0
- package/build/min/src/shaders/line_gradient.vertex.glsl.txt +16 -0
- package/build/min/src/shaders/line_pattern.fragment.glsl.txt +15 -0
- package/build/min/src/shaders/line_pattern.vertex.glsl.txt +20 -0
- package/build/min/src/shaders/line_sdf.fragment.glsl.txt +17 -0
- package/build/min/src/shaders/line_sdf.vertex.glsl.txt +20 -0
- package/build/min/src/shaders/raster.fragment.glsl.txt +5 -0
- package/build/min/src/shaders/raster.vertex.glsl.txt +1 -0
- package/build/min/src/shaders/symbol_icon.fragment.glsl.txt +9 -0
- package/build/min/src/shaders/symbol_icon.vertex.glsl.txt +5 -0
- package/build/min/src/shaders/symbol_sdf.fragment.glsl.txt +19 -0
- package/build/min/src/shaders/symbol_sdf.vertex.glsl.txt +13 -0
- package/package.json +44 -0
- package/src/css/mapbox-gl.css +506 -0
- package/src/css/svg/mapboxgl-ctrl-attrib.svg +3 -0
- package/src/css/svg/mapboxgl-ctrl-compass.svg +4 -0
- package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +3 -0
- package/src/css/svg/mapboxgl-ctrl-geolocate-background.svg +3 -0
- package/src/css/svg/mapboxgl-ctrl-geolocate.svg +3 -0
- package/src/css/svg/mapboxgl-ctrl-logo-compact.svg +2 -0
- package/src/css/svg/mapboxgl-ctrl-logo.svg +1 -0
- package/src/css/svg/mapboxgl-ctrl-shrink.svg +3 -0
- package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +3 -0
- package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +3 -0
- package/src/data/array_types.js +1138 -0
- package/src/data/bucket/circle_attributes.js +5 -0
- package/src/data/bucket/circle_bucket.js +118 -0
- package/src/data/bucket/fill_attributes.js +5 -0
- package/src/data/bucket/fill_bucket.js +166 -0
- package/src/data/bucket/fill_extrusion_attributes.js +11 -0
- package/src/data/bucket/fill_extrusion_bucket.js +247 -0
- package/src/data/bucket/heatmap_bucket.js +12 -0
- package/src/data/bucket/line_attributes.js +11 -0
- package/src/data/bucket/line_bucket.js +625 -0
- package/src/data/bucket/pattern_attributes.js +9 -0
- package/src/data/bucket/pattern_bucket_features.js +44 -0
- package/src/data/bucket/symbol_attributes.js +95 -0
- package/src/data/bucket/symbol_bucket.js +697 -0
- package/src/data/bucket.js +53 -0
- package/src/data/dem_data.js +126 -0
- package/src/data/extent.js +17 -0
- package/src/data/feature_index.js +254 -0
- package/src/data/index_array_type.js +14 -0
- package/src/data/load_geometry.js +42 -0
- package/src/data/pos_attributes.js +3 -0
- package/src/data/program_configuration.js +782 -0
- package/src/data/raster_bounds_attributes.js +6 -0
- package/src/data/segment.js +63 -0
- package/src/geo/coordinate.js +78 -0
- package/src/geo/lng_lat.js +129 -0
- package/src/geo/lng_lat_bounds.js +253 -0
- package/src/geo/transform.js +605 -0
- package/src/gl/color_mode.js +21 -0
- package/src/gl/context.js +193 -0
- package/src/gl/cull_face_mode.js +22 -0
- package/src/gl/depth_mode.js +18 -0
- package/src/gl/framebuffer.js +28 -0
- package/src/gl/index_buffer.js +52 -0
- package/src/gl/stencil_mode.js +17 -0
- package/src/gl/types.js +0 -0
- package/src/gl/value.js +676 -0
- package/src/gl/vertex_buffer.js +101 -0
- package/src/index.js +50 -0
- package/src/render/draw_background.js +60 -0
- package/src/render/draw_circle.js +55 -0
- package/src/render/draw_collision_debug.js +45 -0
- package/src/render/draw_debug.js +429 -0
- package/src/render/draw_fill.js +143 -0
- package/src/render/draw_fill_extrusion.js +101 -0
- package/src/render/draw_heatmap.js +159 -0
- package/src/render/draw_hillshade.js +144 -0
- package/src/render/draw_line.js +99 -0
- package/src/render/draw_raster.js +151 -0
- package/src/render/draw_symbol.js +231 -0
- package/src/render/glyph_atlas.js +55 -0
- package/src/render/glyph_manager.js +145 -0
- package/src/render/image_atlas.js +97 -0
- package/src/render/image_manager.js +183 -0
- package/src/render/line_atlas.js +139 -0
- package/src/render/painter.js +483 -0
- package/src/render/program/background_program.js +46 -0
- package/src/render/program/circle_program.js +40 -0
- package/src/render/program/clipping_mask_program.js +11 -0
- package/src/render/program/collision_program.js +28 -0
- package/src/render/program/debug_program.js +13 -0
- package/src/render/program/fill_extrusion_program.js +76 -0
- package/src/render/program/fill_program.js +60 -0
- package/src/render/program/heatmap_program.js +46 -0
- package/src/render/program/hillshade_program.js +77 -0
- package/src/render/program/line_program.js +119 -0
- package/src/render/program/pattern.js +57 -0
- package/src/render/program/program_uniforms.js +46 -0
- package/src/render/program/raster_program.js +50 -0
- package/src/render/program/symbol_program.js +112 -0
- package/src/render/program.js +133 -0
- package/src/render/texture.js +88 -0
- package/src/render/tile_mask.js +108 -0
- package/src/render/uniform_binding.js +129 -0
- package/src/render/vertex_array_object.js +155 -0
- package/src/shaders/README.md +42 -0
- package/src/shaders/_prelude.fragment.glsl +17 -0
- package/src/shaders/_prelude.vertex.glsl +73 -0
- package/src/shaders/background.fragment.glsl +10 -0
- package/src/shaders/background.vertex.glsl +7 -0
- package/src/shaders/background_pattern.fragment.glsl +28 -0
- package/src/shaders/background_pattern.vertex.glsl +20 -0
- package/src/shaders/circle.fragment.glsl +39 -0
- package/src/shaders/circle.vertex.glsl +63 -0
- package/src/shaders/clipping_mask.fragment.glsl +3 -0
- package/src/shaders/clipping_mask.vertex.glsl +7 -0
- package/src/shaders/collision_box.fragment.glsl +21 -0
- package/src/shaders/collision_box.vertex.glsl +26 -0
- package/src/shaders/collision_circle.fragment.glsl +34 -0
- package/src/shaders/collision_circle.vertex.glsl +36 -0
- package/src/shaders/debug.fragment.glsl +5 -0
- package/src/shaders/debug.vertex.glsl +7 -0
- package/src/shaders/encode_attribute.js +19 -0
- package/src/shaders/fill.fragment.glsl +13 -0
- package/src/shaders/fill.vertex.glsl +13 -0
- package/src/shaders/fill_extrusion.fragment.glsl +16 -0
- package/src/shaders/fill_extrusion.vertex.glsl +66 -0
- package/src/shaders/fill_extrusion_pattern.fragment.glsl +41 -0
- package/src/shaders/fill_extrusion_pattern.vertex.glsl +76 -0
- package/src/shaders/fill_outline.fragment.glsl +17 -0
- package/src/shaders/fill_outline.vertex.glsl +17 -0
- package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
- package/src/shaders/fill_outline_pattern.vertex.glsl +41 -0
- package/src/shaders/fill_pattern.fragment.glsl +36 -0
- package/src/shaders/fill_pattern.vertex.glsl +36 -0
- package/src/shaders/heatmap.fragment.glsl +21 -0
- package/src/shaders/heatmap.vertex.glsl +53 -0
- package/src/shaders/heatmap_texture.fragment.glsl +14 -0
- package/src/shaders/heatmap_texture.vertex.glsl +11 -0
- package/src/shaders/hillshade.fragment.glsl +52 -0
- package/src/shaders/hillshade.vertex.glsl +11 -0
- package/src/shaders/hillshade_prepare.fragment.glsl +72 -0
- package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
- package/src/shaders/index.js +194 -0
- package/src/shaders/line.fragment.glsl +28 -0
- package/src/shaders/line.vertex.glsl +84 -0
- package/src/shaders/line_gradient.fragment.glsl +34 -0
- package/src/shaders/line_gradient.vertex.glsl +84 -0
- package/src/shaders/line_pattern.fragment.glsl +69 -0
- package/src/shaders/line_pattern.vertex.glsl +88 -0
- package/src/shaders/line_sdf.fragment.glsl +44 -0
- package/src/shaders/line_sdf.vertex.glsl +95 -0
- package/src/shaders/raster.fragment.glsl +52 -0
- package/src/shaders/raster.vertex.glsl +21 -0
- package/src/shaders/symbol_icon.fragment.glsl +17 -0
- package/src/shaders/symbol_icon.vertex.glsl +91 -0
- package/src/shaders/symbol_sdf.fragment.glsl +50 -0
- package/src/shaders/symbol_sdf.vertex.glsl +117 -0
- package/src/source/geojson_source.js +267 -0
- package/src/source/geojson_worker_source.js +210 -0
- package/src/source/geojson_wrapper.js +67 -0
- package/src/source/image_source.js +213 -0
- package/src/source/load_tilejson.js +40 -0
- package/src/source/pixels_to_tile_units.js +17 -0
- package/src/source/query_features.js +198 -0
- package/src/source/raster_dem_tile_source.js +140 -0
- package/src/source/raster_dem_tile_worker_source.js +26 -0
- package/src/source/raster_tile_source.js +126 -0
- package/src/source/rtl_text_plugin.js +63 -0
- package/src/source/source.js +75 -0
- package/src/source/source_cache.js +794 -0
- package/src/source/source_state.js +55 -0
- package/src/source/tile.js +332 -0
- package/src/source/tile_bounds.js +40 -0
- package/src/source/tile_cache.js +122 -0
- package/src/source/tile_id.js +150 -0
- package/src/source/vector_tile_source.js +144 -0
- package/src/source/vector_tile_worker_source.js +126 -0
- package/src/source/worker.js +175 -0
- package/src/source/worker_source.js +14 -0
- package/src/source/worker_tile.js +199 -0
- package/src/style/create_style_layer.js +25 -0
- package/src/style/evaluation_parameters.js +45 -0
- package/src/style/light.js +112 -0
- package/src/style/load_glyph_range.js +17 -0
- package/src/style/load_sprite.js +26 -0
- package/src/style/parse_glyph_pbf.js +45 -0
- package/src/style/pauseable_placement.js +88 -0
- package/src/style/properties.js +691 -0
- package/src/style/query_utils.js +39 -0
- package/src/style/style.js +955 -0
- package/src/style/style_layer/background_style_layer.js +11 -0
- package/src/style/style_layer/background_style_layer_properties.js +25 -0
- package/src/style/style_layer/circle_style_layer.js +93 -0
- package/src/style/style_layer/circle_style_layer_properties.js +76 -0
- package/src/style/style_layer/fill_extrusion_style_layer.js +194 -0
- package/src/style/style_layer/fill_extrusion_style_layer_properties.js +56 -0
- package/src/style/style_layer/fill_style_layer.js +46 -0
- package/src/style/style_layer/fill_style_layer_properties.js +45 -0
- package/src/style/style_layer/heatmap_style_layer.js +51 -0
- package/src/style/style_layer/heatmap_style_layer_properties.js +52 -0
- package/src/style/style_layer/hillshade_style_layer.js +15 -0
- package/src/style/style_layer/hillshade_style_layer_properties.js +43 -0
- package/src/style/style_layer/line_style_layer.js +129 -0
- package/src/style/style_layer/line_style_layer_properties.js +104 -0
- package/src/style/style_layer/raster_style_layer.js +11 -0
- package/src/style/style_layer/raster_style_layer_properties.js +55 -0
- package/src/style/style_layer/symbol_style_layer.js +66 -0
- package/src/style/style_layer/symbol_style_layer_properties.js +288 -0
- package/src/style/style_layer.js +183 -0
- package/src/style/style_layer_index.js +61 -0
- package/src/style/zoom_history.js +36 -0
- package/src/style-spec/deref.js +51 -0
- package/src/style-spec/error/parsing_error.js +8 -0
- package/src/style-spec/error/validation_error.js +10 -0
- package/src/style-spec/expression/compound_expression.js +118 -0
- package/src/style-spec/expression/definitions/array.js +82 -0
- package/src/style-spec/expression/definitions/assertion.js +69 -0
- package/src/style-spec/expression/definitions/at.js +57 -0
- package/src/style-spec/expression/definitions/case.js +73 -0
- package/src/style-spec/expression/definitions/coalesce.js +68 -0
- package/src/style-spec/expression/definitions/coercion.js +96 -0
- package/src/style-spec/expression/definitions/collator.js +102 -0
- package/src/style-spec/expression/definitions/equals.js +93 -0
- package/src/style-spec/expression/definitions/index.js +407 -0
- package/src/style-spec/expression/definitions/interpolate.js +235 -0
- package/src/style-spec/expression/definitions/length.js +54 -0
- package/src/style-spec/expression/definitions/let.js +60 -0
- package/src/style-spec/expression/definitions/literal.js +64 -0
- package/src/style-spec/expression/definitions/match.js +142 -0
- package/src/style-spec/expression/definitions/step.js +116 -0
- package/src/style-spec/expression/definitions/var.js +38 -0
- package/src/style-spec/expression/evaluation_context.js +35 -0
- package/src/style-spec/expression/index.js +329 -0
- package/src/style-spec/expression/is_constant.js +63 -0
- package/src/style-spec/expression/parsing_context.js +213 -0
- package/src/style-spec/expression/parsing_error.js +9 -0
- package/src/style-spec/expression/runtime_error.js +12 -0
- package/src/style-spec/expression/scope.js +34 -0
- package/src/style-spec/expression/stops.js +37 -0
- package/src/style-spec/expression/types.js +77 -0
- package/src/style-spec/expression/values.js +126 -0
- package/src/style-spec/feature_filter/README.md +55 -0
- package/src/style-spec/feature_filter/index.js +158 -0
- package/src/style-spec/function/convert.js +256 -0
- package/src/style-spec/function/index.js +299 -0
- package/src/style-spec/group_by_layout.js +68 -0
- package/src/style-spec/reference/v8.json +5356 -0
- package/src/style-spec/util/color.js +73 -0
- package/src/style-spec/util/color_spaces.js +128 -0
- package/src/style-spec/util/eval_support.js +8 -0
- package/src/style-spec/util/get_type.js +18 -0
- package/src/style-spec/util/interpolate.js +21 -0
- package/src/style-spec/util/properties.js +17 -0
- package/src/style-spec/util/ref_properties.js +1 -0
- package/src/style-spec/util/result.js +19 -0
- package/src/symbol/anchor.js +21 -0
- package/src/symbol/check_max_angle.js +75 -0
- package/src/symbol/clip_line.js +73 -0
- package/src/symbol/collision_feature.js +230 -0
- package/src/symbol/collision_index.js +379 -0
- package/src/symbol/cross_tile_symbol_index.js +270 -0
- package/src/symbol/get_anchors.js +177 -0
- package/src/symbol/grid_index.js +318 -0
- package/src/symbol/mergelines.js +75 -0
- package/src/symbol/opacity_state.js +21 -0
- package/src/symbol/placement.js +563 -0
- package/src/symbol/projection.js +601 -0
- package/src/symbol/quads.js +173 -0
- package/src/symbol/shaping.js +347 -0
- package/src/symbol/symbol_layout.js +519 -0
- package/src/symbol/symbol_size.js +110 -0
- package/src/symbol/transform_text.js +16 -0
- package/src/ui/anchor.js +24 -0
- package/src/ui/bind_handlers.js +199 -0
- package/src/ui/camera.js +954 -0
- package/src/ui/events.js +210 -0
- package/src/ui/handler/box_zoom.js +151 -0
- package/src/ui/handler/dblclick_zoom.js +91 -0
- package/src/ui/handler/drag_pan.js +285 -0
- package/src/ui/handler/drag_rotate.js +290 -0
- package/src/ui/handler/frame.js +28 -0
- package/src/ui/handler/inertia.js +45 -0
- package/src/ui/handler/keyboard.js +148 -0
- package/src/ui/handler/scroll_zoom.js +284 -0
- package/src/ui/handler/touch_zoom_rotate.js +263 -0
- package/src/ui/map.js +1645 -0
- package/src/util/actor.js +104 -0
- package/src/util/async.js +23 -0
- package/src/util/browser.js +61 -0
- package/src/util/callback.js +26 -0
- package/src/util/classify_rings.js +43 -0
- package/src/util/color_ramp.js +24 -0
- package/src/util/config.js +24 -0
- package/src/util/dictionary_coder.js +25 -0
- package/src/util/dispatcher.js +68 -0
- package/src/util/dom.js +102 -0
- package/src/util/evented.js +182 -0
- package/src/util/find_pole_of_inaccessibility.js +129 -0
- package/src/util/global_worker_pool.js +15 -0
- package/src/util/image.js +124 -0
- package/src/util/interpolate.js +5 -0
- package/src/util/intersection_tests.js +207 -0
- package/src/util/is_char_in_unicode_block.js +287 -0
- package/src/util/loader/image.js +32 -0
- package/src/util/object.js +178 -0
- package/src/util/script_detection.js +337 -0
- package/src/util/struct_array.js +197 -0
- package/src/util/task_queue.js +57 -0
- package/src/util/throttle.js +26 -0
- package/src/util/tile_cover.js +114 -0
- package/src/util/token.js +13 -0
- package/src/util/unique_id.js +12 -0
- package/src/util/util.js +192 -0
- package/src/util/vectortile_to_geojson.js +44 -0
- package/src/util/verticalize_punctuation.js +112 -0
- package/src/util/warn.js +21 -0
- package/src/util/web_worker.js +5 -0
- package/src/util/web_worker_transfer.js +228 -0
- package/src/util/worker_pool.js +41 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec3 u_lightcolor;
|
|
3
|
+
uniform lowp vec3 u_lightpos;
|
|
4
|
+
uniform lowp float u_lightintensity;
|
|
5
|
+
uniform float u_vertical_gradient;
|
|
6
|
+
uniform lowp float u_opacity;
|
|
7
|
+
|
|
8
|
+
attribute vec2 a_pos;
|
|
9
|
+
attribute vec4 a_normal_ed;
|
|
10
|
+
|
|
11
|
+
varying vec4 v_color;
|
|
12
|
+
|
|
13
|
+
#pragma mapbox: define lowp float base
|
|
14
|
+
#pragma mapbox: define lowp float height
|
|
15
|
+
|
|
16
|
+
#pragma mapbox: define highp vec4 color
|
|
17
|
+
|
|
18
|
+
void main() {
|
|
19
|
+
#pragma mapbox: initialize lowp float base
|
|
20
|
+
#pragma mapbox: initialize lowp float height
|
|
21
|
+
#pragma mapbox: initialize highp vec4 color
|
|
22
|
+
|
|
23
|
+
vec3 normal = a_normal_ed.xyz;
|
|
24
|
+
|
|
25
|
+
base = max(0.0, base);
|
|
26
|
+
height = max(0.0, height);
|
|
27
|
+
|
|
28
|
+
float t = mod(normal.x, 2.0);
|
|
29
|
+
|
|
30
|
+
gl_Position = u_matrix * vec4(a_pos, t > 0.0 ? height : base, 1);
|
|
31
|
+
|
|
32
|
+
// Relative luminance (how dark/bright is the surface color?)
|
|
33
|
+
float colorvalue = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;
|
|
34
|
+
|
|
35
|
+
v_color = vec4(0.0, 0.0, 0.0, 1.0);
|
|
36
|
+
|
|
37
|
+
// Add slight ambient lighting so no extrusions are totally black
|
|
38
|
+
vec4 ambientlight = vec4(0.03, 0.03, 0.03, 1.0);
|
|
39
|
+
color += ambientlight;
|
|
40
|
+
|
|
41
|
+
// Calculate cos(theta), where theta is the angle between surface normal and diffuse light ray
|
|
42
|
+
float directional = clamp(dot(normal / 16384.0, u_lightpos), 0.0, 1.0);
|
|
43
|
+
|
|
44
|
+
// Adjust directional so that
|
|
45
|
+
// the range of values for highlight/shading is narrower
|
|
46
|
+
// with lower light intensity
|
|
47
|
+
// and with lighter/brighter surface colors
|
|
48
|
+
directional = mix((1.0 - u_lightintensity), max((1.0 - colorvalue + u_lightintensity), 1.0), directional);
|
|
49
|
+
|
|
50
|
+
// Add gradient along z axis of side surfaces
|
|
51
|
+
if (normal.y != 0.0) {
|
|
52
|
+
// This avoids another branching statement, but multiplies by a constant of 0.84 if no vertical gradient,
|
|
53
|
+
// and otherwise calculates the gradient based on base + height
|
|
54
|
+
directional *= (
|
|
55
|
+
(1.0 - u_vertical_gradient) +
|
|
56
|
+
(u_vertical_gradient * clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0)));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Assign final color based on surface + ambient light color, diffuse light directional, and light color
|
|
60
|
+
// with lower bounds adjusted to hue of light
|
|
61
|
+
// so that shading is tinted with the complementary (opposite) color to the light color
|
|
62
|
+
v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);
|
|
63
|
+
v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);
|
|
64
|
+
v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);
|
|
65
|
+
v_color *= u_opacity;
|
|
66
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
uniform vec2 u_texsize;
|
|
2
|
+
uniform float u_fade;
|
|
3
|
+
|
|
4
|
+
uniform sampler2D u_image;
|
|
5
|
+
|
|
6
|
+
varying vec2 v_pos_a;
|
|
7
|
+
varying vec2 v_pos_b;
|
|
8
|
+
varying vec4 v_lighting;
|
|
9
|
+
|
|
10
|
+
#pragma mapbox: define lowp float base
|
|
11
|
+
#pragma mapbox: define lowp float height
|
|
12
|
+
#pragma mapbox: define lowp vec4 pattern_from
|
|
13
|
+
#pragma mapbox: define lowp vec4 pattern_to
|
|
14
|
+
|
|
15
|
+
void main() {
|
|
16
|
+
#pragma mapbox: initialize lowp float base
|
|
17
|
+
#pragma mapbox: initialize lowp float height
|
|
18
|
+
#pragma mapbox: initialize mediump vec4 pattern_from
|
|
19
|
+
#pragma mapbox: initialize mediump vec4 pattern_to
|
|
20
|
+
|
|
21
|
+
vec2 pattern_tl_a = pattern_from.xy;
|
|
22
|
+
vec2 pattern_br_a = pattern_from.zw;
|
|
23
|
+
vec2 pattern_tl_b = pattern_to.xy;
|
|
24
|
+
vec2 pattern_br_b = pattern_to.zw;
|
|
25
|
+
|
|
26
|
+
vec2 imagecoord = mod(v_pos_a, 1.0);
|
|
27
|
+
vec2 pos = mix(pattern_tl_a / u_texsize, pattern_br_a / u_texsize, imagecoord);
|
|
28
|
+
vec4 color1 = texture2D(u_image, pos);
|
|
29
|
+
|
|
30
|
+
vec2 imagecoord_b = mod(v_pos_b, 1.0);
|
|
31
|
+
vec2 pos2 = mix(pattern_tl_b / u_texsize, pattern_br_b / u_texsize, imagecoord_b);
|
|
32
|
+
vec4 color2 = texture2D(u_image, pos2);
|
|
33
|
+
|
|
34
|
+
vec4 mixedColor = mix(color1, color2, u_fade);
|
|
35
|
+
|
|
36
|
+
gl_FragColor = mixedColor * v_lighting;
|
|
37
|
+
|
|
38
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
39
|
+
gl_FragColor = vec4(1.0);
|
|
40
|
+
#endif
|
|
41
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec2 u_pixel_coord_upper;
|
|
3
|
+
uniform vec2 u_pixel_coord_lower;
|
|
4
|
+
uniform float u_height_factor;
|
|
5
|
+
uniform vec4 u_scale;
|
|
6
|
+
uniform float u_vertical_gradient;
|
|
7
|
+
uniform lowp float u_opacity;
|
|
8
|
+
|
|
9
|
+
uniform vec3 u_lightcolor;
|
|
10
|
+
uniform lowp vec3 u_lightpos;
|
|
11
|
+
uniform lowp float u_lightintensity;
|
|
12
|
+
|
|
13
|
+
attribute vec2 a_pos;
|
|
14
|
+
attribute vec4 a_normal_ed;
|
|
15
|
+
|
|
16
|
+
varying vec2 v_pos_a;
|
|
17
|
+
varying vec2 v_pos_b;
|
|
18
|
+
varying vec4 v_lighting;
|
|
19
|
+
|
|
20
|
+
#pragma mapbox: define lowp float base
|
|
21
|
+
#pragma mapbox: define lowp float height
|
|
22
|
+
#pragma mapbox: define lowp vec4 pattern_from
|
|
23
|
+
#pragma mapbox: define lowp vec4 pattern_to
|
|
24
|
+
|
|
25
|
+
void main() {
|
|
26
|
+
#pragma mapbox: initialize lowp float base
|
|
27
|
+
#pragma mapbox: initialize lowp float height
|
|
28
|
+
#pragma mapbox: initialize mediump vec4 pattern_from
|
|
29
|
+
#pragma mapbox: initialize mediump vec4 pattern_to
|
|
30
|
+
|
|
31
|
+
vec2 pattern_tl_a = pattern_from.xy;
|
|
32
|
+
vec2 pattern_br_a = pattern_from.zw;
|
|
33
|
+
vec2 pattern_tl_b = pattern_to.xy;
|
|
34
|
+
vec2 pattern_br_b = pattern_to.zw;
|
|
35
|
+
|
|
36
|
+
float pixelRatio = u_scale.x;
|
|
37
|
+
float tileRatio = u_scale.y;
|
|
38
|
+
float fromScale = u_scale.z;
|
|
39
|
+
float toScale = u_scale.w;
|
|
40
|
+
|
|
41
|
+
vec3 normal = a_normal_ed.xyz;
|
|
42
|
+
float edgedistance = a_normal_ed.w;
|
|
43
|
+
|
|
44
|
+
vec2 display_size_a = vec2((pattern_br_a.x - pattern_tl_a.x) / pixelRatio, (pattern_br_a.y - pattern_tl_a.y) / pixelRatio);
|
|
45
|
+
vec2 display_size_b = vec2((pattern_br_b.x - pattern_tl_b.x) / pixelRatio, (pattern_br_b.y - pattern_tl_b.y) / pixelRatio);
|
|
46
|
+
|
|
47
|
+
base = max(0.0, base);
|
|
48
|
+
height = max(0.0, height);
|
|
49
|
+
|
|
50
|
+
float t = mod(normal.x, 2.0);
|
|
51
|
+
float z = t > 0.0 ? height : base;
|
|
52
|
+
|
|
53
|
+
gl_Position = u_matrix * vec4(a_pos, z, 1);
|
|
54
|
+
|
|
55
|
+
vec2 pos = normal.x == 1.0 && normal.y == 0.0 && normal.z == 16384.0
|
|
56
|
+
? a_pos // extrusion top
|
|
57
|
+
: vec2(edgedistance, z * u_height_factor); // extrusion side
|
|
58
|
+
|
|
59
|
+
v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, fromScale * display_size_a, tileRatio, pos);
|
|
60
|
+
v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, toScale * display_size_b, tileRatio, pos);
|
|
61
|
+
|
|
62
|
+
v_lighting = vec4(0.0, 0.0, 0.0, 1.0);
|
|
63
|
+
float directional = clamp(dot(normal / 16383.0, u_lightpos), 0.0, 1.0);
|
|
64
|
+
directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);
|
|
65
|
+
|
|
66
|
+
if (normal.y != 0.0) {
|
|
67
|
+
// This avoids another branching statement, but multiplies by a constant of 0.84 if no vertical gradient,
|
|
68
|
+
// and otherwise calculates the gradient based on base + height
|
|
69
|
+
directional *= (
|
|
70
|
+
(1.0 - u_vertical_gradient) +
|
|
71
|
+
(u_vertical_gradient * clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0)));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));
|
|
75
|
+
v_lighting *= u_opacity;
|
|
76
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#pragma mapbox: define highp vec4 outline_color
|
|
2
|
+
#pragma mapbox: define lowp float opacity
|
|
3
|
+
|
|
4
|
+
varying vec2 v_pos;
|
|
5
|
+
|
|
6
|
+
void main() {
|
|
7
|
+
#pragma mapbox: initialize highp vec4 outline_color
|
|
8
|
+
#pragma mapbox: initialize lowp float opacity
|
|
9
|
+
|
|
10
|
+
float dist = length(v_pos - gl_FragCoord.xy);
|
|
11
|
+
float alpha = 1.0 - smoothstep(0.0, 1.0, dist);
|
|
12
|
+
gl_FragColor = outline_color * (alpha * opacity);
|
|
13
|
+
|
|
14
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
15
|
+
gl_FragColor = vec4(1.0);
|
|
16
|
+
#endif
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
attribute vec2 a_pos;
|
|
2
|
+
|
|
3
|
+
uniform mat4 u_matrix;
|
|
4
|
+
uniform vec2 u_world;
|
|
5
|
+
|
|
6
|
+
varying vec2 v_pos;
|
|
7
|
+
|
|
8
|
+
#pragma mapbox: define highp vec4 outline_color
|
|
9
|
+
#pragma mapbox: define lowp float opacity
|
|
10
|
+
|
|
11
|
+
void main() {
|
|
12
|
+
#pragma mapbox: initialize highp vec4 outline_color
|
|
13
|
+
#pragma mapbox: initialize lowp float opacity
|
|
14
|
+
|
|
15
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
16
|
+
v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;
|
|
17
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
uniform vec2 u_texsize;
|
|
3
|
+
uniform sampler2D u_image;
|
|
4
|
+
uniform float u_fade;
|
|
5
|
+
|
|
6
|
+
varying vec2 v_pos_a;
|
|
7
|
+
varying vec2 v_pos_b;
|
|
8
|
+
varying vec2 v_pos;
|
|
9
|
+
|
|
10
|
+
#pragma mapbox: define lowp float opacity
|
|
11
|
+
#pragma mapbox: define lowp vec4 pattern_from
|
|
12
|
+
#pragma mapbox: define lowp vec4 pattern_to
|
|
13
|
+
|
|
14
|
+
void main() {
|
|
15
|
+
#pragma mapbox: initialize lowp float opacity
|
|
16
|
+
#pragma mapbox: initialize mediump vec4 pattern_from
|
|
17
|
+
#pragma mapbox: initialize mediump vec4 pattern_to
|
|
18
|
+
|
|
19
|
+
vec2 pattern_tl_a = pattern_from.xy;
|
|
20
|
+
vec2 pattern_br_a = pattern_from.zw;
|
|
21
|
+
vec2 pattern_tl_b = pattern_to.xy;
|
|
22
|
+
vec2 pattern_br_b = pattern_to.zw;
|
|
23
|
+
|
|
24
|
+
vec2 imagecoord = mod(v_pos_a, 1.0);
|
|
25
|
+
vec2 pos = mix(pattern_tl_a / u_texsize, pattern_br_a / u_texsize, imagecoord);
|
|
26
|
+
vec4 color1 = texture2D(u_image, pos);
|
|
27
|
+
|
|
28
|
+
vec2 imagecoord_b = mod(v_pos_b, 1.0);
|
|
29
|
+
vec2 pos2 = mix(pattern_tl_b / u_texsize, pattern_br_b / u_texsize, imagecoord_b);
|
|
30
|
+
vec4 color2 = texture2D(u_image, pos2);
|
|
31
|
+
|
|
32
|
+
// find distance to outline for alpha interpolation
|
|
33
|
+
|
|
34
|
+
float dist = length(v_pos - gl_FragCoord.xy);
|
|
35
|
+
float alpha = 1.0 - smoothstep(0.0, 1.0, dist);
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
gl_FragColor = mix(color1, color2, u_fade) * alpha * opacity;
|
|
39
|
+
|
|
40
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
41
|
+
gl_FragColor = vec4(1.0);
|
|
42
|
+
#endif
|
|
43
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec2 u_world;
|
|
3
|
+
uniform vec2 u_pixel_coord_upper;
|
|
4
|
+
uniform vec2 u_pixel_coord_lower;
|
|
5
|
+
uniform vec4 u_scale;
|
|
6
|
+
|
|
7
|
+
attribute vec2 a_pos;
|
|
8
|
+
|
|
9
|
+
varying vec2 v_pos_a;
|
|
10
|
+
varying vec2 v_pos_b;
|
|
11
|
+
varying vec2 v_pos;
|
|
12
|
+
|
|
13
|
+
#pragma mapbox: define lowp float opacity
|
|
14
|
+
#pragma mapbox: define lowp vec4 pattern_from
|
|
15
|
+
#pragma mapbox: define lowp vec4 pattern_to
|
|
16
|
+
|
|
17
|
+
void main() {
|
|
18
|
+
#pragma mapbox: initialize lowp float opacity
|
|
19
|
+
#pragma mapbox: initialize mediump vec4 pattern_from
|
|
20
|
+
#pragma mapbox: initialize mediump vec4 pattern_to
|
|
21
|
+
|
|
22
|
+
vec2 pattern_tl_a = pattern_from.xy;
|
|
23
|
+
vec2 pattern_br_a = pattern_from.zw;
|
|
24
|
+
vec2 pattern_tl_b = pattern_to.xy;
|
|
25
|
+
vec2 pattern_br_b = pattern_to.zw;
|
|
26
|
+
|
|
27
|
+
float pixelRatio = u_scale.x;
|
|
28
|
+
float tileRatio = u_scale.y;
|
|
29
|
+
float fromScale = u_scale.z;
|
|
30
|
+
float toScale = u_scale.w;
|
|
31
|
+
|
|
32
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
33
|
+
|
|
34
|
+
vec2 display_size_a = vec2((pattern_br_a.x - pattern_tl_a.x) / pixelRatio, (pattern_br_a.y - pattern_tl_a.y) / pixelRatio);
|
|
35
|
+
vec2 display_size_b = vec2((pattern_br_b.x - pattern_tl_b.x) / pixelRatio, (pattern_br_b.y - pattern_tl_b.y) / pixelRatio);
|
|
36
|
+
|
|
37
|
+
v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, fromScale * display_size_a, tileRatio, a_pos);
|
|
38
|
+
v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, toScale * display_size_b, tileRatio, a_pos);
|
|
39
|
+
|
|
40
|
+
v_pos = (gl_Position.xy / gl_Position.w + 1.0) / 2.0 * u_world;
|
|
41
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
uniform vec2 u_texsize;
|
|
2
|
+
uniform float u_fade;
|
|
3
|
+
|
|
4
|
+
uniform sampler2D u_image;
|
|
5
|
+
|
|
6
|
+
varying vec2 v_pos_a;
|
|
7
|
+
varying vec2 v_pos_b;
|
|
8
|
+
|
|
9
|
+
#pragma mapbox: define lowp float opacity
|
|
10
|
+
#pragma mapbox: define lowp vec4 pattern_from
|
|
11
|
+
#pragma mapbox: define lowp vec4 pattern_to
|
|
12
|
+
|
|
13
|
+
void main() {
|
|
14
|
+
#pragma mapbox: initialize lowp float opacity
|
|
15
|
+
#pragma mapbox: initialize mediump vec4 pattern_from
|
|
16
|
+
#pragma mapbox: initialize mediump vec4 pattern_to
|
|
17
|
+
|
|
18
|
+
vec2 pattern_tl_a = pattern_from.xy;
|
|
19
|
+
vec2 pattern_br_a = pattern_from.zw;
|
|
20
|
+
vec2 pattern_tl_b = pattern_to.xy;
|
|
21
|
+
vec2 pattern_br_b = pattern_to.zw;
|
|
22
|
+
|
|
23
|
+
vec2 imagecoord = mod(v_pos_a, 1.0);
|
|
24
|
+
vec2 pos = mix(pattern_tl_a / u_texsize, pattern_br_a / u_texsize, imagecoord);
|
|
25
|
+
vec4 color1 = texture2D(u_image, pos);
|
|
26
|
+
|
|
27
|
+
vec2 imagecoord_b = mod(v_pos_b, 1.0);
|
|
28
|
+
vec2 pos2 = mix(pattern_tl_b / u_texsize, pattern_br_b / u_texsize, imagecoord_b);
|
|
29
|
+
vec4 color2 = texture2D(u_image, pos2);
|
|
30
|
+
|
|
31
|
+
gl_FragColor = mix(color1, color2, u_fade) * opacity;
|
|
32
|
+
|
|
33
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
34
|
+
gl_FragColor = vec4(1.0);
|
|
35
|
+
#endif
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec2 u_pixel_coord_upper;
|
|
3
|
+
uniform vec2 u_pixel_coord_lower;
|
|
4
|
+
uniform vec4 u_scale;
|
|
5
|
+
|
|
6
|
+
attribute vec2 a_pos;
|
|
7
|
+
|
|
8
|
+
varying vec2 v_pos_a;
|
|
9
|
+
varying vec2 v_pos_b;
|
|
10
|
+
|
|
11
|
+
#pragma mapbox: define lowp float opacity
|
|
12
|
+
#pragma mapbox: define lowp vec4 pattern_from
|
|
13
|
+
#pragma mapbox: define lowp vec4 pattern_to
|
|
14
|
+
|
|
15
|
+
void main() {
|
|
16
|
+
#pragma mapbox: initialize lowp float opacity
|
|
17
|
+
#pragma mapbox: initialize mediump vec4 pattern_from
|
|
18
|
+
#pragma mapbox: initialize mediump vec4 pattern_to
|
|
19
|
+
|
|
20
|
+
vec2 pattern_tl_a = pattern_from.xy;
|
|
21
|
+
vec2 pattern_br_a = pattern_from.zw;
|
|
22
|
+
vec2 pattern_tl_b = pattern_to.xy;
|
|
23
|
+
vec2 pattern_br_b = pattern_to.zw;
|
|
24
|
+
|
|
25
|
+
float pixelRatio = u_scale.x;
|
|
26
|
+
float tileZoomRatio = u_scale.y;
|
|
27
|
+
float fromScale = u_scale.z;
|
|
28
|
+
float toScale = u_scale.w;
|
|
29
|
+
|
|
30
|
+
vec2 display_size_a = vec2((pattern_br_a.x - pattern_tl_a.x) / pixelRatio, (pattern_br_a.y - pattern_tl_a.y) / pixelRatio);
|
|
31
|
+
vec2 display_size_b = vec2((pattern_br_b.x - pattern_tl_b.x) / pixelRatio, (pattern_br_b.y - pattern_tl_b.y) / pixelRatio);
|
|
32
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
33
|
+
|
|
34
|
+
v_pos_a = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, fromScale * display_size_a, tileZoomRatio, a_pos);
|
|
35
|
+
v_pos_b = get_pattern_pos(u_pixel_coord_upper, u_pixel_coord_lower, toScale * display_size_b, tileZoomRatio, a_pos);
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#pragma mapbox: define highp float weight
|
|
2
|
+
|
|
3
|
+
uniform highp float u_intensity;
|
|
4
|
+
varying vec2 v_extrude;
|
|
5
|
+
|
|
6
|
+
// Gaussian kernel coefficient: 1 / sqrt(2 * PI)
|
|
7
|
+
#define GAUSS_COEF 0.3989422804014327
|
|
8
|
+
|
|
9
|
+
void main() {
|
|
10
|
+
#pragma mapbox: initialize highp float weight
|
|
11
|
+
|
|
12
|
+
// Kernel density estimation with a Gaussian kernel of size 5x5
|
|
13
|
+
float d = -0.5 * 3.0 * 3.0 * dot(v_extrude, v_extrude);
|
|
14
|
+
float val = weight * u_intensity * GAUSS_COEF * exp(d);
|
|
15
|
+
|
|
16
|
+
gl_FragColor = vec4(val, 1.0, 1.0, 1.0);
|
|
17
|
+
|
|
18
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
19
|
+
gl_FragColor = vec4(1.0);
|
|
20
|
+
#endif
|
|
21
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#pragma mapbox: define highp float weight
|
|
2
|
+
#pragma mapbox: define mediump float radius
|
|
3
|
+
|
|
4
|
+
uniform mat4 u_matrix;
|
|
5
|
+
uniform float u_extrude_scale;
|
|
6
|
+
uniform float u_opacity;
|
|
7
|
+
uniform float u_intensity;
|
|
8
|
+
|
|
9
|
+
attribute vec2 a_pos;
|
|
10
|
+
|
|
11
|
+
varying vec2 v_extrude;
|
|
12
|
+
|
|
13
|
+
// Effective "0" in the kernel density texture to adjust the kernel size to;
|
|
14
|
+
// this empirically chosen number minimizes artifacts on overlapping kernels
|
|
15
|
+
// for typical heatmap cases (assuming clustered source)
|
|
16
|
+
const highp float ZERO = 1.0 / 255.0 / 16.0;
|
|
17
|
+
|
|
18
|
+
// Gaussian kernel coefficient: 1 / sqrt(2 * PI)
|
|
19
|
+
#define GAUSS_COEF 0.3989422804014327
|
|
20
|
+
|
|
21
|
+
void main(void) {
|
|
22
|
+
#pragma mapbox: initialize highp float weight
|
|
23
|
+
#pragma mapbox: initialize mediump float radius
|
|
24
|
+
|
|
25
|
+
// unencode the extrusion vector that we snuck into the a_pos vector
|
|
26
|
+
vec2 unscaled_extrude = vec2(mod(a_pos, 2.0) * 2.0 - 1.0);
|
|
27
|
+
|
|
28
|
+
// This 'extrude' comes in ranging from [-1, -1], to [1, 1]. We'll use
|
|
29
|
+
// it to produce the vertices of a square mesh framing the point feature
|
|
30
|
+
// we're adding to the kernel density texture. We'll also pass it as
|
|
31
|
+
// a varying, so that the fragment shader can determine the distance of
|
|
32
|
+
// each fragment from the point feature.
|
|
33
|
+
// Before we do so, we need to scale it up sufficiently so that the
|
|
34
|
+
// kernel falls effectively to zero at the edge of the mesh.
|
|
35
|
+
// That is, we want to know S such that
|
|
36
|
+
// weight * u_intensity * GAUSS_COEF * exp(-0.5 * 3.0^2 * S^2) == ZERO
|
|
37
|
+
// Which solves to:
|
|
38
|
+
// S = sqrt(-2.0 * log(ZERO / (weight * u_intensity * GAUSS_COEF))) / 3.0
|
|
39
|
+
float S = sqrt(-2.0 * log(ZERO / weight / u_intensity / GAUSS_COEF)) / 3.0;
|
|
40
|
+
|
|
41
|
+
// Pass the varying in units of radius
|
|
42
|
+
v_extrude = S * unscaled_extrude;
|
|
43
|
+
|
|
44
|
+
// Scale by radius and the zoom-based scale factor to produce actual
|
|
45
|
+
// mesh position
|
|
46
|
+
vec2 extrude = v_extrude * radius * u_extrude_scale;
|
|
47
|
+
|
|
48
|
+
// multiply a_pos by 0.5, since we had it * 2 in order to sneak
|
|
49
|
+
// in extrusion data
|
|
50
|
+
vec4 pos = vec4(floor(a_pos * 0.5) + extrude, 0, 1);
|
|
51
|
+
|
|
52
|
+
gl_Position = u_matrix * pos;
|
|
53
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
uniform sampler2D u_image;
|
|
2
|
+
uniform sampler2D u_color_ramp;
|
|
3
|
+
uniform float u_opacity;
|
|
4
|
+
varying vec2 v_pos;
|
|
5
|
+
|
|
6
|
+
void main() {
|
|
7
|
+
float t = texture2D(u_image, v_pos).r;
|
|
8
|
+
vec4 color = texture2D(u_color_ramp, vec2(t, 0.5));
|
|
9
|
+
gl_FragColor = color * u_opacity;
|
|
10
|
+
|
|
11
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
12
|
+
gl_FragColor = vec4(0.0);
|
|
13
|
+
#endif
|
|
14
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
uniform sampler2D u_image;
|
|
2
|
+
varying vec2 v_pos;
|
|
3
|
+
|
|
4
|
+
uniform vec2 u_latrange;
|
|
5
|
+
uniform vec2 u_light;
|
|
6
|
+
uniform vec4 u_shadow;
|
|
7
|
+
uniform vec4 u_highlight;
|
|
8
|
+
uniform vec4 u_accent;
|
|
9
|
+
|
|
10
|
+
#define PI 3.141592653589793
|
|
11
|
+
|
|
12
|
+
void main() {
|
|
13
|
+
vec4 pixel = texture2D(u_image, v_pos);
|
|
14
|
+
|
|
15
|
+
vec2 deriv = ((pixel.rg * 2.0) - 1.0);
|
|
16
|
+
|
|
17
|
+
// We divide the slope by a scale factor based on the cosin of the pixel's approximate latitude
|
|
18
|
+
// to account for mercator projection distortion. see #4807 for details
|
|
19
|
+
float scaleFactor = cos(radians((u_latrange[0] - u_latrange[1]) * (1.0 - v_pos.y) + u_latrange[1]));
|
|
20
|
+
// We also multiply the slope by an arbitrary z-factor of 1.25
|
|
21
|
+
float slope = atan(1.25 * length(deriv) / scaleFactor);
|
|
22
|
+
float aspect = deriv.x != 0.0 ? atan(deriv.y, -deriv.x) : PI / 2.0 * (deriv.y > 0.0 ? 1.0 : -1.0);
|
|
23
|
+
|
|
24
|
+
float intensity = u_light.x;
|
|
25
|
+
// We add PI to make this property match the global light object, which adds PI/2 to the light's azimuthal
|
|
26
|
+
// position property to account for 0deg corresponding to north/the top of the viewport in the style spec
|
|
27
|
+
// and the original shader was written to accept (-illuminationDirection - 90) as the azimuthal.
|
|
28
|
+
float azimuth = u_light.y + PI;
|
|
29
|
+
|
|
30
|
+
// We scale the slope exponentially based on intensity, using a calculation similar to
|
|
31
|
+
// the exponential interpolation function in the style spec:
|
|
32
|
+
// https://github.com/mapbox/mapbox-gl-js/blob/master/src/style-spec/expression/definitions/interpolate.js#L217-L228
|
|
33
|
+
// so that higher intensity values create more opaque hillshading.
|
|
34
|
+
float base = 1.875 - intensity * 1.75;
|
|
35
|
+
float maxValue = 0.5 * PI;
|
|
36
|
+
float scaledSlope = intensity != 0.5 ? ((pow(base, slope) - 1.0) / (pow(base, maxValue) - 1.0)) * maxValue : slope;
|
|
37
|
+
|
|
38
|
+
// The accent color is calculated with the cosine of the slope while the shade color is calculated with the sine
|
|
39
|
+
// so that the accent color's rate of change eases in while the shade color's eases out.
|
|
40
|
+
float accent = cos(scaledSlope);
|
|
41
|
+
// We multiply both the accent and shade color by a clamped intensity value
|
|
42
|
+
// so that intensities >= 0.5 do not additionally affect the color values
|
|
43
|
+
// while intensity values < 0.5 make the overall color more transparent.
|
|
44
|
+
vec4 accent_color = (1.0 - accent) * u_accent * clamp(intensity * 2.0, 0.0, 1.0);
|
|
45
|
+
float shade = abs(mod((aspect + azimuth) / PI + 0.5, 2.0) - 1.0);
|
|
46
|
+
vec4 shade_color = mix(u_shadow, u_highlight, shade) * sin(scaledSlope) * clamp(intensity * 2.0, 0.0, 1.0);
|
|
47
|
+
gl_FragColor = accent_color * (1.0 - shade_color.a) + shade_color;
|
|
48
|
+
|
|
49
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
50
|
+
gl_FragColor = vec4(1.0);
|
|
51
|
+
#endif
|
|
52
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#ifdef GL_ES
|
|
2
|
+
precision highp float;
|
|
3
|
+
#endif
|
|
4
|
+
|
|
5
|
+
uniform sampler2D u_image;
|
|
6
|
+
varying vec2 v_pos;
|
|
7
|
+
uniform vec2 u_dimension;
|
|
8
|
+
uniform float u_zoom;
|
|
9
|
+
uniform float u_maxzoom;
|
|
10
|
+
|
|
11
|
+
float getElevation(vec2 coord, float bias) {
|
|
12
|
+
// Convert encoded elevation value to meters
|
|
13
|
+
vec4 data = texture2D(u_image, coord) * 255.0;
|
|
14
|
+
return (data.r + data.g * 256.0 + data.b * 256.0 * 256.0) / 4.0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
void main() {
|
|
18
|
+
vec2 epsilon = 1.0 / u_dimension;
|
|
19
|
+
|
|
20
|
+
// queried pixels:
|
|
21
|
+
// +-----------+
|
|
22
|
+
// | | | |
|
|
23
|
+
// | a | b | c |
|
|
24
|
+
// | | | |
|
|
25
|
+
// +-----------+
|
|
26
|
+
// | | | |
|
|
27
|
+
// | d | e | f |
|
|
28
|
+
// | | | |
|
|
29
|
+
// +-----------+
|
|
30
|
+
// | | | |
|
|
31
|
+
// | g | h | i |
|
|
32
|
+
// | | | |
|
|
33
|
+
// +-----------+
|
|
34
|
+
|
|
35
|
+
float a = getElevation(v_pos + vec2(-epsilon.x, -epsilon.y), 0.0);
|
|
36
|
+
float b = getElevation(v_pos + vec2(0, -epsilon.y), 0.0);
|
|
37
|
+
float c = getElevation(v_pos + vec2(epsilon.x, -epsilon.y), 0.0);
|
|
38
|
+
float d = getElevation(v_pos + vec2(-epsilon.x, 0), 0.0);
|
|
39
|
+
float e = getElevation(v_pos, 0.0);
|
|
40
|
+
float f = getElevation(v_pos + vec2(epsilon.x, 0), 0.0);
|
|
41
|
+
float g = getElevation(v_pos + vec2(-epsilon.x, epsilon.y), 0.0);
|
|
42
|
+
float h = getElevation(v_pos + vec2(0, epsilon.y), 0.0);
|
|
43
|
+
float i = getElevation(v_pos + vec2(epsilon.x, epsilon.y), 0.0);
|
|
44
|
+
|
|
45
|
+
// here we divide the x and y slopes by 8 * pixel size
|
|
46
|
+
// where pixel size (aka meters/pixel) is:
|
|
47
|
+
// circumference of the world / (pixels per tile * number of tiles)
|
|
48
|
+
// which is equivalent to: 8 * 40075016.6855785 / (512 * pow(2, u_zoom))
|
|
49
|
+
// which can be reduced to: pow(2, 19.25619978527 - u_zoom)
|
|
50
|
+
// we want to vertically exaggerate the hillshading though, because otherwise
|
|
51
|
+
// it is barely noticeable at low zooms. to do this, we multiply this by some
|
|
52
|
+
// scale factor pow(2, (u_zoom - u_maxzoom) * a) where a is an arbitrary value
|
|
53
|
+
// Here we use a=0.3 which works out to the expression below. see
|
|
54
|
+
// nickidlugash's awesome breakdown for more info
|
|
55
|
+
// https://github.com/mapbox/mapbox-gl-js/pull/5286#discussion_r148419556
|
|
56
|
+
float exaggeration = u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;
|
|
57
|
+
|
|
58
|
+
vec2 deriv = vec2(
|
|
59
|
+
(c + f + f + i) - (a + d + d + g),
|
|
60
|
+
(g + h + h + i) - (a + b + b + c)
|
|
61
|
+
) / pow(2.0, (u_zoom - u_maxzoom) * exaggeration + 19.2562 - u_zoom);
|
|
62
|
+
|
|
63
|
+
gl_FragColor = clamp(vec4(
|
|
64
|
+
deriv.x / 2.0 + 0.5,
|
|
65
|
+
deriv.y / 2.0 + 0.5,
|
|
66
|
+
1.0,
|
|
67
|
+
1.0), 0.0, 1.0);
|
|
68
|
+
|
|
69
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
70
|
+
gl_FragColor = vec4(1.0);
|
|
71
|
+
#endif
|
|
72
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
uniform mat4 u_matrix;
|
|
2
|
+
uniform vec2 u_dimension;
|
|
3
|
+
|
|
4
|
+
attribute vec2 a_pos;
|
|
5
|
+
attribute vec2 a_texture_pos;
|
|
6
|
+
|
|
7
|
+
varying vec2 v_pos;
|
|
8
|
+
|
|
9
|
+
void main() {
|
|
10
|
+
gl_Position = u_matrix * vec4(a_pos, 0, 1);
|
|
11
|
+
|
|
12
|
+
vec2 epsilon = 1.0 / u_dimension;
|
|
13
|
+
float scale = (u_dimension.x - 2.0) / u_dimension.x;
|
|
14
|
+
v_pos = (a_texture_pos / 8192.0) * scale + epsilon;
|
|
15
|
+
}
|