@antv/l7-layers 2.21.10 → 2.21.11-beta.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.
Files changed (287) hide show
  1. package/es/citybuliding/models/build.d.ts +16 -0
  2. package/es/citybuliding/models/build.js +18 -20
  3. package/es/citybuliding/shaders/build_frag.glsl +6 -6
  4. package/es/citybuliding/shaders/build_vert.glsl +8 -14
  5. package/es/core/BaseLayer.d.ts +0 -1
  6. package/es/core/BaseLayer.js +9 -19
  7. package/es/core/BaseModel.d.ts +15 -2
  8. package/es/core/BaseModel.js +98 -64
  9. package/es/core/CommonStyleAttribute.d.ts +14 -18
  10. package/es/core/CommonStyleAttribute.js +23 -67
  11. package/es/core/shape/extrude.js +6 -3
  12. package/es/core/triangulation.js +22 -50
  13. package/es/core/utils.d.ts +4 -0
  14. package/es/core/utils.js +33 -0
  15. package/es/earth/models/atmosphere.d.ts +15 -0
  16. package/es/earth/models/atmosphere.js +30 -24
  17. package/es/earth/models/base.d.ts +15 -0
  18. package/es/earth/models/base.js +30 -24
  19. package/es/earth/models/bloomsphere.d.ts +15 -0
  20. package/es/earth/models/bloomsphere.js +30 -24
  21. package/es/earth/shaders/atmosphere/atmosphere_vert.glsl +7 -5
  22. package/es/earth/shaders/base/base_vert.glsl +3 -3
  23. package/es/earth/shaders/bloomshpere/bloomsphere_vert.glsl +5 -4
  24. package/es/geometry/models/billboard.d.ts +15 -0
  25. package/es/geometry/models/billboard.js +14 -8
  26. package/es/geometry/models/plane.d.ts +14 -0
  27. package/es/geometry/models/plane.js +10 -10
  28. package/es/geometry/models/sprite.js +3 -9
  29. package/es/geometry/shaders/billboard_vert.glsl +28 -25
  30. package/es/geometry/shaders/plane_vert.glsl +6 -6
  31. package/es/geometry/shaders/sprite_vert.glsl +7 -9
  32. package/es/heatmap/models/grid.d.ts +14 -0
  33. package/es/heatmap/models/grid.js +10 -3
  34. package/es/heatmap/models/grid3d.d.ts +16 -0
  35. package/es/heatmap/models/grid3d.js +14 -6
  36. package/es/heatmap/models/heatmap.d.ts +20 -1
  37. package/es/heatmap/models/heatmap.js +96 -83
  38. package/es/heatmap/models/hexagon.d.ts +14 -0
  39. package/es/heatmap/models/hexagon.js +9 -3
  40. package/es/heatmap/shaders/grid/grid_vert.glsl +30 -42
  41. package/es/heatmap/shaders/grid3d/grid_3d_vert.glsl +14 -26
  42. package/es/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +19 -16
  43. package/es/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +16 -22
  44. package/es/heatmap/shaders/heatmap/heatmap_vert.glsl +3 -4
  45. package/es/heatmap/shaders/hexagon/hexagon_vert.glsl +13 -23
  46. package/es/image/models/image.d.ts +14 -0
  47. package/es/image/models/image.js +11 -7
  48. package/es/image/shaders/image_vert.glsl +7 -6
  49. package/es/line/models/arc.d.ts +18 -0
  50. package/es/line/models/arc.js +57 -8
  51. package/es/line/models/arc_3d.d.ts +18 -0
  52. package/es/line/models/arc_3d.js +55 -7
  53. package/es/line/models/flow.d.ts +17 -0
  54. package/es/line/models/flow.js +35 -7
  55. package/es/line/models/great_circle.d.ts +17 -0
  56. package/es/line/models/great_circle.js +34 -6
  57. package/es/line/models/line.d.ts +17 -0
  58. package/es/line/models/line.js +17 -8
  59. package/es/line/models/simple_line.d.ts +14 -0
  60. package/es/line/models/simple_line.js +12 -47
  61. package/es/line/models/wall.d.ts +17 -0
  62. package/es/line/models/wall.js +22 -48
  63. package/es/line/shaders/arc/line_arc_vert.glsl +44 -52
  64. package/es/line/shaders/arc3d/line_arc_3d_vert.glsl +15 -20
  65. package/es/line/shaders/flow/flow_line_vert.glsl +30 -48
  66. package/es/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +53 -74
  67. package/es/line/shaders/line/line_vert.glsl +31 -48
  68. package/es/line/shaders/simple/simpleline_vert.glsl +18 -23
  69. package/es/line/shaders/wall/wall_vert.glsl +36 -45
  70. package/es/mask/models/fill.js +2 -1
  71. package/es/mask/shaders/mask_vert.glsl +2 -7
  72. package/es/plugins/DataMappingPlugin.d.ts +0 -1
  73. package/es/plugins/DataMappingPlugin.js +1 -24
  74. package/es/plugins/PixelPickingPlugin.js +2 -2
  75. package/es/plugins/RegisterStyleAttributePlugin.d.ts +0 -1
  76. package/es/plugins/RegisterStyleAttributePlugin.js +3 -25
  77. package/es/plugins/ShaderUniformPlugin.d.ts +0 -5
  78. package/es/plugins/ShaderUniformPlugin.js +4 -35
  79. package/es/point/models/billboard_point.d.ts +14 -0
  80. package/es/point/models/billboard_point.js +11 -3
  81. package/es/point/models/earthExtrude.d.ts +16 -0
  82. package/es/point/models/earthExtrude.js +15 -8
  83. package/es/point/models/earthFill.d.ts +16 -0
  84. package/es/point/models/earthFill.js +13 -5
  85. package/es/point/models/extrude.d.ts +16 -0
  86. package/es/point/models/extrude.js +19 -12
  87. package/es/point/models/fill.d.ts +16 -0
  88. package/es/point/models/fill.js +16 -5
  89. package/es/point/models/fillImage.d.ts +16 -0
  90. package/es/point/models/fillImage.js +16 -16
  91. package/es/point/models/image.d.ts +15 -0
  92. package/es/point/models/image.js +14 -4
  93. package/es/point/models/normal.d.ts +14 -0
  94. package/es/point/models/normal.js +11 -3
  95. package/es/point/models/radar.d.ts +15 -0
  96. package/es/point/models/radar.js +13 -4
  97. package/es/point/models/text.d.ts +16 -0
  98. package/es/point/models/text.js +18 -11
  99. package/es/point/shaders/billboard/billboard_point_vert.glsl +10 -13
  100. package/es/point/shaders/earthExtrude/earthExtrude_vert.glsl +15 -25
  101. package/es/point/shaders/earthFill/earthFill_vert.glsl +6 -6
  102. package/es/point/shaders/extrude/extrude_vert.glsl +35 -39
  103. package/es/point/shaders/fill/fill_vert.glsl +12 -14
  104. package/es/point/shaders/fillImage/fillImage_vert.glsl +16 -28
  105. package/es/point/shaders/image/image_vert.glsl +15 -12
  106. package/es/point/shaders/normal/normal_vert.glsl +7 -10
  107. package/es/point/shaders/radar/radar_vert.glsl +11 -11
  108. package/es/point/shaders/text/text_vert.glsl +10 -9
  109. package/es/polygon/models/extrude.d.ts +16 -0
  110. package/es/polygon/models/extrude.js +26 -26
  111. package/es/polygon/models/extrusion.d.ts +16 -0
  112. package/es/polygon/models/extrusion.js +34 -4
  113. package/es/polygon/models/fill.d.ts +14 -0
  114. package/es/polygon/models/fill.js +12 -4
  115. package/es/polygon/models/ocean.d.ts +14 -0
  116. package/es/polygon/models/ocean.js +11 -6
  117. package/es/polygon/models/water.d.ts +14 -0
  118. package/es/polygon/models/water.js +11 -6
  119. package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +17 -15
  120. package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +22 -20
  121. package/es/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +17 -17
  122. package/es/polygon/shaders/extrusion/polygon_extrusion_vert.glsl +8 -8
  123. package/es/polygon/shaders/fill/fill_linear_vert.glsl +7 -6
  124. package/es/polygon/shaders/fill/fill_vert.glsl +10 -12
  125. package/es/polygon/shaders/ocean/ocean_vert.glsl +3 -4
  126. package/es/polygon/shaders/water/polygon_water_vert.glsl +5 -5
  127. package/es/raster/index.d.ts +1 -1
  128. package/es/raster/index.js +1 -1
  129. package/es/raster/models/raster.d.ts +14 -0
  130. package/es/raster/models/raster.js +13 -3
  131. package/es/raster/models/rasterRgb.d.ts +14 -0
  132. package/es/raster/models/rasterRgb.js +12 -3
  133. package/es/raster/models/rasterTerrainRgb.d.ts +14 -0
  134. package/es/raster/models/rasterTerrainRgb.js +11 -3
  135. package/es/raster/shaders/raster/raster_2d_vert.glsl +6 -6
  136. package/es/raster/shaders/rgb/raster_rgb_vert.glsl +11 -11
  137. package/es/raster/shaders/terrain/terrain_rgb_vert.glsl +11 -11
  138. package/es/tile/core/BaseLayer.js +0 -16
  139. package/es/utils/extrude_polyline.d.ts +0 -15
  140. package/es/utils/extrude_polyline.js +0 -217
  141. package/es/wind/models/wind.d.ts +14 -0
  142. package/es/wind/models/wind.js +9 -1
  143. package/es/wind/shaders/wind_vert.glsl +6 -5
  144. package/lib/citybuliding/models/build.d.ts +16 -0
  145. package/lib/citybuliding/models/build.js +18 -20
  146. package/lib/citybuliding/shaders/build_frag.glsl +6 -6
  147. package/lib/citybuliding/shaders/build_vert.glsl +8 -14
  148. package/lib/core/BaseLayer.d.ts +0 -1
  149. package/lib/core/BaseLayer.js +9 -19
  150. package/lib/core/BaseModel.d.ts +15 -2
  151. package/lib/core/BaseModel.js +96 -62
  152. package/lib/core/CommonStyleAttribute.d.ts +14 -18
  153. package/lib/core/CommonStyleAttribute.js +23 -68
  154. package/lib/core/shape/extrude.js +6 -3
  155. package/lib/core/triangulation.js +22 -50
  156. package/lib/core/utils.d.ts +4 -0
  157. package/lib/core/utils.js +35 -0
  158. package/lib/earth/models/atmosphere.d.ts +15 -0
  159. package/lib/earth/models/atmosphere.js +30 -24
  160. package/lib/earth/models/base.d.ts +15 -0
  161. package/lib/earth/models/base.js +30 -24
  162. package/lib/earth/models/bloomsphere.d.ts +15 -0
  163. package/lib/earth/models/bloomsphere.js +30 -24
  164. package/lib/earth/shaders/atmosphere/atmosphere_vert.glsl +7 -5
  165. package/lib/earth/shaders/base/base_vert.glsl +3 -3
  166. package/lib/earth/shaders/bloomshpere/bloomsphere_vert.glsl +5 -4
  167. package/lib/geometry/models/billboard.d.ts +15 -0
  168. package/lib/geometry/models/billboard.js +14 -8
  169. package/lib/geometry/models/plane.d.ts +14 -0
  170. package/lib/geometry/models/plane.js +10 -10
  171. package/lib/geometry/models/sprite.js +3 -9
  172. package/lib/geometry/shaders/billboard_vert.glsl +28 -25
  173. package/lib/geometry/shaders/plane_vert.glsl +6 -6
  174. package/lib/geometry/shaders/sprite_vert.glsl +7 -9
  175. package/lib/heatmap/models/grid.d.ts +14 -0
  176. package/lib/heatmap/models/grid.js +10 -3
  177. package/lib/heatmap/models/grid3d.d.ts +16 -0
  178. package/lib/heatmap/models/grid3d.js +14 -6
  179. package/lib/heatmap/models/heatmap.d.ts +20 -1
  180. package/lib/heatmap/models/heatmap.js +95 -82
  181. package/lib/heatmap/models/hexagon.d.ts +14 -0
  182. package/lib/heatmap/models/hexagon.js +9 -3
  183. package/lib/heatmap/shaders/grid/grid_vert.glsl +30 -42
  184. package/lib/heatmap/shaders/grid3d/grid_3d_vert.glsl +14 -26
  185. package/lib/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +19 -16
  186. package/lib/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +16 -22
  187. package/lib/heatmap/shaders/heatmap/heatmap_vert.glsl +3 -4
  188. package/lib/heatmap/shaders/hexagon/hexagon_vert.glsl +13 -23
  189. package/lib/image/models/image.d.ts +14 -0
  190. package/lib/image/models/image.js +11 -7
  191. package/lib/image/shaders/image_vert.glsl +7 -6
  192. package/lib/line/models/arc.d.ts +18 -0
  193. package/lib/line/models/arc.js +56 -7
  194. package/lib/line/models/arc_3d.d.ts +18 -0
  195. package/lib/line/models/arc_3d.js +55 -7
  196. package/lib/line/models/flow.d.ts +17 -0
  197. package/lib/line/models/flow.js +35 -7
  198. package/lib/line/models/great_circle.d.ts +17 -0
  199. package/lib/line/models/great_circle.js +33 -5
  200. package/lib/line/models/line.d.ts +17 -0
  201. package/lib/line/models/line.js +17 -8
  202. package/lib/line/models/simple_line.d.ts +14 -0
  203. package/lib/line/models/simple_line.js +12 -47
  204. package/lib/line/models/wall.d.ts +17 -0
  205. package/lib/line/models/wall.js +22 -48
  206. package/lib/line/shaders/arc/line_arc_vert.glsl +44 -52
  207. package/lib/line/shaders/arc3d/line_arc_3d_vert.glsl +15 -20
  208. package/lib/line/shaders/flow/flow_line_vert.glsl +30 -48
  209. package/lib/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +53 -74
  210. package/lib/line/shaders/line/line_vert.glsl +31 -48
  211. package/lib/line/shaders/simple/simpleline_vert.glsl +18 -23
  212. package/lib/line/shaders/wall/wall_vert.glsl +36 -45
  213. package/lib/mask/models/fill.js +2 -1
  214. package/lib/mask/shaders/mask_vert.glsl +2 -7
  215. package/lib/plugins/DataMappingPlugin.d.ts +0 -1
  216. package/lib/plugins/DataMappingPlugin.js +0 -23
  217. package/lib/plugins/PixelPickingPlugin.js +1 -1
  218. package/lib/plugins/RegisterStyleAttributePlugin.d.ts +0 -1
  219. package/lib/plugins/RegisterStyleAttributePlugin.js +2 -24
  220. package/lib/plugins/ShaderUniformPlugin.d.ts +0 -5
  221. package/lib/plugins/ShaderUniformPlugin.js +4 -35
  222. package/lib/point/models/billboard_point.d.ts +14 -0
  223. package/lib/point/models/billboard_point.js +11 -3
  224. package/lib/point/models/earthExtrude.d.ts +16 -0
  225. package/lib/point/models/earthExtrude.js +14 -7
  226. package/lib/point/models/earthFill.d.ts +16 -0
  227. package/lib/point/models/earthFill.js +13 -5
  228. package/lib/point/models/extrude.d.ts +16 -0
  229. package/lib/point/models/extrude.js +18 -11
  230. package/lib/point/models/fill.d.ts +16 -0
  231. package/lib/point/models/fill.js +16 -5
  232. package/lib/point/models/fillImage.d.ts +16 -0
  233. package/lib/point/models/fillImage.js +16 -16
  234. package/lib/point/models/image.d.ts +15 -0
  235. package/lib/point/models/image.js +14 -4
  236. package/lib/point/models/normal.d.ts +14 -0
  237. package/lib/point/models/normal.js +11 -3
  238. package/lib/point/models/radar.d.ts +15 -0
  239. package/lib/point/models/radar.js +13 -4
  240. package/lib/point/models/text.d.ts +16 -0
  241. package/lib/point/models/text.js +18 -11
  242. package/lib/point/shaders/billboard/billboard_point_vert.glsl +10 -13
  243. package/lib/point/shaders/earthExtrude/earthExtrude_vert.glsl +15 -25
  244. package/lib/point/shaders/earthFill/earthFill_vert.glsl +6 -6
  245. package/lib/point/shaders/extrude/extrude_vert.glsl +35 -39
  246. package/lib/point/shaders/fill/fill_vert.glsl +12 -14
  247. package/lib/point/shaders/fillImage/fillImage_vert.glsl +16 -28
  248. package/lib/point/shaders/image/image_vert.glsl +15 -12
  249. package/lib/point/shaders/normal/normal_vert.glsl +7 -10
  250. package/lib/point/shaders/radar/radar_vert.glsl +11 -11
  251. package/lib/point/shaders/text/text_vert.glsl +10 -9
  252. package/lib/polygon/models/extrude.d.ts +16 -0
  253. package/lib/polygon/models/extrude.js +25 -25
  254. package/lib/polygon/models/extrusion.d.ts +16 -0
  255. package/lib/polygon/models/extrusion.js +34 -4
  256. package/lib/polygon/models/fill.d.ts +14 -0
  257. package/lib/polygon/models/fill.js +12 -4
  258. package/lib/polygon/models/ocean.d.ts +14 -0
  259. package/lib/polygon/models/ocean.js +11 -6
  260. package/lib/polygon/models/water.d.ts +14 -0
  261. package/lib/polygon/models/water.js +11 -6
  262. package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +17 -15
  263. package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +22 -20
  264. package/lib/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +17 -17
  265. package/lib/polygon/shaders/extrusion/polygon_extrusion_vert.glsl +8 -8
  266. package/lib/polygon/shaders/fill/fill_linear_vert.glsl +7 -6
  267. package/lib/polygon/shaders/fill/fill_vert.glsl +10 -12
  268. package/lib/polygon/shaders/ocean/ocean_vert.glsl +3 -4
  269. package/lib/polygon/shaders/water/polygon_water_vert.glsl +5 -5
  270. package/lib/raster/index.d.ts +1 -1
  271. package/lib/raster/index.js +2 -2
  272. package/lib/raster/models/raster.d.ts +14 -0
  273. package/lib/raster/models/raster.js +13 -3
  274. package/lib/raster/models/rasterRgb.d.ts +14 -0
  275. package/lib/raster/models/rasterRgb.js +12 -3
  276. package/lib/raster/models/rasterTerrainRgb.d.ts +14 -0
  277. package/lib/raster/models/rasterTerrainRgb.js +11 -3
  278. package/lib/raster/shaders/raster/raster_2d_vert.glsl +6 -6
  279. package/lib/raster/shaders/rgb/raster_rgb_vert.glsl +11 -11
  280. package/lib/raster/shaders/terrain/terrain_rgb_vert.glsl +11 -11
  281. package/lib/tile/core/BaseLayer.js +0 -16
  282. package/lib/utils/extrude_polyline.d.ts +0 -15
  283. package/lib/utils/extrude_polyline.js +0 -217
  284. package/lib/wind/models/wind.d.ts +14 -0
  285. package/lib/wind/models/wind.js +9 -1
  286. package/lib/wind/shaders/wind_vert.glsl +6 -5
  287. package/package.json +6 -6
@@ -1,12 +1,12 @@
1
- layout(location = 0) in vec3 a_Position;
2
- layout(location = 11) in vec3 a_Extrude;
3
- layout(location = 14) in vec2 a_Uv;
1
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
2
+ layout(location = ATTRIBUTE_LOCATION_EXTRUDE) in vec3 a_Extrude;
3
+ layout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;
4
4
 
5
5
  layout(std140) uniform commonUniforms {
6
- vec2 u_size;
7
- float u_raisingHeight;
8
- float u_rotation;
9
- float u_opacity;
6
+ vec2 u_size;
7
+ float u_raisingHeight;
8
+ float u_rotation;
9
+ float u_opacity;
10
10
  };
11
11
 
12
12
  out vec2 v_uv;
@@ -15,26 +15,29 @@ out vec2 v_uv;
15
15
  #pragma include "picking"
16
16
  #pragma include "rotation_2d"
17
17
  void main() {
18
- vec3 extrude = a_Extrude;
19
- v_uv = a_Uv;
20
- float raiseHeight = u_raisingHeight;
21
- if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {
22
- float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);
23
- raiseHeight = u_raisingHeight * mapboxZoomScale;
24
- }
18
+ vec3 extrude = a_Extrude;
19
+ v_uv = a_Uv;
20
+ float raiseHeight = u_raisingHeight;
21
+ if (
22
+ u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||
23
+ u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET
24
+ ) {
25
+ float mapboxZoomScale = 4.0 / pow(2.0, 21.0 - u_Zoom);
26
+ raiseHeight = u_raisingHeight * mapboxZoomScale;
27
+ }
25
28
 
26
- // 计算经纬度点位坐标
27
- vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));
29
+ // 计算经纬度点位坐标
30
+ vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));
28
31
 
29
- // 计算绕 z 轴旋转后的偏移
30
- vec2 offsetXY = project_pixel(rotate_matrix(vec2(extrude.x * u_size.x, 0.0),u_rotation));
31
- // 绕 z 轴旋转
32
- float x = project_pos.x + offsetXY.x;
33
- float y = project_pos.y + offsetXY.y;
34
- // z 轴不参与旋转
35
- float z = project_pixel(extrude.y * u_size.y + raiseHeight);
32
+ // 计算绕 z 轴旋转后的偏移
33
+ vec2 offsetXY = project_pixel(rotate_matrix(vec2(extrude.x * u_size.x, 0.0), u_rotation));
34
+ // 绕 z 轴旋转
35
+ float x = project_pos.x + offsetXY.x;
36
+ float y = project_pos.y + offsetXY.y;
37
+ // z 轴不参与旋转
38
+ float z = project_pixel(extrude.y * u_size.y + raiseHeight);
36
39
 
37
- gl_Position = project_common_position_to_clipspace_v2(vec4(x , y, z , 1.0));
40
+ gl_Position = project_common_position_to_clipspace(vec4(x, y, z, 1.0));
38
41
 
39
- setPickingColor(a_PickingColor);
42
+ setPickingColor(a_PickingColor);
40
43
  }
@@ -1,7 +1,7 @@
1
1
 
2
- layout(location = 0) in vec3 a_Position;
3
- layout(location = 1) in vec3 a_Color;
4
- layout(location = 14) in vec2 a_Uv;
2
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
3
+ layout(location = ATTRIBUTE_LOCATION_COLOR) in vec3 a_Color;
4
+ layout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;
5
5
 
6
6
  layout(std140) uniform commonUniforms {
7
7
  float u_opacity;
@@ -18,15 +18,15 @@ out float v_clip;
18
18
  void main() {
19
19
  v_Color = a_Color;
20
20
  v_uv = a_Uv;
21
-
21
+
22
22
  vec4 project_pos = project_position(vec4(a_Position, 1.0));
23
23
 
24
24
  v_clip = 1.0;
25
25
  if(a_Position.z < u_terrainClipHeight) {
26
26
  v_clip = 0.0;
27
27
  }
28
-
29
- gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy, a_Position.z, 1.0));
28
+
29
+ gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, a_Position.z, 1.0));
30
30
 
31
31
  setPickingColor(a_PickingColor);
32
32
  }
@@ -1,5 +1,5 @@
1
- layout(location = 0) in vec3 a_Position;
2
- layout(location = 1) in vec3 a_Color;
1
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
2
+ layout(location = ATTRIBUTE_LOCATION_COLOR) in vec3 a_Color;
3
3
 
4
4
  layout(std140) uniform commonUniforms {
5
5
  float u_opacity;
@@ -12,12 +12,10 @@ out float v_d;
12
12
 
13
13
  #pragma include "projection"
14
14
  void main() {
15
- v_Color = a_Color.xyz;
16
-
17
- vec4 project_pos = project_position(vec4(a_Position, 1.0));
15
+ v_Color = a_Color.xyz;
16
+ v_d = a_Position.z;
18
17
 
19
- v_d = a_Position.z;
20
-
21
- gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy, a_Position.z, 1.0));
22
- gl_PointSize = pow((u_Zoom - 1.0), 2.0) * u_Scale;
18
+ vec4 project_pos = project_position(vec4(a_Position, 1.0));
19
+ gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, a_Position.z, 1.0));
20
+ gl_PointSize = pow(u_Zoom - 1.0, 2.0) * u_Scale;
23
21
  }
@@ -1,6 +1,20 @@
1
1
  import type { IModel, IModelUniform } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class GridModel extends BaseModel {
4
+ protected get attributeLocation(): {
5
+ readonly POSITION: 0;
6
+ readonly POSITION_64LOW: 1;
7
+ readonly COLOR: 2;
8
+ readonly PICKING_COLOR: 3;
9
+ readonly STROKE: 4;
10
+ readonly OPACITY: 5;
11
+ readonly OFFSETS: 6;
12
+ readonly ROTATION: 7;
13
+ readonly MAX: 8;
14
+ } & Record<string, number> & {
15
+ MAX: 8;
16
+ POS: number;
17
+ };
4
18
  getUninforms(): IModelUniform;
5
19
  protected getCommonUniformsInfo(): {
6
20
  uniformsArray: number[];
@@ -13,8 +13,14 @@ var _triangulation = require("../../core/triangulation");
13
13
  /* babel-plugin-inline-import '../shaders/grid/grid_frag.glsl' */
14
14
  const grid_frag = "in vec4 v_color;\n\n#pragma include \"scene_uniforms\"\n#pragma include \"picking\"\nout vec4 outputColor;\nvoid main() {\n outputColor = v_color;\n outputColor = filterColor(outputColor);\n}\n";
15
15
  /* babel-plugin-inline-import '../shaders/grid/grid_vert.glsl' */
16
- const grid_vert = "layout(location = 0) in vec3 a_Position;\r\nlayout(location = 1) in vec4 a_Color;\r\nlayout(location = 10) in vec3 a_Pos;\r\n\r\nlayout(std140) uniform commonUniforms {\r\n vec2 u_radius;\r\n float u_opacity;\r\n float u_coverage;\r\n float u_angle;\r\n};\r\n\r\n\r\nout vec4 v_color;\r\n\r\n\r\n#pragma include \"projection\"\r\n#pragma include \"project\"\r\n#pragma include \"picking\"\r\n\r\nvoid main() {\r\n v_color = a_Color;\r\n v_color.a *= u_opacity;\r\n\r\n mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));\r\n vec2 offset = a_Position.xy * u_radius * rotationMatrix * u_coverage ;\r\n // vec2 lnglat = unProjectFlat(a_Pos.xy + offset);\r\n // vec4 project_pos = project_position(vec4(lnglat, 0, 1.0));\r\n // gl_Position = project_common_position_to_clipspace(project_pos);\r\n\r\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\r\n vec2 lnglat = unProjectFlat(a_Pos.xy + offset);\r\n vec2 customLnglat = customProject(lnglat) - u_sceneCenterMercator; // \u5C06\u7ECF\u7EAC\u5EA6\u8F6C\u6362\u4E3A\u9AD8\u5FB72.0\u9700\u8981\u7684\u5E73\u9762\u5750\u6807\r\n vec4 project_pos = project_position(vec4(customLnglat, 0, 1.0));\r\n gl_Position = u_Mvp * (project_pos);\r\n } else {\r\n vec2 lnglat = unProjectFlat(a_Pos.xy + offset);\r\n vec4 project_pos = project_position(vec4(lnglat, 0, 1.0));\r\n gl_Position = project_common_position_to_clipspace(project_pos);\r\n }\r\n\r\n setPickingColor(a_PickingColor);\r\n}\r\n";
16
+ const grid_vert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_COLOR) in vec4 a_Color;\nlayout(location = ATTRIBUTE_LOCATION_POS) in vec3 a_Pos;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_radius;\n float u_opacity;\n float u_coverage;\n float u_angle;\n};\n\nout vec4 v_color;\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"picking\"\n\nvoid main() {\n v_color = a_Color;\n v_color.a *= u_opacity;\n\n mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));\n vec2 offset = a_Position.xy * u_radius * rotationMatrix * u_coverage;\n\n vec2 lnglat = unProjectFlat(a_Pos.xy + offset);\n vec4 project_pos = project_position(vec4(lnglat, 0, 1.0));\n gl_Position = project_common_position_to_clipspace(project_pos);\n\n setPickingColor(a_PickingColor);\n}\n";
17
17
  class GridModel extends _BaseModel.default {
18
+ get attributeLocation() {
19
+ return Object.assign(super.attributeLocation, {
20
+ MAX: super.attributeLocation.MAX,
21
+ POS: 9
22
+ });
23
+ }
18
24
  getUninforms() {
19
25
  const commoninfo = this.getCommonUniformsInfo();
20
26
  const attributeInfo = this.getUniformsBufferInfo(this.getStyleAttribute());
@@ -50,6 +56,7 @@ class GridModel extends _BaseModel.default {
50
56
  moduleName: 'heatmapGrid',
51
57
  vertexShader: grid_vert,
52
58
  fragmentShader: grid_frag,
59
+ defines: _this2.getDefines(),
53
60
  triangulation: _triangulation.HeatmapGridTriangulation,
54
61
  primitive: _l7Core.gl.TRIANGLES,
55
62
  depth: {
@@ -65,7 +72,7 @@ class GridModel extends _BaseModel.default {
65
72
  // 顶点经纬度位置
66
73
  type: _l7Core.AttributeType.Attribute,
67
74
  descriptor: {
68
- shaderLocation: 10,
75
+ shaderLocation: this.attributeLocation.POS,
69
76
  name: 'a_Pos',
70
77
  buffer: {
71
78
  usage: _l7Core.gl.DYNAMIC_DRAW,
@@ -74,7 +81,7 @@ class GridModel extends _BaseModel.default {
74
81
  },
75
82
  size: 3,
76
83
  update: feature => {
77
- const coordinates = feature.version === 'GAODE2.x' ? feature.originCoordinates : feature.coordinates;
84
+ const coordinates = feature.coordinates;
78
85
  return [coordinates[0], coordinates[1], 0];
79
86
  }
80
87
  }
@@ -1,6 +1,22 @@
1
1
  import type { IModel, IModelUniform } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class Grid3DModel extends BaseModel {
4
+ protected get attributeLocation(): {
5
+ readonly POSITION: 0;
6
+ readonly POSITION_64LOW: 1;
7
+ readonly COLOR: 2;
8
+ readonly PICKING_COLOR: 3;
9
+ readonly STROKE: 4;
10
+ readonly OPACITY: 5;
11
+ readonly OFFSETS: 6;
12
+ readonly ROTATION: 7;
13
+ readonly MAX: 8;
14
+ } & Record<string, number> & {
15
+ MAX: 8;
16
+ SIZE: number;
17
+ POS: number;
18
+ NORMAL: number;
19
+ };
4
20
  getUninforms(): IModelUniform;
5
21
  protected getCommonUniformsInfo(): {
6
22
  uniformsArray: number[];
@@ -9,13 +9,20 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
9
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
10
  var _l7Core = require("@antv/l7-core");
11
11
  var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
12
- var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
13
12
  var _triangulation = require("../../core/triangulation");
14
13
  /* babel-plugin-inline-import '../shaders/grid3d/grid_3d_frag.glsl' */
15
14
  const grid_3d_frag = "in vec4 v_color;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_radius;\n float u_opacity;\n float u_coverage;\n float u_angle;\n};\n\n#pragma include \"scene_uniforms\"\n#pragma include \"picking\"\n\nout vec4 outputColor;\nvoid main() {\n outputColor = v_color;\n outputColor = filterColor(outputColor);\n}\n";
16
15
  /* babel-plugin-inline-import '../shaders/grid3d/grid_3d_vert.glsl' */
17
- const grid_3d_vert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 10) in vec3 a_Pos;\nlayout(location = 13) in vec3 a_Normal;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_radius;\n float u_opacity;\n float u_coverage;\n float u_angle;\n};\n\nout vec4 v_color;\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvoid main() {\n mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));\n vec2 offset =(vec2(a_Position.xy * u_radius * rotationMatrix * u_coverage));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n \n vec2 lnglat = unProjectFlat(a_Pos.xy + offset); // \u7ECF\u7EAC\u5EA6\n vec2 customLnglat = customProject(lnglat) - u_sceneCenterMercator; // \u5C06\u7ECF\u7EAC\u5EA6\u8F6C\u6362\u4E3A\u9AD8\u5FB72.0\u9700\u8981\u7684\u5E73\u9762\u5750\u6807\n vec4 project_pos = project_position(vec4(customLnglat, a_Position.z * a_Size, 1.0));\n\n float lightWeight = calc_lighting(project_pos);\n v_color =vec4(a_Color.rgb*lightWeight, a_Color.w * u_opacity);\n \n gl_Position = u_Mvp * vec4(customLnglat , a_Position.z * a_Size, 1.0);\n } else {\n vec2 lnglat = unProjectFlat(a_Pos.xy + offset); // \u5B9E\u9645\u7684\u7ECF\u7EAC\u5EA6\n vec4 project_pos = project_position(vec4(lnglat, a_Position.z * a_Size, 1.0));\n \n float lightWeight = calc_lighting(project_pos);\n v_color =vec4(a_Color.rgb*lightWeight, a_Color.w);\n \n gl_Position = project_common_position_to_clipspace(project_pos);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
16
+ const grid_3d_vert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_COLOR) in vec4 a_Color;\nlayout(location = ATTRIBUTE_LOCATION_SIZE) in float a_Size;\nlayout(location = ATTRIBUTE_LOCATION_POS) in vec3 a_Pos;\nlayout(location = ATTRIBUTE_LOCATION_NORMAL) in vec3 a_Normal;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_radius;\n float u_opacity;\n float u_coverage;\n float u_angle;\n};\n\nout vec4 v_color;\n\n#pragma include \"projection\"\n#pragma include \"project\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvoid main() {\n mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));\n vec2 offset = vec2(a_Position.xy * u_radius * rotationMatrix * u_coverage);\n\n vec2 lnglat = unProjectFlat(a_Pos.xy + offset); // \u5B9E\u9645\u7684\u7ECF\u7EAC\u5EA6\n vec4 project_pos = project_position(vec4(lnglat, a_Position.z * a_Size, 1.0));\n\n float lightWeight = calc_lighting(project_pos);\n v_color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n gl_Position = project_common_position_to_clipspace(project_pos);\n\n setPickingColor(a_PickingColor);\n}\n";
18
17
  class Grid3DModel extends _BaseModel.default {
18
+ get attributeLocation() {
19
+ return Object.assign(super.attributeLocation, {
20
+ MAX: super.attributeLocation.MAX,
21
+ SIZE: 9,
22
+ POS: 10,
23
+ NORMAL: 11
24
+ });
25
+ }
19
26
  getUninforms() {
20
27
  const commoninfo = this.getCommonUniformsInfo();
21
28
  const attributeInfo = this.getUniformsBufferInfo(this.getStyleAttribute());
@@ -51,6 +58,7 @@ class Grid3DModel extends _BaseModel.default {
51
58
  moduleName: 'heatmapGrid3d',
52
59
  vertexShader: grid_3d_vert,
53
60
  fragmentShader: grid_3d_frag,
61
+ defines: _this2.getDefines(),
54
62
  triangulation: _triangulation.PointExtrudeTriangulation,
55
63
  primitive: _l7Core.gl.TRIANGLES,
56
64
  depth: {
@@ -65,7 +73,7 @@ class Grid3DModel extends _BaseModel.default {
65
73
  name: 'size',
66
74
  type: _l7Core.AttributeType.Attribute,
67
75
  descriptor: {
68
- shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
76
+ shaderLocation: this.attributeLocation.SIZE,
69
77
  name: 'a_Size',
70
78
  buffer: {
71
79
  usage: _l7Core.gl.DYNAMIC_DRAW,
@@ -86,7 +94,7 @@ class Grid3DModel extends _BaseModel.default {
86
94
  type: _l7Core.AttributeType.Attribute,
87
95
  descriptor: {
88
96
  name: 'a_Normal',
89
- shaderLocation: _CommonStyleAttribute.ShaderLocation.NORMAL,
97
+ shaderLocation: this.attributeLocation.NORMAL,
90
98
  buffer: {
91
99
  usage: _l7Core.gl.STATIC_DRAW,
92
100
  data: [],
@@ -104,7 +112,7 @@ class Grid3DModel extends _BaseModel.default {
104
112
  type: _l7Core.AttributeType.Attribute,
105
113
  descriptor: {
106
114
  name: 'a_Pos',
107
- shaderLocation: 10,
115
+ shaderLocation: this.attributeLocation.POS,
108
116
  buffer: {
109
117
  usage: _l7Core.gl.DYNAMIC_DRAW,
110
118
  data: [],
@@ -112,7 +120,7 @@ class Grid3DModel extends _BaseModel.default {
112
120
  },
113
121
  size: 3,
114
122
  update: feature => {
115
- const coordinates = feature.version === 'GAODE2.x' ? feature.originCoordinates : feature.coordinates;
123
+ const coordinates = feature.coordinates;
116
124
  return [coordinates[0], coordinates[1], 0];
117
125
  }
118
126
  }
@@ -1,6 +1,22 @@
1
1
  import type { IFramebuffer, IModel, IModelUniform, IRenderOptions, ITexture2D } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class HeatMapModel extends BaseModel {
4
+ protected get attributeLocation(): {
5
+ readonly POSITION: 0;
6
+ readonly POSITION_64LOW: 1;
7
+ readonly COLOR: 2;
8
+ readonly PICKING_COLOR: 3;
9
+ readonly STROKE: 4;
10
+ readonly OPACITY: 5;
11
+ readonly OFFSETS: 6;
12
+ readonly ROTATION: 7;
13
+ readonly MAX: 8;
14
+ } & Record<string, number> & {
15
+ MAX: 8;
16
+ SIZE: number;
17
+ UV: number;
18
+ DIR: number;
19
+ };
4
20
  protected texture: ITexture2D;
5
21
  protected colorTexture: ITexture2D;
6
22
  protected heatmapFramerBuffer: IFramebuffer;
@@ -17,11 +33,14 @@ export default class HeatMapModel extends BaseModel {
17
33
  initModels(): Promise<IModel[]>;
18
34
  buildModels(): Promise<IModel[]>;
19
35
  protected registerBuiltinAttributes(): void;
36
+ /**
37
+ * 热力图密度图
38
+ */
20
39
  private buildHeatMapIntensity;
21
40
  private buildHeatmap;
41
+ private build3dHeatMap;
22
42
  private drawIntensityMode;
23
43
  private drawHeatMap;
24
44
  private draw3DHeatMap;
25
- private build3dHeatMap;
26
45
  private updateColorTexture;
27
46
  }
@@ -13,20 +13,19 @@ var _l7Utils = require("@antv/l7-utils");
13
13
  var _glMatrix = require("gl-matrix");
14
14
  var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
15
15
  var _triangulation = require("../../core/triangulation");
16
- var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
17
16
  var _triangulation2 = require("../triangulation");
18
17
  /* babel-plugin-inline-import '../shaders/heatmap/heatmap_3d_frag.glsl' */
19
18
  const heatmap_3d_frag = "layout(std140) uniform commonUniforms {\n mat4 u_ViewProjectionMatrixUncentered;\n mat4 u_InverseViewProjectionMatrix;\n float u_opacity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n float u_common_uniforms_padding3;\n};\n\nuniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\n\nin vec2 v_texCoord;\nin float v_intensity;\nout vec4 outputColor;\n\nvoid main(){\n \n float intensity = texture(SAMPLER_2D(u_texture), v_texCoord).r;\n vec4 color = texture(SAMPLER_2D(u_colorTexture),vec2(intensity, 0));\n outputColor = color;\n // gl_FragColor.a = color.a * smoothstep(0.1,0.2,intensity)* u_opacity;\n outputColor.a = color.a * smoothstep(0.,0.1,intensity) * u_opacity;\n}\n";
20
19
  /* babel-plugin-inline-import '../shaders/heatmap/heatmap_3d_vert.glsl' */
21
- const heatmap_3d_vert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 14) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n mat4 u_ViewProjectionMatrixUncentered;\n mat4 u_InverseViewProjectionMatrix;\n float u_opacity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n float u_common_uniforms_padding3;\n};\n\nuniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\n\nout vec2 v_texCoord;\nout float v_intensity;\n\nvec2 toBezier(float t, vec2 P0, vec2 P1, vec2 P2, vec2 P3) {\n float t2 = t * t;\n float one_minus_t = 1.0 - t;\n float one_minus_t2 = one_minus_t * one_minus_t;\n return (P0 * one_minus_t2 * one_minus_t + P1 * 3.0 * t * one_minus_t2 + P2 * 3.0 * t2 * one_minus_t + P3 * t2 * t);\n}\nvec2 toBezier(float t, vec4 p){\n return toBezier(t, vec2(0.0, 0.0), vec2(p.x, p.y), vec2(p.z, p.w), vec2(1.0, 1.0));\n}\n\n#pragma include \"projection\"\n#pragma include \"project\"\n\nvoid main() {\n v_texCoord = a_Uv;\n\n vec2 pos = a_Uv * vec2(2.0) - vec2(1.0); // \u5C06\u539F\u672C 0 -> 1 \u7684 uv \u8F6C\u6362\u4E3A -1 -> 1 \u7684\u6807\u51C6\u5750\u6807\u7A7A\u95F4\uFF08NDC\uFF09\n\n vec4 p1 = vec4(pos, 0.0, 1.0); // x/y \u5E73\u9762\u4E0A\u7684\u70B9\uFF08z == 0\uFF09\u53EF\u4EE5\u8BA4\u4E3A\u662F\u4E09\u7EF4\u4E0A\u7684\u70B9\u88AB\u6295\u5F71\u5230\u5E73\u9762\u540E\u7684\u70B9\n\tvec4 p2 = vec4(pos, 1.0, 1.0); // \u5E73\u884C\u4E8Ex/y\u5E73\u9762\u3001z==1 \u7684\u5E73\u9762\u4E0A\u7684\u70B9\n\n\tvec4 inverseP1 = u_InverseViewProjectionMatrix * p1; // \u6839\u636E\u89C6\u56FE\u6295\u5F71\u77E9\u9635\u7684\u9006\u77E9\u9635\u5E73\u9762\u4E0A\u7684\u53CD\u7B97\u51FA\u4E09\u7EF4\u7A7A\u95F4\u4E2D\u7684\u70B9\uFF08p1\u5E73\u9762\u4E0A\u7684\u70B9\uFF09\n\tvec4 inverseP2 = u_InverseViewProjectionMatrix * p2;\n\n inverseP1 = inverseP1 / inverseP1.w; // \u5F52\u4E00\u5316\u64CD\u4F5C\uFF08\u5F52\u4E00\u5316\u540E\u4E3A\u4E16\u754C\u5750\u6807\uFF09\n\tinverseP2 = inverseP2 / inverseP2.w;\n\n\tfloat zPos = (0.0 - inverseP1.z) / (inverseP2.z - inverseP1.z); // ??\n\tvec4 position = inverseP1 + zPos * (inverseP2 - inverseP1);\n\n vec4 b= vec4(0.5000, 0.0, 1.0, 0.5000);\n float fh;\n\n v_intensity = texture(SAMPLER_2D(u_texture), v_texCoord).r;\n fh = toBezier(v_intensity, b).y;\n gl_Position = u_ViewProjectionMatrixUncentered * vec4(position.xy, fh * project_pixel(50.), 1.0);\n \n}\n"; // 绘制平面热力的 shader
20
+ const heatmap_3d_vert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 10) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n mat4 u_ViewProjectionMatrixUncentered;\n mat4 u_InverseViewProjectionMatrix;\n float u_opacity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n float u_common_uniforms_padding3;\n};\n\nuniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\n\nout vec2 v_texCoord;\nout float v_intensity;\n\nvec2 toBezier(float t, vec2 P0, vec2 P1, vec2 P2, vec2 P3) {\n float t2 = t * t;\n float one_minus_t = 1.0 - t;\n float one_minus_t2 = one_minus_t * one_minus_t;\n return P0 * one_minus_t2 * one_minus_t +\n P1 * 3.0 * t * one_minus_t2 +\n P2 * 3.0 * t2 * one_minus_t +\n P3 * t2 * t;\n}\nvec2 toBezier(float t, vec4 p) {\n return toBezier(t, vec2(0.0, 0.0), vec2(p.x, p.y), vec2(p.z, p.w), vec2(1.0, 1.0));\n}\n\n#pragma include \"projection\"\n#pragma include \"project\"\n\nvoid main() {\n v_texCoord = a_Uv;\n\n vec2 pos = a_Uv * vec2(2.0) - vec2(1.0); // \u5C06\u539F\u672C 0 -> 1 \u7684 uv \u8F6C\u6362\u4E3A -1 -> 1 \u7684\u6807\u51C6\u5750\u6807\u7A7A\u95F4\uFF08NDC\uFF09\n\n vec4 p1 = vec4(pos, 0.0, 1.0); // x/y \u5E73\u9762\u4E0A\u7684\u70B9\uFF08z == 0\uFF09\u53EF\u4EE5\u8BA4\u4E3A\u662F\u4E09\u7EF4\u4E0A\u7684\u70B9\u88AB\u6295\u5F71\u5230\u5E73\u9762\u540E\u7684\u70B9\n vec4 p2 = vec4(pos, 1.0, 1.0); // \u5E73\u884C\u4E8Ex/y\u5E73\u9762\u3001z==1 \u7684\u5E73\u9762\u4E0A\u7684\u70B9\n\n vec4 inverseP1 = u_InverseViewProjectionMatrix * p1; // \u6839\u636E\u89C6\u56FE\u6295\u5F71\u77E9\u9635\u7684\u9006\u77E9\u9635\u5E73\u9762\u4E0A\u7684\u53CD\u7B97\u51FA\u4E09\u7EF4\u7A7A\u95F4\u4E2D\u7684\u70B9\uFF08p1\u5E73\u9762\u4E0A\u7684\u70B9\uFF09\n vec4 inverseP2 = u_InverseViewProjectionMatrix * p2;\n\n inverseP1 = inverseP1 / inverseP1.w; // \u5F52\u4E00\u5316\u64CD\u4F5C\uFF08\u5F52\u4E00\u5316\u540E\u4E3A\u4E16\u754C\u5750\u6807\uFF09\n inverseP2 = inverseP2 / inverseP2.w;\n\n float zPos = (0.0 - inverseP1.z) / (inverseP2.z - inverseP1.z); // ??\n vec4 position = inverseP1 + zPos * (inverseP2 - inverseP1);\n\n vec4 b = vec4(0.5, 0.0, 1.0, 0.5);\n float fh;\n\n v_intensity = texture(SAMPLER_2D(u_texture), v_texCoord).r;\n fh = toBezier(v_intensity, b).y;\n gl_Position = u_ViewProjectionMatrixUncentered * vec4(position.xy, fh * project_pixel(50.0), 1.0);\n\n}\n"; // 绘制平面热力的 shader
22
21
  /* babel-plugin-inline-import '../shaders/heatmap/heatmap_frag.glsl' */
23
22
  const heatmap_frag = "uniform sampler2D u_texture; // \u70ED\u529B\u5F3A\u5EA6\u56FE\nuniform sampler2D u_colorTexture; // \u6839\u636E\u5F3A\u5EA6\u5206\u5E03\u7684\u8272\u5E26\n\nlayout(std140) uniform commonUniforms {\n float u_opacity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n float u_common_uniforms_padding3;\n};\nin vec2 v_texCoord;\nout vec4 outputColor;\n\n#pragma include \"scene_uniforms\"\n\nfloat getBlurIndusty() {\n float vW = 2.0/ u_ViewportSize.x;\n float vH = 2.0/ u_ViewportSize.y;\n vec2 vUv = v_texCoord;\n float i11 = texture(SAMPLER_2D(u_texture), vec2( vUv.x - 1.0 * vW, vUv.y + 1.0 * vH) ).r;\n float i12 = texture(SAMPLER_2D(u_texture), vec2( vUv.x - 0.0 * vW, vUv.y + 1.0 * vH) ).r;\n float i13 = texture(SAMPLER_2D(u_texture), vec2( vUv.x + 1.0 * vW, vUv.y + 1.0 * vH) ).r;\n\n float i21 = texture(SAMPLER_2D(u_texture), vec2( vUv.x - 1.0 * vW, vUv.y) ).r;\n float i22 = texture(SAMPLER_2D(u_texture), vec2( vUv.x , vUv.y) ).r;\n float i23 = texture(SAMPLER_2D(u_texture), vec2( vUv.x + 1.0 * vW, vUv.y) ).r;\n\n float i31 = texture(SAMPLER_2D(u_texture), vec2( vUv.x - 1.0 * vW, vUv.y-1.0*vH) ).r;\n float i32 = texture(SAMPLER_2D(u_texture), vec2( vUv.x - 0.0 * vW, vUv.y-1.0*vH) ).r;\n float i33 = texture(SAMPLER_2D(u_texture), vec2( vUv.x + 1.0 * vW, vUv.y-1.0*vH) ).r;\n\n return(\n i11 + \n i12 + \n i13 + \n i21 + \n i21 + \n i22 + \n i23 + \n i31 + \n i32 + \n i33\n )/9.0;\n}\n\n\nvoid main(){\n // float intensity = texture(u_texture, v_texCoord).r;\n float intensity = getBlurIndusty();\n vec4 color = texture(SAMPLER_2D(u_colorTexture), vec2(intensity, 0.0));\n outputColor = color;\n outputColor.a = color.a * smoothstep(0.,0.1,intensity) * u_opacity;\n}\n";
24
23
  /* babel-plugin-inline-import '../shaders/heatmap/heatmap_vert.glsl' */
25
- const heatmap_vert = "\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 14) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n float u_opacity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n float u_common_uniforms_padding3;\n};\n\n#pragma include \"scene_uniforms\"\n\nout vec2 v_texCoord;\nvoid main() {\n v_texCoord = a_Uv;\n #ifdef VIEWPORT_ORIGIN_TL\n v_texCoord.y = 1.0 - v_texCoord.y;\n #endif\n\n gl_Position = vec4(a_Position.xy, 0, 1.);\n}\n";
24
+ const heatmap_vert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 10) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n float u_opacity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n float u_common_uniforms_padding3;\n};\n\n#pragma include \"scene_uniforms\"\n\nout vec2 v_texCoord;\nvoid main() {\n v_texCoord = a_Uv;\n #ifdef VIEWPORT_ORIGIN_TL\n v_texCoord.y = 1.0 - v_texCoord.y;\n #endif\n\n gl_Position = vec4(a_Position.xy, 0, 1.0);\n}\n";
26
25
  /* babel-plugin-inline-import '../shaders/heatmap/heatmap_framebuffer_frag.glsl' */
27
26
  const heatmap_framebuffer_frag = "layout(std140) uniform commonUniforms {\n float u_radius;\n float u_intensity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n};\n\nin vec2 v_extrude;\nin float v_weight;\nout vec4 outputColor;\n#define GAUSS_COEF 0.3989422804014327\n\nvoid main(){\n float d = -0.5 * 3.0 * 3.0 * dot(v_extrude, v_extrude);\n float val = v_weight * u_intensity * GAUSS_COEF * exp(d);\n outputColor = vec4(val, 1., 1., 1.);\n}\n";
28
27
  /* babel-plugin-inline-import '../shaders/heatmap/heatmap_framebuffer_vert.glsl' */
29
- const heatmap_framebuffer_vert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 9) in float a_Size;\nlayout(location = 10) in vec2 a_Dir;\n\n\nlayout(std140) uniform commonUniforms {\n float u_radius;\n float u_intensity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n};\n\nout vec2 v_extrude;\nout float v_weight;\n\n#define GAUSS_COEF 0.3989422804014327\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main(){\n vec3 picking_color_placeholder = u_PickingColor;\n\n v_weight = a_Size;\n float ZERO = 1.0 / 255.0 / 16.0;\n float extrude_x = a_Dir.x * 2.0 -1.0;\n float extrude_y = a_Dir.y * 2.0 -1.0;\n vec2 extrude_dir = normalize(vec2(extrude_x,extrude_y));\n float S = sqrt(-2.0 * log(ZERO / a_Size / u_intensity / GAUSS_COEF)) / 2.5;\n v_extrude = extrude_dir * S;\n\n vec2 offset = project_pixel(v_extrude * u_radius);\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, 0.0, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n }\n}\n";
28
+ const heatmap_framebuffer_vert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_SIZE) in float a_Size;\nlayout(location = ATTRIBUTE_LOCATION_DIR) in vec2 a_Dir;\n\nlayout(std140) uniform commonUniforms {\n float u_radius;\n float u_intensity;\n float u_common_uniforms_padding1;\n float u_common_uniforms_padding2;\n};\n\nout vec2 v_extrude;\nout float v_weight;\n\n#define GAUSS_COEF (0.3989422804014327)\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main() {\n vec3 picking_color_placeholder = u_PickingColor;\n\n v_weight = a_Size;\n float ZERO = 1.0 / 255.0 / 16.0;\n float extrude_x = a_Dir.x * 2.0 - 1.0;\n float extrude_y = a_Dir.y * 2.0 - 1.0;\n vec2 extrude_dir = normalize(vec2(extrude_x, extrude_y));\n float S = sqrt(-2.0 * log(ZERO / a_Size / u_intensity / GAUSS_COEF)) / 2.5;\n v_extrude = extrude_dir * S;\n\n vec2 offset = project_pixel(v_extrude * u_radius);\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n}\n";
30
29
  const {
31
30
  isEqual
32
31
  } = _l7Utils.lodashUtil;
@@ -44,6 +43,14 @@ class HeatMapModel extends _BaseModel.default {
44
43
  (0, _defineProperty2.default)(this, "colorModelUniformBuffer", []);
45
44
  (0, _defineProperty2.default)(this, "heat3DModelUniformBuffer", []);
46
45
  }
46
+ get attributeLocation() {
47
+ return Object.assign(super.attributeLocation, {
48
+ MAX: super.attributeLocation.MAX,
49
+ SIZE: 9,
50
+ UV: 10,
51
+ DIR: 11
52
+ });
53
+ }
47
54
  prerender() {
48
55
  const {
49
56
  clear,
@@ -127,7 +134,7 @@ class HeatMapModel extends _BaseModel.default {
127
134
  type: _l7Core.AttributeType.Attribute,
128
135
  descriptor: {
129
136
  name: 'a_Dir',
130
- shaderLocation: 10,
137
+ shaderLocation: this.attributeLocation.DIR,
131
138
  buffer: {
132
139
  usage: _l7Core.gl.DYNAMIC_DRAW,
133
140
  data: [],
@@ -144,7 +151,7 @@ class HeatMapModel extends _BaseModel.default {
144
151
  type: _l7Core.AttributeType.Attribute,
145
152
  descriptor: {
146
153
  name: 'a_Size',
147
- shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
154
+ shaderLocation: this.attributeLocation.SIZE,
148
155
  buffer: {
149
156
  // give the WebGL driver a hint that this buffer may change
150
157
  usage: _l7Core.gl.DYNAMIC_DRAW,
@@ -161,6 +168,10 @@ class HeatMapModel extends _BaseModel.default {
161
168
  }
162
169
  });
163
170
  }
171
+
172
+ /**
173
+ * 热力图密度图
174
+ */
164
175
  buildHeatMapIntensity() {
165
176
  var _this3 = this;
166
177
  return (0, _asyncToGenerator2.default)(function* () {
@@ -176,12 +187,13 @@ class HeatMapModel extends _BaseModel.default {
176
187
  vertexShader: heatmap_framebuffer_vert,
177
188
  fragmentShader: heatmap_framebuffer_frag,
178
189
  triangulation: _triangulation.HeatmapTriangulation,
190
+ defines: _this3.getDefines(),
179
191
  depth: {
180
192
  enable: false
181
193
  },
182
194
  cull: {
183
195
  enable: true,
184
- face: (0, _l7Utils.getCullFace)(_this3.mapService.version)
196
+ face: _l7Core.gl.FRONT
185
197
  }
186
198
  });
187
199
  return model;
@@ -215,7 +227,7 @@ class HeatMapModel extends _BaseModel.default {
215
227
  uniformBuffers: [...this.colorModelUniformBuffer, ...this.rendererService.uniformBuffers],
216
228
  attributes: {
217
229
  a_Position: createAttribute({
218
- shaderLocation: _CommonStyleAttribute.ShaderLocation.POSITION,
230
+ shaderLocation: this.attributeLocation.POSITION,
219
231
  buffer: createBuffer({
220
232
  data: [-1, 1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0],
221
233
  type: _l7Core.gl.FLOAT
@@ -223,7 +235,7 @@ class HeatMapModel extends _BaseModel.default {
223
235
  size: 3
224
236
  }),
225
237
  a_Uv: createAttribute({
226
- shaderLocation: _CommonStyleAttribute.ShaderLocation.UV,
238
+ shaderLocation: this.attributeLocation.UV,
227
239
  buffer: createBuffer({
228
240
  data: [0, 1, 1, 1, 0, 0, 1, 0],
229
241
  type: _l7Core.gl.FLOAT
@@ -242,6 +254,80 @@ class HeatMapModel extends _BaseModel.default {
242
254
  })
243
255
  });
244
256
  }
257
+ build3dHeatMap() {
258
+ const {
259
+ getViewportSize
260
+ } = this.rendererService;
261
+ const {
262
+ width,
263
+ height
264
+ } = getViewportSize();
265
+ const triangulation = (0, _triangulation2.heatMap3DTriangulation)(width / 4.0, height / 4.0);
266
+ this.shaderModuleService.registerModule('heatmap3dColor', {
267
+ vs: heatmap_3d_vert,
268
+ fs: heatmap_3d_frag
269
+ });
270
+ this.heat3DModelUniformBuffer = [this.rendererService.createBuffer({
271
+ // opacity
272
+ data: new Float32Array(16 * 2 + 4).fill(0),
273
+ // 长度需要大于等于 4
274
+ isUBO: true
275
+ })];
276
+ const {
277
+ vs,
278
+ fs,
279
+ uniforms
280
+ } = this.shaderModuleService.getModule('heatmap3dColor');
281
+ const {
282
+ createAttribute,
283
+ createElements,
284
+ createBuffer,
285
+ createModel
286
+ } = this.rendererService;
287
+ return createModel({
288
+ vs,
289
+ fs,
290
+ attributes: {
291
+ a_Position: createAttribute({
292
+ shaderLocation: this.attributeLocation.POSITION,
293
+ buffer: createBuffer({
294
+ data: triangulation.vertices,
295
+ type: _l7Core.gl.FLOAT
296
+ }),
297
+ size: 3
298
+ }),
299
+ a_Uv: createAttribute({
300
+ shaderLocation: this.attributeLocation.UV,
301
+ buffer: createBuffer({
302
+ data: triangulation.uvs,
303
+ type: _l7Core.gl.FLOAT
304
+ }),
305
+ size: 2
306
+ })
307
+ },
308
+ primitive: _l7Core.gl.TRIANGLES,
309
+ uniformBuffers: [...this.heat3DModelUniformBuffer, ...this.rendererService.uniformBuffers],
310
+ uniforms: (0, _objectSpread2.default)({}, uniforms),
311
+ depth: {
312
+ enable: true
313
+ },
314
+ blend: {
315
+ enable: true,
316
+ func: {
317
+ srcRGB: _l7Core.gl.SRC_ALPHA,
318
+ srcAlpha: 1,
319
+ dstRGB: _l7Core.gl.ONE_MINUS_SRC_ALPHA,
320
+ dstAlpha: 1
321
+ }
322
+ },
323
+ elements: createElements({
324
+ data: triangulation.indices,
325
+ type: _l7Core.gl.UNSIGNED_INT,
326
+ count: triangulation.indices.length
327
+ })
328
+ });
329
+ }
330
+
245
331
  // 绘制密度图
246
332
  drawIntensityMode() {
247
333
  var _this$intensityModel;
@@ -341,79 +427,6 @@ class HeatMapModel extends _BaseModel.default {
341
427
  stencil: this.getStencil(options)
342
428
  });
343
429
  }
344
- build3dHeatMap() {
345
- const {
346
- getViewportSize
347
- } = this.rendererService;
348
- const {
349
- width,
350
- height
351
- } = getViewportSize();
352
- const triangulation = (0, _triangulation2.heatMap3DTriangulation)(width / 4.0, height / 4.0);
353
- this.shaderModuleService.registerModule('heatmap3dColor', {
354
- vs: heatmap_3d_vert,
355
- fs: heatmap_3d_frag
356
- });
357
- this.heat3DModelUniformBuffer = [this.rendererService.createBuffer({
358
- // opacity
359
- data: new Float32Array(16 * 2 + 4).fill(0),
360
- // 长度需要大于等于 4
361
- isUBO: true
362
- })];
363
- const {
364
- vs,
365
- fs,
366
- uniforms
367
- } = this.shaderModuleService.getModule('heatmap3dColor');
368
- const {
369
- createAttribute,
370
- createElements,
371
- createBuffer,
372
- createModel
373
- } = this.rendererService;
374
- return createModel({
375
- vs,
376
- fs,
377
- attributes: {
378
- a_Position: createAttribute({
379
- shaderLocation: _CommonStyleAttribute.ShaderLocation.POSITION,
380
- buffer: createBuffer({
381
- data: triangulation.vertices,
382
- type: _l7Core.gl.FLOAT
383
- }),
384
- size: 3
385
- }),
386
- a_Uv: createAttribute({
387
- shaderLocation: _CommonStyleAttribute.ShaderLocation.UV,
388
- buffer: createBuffer({
389
- data: triangulation.uvs,
390
- type: _l7Core.gl.FLOAT
391
- }),
392
- size: 2
393
- })
394
- },
395
- primitive: _l7Core.gl.TRIANGLES,
396
- uniformBuffers: [...this.heat3DModelUniformBuffer, ...this.rendererService.uniformBuffers],
397
- uniforms: (0, _objectSpread2.default)({}, uniforms),
398
- depth: {
399
- enable: true
400
- },
401
- blend: {
402
- enable: true,
403
- func: {
404
- srcRGB: _l7Core.gl.SRC_ALPHA,
405
- srcAlpha: 1,
406
- dstRGB: _l7Core.gl.ONE_MINUS_SRC_ALPHA,
407
- dstAlpha: 1
408
- }
409
- },
410
- elements: createElements({
411
- data: triangulation.indices,
412
- type: _l7Core.gl.UNSIGNED_INT,
413
- count: triangulation.indices.length
414
- })
415
- });
416
- }
417
430
  updateColorTexture() {
418
431
  const {
419
432
  createTexture2D
@@ -1,6 +1,20 @@
1
1
  import type { IModel, IModelUniform } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class HexagonModel extends BaseModel {
4
+ protected get attributeLocation(): {
5
+ readonly POSITION: 0;
6
+ readonly POSITION_64LOW: 1;
7
+ readonly COLOR: 2;
8
+ readonly PICKING_COLOR: 3;
9
+ readonly STROKE: 4;
10
+ readonly OPACITY: 5;
11
+ readonly OFFSETS: 6;
12
+ readonly ROTATION: 7;
13
+ readonly MAX: 8;
14
+ } & Record<string, number> & {
15
+ MAX: 8;
16
+ POS: number;
17
+ };
4
18
  getUninforms(): IModelUniform;
5
19
  protected getCommonUniformsInfo(): {
6
20
  uniformsArray: number[];