@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.
Files changed (356) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +25 -0
  3. package/build/min/.dir +0 -0
  4. package/build/min/package.json +3 -0
  5. package/build/min/src/shaders/_prelude.fragment.glsl.txt +13 -0
  6. package/build/min/src/shaders/_prelude.vertex.glsl.txt +14 -0
  7. package/build/min/src/shaders/background.fragment.glsl.txt +5 -0
  8. package/build/min/src/shaders/background.vertex.glsl.txt +1 -0
  9. package/build/min/src/shaders/background_pattern.fragment.glsl.txt +5 -0
  10. package/build/min/src/shaders/background_pattern.vertex.glsl.txt +1 -0
  11. package/build/min/src/shaders/circle.fragment.glsl.txt +20 -0
  12. package/build/min/src/shaders/circle.vertex.glsl.txt +17 -0
  13. package/build/min/src/shaders/clipping_mask.fragment.glsl.txt +1 -0
  14. package/build/min/src/shaders/clipping_mask.vertex.glsl.txt +1 -0
  15. package/build/min/src/shaders/collision_box.fragment.glsl.txt +1 -0
  16. package/build/min/src/shaders/collision_box.vertex.glsl.txt +1 -0
  17. package/build/min/src/shaders/collision_circle.fragment.glsl.txt +1 -0
  18. package/build/min/src/shaders/collision_circle.vertex.glsl.txt +1 -0
  19. package/build/min/src/shaders/debug.fragment.glsl.txt +1 -0
  20. package/build/min/src/shaders/debug.vertex.glsl.txt +1 -0
  21. package/build/min/src/shaders/fill.fragment.glsl.txt +10 -0
  22. package/build/min/src/shaders/fill.vertex.glsl.txt +7 -0
  23. package/build/min/src/shaders/fill_extrusion.fragment.glsl.txt +13 -0
  24. package/build/min/src/shaders/fill_extrusion.vertex.glsl.txt +9 -0
  25. package/build/min/src/shaders/fill_extrusion_pattern.fragment.glsl.txt +15 -0
  26. package/build/min/src/shaders/fill_extrusion_pattern.vertex.glsl.txt +11 -0
  27. package/build/min/src/shaders/fill_outline.fragment.glsl.txt +10 -0
  28. package/build/min/src/shaders/fill_outline.vertex.glsl.txt +7 -0
  29. package/build/min/src/shaders/fill_outline_pattern.fragment.glsl.txt +13 -0
  30. package/build/min/src/shaders/fill_outline_pattern.vertex.glsl.txt +9 -0
  31. package/build/min/src/shaders/fill_pattern.fragment.glsl.txt +13 -0
  32. package/build/min/src/shaders/fill_pattern.vertex.glsl.txt +9 -0
  33. package/build/min/src/shaders/heatmap.fragment.glsl.txt +10 -0
  34. package/build/min/src/shaders/heatmap.vertex.glsl.txt +8 -0
  35. package/build/min/src/shaders/heatmap_texture.fragment.glsl.txt +5 -0
  36. package/build/min/src/shaders/heatmap_texture.vertex.glsl.txt +1 -0
  37. package/build/min/src/shaders/hillshade.fragment.glsl.txt +7 -0
  38. package/build/min/src/shaders/hillshade.vertex.glsl.txt +1 -0
  39. package/build/min/src/shaders/hillshade_prepare.fragment.glsl.txt +8 -0
  40. package/build/min/src/shaders/hillshade_prepare.vertex.glsl.txt +1 -0
  41. package/build/min/src/shaders/line.fragment.glsl.txt +12 -0
  42. package/build/min/src/shaders/line.vertex.glsl.txt +17 -0
  43. package/build/min/src/shaders/line_gradient.fragment.glsl.txt +10 -0
  44. package/build/min/src/shaders/line_gradient.vertex.glsl.txt +16 -0
  45. package/build/min/src/shaders/line_pattern.fragment.glsl.txt +15 -0
  46. package/build/min/src/shaders/line_pattern.vertex.glsl.txt +20 -0
  47. package/build/min/src/shaders/line_sdf.fragment.glsl.txt +17 -0
  48. package/build/min/src/shaders/line_sdf.vertex.glsl.txt +20 -0
  49. package/build/min/src/shaders/raster.fragment.glsl.txt +5 -0
  50. package/build/min/src/shaders/raster.vertex.glsl.txt +1 -0
  51. package/build/min/src/shaders/symbol_icon.fragment.glsl.txt +9 -0
  52. package/build/min/src/shaders/symbol_icon.vertex.glsl.txt +5 -0
  53. package/build/min/src/shaders/symbol_sdf.fragment.glsl.txt +19 -0
  54. package/build/min/src/shaders/symbol_sdf.vertex.glsl.txt +13 -0
  55. package/package.json +44 -0
  56. package/src/css/mapbox-gl.css +506 -0
  57. package/src/css/svg/mapboxgl-ctrl-attrib.svg +3 -0
  58. package/src/css/svg/mapboxgl-ctrl-compass.svg +4 -0
  59. package/src/css/svg/mapboxgl-ctrl-fullscreen.svg +3 -0
  60. package/src/css/svg/mapboxgl-ctrl-geolocate-background.svg +3 -0
  61. package/src/css/svg/mapboxgl-ctrl-geolocate.svg +3 -0
  62. package/src/css/svg/mapboxgl-ctrl-logo-compact.svg +2 -0
  63. package/src/css/svg/mapboxgl-ctrl-logo.svg +1 -0
  64. package/src/css/svg/mapboxgl-ctrl-shrink.svg +3 -0
  65. package/src/css/svg/mapboxgl-ctrl-zoom-in.svg +3 -0
  66. package/src/css/svg/mapboxgl-ctrl-zoom-out.svg +3 -0
  67. package/src/data/array_types.js +1138 -0
  68. package/src/data/bucket/circle_attributes.js +5 -0
  69. package/src/data/bucket/circle_bucket.js +118 -0
  70. package/src/data/bucket/fill_attributes.js +5 -0
  71. package/src/data/bucket/fill_bucket.js +166 -0
  72. package/src/data/bucket/fill_extrusion_attributes.js +11 -0
  73. package/src/data/bucket/fill_extrusion_bucket.js +247 -0
  74. package/src/data/bucket/heatmap_bucket.js +12 -0
  75. package/src/data/bucket/line_attributes.js +11 -0
  76. package/src/data/bucket/line_bucket.js +625 -0
  77. package/src/data/bucket/pattern_attributes.js +9 -0
  78. package/src/data/bucket/pattern_bucket_features.js +44 -0
  79. package/src/data/bucket/symbol_attributes.js +95 -0
  80. package/src/data/bucket/symbol_bucket.js +697 -0
  81. package/src/data/bucket.js +53 -0
  82. package/src/data/dem_data.js +126 -0
  83. package/src/data/extent.js +17 -0
  84. package/src/data/feature_index.js +254 -0
  85. package/src/data/index_array_type.js +14 -0
  86. package/src/data/load_geometry.js +42 -0
  87. package/src/data/pos_attributes.js +3 -0
  88. package/src/data/program_configuration.js +782 -0
  89. package/src/data/raster_bounds_attributes.js +6 -0
  90. package/src/data/segment.js +63 -0
  91. package/src/geo/coordinate.js +78 -0
  92. package/src/geo/lng_lat.js +129 -0
  93. package/src/geo/lng_lat_bounds.js +253 -0
  94. package/src/geo/transform.js +605 -0
  95. package/src/gl/color_mode.js +21 -0
  96. package/src/gl/context.js +193 -0
  97. package/src/gl/cull_face_mode.js +22 -0
  98. package/src/gl/depth_mode.js +18 -0
  99. package/src/gl/framebuffer.js +28 -0
  100. package/src/gl/index_buffer.js +52 -0
  101. package/src/gl/stencil_mode.js +17 -0
  102. package/src/gl/types.js +0 -0
  103. package/src/gl/value.js +676 -0
  104. package/src/gl/vertex_buffer.js +101 -0
  105. package/src/index.js +50 -0
  106. package/src/render/draw_background.js +60 -0
  107. package/src/render/draw_circle.js +55 -0
  108. package/src/render/draw_collision_debug.js +45 -0
  109. package/src/render/draw_debug.js +429 -0
  110. package/src/render/draw_fill.js +143 -0
  111. package/src/render/draw_fill_extrusion.js +101 -0
  112. package/src/render/draw_heatmap.js +159 -0
  113. package/src/render/draw_hillshade.js +144 -0
  114. package/src/render/draw_line.js +99 -0
  115. package/src/render/draw_raster.js +151 -0
  116. package/src/render/draw_symbol.js +231 -0
  117. package/src/render/glyph_atlas.js +55 -0
  118. package/src/render/glyph_manager.js +145 -0
  119. package/src/render/image_atlas.js +97 -0
  120. package/src/render/image_manager.js +183 -0
  121. package/src/render/line_atlas.js +139 -0
  122. package/src/render/painter.js +483 -0
  123. package/src/render/program/background_program.js +46 -0
  124. package/src/render/program/circle_program.js +40 -0
  125. package/src/render/program/clipping_mask_program.js +11 -0
  126. package/src/render/program/collision_program.js +28 -0
  127. package/src/render/program/debug_program.js +13 -0
  128. package/src/render/program/fill_extrusion_program.js +76 -0
  129. package/src/render/program/fill_program.js +60 -0
  130. package/src/render/program/heatmap_program.js +46 -0
  131. package/src/render/program/hillshade_program.js +77 -0
  132. package/src/render/program/line_program.js +119 -0
  133. package/src/render/program/pattern.js +57 -0
  134. package/src/render/program/program_uniforms.js +46 -0
  135. package/src/render/program/raster_program.js +50 -0
  136. package/src/render/program/symbol_program.js +112 -0
  137. package/src/render/program.js +133 -0
  138. package/src/render/texture.js +88 -0
  139. package/src/render/tile_mask.js +108 -0
  140. package/src/render/uniform_binding.js +129 -0
  141. package/src/render/vertex_array_object.js +155 -0
  142. package/src/shaders/README.md +42 -0
  143. package/src/shaders/_prelude.fragment.glsl +17 -0
  144. package/src/shaders/_prelude.vertex.glsl +73 -0
  145. package/src/shaders/background.fragment.glsl +10 -0
  146. package/src/shaders/background.vertex.glsl +7 -0
  147. package/src/shaders/background_pattern.fragment.glsl +28 -0
  148. package/src/shaders/background_pattern.vertex.glsl +20 -0
  149. package/src/shaders/circle.fragment.glsl +39 -0
  150. package/src/shaders/circle.vertex.glsl +63 -0
  151. package/src/shaders/clipping_mask.fragment.glsl +3 -0
  152. package/src/shaders/clipping_mask.vertex.glsl +7 -0
  153. package/src/shaders/collision_box.fragment.glsl +21 -0
  154. package/src/shaders/collision_box.vertex.glsl +26 -0
  155. package/src/shaders/collision_circle.fragment.glsl +34 -0
  156. package/src/shaders/collision_circle.vertex.glsl +36 -0
  157. package/src/shaders/debug.fragment.glsl +5 -0
  158. package/src/shaders/debug.vertex.glsl +7 -0
  159. package/src/shaders/encode_attribute.js +19 -0
  160. package/src/shaders/fill.fragment.glsl +13 -0
  161. package/src/shaders/fill.vertex.glsl +13 -0
  162. package/src/shaders/fill_extrusion.fragment.glsl +16 -0
  163. package/src/shaders/fill_extrusion.vertex.glsl +66 -0
  164. package/src/shaders/fill_extrusion_pattern.fragment.glsl +41 -0
  165. package/src/shaders/fill_extrusion_pattern.vertex.glsl +76 -0
  166. package/src/shaders/fill_outline.fragment.glsl +17 -0
  167. package/src/shaders/fill_outline.vertex.glsl +17 -0
  168. package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
  169. package/src/shaders/fill_outline_pattern.vertex.glsl +41 -0
  170. package/src/shaders/fill_pattern.fragment.glsl +36 -0
  171. package/src/shaders/fill_pattern.vertex.glsl +36 -0
  172. package/src/shaders/heatmap.fragment.glsl +21 -0
  173. package/src/shaders/heatmap.vertex.glsl +53 -0
  174. package/src/shaders/heatmap_texture.fragment.glsl +14 -0
  175. package/src/shaders/heatmap_texture.vertex.glsl +11 -0
  176. package/src/shaders/hillshade.fragment.glsl +52 -0
  177. package/src/shaders/hillshade.vertex.glsl +11 -0
  178. package/src/shaders/hillshade_prepare.fragment.glsl +72 -0
  179. package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
  180. package/src/shaders/index.js +194 -0
  181. package/src/shaders/line.fragment.glsl +28 -0
  182. package/src/shaders/line.vertex.glsl +84 -0
  183. package/src/shaders/line_gradient.fragment.glsl +34 -0
  184. package/src/shaders/line_gradient.vertex.glsl +84 -0
  185. package/src/shaders/line_pattern.fragment.glsl +69 -0
  186. package/src/shaders/line_pattern.vertex.glsl +88 -0
  187. package/src/shaders/line_sdf.fragment.glsl +44 -0
  188. package/src/shaders/line_sdf.vertex.glsl +95 -0
  189. package/src/shaders/raster.fragment.glsl +52 -0
  190. package/src/shaders/raster.vertex.glsl +21 -0
  191. package/src/shaders/symbol_icon.fragment.glsl +17 -0
  192. package/src/shaders/symbol_icon.vertex.glsl +91 -0
  193. package/src/shaders/symbol_sdf.fragment.glsl +50 -0
  194. package/src/shaders/symbol_sdf.vertex.glsl +117 -0
  195. package/src/source/geojson_source.js +267 -0
  196. package/src/source/geojson_worker_source.js +210 -0
  197. package/src/source/geojson_wrapper.js +67 -0
  198. package/src/source/image_source.js +213 -0
  199. package/src/source/load_tilejson.js +40 -0
  200. package/src/source/pixels_to_tile_units.js +17 -0
  201. package/src/source/query_features.js +198 -0
  202. package/src/source/raster_dem_tile_source.js +140 -0
  203. package/src/source/raster_dem_tile_worker_source.js +26 -0
  204. package/src/source/raster_tile_source.js +126 -0
  205. package/src/source/rtl_text_plugin.js +63 -0
  206. package/src/source/source.js +75 -0
  207. package/src/source/source_cache.js +794 -0
  208. package/src/source/source_state.js +55 -0
  209. package/src/source/tile.js +332 -0
  210. package/src/source/tile_bounds.js +40 -0
  211. package/src/source/tile_cache.js +122 -0
  212. package/src/source/tile_id.js +150 -0
  213. package/src/source/vector_tile_source.js +144 -0
  214. package/src/source/vector_tile_worker_source.js +126 -0
  215. package/src/source/worker.js +175 -0
  216. package/src/source/worker_source.js +14 -0
  217. package/src/source/worker_tile.js +199 -0
  218. package/src/style/create_style_layer.js +25 -0
  219. package/src/style/evaluation_parameters.js +45 -0
  220. package/src/style/light.js +112 -0
  221. package/src/style/load_glyph_range.js +17 -0
  222. package/src/style/load_sprite.js +26 -0
  223. package/src/style/parse_glyph_pbf.js +45 -0
  224. package/src/style/pauseable_placement.js +88 -0
  225. package/src/style/properties.js +691 -0
  226. package/src/style/query_utils.js +39 -0
  227. package/src/style/style.js +955 -0
  228. package/src/style/style_layer/background_style_layer.js +11 -0
  229. package/src/style/style_layer/background_style_layer_properties.js +25 -0
  230. package/src/style/style_layer/circle_style_layer.js +93 -0
  231. package/src/style/style_layer/circle_style_layer_properties.js +76 -0
  232. package/src/style/style_layer/fill_extrusion_style_layer.js +194 -0
  233. package/src/style/style_layer/fill_extrusion_style_layer_properties.js +56 -0
  234. package/src/style/style_layer/fill_style_layer.js +46 -0
  235. package/src/style/style_layer/fill_style_layer_properties.js +45 -0
  236. package/src/style/style_layer/heatmap_style_layer.js +51 -0
  237. package/src/style/style_layer/heatmap_style_layer_properties.js +52 -0
  238. package/src/style/style_layer/hillshade_style_layer.js +15 -0
  239. package/src/style/style_layer/hillshade_style_layer_properties.js +43 -0
  240. package/src/style/style_layer/line_style_layer.js +129 -0
  241. package/src/style/style_layer/line_style_layer_properties.js +104 -0
  242. package/src/style/style_layer/raster_style_layer.js +11 -0
  243. package/src/style/style_layer/raster_style_layer_properties.js +55 -0
  244. package/src/style/style_layer/symbol_style_layer.js +66 -0
  245. package/src/style/style_layer/symbol_style_layer_properties.js +288 -0
  246. package/src/style/style_layer.js +183 -0
  247. package/src/style/style_layer_index.js +61 -0
  248. package/src/style/zoom_history.js +36 -0
  249. package/src/style-spec/deref.js +51 -0
  250. package/src/style-spec/error/parsing_error.js +8 -0
  251. package/src/style-spec/error/validation_error.js +10 -0
  252. package/src/style-spec/expression/compound_expression.js +118 -0
  253. package/src/style-spec/expression/definitions/array.js +82 -0
  254. package/src/style-spec/expression/definitions/assertion.js +69 -0
  255. package/src/style-spec/expression/definitions/at.js +57 -0
  256. package/src/style-spec/expression/definitions/case.js +73 -0
  257. package/src/style-spec/expression/definitions/coalesce.js +68 -0
  258. package/src/style-spec/expression/definitions/coercion.js +96 -0
  259. package/src/style-spec/expression/definitions/collator.js +102 -0
  260. package/src/style-spec/expression/definitions/equals.js +93 -0
  261. package/src/style-spec/expression/definitions/index.js +407 -0
  262. package/src/style-spec/expression/definitions/interpolate.js +235 -0
  263. package/src/style-spec/expression/definitions/length.js +54 -0
  264. package/src/style-spec/expression/definitions/let.js +60 -0
  265. package/src/style-spec/expression/definitions/literal.js +64 -0
  266. package/src/style-spec/expression/definitions/match.js +142 -0
  267. package/src/style-spec/expression/definitions/step.js +116 -0
  268. package/src/style-spec/expression/definitions/var.js +38 -0
  269. package/src/style-spec/expression/evaluation_context.js +35 -0
  270. package/src/style-spec/expression/index.js +329 -0
  271. package/src/style-spec/expression/is_constant.js +63 -0
  272. package/src/style-spec/expression/parsing_context.js +213 -0
  273. package/src/style-spec/expression/parsing_error.js +9 -0
  274. package/src/style-spec/expression/runtime_error.js +12 -0
  275. package/src/style-spec/expression/scope.js +34 -0
  276. package/src/style-spec/expression/stops.js +37 -0
  277. package/src/style-spec/expression/types.js +77 -0
  278. package/src/style-spec/expression/values.js +126 -0
  279. package/src/style-spec/feature_filter/README.md +55 -0
  280. package/src/style-spec/feature_filter/index.js +158 -0
  281. package/src/style-spec/function/convert.js +256 -0
  282. package/src/style-spec/function/index.js +299 -0
  283. package/src/style-spec/group_by_layout.js +68 -0
  284. package/src/style-spec/reference/v8.json +5356 -0
  285. package/src/style-spec/util/color.js +73 -0
  286. package/src/style-spec/util/color_spaces.js +128 -0
  287. package/src/style-spec/util/eval_support.js +8 -0
  288. package/src/style-spec/util/get_type.js +18 -0
  289. package/src/style-spec/util/interpolate.js +21 -0
  290. package/src/style-spec/util/properties.js +17 -0
  291. package/src/style-spec/util/ref_properties.js +1 -0
  292. package/src/style-spec/util/result.js +19 -0
  293. package/src/symbol/anchor.js +21 -0
  294. package/src/symbol/check_max_angle.js +75 -0
  295. package/src/symbol/clip_line.js +73 -0
  296. package/src/symbol/collision_feature.js +230 -0
  297. package/src/symbol/collision_index.js +379 -0
  298. package/src/symbol/cross_tile_symbol_index.js +270 -0
  299. package/src/symbol/get_anchors.js +177 -0
  300. package/src/symbol/grid_index.js +318 -0
  301. package/src/symbol/mergelines.js +75 -0
  302. package/src/symbol/opacity_state.js +21 -0
  303. package/src/symbol/placement.js +563 -0
  304. package/src/symbol/projection.js +601 -0
  305. package/src/symbol/quads.js +173 -0
  306. package/src/symbol/shaping.js +347 -0
  307. package/src/symbol/symbol_layout.js +519 -0
  308. package/src/symbol/symbol_size.js +110 -0
  309. package/src/symbol/transform_text.js +16 -0
  310. package/src/ui/anchor.js +24 -0
  311. package/src/ui/bind_handlers.js +199 -0
  312. package/src/ui/camera.js +954 -0
  313. package/src/ui/events.js +210 -0
  314. package/src/ui/handler/box_zoom.js +151 -0
  315. package/src/ui/handler/dblclick_zoom.js +91 -0
  316. package/src/ui/handler/drag_pan.js +285 -0
  317. package/src/ui/handler/drag_rotate.js +290 -0
  318. package/src/ui/handler/frame.js +28 -0
  319. package/src/ui/handler/inertia.js +45 -0
  320. package/src/ui/handler/keyboard.js +148 -0
  321. package/src/ui/handler/scroll_zoom.js +284 -0
  322. package/src/ui/handler/touch_zoom_rotate.js +263 -0
  323. package/src/ui/map.js +1645 -0
  324. package/src/util/actor.js +104 -0
  325. package/src/util/async.js +23 -0
  326. package/src/util/browser.js +61 -0
  327. package/src/util/callback.js +26 -0
  328. package/src/util/classify_rings.js +43 -0
  329. package/src/util/color_ramp.js +24 -0
  330. package/src/util/config.js +24 -0
  331. package/src/util/dictionary_coder.js +25 -0
  332. package/src/util/dispatcher.js +68 -0
  333. package/src/util/dom.js +102 -0
  334. package/src/util/evented.js +182 -0
  335. package/src/util/find_pole_of_inaccessibility.js +129 -0
  336. package/src/util/global_worker_pool.js +15 -0
  337. package/src/util/image.js +124 -0
  338. package/src/util/interpolate.js +5 -0
  339. package/src/util/intersection_tests.js +207 -0
  340. package/src/util/is_char_in_unicode_block.js +287 -0
  341. package/src/util/loader/image.js +32 -0
  342. package/src/util/object.js +178 -0
  343. package/src/util/script_detection.js +337 -0
  344. package/src/util/struct_array.js +197 -0
  345. package/src/util/task_queue.js +57 -0
  346. package/src/util/throttle.js +26 -0
  347. package/src/util/tile_cover.js +114 -0
  348. package/src/util/token.js +13 -0
  349. package/src/util/unique_id.js +12 -0
  350. package/src/util/util.js +192 -0
  351. package/src/util/vectortile_to_geojson.js +44 -0
  352. package/src/util/verticalize_punctuation.js +112 -0
  353. package/src/util/warn.js +21 -0
  354. package/src/util/web_worker.js +5 -0
  355. package/src/util/web_worker_transfer.js +228 -0
  356. package/src/util/worker_pool.js +41 -0
@@ -0,0 +1,11 @@
1
+ const { UniformMatrix4f } = require('../uniform_binding');
2
+
3
+ const clippingMaskUniforms = (context, locations) => ({
4
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix)
5
+ });
6
+
7
+ const clippingMaskUniformValues = matrix => ({
8
+ u_matrix: matrix
9
+ });
10
+
11
+ module.exports = { clippingMaskUniforms, clippingMaskUniformValues };
@@ -0,0 +1,28 @@
1
+ const { Uniform1f, Uniform2f, UniformMatrix4f } = require('../uniform_binding');
2
+ const pixelsToTileUnits = require('../../source/pixels_to_tile_units');
3
+
4
+ const collisionUniforms = (context, locations) => ({
5
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
6
+ u_camera_to_center_distance: new Uniform1f(context, locations.u_camera_to_center_distance),
7
+ u_pixels_to_tile_units: new Uniform1f(context, locations.u_pixels_to_tile_units),
8
+ u_extrude_scale: new Uniform2f(context, locations.u_extrude_scale),
9
+ u_overscale_factor: new Uniform1f(context, locations.u_overscale_factor)
10
+ });
11
+
12
+ const collisionUniformValues = (matrix, transform, tile) => {
13
+ const pixelRatio = pixelsToTileUnits(tile, 1, transform.zoom);
14
+ const scale = 2 ** (transform.zoom - tile.tileID.overscaledZ);
15
+ const overscaleFactor = tile.tileID.overscaleFactor();
16
+ return {
17
+ u_matrix: matrix,
18
+ u_camera_to_center_distance: transform.cameraToCenterDistance,
19
+ u_pixels_to_tile_units: pixelRatio,
20
+ u_extrude_scale: [
21
+ transform.pixelsToGLUnits[0] / (pixelRatio * scale),
22
+ transform.pixelsToGLUnits[1] / (pixelRatio * scale)
23
+ ],
24
+ u_overscale_factor: overscaleFactor
25
+ };
26
+ };
27
+
28
+ module.exports = { collisionUniforms, collisionUniformValues };
@@ -0,0 +1,13 @@
1
+ const { UniformColor, UniformMatrix4f } = require('../uniform_binding');
2
+
3
+ const debugUniforms = (context, locations) => ({
4
+ u_color: new UniformColor(context, locations.u_color),
5
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix)
6
+ });
7
+
8
+ const debugUniformValues = (matrix, color) => ({
9
+ u_matrix: matrix,
10
+ u_color: color
11
+ });
12
+
13
+ module.exports = { debugUniforms, debugUniformValues };
@@ -0,0 +1,76 @@
1
+ const { patternUniformValues } = require('./pattern');
2
+ const { Uniform1i, Uniform1f, Uniform2f, Uniform3f, Uniform4f, UniformMatrix4f } = require('../uniform_binding');
3
+
4
+ const { mat3, vec3 } = require('@mapbox/gl-matrix');
5
+
6
+ const fillExtrusionUniforms = (context, locations) => ({
7
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
8
+ u_lightpos: new Uniform3f(context, locations.u_lightpos),
9
+ u_lightintensity: new Uniform1f(context, locations.u_lightintensity),
10
+ u_lightcolor: new Uniform3f(context, locations.u_lightcolor),
11
+ u_vertical_gradient: new Uniform1f(context, locations.u_vertical_gradient),
12
+ u_opacity: new Uniform1f(context, locations.u_opacity)
13
+ });
14
+
15
+ const fillExtrusionPatternUniforms = (context, locations) => ({
16
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
17
+ u_lightpos: new Uniform3f(context, locations.u_lightpos),
18
+ u_lightintensity: new Uniform1f(context, locations.u_lightintensity),
19
+ u_lightcolor: new Uniform3f(context, locations.u_lightcolor),
20
+ u_vertical_gradient: new Uniform1f(context, locations.u_vertical_gradient),
21
+ u_height_factor: new Uniform1f(context, locations.u_height_factor),
22
+ u_image: new Uniform1i(context, locations.u_image),
23
+ u_texsize: new Uniform2f(context, locations.u_texsize),
24
+ u_pixel_coord_upper: new Uniform2f(context, locations.u_pixel_coord_upper),
25
+ u_pixel_coord_lower: new Uniform2f(context, locations.u_pixel_coord_lower),
26
+ u_scale: new Uniform4f(context, locations.u_scale),
27
+ u_fade: new Uniform1f(context, locations.u_fade),
28
+ u_opacity: new Uniform1f(context, locations.u_opacity)
29
+ });
30
+
31
+ const fillExtrusionUniformValues = (matrix, painter, shouldUseVerticalGradient, opacity) => {
32
+ const light = painter.style.light;
33
+ const _lp = light.properties.get('position');
34
+ const lightPos = [_lp.x, _lp.y, _lp.z];
35
+ const lightMat = mat3.create();
36
+ if (light.properties.get('anchor') === 'viewport') {
37
+ mat3.fromRotation(lightMat, -painter.transform.angle);
38
+ }
39
+ vec3.transformMat3(lightPos, lightPos, lightMat);
40
+
41
+ const lightColor = light.properties.get('color');
42
+
43
+ return {
44
+ u_matrix: matrix,
45
+ u_lightpos: lightPos,
46
+ u_lightintensity: light.properties.get('intensity'),
47
+ u_lightcolor: [lightColor.r, lightColor.g, lightColor.b],
48
+ u_vertical_gradient: +shouldUseVerticalGradient,
49
+ u_opacity: opacity
50
+ };
51
+ };
52
+
53
+ const fillExtrusionPatternUniformValues = (
54
+ matrix,
55
+ painter,
56
+ shouldUseVerticalGradient,
57
+ opacity,
58
+ coord,
59
+ crossfade,
60
+ tile
61
+ ) => {
62
+ return Object.assign(
63
+ fillExtrusionUniformValues(matrix, painter, shouldUseVerticalGradient, opacity),
64
+ patternUniformValues(crossfade, painter, tile),
65
+ {
66
+ u_height_factor: -(2 ** coord.overscaledZ) / tile.tileSize / 8
67
+ }
68
+ );
69
+ };
70
+
71
+ module.exports = {
72
+ fillExtrusionUniforms,
73
+ fillExtrusionPatternUniforms,
74
+ fillExtrusionUniformValues,
75
+ fillExtrusionPatternUniformValues
76
+ };
@@ -0,0 +1,60 @@
1
+ const { patternUniformValues } = require('./pattern');
2
+ const { Uniform1i, Uniform1f, Uniform2f, Uniform4f, UniformMatrix4f } = require('../uniform_binding');
3
+
4
+ const fillUniforms = (context, locations) => ({
5
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix)
6
+ });
7
+
8
+ const fillPatternUniforms = (context, locations) => ({
9
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
10
+ u_image: new Uniform1i(context, locations.u_image),
11
+ u_texsize: new Uniform2f(context, locations.u_texsize),
12
+ u_pixel_coord_upper: new Uniform2f(context, locations.u_pixel_coord_upper),
13
+ u_pixel_coord_lower: new Uniform2f(context, locations.u_pixel_coord_lower),
14
+ u_scale: new Uniform4f(context, locations.u_scale),
15
+ u_fade: new Uniform1f(context, locations.u_fade)
16
+ });
17
+
18
+ const fillOutlineUniforms = (context, locations) => ({
19
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
20
+ u_world: new Uniform2f(context, locations.u_world)
21
+ });
22
+
23
+ const fillOutlinePatternUniforms = (context, locations) => ({
24
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
25
+ u_world: new Uniform2f(context, locations.u_world),
26
+ u_image: new Uniform1i(context, locations.u_image),
27
+ u_texsize: new Uniform2f(context, locations.u_texsize),
28
+ u_pixel_coord_upper: new Uniform2f(context, locations.u_pixel_coord_upper),
29
+ u_pixel_coord_lower: new Uniform2f(context, locations.u_pixel_coord_lower),
30
+ u_scale: new Uniform4f(context, locations.u_scale),
31
+ u_fade: new Uniform1f(context, locations.u_fade)
32
+ });
33
+
34
+ const fillUniformValues = matrix => ({
35
+ u_matrix: matrix
36
+ });
37
+
38
+ const fillPatternUniformValues = (matrix, painter, crossfade, tile) =>
39
+ Object.assign(fillUniformValues(matrix), patternUniformValues(crossfade, painter, tile));
40
+
41
+ const fillOutlineUniformValues = (matrix, drawingBufferSize) => ({
42
+ u_matrix: matrix,
43
+ u_world: drawingBufferSize
44
+ });
45
+
46
+ const fillOutlinePatternUniformValues = (matrix, painter, crossfade, tile, drawingBufferSize) =>
47
+ Object.assign(fillPatternUniformValues(matrix, painter, crossfade, tile), {
48
+ u_world: drawingBufferSize
49
+ });
50
+
51
+ module.exports = {
52
+ fillUniforms,
53
+ fillPatternUniforms,
54
+ fillOutlineUniforms,
55
+ fillOutlinePatternUniforms,
56
+ fillUniformValues,
57
+ fillPatternUniformValues,
58
+ fillOutlineUniformValues,
59
+ fillOutlinePatternUniformValues
60
+ };
@@ -0,0 +1,46 @@
1
+ const { mat4 } = require('@mapbox/gl-matrix');
2
+
3
+ const { Uniform1i, Uniform1f, Uniform2f, UniformMatrix4f } = require('../uniform_binding');
4
+ const pixelsToTileUnits = require('../../source/pixels_to_tile_units');
5
+
6
+ const heatmapUniforms = (context, locations) => ({
7
+ u_extrude_scale: new Uniform1f(context, locations.u_extrude_scale),
8
+ u_intensity: new Uniform1f(context, locations.u_intensity),
9
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix)
10
+ });
11
+
12
+ const heatmapTextureUniforms = (context, locations) => ({
13
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
14
+ u_world: new Uniform2f(context, locations.u_world),
15
+ u_image: new Uniform1i(context, locations.u_image),
16
+ u_color_ramp: new Uniform1i(context, locations.u_color_ramp),
17
+ u_opacity: new Uniform1f(context, locations.u_opacity)
18
+ });
19
+
20
+ const heatmapUniformValues = (matrix, tile, zoom, intensity) => ({
21
+ u_matrix: matrix,
22
+ u_extrude_scale: pixelsToTileUnits(tile, 1, zoom),
23
+ u_intensity: intensity
24
+ });
25
+
26
+ const heatmapTextureUniformValues = (painter, layer, textureUnit, colorRampUnit) => {
27
+ const matrix = mat4.create();
28
+ mat4.ortho(matrix, 0, painter.width, painter.height, 0, 0, 1);
29
+
30
+ const gl = painter.context.gl;
31
+
32
+ return {
33
+ u_matrix: matrix,
34
+ u_world: [gl.drawingBufferWidth, gl.drawingBufferHeight],
35
+ u_image: textureUnit,
36
+ u_color_ramp: colorRampUnit,
37
+ u_opacity: layer.paint.get('heatmap-opacity')
38
+ };
39
+ };
40
+
41
+ module.exports = {
42
+ heatmapUniforms,
43
+ heatmapTextureUniforms,
44
+ heatmapUniformValues,
45
+ heatmapTextureUniformValues
46
+ };
@@ -0,0 +1,77 @@
1
+ const assert = require('assert');
2
+ const { mat4 } = require('@mapbox/gl-matrix');
3
+
4
+ const { Uniform1i, Uniform1f, Uniform2f, UniformColor, UniformMatrix4f } = require('../uniform_binding');
5
+ const EXTENT = require('../../data/extent');
6
+ const Coordinate = require('../../geo/coordinate');
7
+
8
+ const hillshadeUniforms = (context, locations) => ({
9
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
10
+ u_image: new Uniform1i(context, locations.u_image),
11
+ u_latrange: new Uniform2f(context, locations.u_latrange),
12
+ u_light: new Uniform2f(context, locations.u_light),
13
+ u_shadow: new UniformColor(context, locations.u_shadow),
14
+ u_highlight: new UniformColor(context, locations.u_highlight),
15
+ u_accent: new UniformColor(context, locations.u_accent)
16
+ });
17
+
18
+ const hillshadePrepareUniforms = (context, locations) => ({
19
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
20
+ u_image: new Uniform1i(context, locations.u_image),
21
+ u_dimension: new Uniform2f(context, locations.u_dimension),
22
+ u_zoom: new Uniform1f(context, locations.u_zoom),
23
+ u_maxzoom: new Uniform1f(context, locations.u_maxzoom)
24
+ });
25
+
26
+ const hillshadeUniformValues = (painter, tile, layer) => {
27
+ const shadow = layer.paint.get('hillshade-shadow-color');
28
+ const highlight = layer.paint.get('hillshade-highlight-color');
29
+ const accent = layer.paint.get('hillshade-accent-color');
30
+
31
+ let azimuthal = layer.paint.get('hillshade-illumination-direction') * (Math.PI / 180);
32
+ // modify azimuthal angle by map rotation if light is anchored at the viewport
33
+ if (layer.paint.get('hillshade-illumination-anchor') === 'viewport') {
34
+ azimuthal -= painter.transform.angle;
35
+ }
36
+ const align = !painter.options.moving;
37
+ return {
38
+ u_matrix: painter.transform.calculatePosMatrix(tile.tileID.toUnwrapped(), align),
39
+ u_image: 0,
40
+ u_latrange: getTileLatRange(painter, tile.tileID),
41
+ u_light: [layer.paint.get('hillshade-exaggeration'), azimuthal],
42
+ u_shadow: shadow,
43
+ u_highlight: highlight,
44
+ u_accent: accent
45
+ };
46
+ };
47
+
48
+ const hillshadeUniformPrepareValues = (tile, maxzoom) => {
49
+ assert(tile.dem);
50
+ const stride = tile.dem.stride;
51
+ const matrix = mat4.create();
52
+ // Flip rendering at y axis.
53
+ mat4.ortho(matrix, 0, EXTENT, -EXTENT, 0, 0, 1);
54
+ mat4.translate(matrix, matrix, [0, -EXTENT, 0]);
55
+
56
+ return {
57
+ u_matrix: matrix,
58
+ u_image: 1,
59
+ u_dimension: [stride, stride],
60
+ u_zoom: tile.tileID.overscaledZ,
61
+ u_maxzoom: maxzoom
62
+ };
63
+ };
64
+
65
+ function getTileLatRange(painter, tileID) {
66
+ // for scaling the magnitude of a points slope by its latitude
67
+ const coordinate0 = tileID.toCoordinate();
68
+ const coordinate1 = new Coordinate(coordinate0.column, coordinate0.row + 1, coordinate0.zoom);
69
+ return [painter.transform.coordinateLocation(coordinate0).lat, painter.transform.coordinateLocation(coordinate1).lat];
70
+ }
71
+
72
+ module.exports = {
73
+ hillshadeUniforms,
74
+ hillshadePrepareUniforms,
75
+ hillshadeUniformValues,
76
+ hillshadeUniformPrepareValues
77
+ };
@@ -0,0 +1,119 @@
1
+ const { Uniform1i, Uniform1f, Uniform2f, Uniform4f, UniformMatrix4f } = require('../uniform_binding');
2
+ const pixelsToTileUnits = require('../../source/pixels_to_tile_units');
3
+ const browser = require('../../util/browser');
4
+
5
+ const lineUniforms = (context, locations) => ({
6
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
7
+ u_ratio: new Uniform1f(context, locations.u_ratio),
8
+ u_gl_units_to_pixels: new Uniform2f(context, locations.u_gl_units_to_pixels)
9
+ });
10
+
11
+ const lineGradientUniforms = (context, locations) => ({
12
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
13
+ u_ratio: new Uniform1f(context, locations.u_ratio),
14
+ u_gl_units_to_pixels: new Uniform2f(context, locations.u_gl_units_to_pixels),
15
+ u_image: new Uniform1i(context, locations.u_image)
16
+ });
17
+
18
+ const linePatternUniforms = (context, locations) => ({
19
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
20
+ u_texsize: new Uniform2f(context, locations.u_texsize),
21
+ u_ratio: new Uniform1f(context, locations.u_ratio),
22
+ u_image: new Uniform1i(context, locations.u_image),
23
+ u_gl_units_to_pixels: new Uniform2f(context, locations.u_gl_units_to_pixels),
24
+ u_scale: new Uniform4f(context, locations.u_scale),
25
+ u_fade: new Uniform1f(context, locations.u_fade)
26
+ });
27
+
28
+ const lineSDFUniforms = (context, locations) => ({
29
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
30
+ u_ratio: new Uniform1f(context, locations.u_ratio),
31
+ u_gl_units_to_pixels: new Uniform2f(context, locations.u_gl_units_to_pixels),
32
+ u_patternscale_a: new Uniform2f(context, locations.u_patternscale_a),
33
+ u_patternscale_b: new Uniform2f(context, locations.u_patternscale_b),
34
+ u_sdfgamma: new Uniform1f(context, locations.u_sdfgamma),
35
+ u_image: new Uniform1i(context, locations.u_image),
36
+ u_tex_y_a: new Uniform1f(context, locations.u_tex_y_a),
37
+ u_tex_y_b: new Uniform1f(context, locations.u_tex_y_b),
38
+ u_mix: new Uniform1f(context, locations.u_mix)
39
+ });
40
+
41
+ const lineUniformValues = (painter, tile, layer) => {
42
+ const transform = painter.transform;
43
+
44
+ return {
45
+ u_matrix: calculateMatrix(painter, tile, layer),
46
+ u_ratio: 1 / pixelsToTileUnits(tile, 1, transform.zoom),
47
+ u_gl_units_to_pixels: [1 / transform.pixelsToGLUnits[0], 1 / transform.pixelsToGLUnits[1]]
48
+ };
49
+ };
50
+
51
+ const lineGradientUniformValues = (painter, tile, layer) => {
52
+ return Object.assign(lineUniformValues(painter, tile, layer), {
53
+ u_image: 0
54
+ });
55
+ };
56
+
57
+ const linePatternUniformValues = (painter, tile, layer, crossfade) => {
58
+ const transform = painter.transform;
59
+ const tileZoomRatio = calculateTileRatio(tile, transform);
60
+ return {
61
+ u_matrix: calculateMatrix(painter, tile, layer),
62
+ u_texsize: tile.imageAtlasTexture.size,
63
+ // camera zoom ratio
64
+ u_ratio: 1 / pixelsToTileUnits(tile, 1, transform.zoom),
65
+ u_image: 0,
66
+ // this assumes all images in the icon atlas texture have the same pixel ratio
67
+ u_scale: [browser.devicePixelRatio, tileZoomRatio, crossfade.fromScale, crossfade.toScale],
68
+ u_fade: crossfade.t,
69
+ u_gl_units_to_pixels: [1 / transform.pixelsToGLUnits[0], 1 / transform.pixelsToGLUnits[1]]
70
+ };
71
+ };
72
+
73
+ const lineSDFUniformValues = (painter, tile, layer, dasharray, crossfade) => {
74
+ const transform = painter.transform;
75
+ const lineAtlas = painter.lineAtlas;
76
+ const tileRatio = calculateTileRatio(tile, transform);
77
+
78
+ const round = layer.layout.get('line-cap') === 'round';
79
+
80
+ const posA = lineAtlas.getDash(dasharray.from, round);
81
+ const posB = lineAtlas.getDash(dasharray.to, round);
82
+
83
+ const widthA = posA.width * crossfade.fromScale;
84
+ const widthB = posB.width * crossfade.toScale;
85
+
86
+ return Object.assign(lineUniformValues(painter, tile, layer), {
87
+ u_patternscale_a: [tileRatio / widthA, -posA.height / 2],
88
+ u_patternscale_b: [tileRatio / widthB, -posB.height / 2],
89
+ u_sdfgamma: lineAtlas.width / (Math.min(widthA, widthB) * 256 * browser.devicePixelRatio) / 2,
90
+ u_image: 0,
91
+ u_tex_y_a: posA.y,
92
+ u_tex_y_b: posB.y,
93
+ u_mix: crossfade.t
94
+ });
95
+ };
96
+
97
+ function calculateTileRatio(tile, transform) {
98
+ return 1 / pixelsToTileUnits(tile, 1, transform.tileZoom);
99
+ }
100
+
101
+ function calculateMatrix(painter, tile, layer) {
102
+ return painter.translatePosMatrix(
103
+ tile.tileID.posMatrix,
104
+ tile,
105
+ layer.paint.get('line-translate'),
106
+ layer.paint.get('line-translate-anchor')
107
+ );
108
+ }
109
+
110
+ module.exports = {
111
+ lineUniforms,
112
+ lineGradientUniforms,
113
+ linePatternUniforms,
114
+ lineSDFUniforms,
115
+ lineUniformValues,
116
+ lineGradientUniformValues,
117
+ linePatternUniformValues,
118
+ lineSDFUniformValues
119
+ };
@@ -0,0 +1,57 @@
1
+ const assert = require('assert');
2
+ const browser = require('../../util/browser');
3
+ const pixelsToTileUnits = require('../../source/pixels_to_tile_units');
4
+
5
+ function patternUniformValues(crossfade, painter, tile) {
6
+ const tileRatio = 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom);
7
+
8
+ const numTiles = 2 ** tile.tileID.overscaledZ;
9
+ const tileSizeAtNearestZoom = (tile.tileSize * 2 ** painter.transform.tileZoom) / numTiles;
10
+
11
+ const pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);
12
+ const pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;
13
+
14
+ return {
15
+ u_image: 0,
16
+ u_texsize: tile.imageAtlasTexture.size,
17
+ // this assumes all images in the icon atlas texture have the same pixel ratio
18
+ u_scale: [browser.devicePixelRatio, tileRatio, crossfade.fromScale, crossfade.toScale],
19
+ u_fade: crossfade.t,
20
+ // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.
21
+ u_pixel_coord_upper: [pixelX >> 16, pixelY >> 16],
22
+ u_pixel_coord_lower: [pixelX & 0xffff, pixelY & 0xffff]
23
+ };
24
+ }
25
+
26
+ function bgPatternUniformValues(image, crossfade, painter, tile) {
27
+ const imagePosA = painter.imageManager.getPattern(image.from);
28
+ const imagePosB = painter.imageManager.getPattern(image.to);
29
+ assert(imagePosA && imagePosB);
30
+ const { width, height } = painter.imageManager.getPixelSize();
31
+
32
+ const numTiles = 2 ** tile.tileID.overscaledZ;
33
+ const tileSizeAtNearestZoom = (tile.tileSize * 2 ** painter.transform.tileZoom) / numTiles;
34
+
35
+ const pixelX = tileSizeAtNearestZoom * (tile.tileID.canonical.x + tile.tileID.wrap * numTiles);
36
+ const pixelY = tileSizeAtNearestZoom * tile.tileID.canonical.y;
37
+
38
+ return {
39
+ u_image: 0,
40
+ u_pattern_tl_a: imagePosA.tl,
41
+ u_pattern_br_a: imagePosA.br,
42
+ u_pattern_tl_b: imagePosB.tl,
43
+ u_pattern_br_b: imagePosB.br,
44
+ u_texsize: [width, height],
45
+ u_mix: crossfade.t,
46
+ u_pattern_size_a: imagePosA.displaySize,
47
+ u_pattern_size_b: imagePosB.displaySize,
48
+ u_scale_a: crossfade.fromScale,
49
+ u_scale_b: crossfade.toScale,
50
+ u_tile_units_to_pixels: 1 / pixelsToTileUnits(tile, 1, painter.transform.tileZoom),
51
+ // split the pixel coord into two pairs of 16 bit numbers. The glsl spec only guarantees 16 bits of precision.
52
+ u_pixel_coord_upper: [pixelX >> 16, pixelY >> 16],
53
+ u_pixel_coord_lower: [pixelX & 0xffff, pixelY & 0xffff]
54
+ };
55
+ }
56
+
57
+ module.exports = { bgPatternUniformValues, patternUniformValues };
@@ -0,0 +1,46 @@
1
+ const { fillExtrusionUniforms, fillExtrusionPatternUniforms } = require('./fill_extrusion_program');
2
+ const {
3
+ fillUniforms,
4
+ fillPatternUniforms,
5
+ fillOutlineUniforms,
6
+ fillOutlinePatternUniforms
7
+ } = require('./fill_program');
8
+ const { circleUniforms } = require('./circle_program');
9
+ const { collisionUniforms } = require('./collision_program');
10
+ const { debugUniforms } = require('./debug_program');
11
+ const { clippingMaskUniforms } = require('./clipping_mask_program');
12
+ const { heatmapUniforms, heatmapTextureUniforms } = require('./heatmap_program');
13
+ const { hillshadeUniforms, hillshadePrepareUniforms } = require('./hillshade_program');
14
+ const { lineUniforms, lineGradientUniforms, linePatternUniforms, lineSDFUniforms } = require('./line_program');
15
+ const { rasterUniforms } = require('./raster_program');
16
+ const { symbolIconUniforms, symbolSDFUniforms } = require('./symbol_program');
17
+ const { backgroundUniforms, backgroundPatternUniforms } = require('./background_program');
18
+
19
+ const programUniforms = {
20
+ fillExtrusion: fillExtrusionUniforms,
21
+ fillExtrusionPattern: fillExtrusionPatternUniforms,
22
+ fill: fillUniforms,
23
+ fillPattern: fillPatternUniforms,
24
+ fillOutline: fillOutlineUniforms,
25
+ fillOutlinePattern: fillOutlinePatternUniforms,
26
+ circle: circleUniforms,
27
+ collisionBox: collisionUniforms,
28
+ collisionCircle: collisionUniforms,
29
+ debug: debugUniforms,
30
+ clippingMask: clippingMaskUniforms,
31
+ heatmap: heatmapUniforms,
32
+ heatmapTexture: heatmapTextureUniforms,
33
+ hillshade: hillshadeUniforms,
34
+ hillshadePrepare: hillshadePrepareUniforms,
35
+ line: lineUniforms,
36
+ lineGradient: lineGradientUniforms,
37
+ linePattern: linePatternUniforms,
38
+ lineSDF: lineSDFUniforms,
39
+ raster: rasterUniforms,
40
+ symbolIcon: symbolIconUniforms,
41
+ symbolSDF: symbolSDFUniforms,
42
+ background: backgroundUniforms,
43
+ backgroundPattern: backgroundPatternUniforms
44
+ };
45
+
46
+ module.exports = { programUniforms };
@@ -0,0 +1,50 @@
1
+ const { Uniform1i, Uniform1f, Uniform2f, Uniform3f, UniformMatrix4f } = require('../uniform_binding');
2
+
3
+ const rasterUniforms = (context, locations) => ({
4
+ u_matrix: new UniformMatrix4f(context, locations.u_matrix),
5
+ u_tl_parent: new Uniform2f(context, locations.u_tl_parent),
6
+ u_scale_parent: new Uniform1f(context, locations.u_scale_parent),
7
+ u_buffer_scale: new Uniform1f(context, locations.u_buffer_scale),
8
+ u_fade_t: new Uniform1f(context, locations.u_fade_t),
9
+ u_opacity: new Uniform1f(context, locations.u_opacity),
10
+ u_image0: new Uniform1i(context, locations.u_image0),
11
+ u_image1: new Uniform1i(context, locations.u_image1),
12
+ u_brightness_low: new Uniform1f(context, locations.u_brightness_low),
13
+ u_brightness_high: new Uniform1f(context, locations.u_brightness_high),
14
+ u_saturation_factor: new Uniform1f(context, locations.u_saturation_factor),
15
+ u_contrast_factor: new Uniform1f(context, locations.u_contrast_factor),
16
+ u_spin_weights: new Uniform3f(context, locations.u_spin_weights)
17
+ });
18
+
19
+ const rasterUniformValues = (matrix, parentTL, parentScaleBy, fade, layer) => ({
20
+ u_matrix: matrix,
21
+ u_tl_parent: parentTL,
22
+ u_scale_parent: parentScaleBy,
23
+ u_buffer_scale: 1,
24
+ u_fade_t: fade.mix,
25
+ u_opacity: fade.opacity * layer.paint.get('raster-opacity'),
26
+ u_image0: 0,
27
+ u_image1: 1,
28
+ u_brightness_low: layer.paint.get('raster-brightness-min'),
29
+ u_brightness_high: layer.paint.get('raster-brightness-max'),
30
+ u_saturation_factor: saturationFactor(layer.paint.get('raster-saturation')),
31
+ u_contrast_factor: contrastFactor(layer.paint.get('raster-contrast')),
32
+ u_spin_weights: spinWeights(layer.paint.get('raster-hue-rotate'))
33
+ });
34
+
35
+ function spinWeights(angle) {
36
+ angle *= Math.PI / 180;
37
+ const s = Math.sin(angle);
38
+ const c = Math.cos(angle);
39
+ return [(2 * c + 1) / 3, (-Math.sqrt(3) * s - c + 1) / 3, (Math.sqrt(3) * s - c + 1) / 3];
40
+ }
41
+
42
+ function contrastFactor(contrast) {
43
+ return contrast > 0 ? 1 / (1 - contrast) : 1 + contrast;
44
+ }
45
+
46
+ function saturationFactor(saturation) {
47
+ return saturation > 0 ? 1 - 1 / (1.001 - saturation) : -saturation;
48
+ }
49
+
50
+ module.exports = { rasterUniforms, rasterUniformValues };