@antv/l7-layers 2.21.8 → 2.21.9-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 (279) 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.js +9 -8
  6. package/es/core/BaseModel.d.ts +15 -2
  7. package/es/core/BaseModel.js +94 -62
  8. package/es/core/CommonStyleAttribute.d.ts +14 -18
  9. package/es/core/CommonStyleAttribute.js +23 -67
  10. package/es/core/triangulation.js +13 -39
  11. package/es/earth/models/atmosphere.d.ts +15 -0
  12. package/es/earth/models/atmosphere.js +30 -24
  13. package/es/earth/models/base.d.ts +15 -0
  14. package/es/earth/models/base.js +30 -24
  15. package/es/earth/models/bloomsphere.d.ts +15 -0
  16. package/es/earth/models/bloomsphere.js +30 -24
  17. package/es/earth/shaders/atmosphere/atmosphere_vert.glsl +7 -5
  18. package/es/earth/shaders/base/base_vert.glsl +3 -3
  19. package/es/earth/shaders/bloomshpere/bloomsphere_vert.glsl +5 -4
  20. package/es/geometry/models/billboard.d.ts +15 -0
  21. package/es/geometry/models/billboard.js +14 -8
  22. package/es/geometry/models/plane.d.ts +14 -0
  23. package/es/geometry/models/plane.js +10 -10
  24. package/es/geometry/models/sprite.js +3 -9
  25. package/es/geometry/shaders/billboard_vert.glsl +28 -25
  26. package/es/geometry/shaders/plane_vert.glsl +6 -6
  27. package/es/geometry/shaders/sprite_vert.glsl +7 -9
  28. package/es/heatmap/models/grid.d.ts +14 -0
  29. package/es/heatmap/models/grid.js +10 -3
  30. package/es/heatmap/models/grid3d.d.ts +16 -0
  31. package/es/heatmap/models/grid3d.js +14 -6
  32. package/es/heatmap/models/heatmap.d.ts +20 -1
  33. package/es/heatmap/models/heatmap.js +96 -83
  34. package/es/heatmap/models/hexagon.d.ts +14 -0
  35. package/es/heatmap/models/hexagon.js +9 -3
  36. package/es/heatmap/shaders/grid/grid_vert.glsl +30 -42
  37. package/es/heatmap/shaders/grid3d/grid_3d_vert.glsl +14 -26
  38. package/es/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +19 -16
  39. package/es/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +16 -22
  40. package/es/heatmap/shaders/heatmap/heatmap_vert.glsl +3 -4
  41. package/es/heatmap/shaders/hexagon/hexagon_vert.glsl +13 -23
  42. package/es/image/models/image.d.ts +14 -0
  43. package/es/image/models/image.js +11 -3
  44. package/es/image/shaders/image_vert.glsl +7 -6
  45. package/es/line/models/arc.d.ts +18 -0
  46. package/es/line/models/arc.js +57 -8
  47. package/es/line/models/arc_3d.d.ts +18 -0
  48. package/es/line/models/arc_3d.js +55 -7
  49. package/es/line/models/flow.d.ts +17 -0
  50. package/es/line/models/flow.js +35 -7
  51. package/es/line/models/great_circle.d.ts +17 -0
  52. package/es/line/models/great_circle.js +34 -6
  53. package/es/line/models/line.d.ts +17 -0
  54. package/es/line/models/line.js +17 -8
  55. package/es/line/models/simple_line.d.ts +14 -0
  56. package/es/line/models/simple_line.js +12 -47
  57. package/es/line/models/wall.d.ts +17 -0
  58. package/es/line/models/wall.js +22 -48
  59. package/es/line/shaders/arc/line_arc_vert.glsl +42 -48
  60. package/es/line/shaders/arc3d/line_arc_3d_vert.glsl +15 -20
  61. package/es/line/shaders/flow/flow_line_vert.glsl +30 -48
  62. package/es/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +56 -72
  63. package/es/line/shaders/line/line_vert.glsl +31 -48
  64. package/es/line/shaders/simple/simpleline_vert.glsl +18 -23
  65. package/es/line/shaders/wall/wall_vert.glsl +36 -45
  66. package/es/mask/models/fill.js +2 -1
  67. package/es/mask/shaders/mask_vert.glsl +2 -7
  68. package/es/plugins/DataMappingPlugin.d.ts +0 -1
  69. package/es/plugins/DataMappingPlugin.js +1 -24
  70. package/es/plugins/PixelPickingPlugin.js +2 -2
  71. package/es/plugins/RegisterStyleAttributePlugin.d.ts +0 -1
  72. package/es/plugins/RegisterStyleAttributePlugin.js +3 -25
  73. package/es/plugins/ShaderUniformPlugin.d.ts +0 -5
  74. package/es/plugins/ShaderUniformPlugin.js +2 -34
  75. package/es/point/models/billboard_point.d.ts +14 -0
  76. package/es/point/models/billboard_point.js +11 -3
  77. package/es/point/models/earthExtrude.d.ts +16 -0
  78. package/es/point/models/earthExtrude.js +15 -8
  79. package/es/point/models/earthFill.d.ts +16 -0
  80. package/es/point/models/earthFill.js +13 -5
  81. package/es/point/models/extrude.d.ts +16 -0
  82. package/es/point/models/extrude.js +19 -12
  83. package/es/point/models/fill.d.ts +16 -0
  84. package/es/point/models/fill.js +16 -5
  85. package/es/point/models/fillImage.d.ts +16 -0
  86. package/es/point/models/fillImage.js +16 -16
  87. package/es/point/models/image.d.ts +15 -0
  88. package/es/point/models/image.js +14 -4
  89. package/es/point/models/normal.d.ts +14 -0
  90. package/es/point/models/normal.js +11 -3
  91. package/es/point/models/radar.d.ts +15 -0
  92. package/es/point/models/radar.js +13 -4
  93. package/es/point/models/text.d.ts +16 -0
  94. package/es/point/models/text.js +18 -11
  95. package/es/point/shaders/billboard/billboard_point_vert.glsl +10 -13
  96. package/es/point/shaders/earthExtrude/earthExtrude_vert.glsl +15 -25
  97. package/es/point/shaders/earthFill/earthFill_vert.glsl +6 -6
  98. package/es/point/shaders/extrude/extrude_vert.glsl +35 -39
  99. package/es/point/shaders/fill/fill_vert.glsl +12 -14
  100. package/es/point/shaders/fillImage/fillImage_vert.glsl +16 -28
  101. package/es/point/shaders/image/image_vert.glsl +15 -12
  102. package/es/point/shaders/normal/normal_vert.glsl +7 -10
  103. package/es/point/shaders/radar/radar_vert.glsl +11 -11
  104. package/es/point/shaders/text/text_vert.glsl +10 -9
  105. package/es/polygon/models/extrude.d.ts +16 -0
  106. package/es/polygon/models/extrude.js +26 -26
  107. package/es/polygon/models/extrusion.d.ts +16 -0
  108. package/es/polygon/models/extrusion.js +34 -4
  109. package/es/polygon/models/fill.d.ts +14 -0
  110. package/es/polygon/models/fill.js +12 -4
  111. package/es/polygon/models/ocean.d.ts +14 -0
  112. package/es/polygon/models/ocean.js +11 -6
  113. package/es/polygon/models/water.d.ts +14 -0
  114. package/es/polygon/models/water.js +11 -6
  115. package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +17 -15
  116. package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +22 -20
  117. package/es/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +17 -17
  118. package/es/polygon/shaders/extrusion/polygon_extrusion_vert.glsl +8 -8
  119. package/es/polygon/shaders/fill/fill_linear_vert.glsl +7 -6
  120. package/es/polygon/shaders/fill/fill_vert.glsl +10 -12
  121. package/es/polygon/shaders/ocean/ocean_vert.glsl +3 -4
  122. package/es/polygon/shaders/water/polygon_water_vert.glsl +5 -5
  123. package/es/raster/index.d.ts +1 -1
  124. package/es/raster/index.js +1 -1
  125. package/es/raster/models/raster.d.ts +14 -0
  126. package/es/raster/models/raster.js +12 -3
  127. package/es/raster/models/rasterRgb.d.ts +14 -0
  128. package/es/raster/models/rasterRgb.js +12 -3
  129. package/es/raster/models/rasterTerrainRgb.d.ts +14 -0
  130. package/es/raster/models/rasterTerrainRgb.js +11 -3
  131. package/es/raster/shaders/raster/raster_2d_vert.glsl +6 -6
  132. package/es/raster/shaders/rgb/raster_rgb_vert.glsl +11 -11
  133. package/es/raster/shaders/terrain/terrain_rgb_vert.glsl +11 -11
  134. package/es/tile/core/BaseLayer.js +0 -16
  135. package/es/utils/extrude_polyline.d.ts +0 -15
  136. package/es/utils/extrude_polyline.js +0 -217
  137. package/es/wind/models/wind.d.ts +14 -0
  138. package/es/wind/models/wind.js +9 -1
  139. package/es/wind/shaders/wind_vert.glsl +6 -5
  140. package/lib/citybuliding/models/build.d.ts +16 -0
  141. package/lib/citybuliding/models/build.js +18 -20
  142. package/lib/citybuliding/shaders/build_frag.glsl +6 -6
  143. package/lib/citybuliding/shaders/build_vert.glsl +8 -14
  144. package/lib/core/BaseLayer.js +9 -8
  145. package/lib/core/BaseModel.d.ts +15 -2
  146. package/lib/core/BaseModel.js +92 -60
  147. package/lib/core/CommonStyleAttribute.d.ts +14 -18
  148. package/lib/core/CommonStyleAttribute.js +23 -68
  149. package/lib/core/triangulation.js +13 -39
  150. package/lib/earth/models/atmosphere.d.ts +15 -0
  151. package/lib/earth/models/atmosphere.js +30 -24
  152. package/lib/earth/models/base.d.ts +15 -0
  153. package/lib/earth/models/base.js +30 -24
  154. package/lib/earth/models/bloomsphere.d.ts +15 -0
  155. package/lib/earth/models/bloomsphere.js +30 -24
  156. package/lib/earth/shaders/atmosphere/atmosphere_vert.glsl +7 -5
  157. package/lib/earth/shaders/base/base_vert.glsl +3 -3
  158. package/lib/earth/shaders/bloomshpere/bloomsphere_vert.glsl +5 -4
  159. package/lib/geometry/models/billboard.d.ts +15 -0
  160. package/lib/geometry/models/billboard.js +14 -8
  161. package/lib/geometry/models/plane.d.ts +14 -0
  162. package/lib/geometry/models/plane.js +10 -10
  163. package/lib/geometry/models/sprite.js +3 -9
  164. package/lib/geometry/shaders/billboard_vert.glsl +28 -25
  165. package/lib/geometry/shaders/plane_vert.glsl +6 -6
  166. package/lib/geometry/shaders/sprite_vert.glsl +7 -9
  167. package/lib/heatmap/models/grid.d.ts +14 -0
  168. package/lib/heatmap/models/grid.js +10 -3
  169. package/lib/heatmap/models/grid3d.d.ts +16 -0
  170. package/lib/heatmap/models/grid3d.js +14 -6
  171. package/lib/heatmap/models/heatmap.d.ts +20 -1
  172. package/lib/heatmap/models/heatmap.js +95 -82
  173. package/lib/heatmap/models/hexagon.d.ts +14 -0
  174. package/lib/heatmap/models/hexagon.js +9 -3
  175. package/lib/heatmap/shaders/grid/grid_vert.glsl +30 -42
  176. package/lib/heatmap/shaders/grid3d/grid_3d_vert.glsl +14 -26
  177. package/lib/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +19 -16
  178. package/lib/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +16 -22
  179. package/lib/heatmap/shaders/heatmap/heatmap_vert.glsl +3 -4
  180. package/lib/heatmap/shaders/hexagon/hexagon_vert.glsl +13 -23
  181. package/lib/image/models/image.d.ts +14 -0
  182. package/lib/image/models/image.js +11 -3
  183. package/lib/image/shaders/image_vert.glsl +7 -6
  184. package/lib/line/models/arc.d.ts +18 -0
  185. package/lib/line/models/arc.js +56 -7
  186. package/lib/line/models/arc_3d.d.ts +18 -0
  187. package/lib/line/models/arc_3d.js +55 -7
  188. package/lib/line/models/flow.d.ts +17 -0
  189. package/lib/line/models/flow.js +35 -7
  190. package/lib/line/models/great_circle.d.ts +17 -0
  191. package/lib/line/models/great_circle.js +33 -5
  192. package/lib/line/models/line.d.ts +17 -0
  193. package/lib/line/models/line.js +17 -8
  194. package/lib/line/models/simple_line.d.ts +14 -0
  195. package/lib/line/models/simple_line.js +12 -47
  196. package/lib/line/models/wall.d.ts +17 -0
  197. package/lib/line/models/wall.js +22 -48
  198. package/lib/line/shaders/arc/line_arc_vert.glsl +42 -48
  199. package/lib/line/shaders/arc3d/line_arc_3d_vert.glsl +15 -20
  200. package/lib/line/shaders/flow/flow_line_vert.glsl +30 -48
  201. package/lib/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +56 -72
  202. package/lib/line/shaders/line/line_vert.glsl +31 -48
  203. package/lib/line/shaders/simple/simpleline_vert.glsl +18 -23
  204. package/lib/line/shaders/wall/wall_vert.glsl +36 -45
  205. package/lib/mask/models/fill.js +2 -1
  206. package/lib/mask/shaders/mask_vert.glsl +2 -7
  207. package/lib/plugins/DataMappingPlugin.d.ts +0 -1
  208. package/lib/plugins/DataMappingPlugin.js +0 -23
  209. package/lib/plugins/PixelPickingPlugin.js +1 -1
  210. package/lib/plugins/RegisterStyleAttributePlugin.d.ts +0 -1
  211. package/lib/plugins/RegisterStyleAttributePlugin.js +2 -24
  212. package/lib/plugins/ShaderUniformPlugin.d.ts +0 -5
  213. package/lib/plugins/ShaderUniformPlugin.js +2 -34
  214. package/lib/point/models/billboard_point.d.ts +14 -0
  215. package/lib/point/models/billboard_point.js +11 -3
  216. package/lib/point/models/earthExtrude.d.ts +16 -0
  217. package/lib/point/models/earthExtrude.js +14 -7
  218. package/lib/point/models/earthFill.d.ts +16 -0
  219. package/lib/point/models/earthFill.js +13 -5
  220. package/lib/point/models/extrude.d.ts +16 -0
  221. package/lib/point/models/extrude.js +18 -11
  222. package/lib/point/models/fill.d.ts +16 -0
  223. package/lib/point/models/fill.js +16 -5
  224. package/lib/point/models/fillImage.d.ts +16 -0
  225. package/lib/point/models/fillImage.js +16 -16
  226. package/lib/point/models/image.d.ts +15 -0
  227. package/lib/point/models/image.js +14 -4
  228. package/lib/point/models/normal.d.ts +14 -0
  229. package/lib/point/models/normal.js +11 -3
  230. package/lib/point/models/radar.d.ts +15 -0
  231. package/lib/point/models/radar.js +13 -4
  232. package/lib/point/models/text.d.ts +16 -0
  233. package/lib/point/models/text.js +18 -11
  234. package/lib/point/shaders/billboard/billboard_point_vert.glsl +10 -13
  235. package/lib/point/shaders/earthExtrude/earthExtrude_vert.glsl +15 -25
  236. package/lib/point/shaders/earthFill/earthFill_vert.glsl +6 -6
  237. package/lib/point/shaders/extrude/extrude_vert.glsl +35 -39
  238. package/lib/point/shaders/fill/fill_vert.glsl +12 -14
  239. package/lib/point/shaders/fillImage/fillImage_vert.glsl +16 -28
  240. package/lib/point/shaders/image/image_vert.glsl +15 -12
  241. package/lib/point/shaders/normal/normal_vert.glsl +7 -10
  242. package/lib/point/shaders/radar/radar_vert.glsl +11 -11
  243. package/lib/point/shaders/text/text_vert.glsl +10 -9
  244. package/lib/polygon/models/extrude.d.ts +16 -0
  245. package/lib/polygon/models/extrude.js +25 -25
  246. package/lib/polygon/models/extrusion.d.ts +16 -0
  247. package/lib/polygon/models/extrusion.js +34 -4
  248. package/lib/polygon/models/fill.d.ts +14 -0
  249. package/lib/polygon/models/fill.js +12 -4
  250. package/lib/polygon/models/ocean.d.ts +14 -0
  251. package/lib/polygon/models/ocean.js +11 -6
  252. package/lib/polygon/models/water.d.ts +14 -0
  253. package/lib/polygon/models/water.js +11 -6
  254. package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +17 -15
  255. package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +22 -20
  256. package/lib/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +17 -17
  257. package/lib/polygon/shaders/extrusion/polygon_extrusion_vert.glsl +8 -8
  258. package/lib/polygon/shaders/fill/fill_linear_vert.glsl +7 -6
  259. package/lib/polygon/shaders/fill/fill_vert.glsl +10 -12
  260. package/lib/polygon/shaders/ocean/ocean_vert.glsl +3 -4
  261. package/lib/polygon/shaders/water/polygon_water_vert.glsl +5 -5
  262. package/lib/raster/index.d.ts +1 -1
  263. package/lib/raster/index.js +2 -2
  264. package/lib/raster/models/raster.d.ts +14 -0
  265. package/lib/raster/models/raster.js +12 -3
  266. package/lib/raster/models/rasterRgb.d.ts +14 -0
  267. package/lib/raster/models/rasterRgb.js +12 -3
  268. package/lib/raster/models/rasterTerrainRgb.d.ts +14 -0
  269. package/lib/raster/models/rasterTerrainRgb.js +11 -3
  270. package/lib/raster/shaders/raster/raster_2d_vert.glsl +6 -6
  271. package/lib/raster/shaders/rgb/raster_rgb_vert.glsl +11 -11
  272. package/lib/raster/shaders/terrain/terrain_rgb_vert.glsl +11 -11
  273. package/lib/tile/core/BaseLayer.js +0 -16
  274. package/lib/utils/extrude_polyline.d.ts +0 -15
  275. package/lib/utils/extrude_polyline.js +0 -217
  276. package/lib/wind/models/wind.d.ts +14 -0
  277. package/lib/wind/models/wind.js +9 -1
  278. package/lib/wind/shaders/wind_vert.glsl +6 -5
  279. package/package.json +6 -6
@@ -4,18 +4,23 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
4
  import { AttributeType, gl } from '@antv/l7-core';
5
5
  import { getDefaultDomain } from '@antv/l7-utils';
6
6
  import BaseModel from "../../core/BaseModel";
7
- import { ShaderLocation } from "../../core/CommonStyleAttribute";
8
7
  import { RasterImageTriangulation } from "../../core/triangulation";
9
8
  /* babel-plugin-inline-import '../shaders/raster/raster_2d_frag.glsl' */
10
9
  const rasterFrag = "layout(std140) uniform commonUniforms {\n vec2 u_domain;\n float u_opacity;\n float u_noDataValue;\n float u_clampLow;\n float u_clampHigh;\n};\n\nuniform sampler2D u_rasterTexture;\nuniform sampler2D u_colorTexture;\n\nin vec2 v_texCoord;\n\nbool isnan_emu(float x) { return (x > 0.0 || x < 0.0) ? x != x : x != 0.0; }\n\nout vec4 outputColor;\n\nvoid main() {\n // Can use any component here since u_rasterTexture is under luminance format.\n float value = texture(SAMPLER_2D(u_rasterTexture), vec2(v_texCoord.x, v_texCoord.y)).r;\n if (value == u_noDataValue || isnan_emu(value)) {\n discard;\n } else if ((u_clampLow < 0.5 && value < u_domain[0]) || (u_clampHigh < 0.5 && value > u_domain[1])) {\n discard;\n } else {\n float normalisedValue =(value - u_domain[0]) / (u_domain[1] - u_domain[0]);\n vec4 color = texture(SAMPLER_2D(u_colorTexture), vec2(normalisedValue, 0));\n \n outputColor = color;\n outputColor.a = outputColor.a * u_opacity ;\n if (outputColor.a < 0.01)\n discard;\n }\n}\n";
11
10
  /* babel-plugin-inline-import '../shaders/raster/raster_2d_vert.glsl' */
12
- const rasterVert = "\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 14) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_domain;\n float u_opacity;\n float u_noDataValue;\n float u_clampLow;\n float u_clampHigh;\n};\n\nout vec2 v_texCoord;\n\n#pragma include \"projection\"\n\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));\n}\n";
11
+ const rasterVert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_POSITION_64LOW) in vec2 a_Position64Low;\nlayout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_domain;\n float u_opacity;\n float u_noDataValue;\n float u_clampLow;\n float u_clampHigh;\n};\n\nout vec2 v_texCoord;\n\n#pragma include \"projection\"\n\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0), a_Position64Low);\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));\n}\n";
13
12
  export default class RasterModel extends BaseModel {
14
13
  constructor(...args) {
15
14
  super(...args);
16
15
  _defineProperty(this, "texture", void 0);
17
16
  _defineProperty(this, "colorTexture", void 0);
18
17
  }
18
+ get attributeLocation() {
19
+ return Object.assign(super.attributeLocation, {
20
+ MAX: super.attributeLocation.MAX,
21
+ UV: 9
22
+ });
23
+ }
19
24
  getUninforms() {
20
25
  const commoninfo = this.getCommonUniformsInfo();
21
26
  const attributeInfo = this.getUniformsBufferInfo(this.getStyleAttribute());
@@ -107,6 +112,7 @@ export default class RasterModel extends BaseModel {
107
112
  moduleName: 'rasterImageData',
108
113
  vertexShader: rasterVert,
109
114
  fragmentShader: rasterFrag,
115
+ defines: _this2.getDefines(),
110
116
  triangulation: RasterImageTriangulation,
111
117
  primitive: gl.TRIANGLES,
112
118
  depth: {
@@ -123,12 +129,15 @@ export default class RasterModel extends BaseModel {
123
129
  (_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 || _this$colorTexture.destroy();
124
130
  }
125
131
  registerBuiltinAttributes() {
132
+ // 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 22 层级以上出现数据偏移
133
+ this.registerPosition64LowAttribute();
134
+
126
135
  // point layer size;
127
136
  this.styleAttributeService.registerStyleAttribute({
128
137
  name: 'uv',
129
138
  type: AttributeType.Attribute,
130
139
  descriptor: {
131
- shaderLocation: ShaderLocation.UV,
140
+ shaderLocation: this.attributeLocation.UV,
132
141
  name: 'a_Uv',
133
142
  buffer: {
134
143
  // give the WebGL driver a hint that this buffer may change
@@ -1,6 +1,20 @@
1
1
  import type { IModel, ITexture2D } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class RasterModel 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
+ UV: number;
17
+ };
4
18
  protected texture: ITexture2D;
5
19
  protected dataOption: any;
6
20
  getUninforms(): {
@@ -6,18 +6,23 @@ const _excluded = ["data"],
6
6
  _excluded2 = ["rasterData"];
7
7
  import { AttributeType, gl } from '@antv/l7-core';
8
8
  import BaseModel from "../../core/BaseModel";
9
- import { ShaderLocation } from "../../core/CommonStyleAttribute";
10
9
  import { RasterImageTriangulation } from "../../core/triangulation";
11
10
  /* babel-plugin-inline-import '../shaders/rgb/raster_rgb_frag.glsl' */
12
11
  const rasterFrag = "uniform sampler2D u_texture;\nlayout(std140) uniform commonUniforms {\n vec2 u_rminmax;\n vec2 u_gminmax;\n vec2 u_bminmax;\n float u_opacity;\n float u_noDataValue;\n};\n\nin vec2 v_texCoord;\n\nout vec4 outputColor;\n\nvoid main() {\n\n vec3 rgb = texture(SAMPLER_2D(u_texture),vec2(v_texCoord.x,v_texCoord.y)).rgb;\n\n if(rgb == vec3(u_noDataValue)) {\n outputColor = vec4(0.0, 0, 0, 0.0);\n } else {\n outputColor = vec4(rgb.r / (u_rminmax.y -u_rminmax.x), rgb.g /(u_gminmax.y -u_gminmax.x), rgb.b/ (u_bminmax.y - u_bminmax.x), u_opacity);\n }\n\n if(outputColor.a < 0.01)\n discard;\n \n}";
13
12
  /* babel-plugin-inline-import '../shaders/rgb/raster_rgb_vert.glsl' */
14
- const rasterVert = "\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 14) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_rminmax;\n vec2 u_gminmax;\n vec2 u_bminmax;\n float u_opacity;\n float u_noDataValue;\n};\n\nout vec2 v_texCoord;\n\n#pragma include \"projection\"\n\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));\n}\n";
13
+ const rasterVert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_POSITION_64LOW) in vec2 a_Position64Low;\nlayout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n vec2 u_rminmax;\n vec2 u_gminmax;\n vec2 u_bminmax;\n float u_opacity;\n float u_noDataValue;\n};\n\nout vec2 v_texCoord;\n\n#pragma include \"projection\"\n\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0), a_Position64Low);\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));\n}\n";
15
14
  export default class RasterModel extends BaseModel {
16
15
  constructor(...args) {
17
16
  super(...args);
18
17
  _defineProperty(this, "texture", void 0);
19
18
  _defineProperty(this, "dataOption", {});
20
19
  }
20
+ get attributeLocation() {
21
+ return Object.assign(super.attributeLocation, {
22
+ MAX: super.attributeLocation.MAX,
23
+ UV: 9
24
+ });
25
+ }
21
26
  getUninforms() {
22
27
  const commoninfo = this.getCommonUniformsInfo();
23
28
  const attributeInfo = this.getUniformsBufferInfo(this.getStyleAttribute());
@@ -105,6 +110,7 @@ export default class RasterModel extends BaseModel {
105
110
  moduleName: 'rasterImageDataRGBA',
106
111
  vertexShader: rasterVert,
107
112
  fragmentShader: rasterFrag,
113
+ defines: _this2.getDefines(),
108
114
  triangulation: RasterImageTriangulation,
109
115
  primitive: gl.TRIANGLES,
110
116
  depth: {
@@ -126,13 +132,16 @@ export default class RasterModel extends BaseModel {
126
132
  (_this$texture = this.texture) === null || _this$texture === void 0 || _this$texture.destroy();
127
133
  }
128
134
  registerBuiltinAttributes() {
135
+ // 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 22 层级以上出现数据偏移
136
+ this.registerPosition64LowAttribute();
137
+
129
138
  // point layer size;
130
139
  this.styleAttributeService.registerStyleAttribute({
131
140
  name: 'uv',
132
141
  type: AttributeType.Attribute,
133
142
  descriptor: {
134
143
  name: 'a_Uv',
135
- shaderLocation: ShaderLocation.UV,
144
+ shaderLocation: this.attributeLocation.UV,
136
145
  buffer: {
137
146
  // give the WebGL driver a hint that this buffer may change
138
147
  usage: gl.DYNAMIC_DRAW,
@@ -1,6 +1,20 @@
1
1
  import type { IModel, ITexture2D } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class RasterTerrainRGB 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
+ UV: number;
17
+ };
4
18
  protected texture: ITexture2D;
5
19
  protected getCommonUniformsInfo(): {
6
20
  uniformsArray: number[];
@@ -3,17 +3,22 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import { AttributeType, gl } from '@antv/l7-core';
4
4
  import { getDefaultDomain } from '@antv/l7-utils';
5
5
  import BaseModel from "../../core/BaseModel";
6
- import { ShaderLocation } from "../../core/CommonStyleAttribute";
7
6
  import { RasterImageTriangulation } from "../../core/triangulation";
8
7
  /* babel-plugin-inline-import '../shaders/terrain/terrain_rgb_frag.glsl' */
9
8
  const Raster_terrainFrag = "uniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_unpack;\n vec2 u_domain;\n float u_opacity;\n float u_noDataValue;\n float u_clampLow;\n float u_clampHigh;\n};\n\nin vec2 v_texCoord;\nout vec4 outputColor;\n\n\nfloat getElevation(vec2 coord, float bias) {\n // Convert encoded elevation value to meters\n vec4 data = texture(SAMPLER_2D(u_texture), coord,bias) * 255.0;\n data.a = -1.0;\n return dot(data, u_unpack);\n}\n\nvec4 getColor(float value) {\n float normalisedValue =(value- u_domain[0]) / (u_domain[1] - u_domain[0]);\n vec2 coord = vec2(normalisedValue, 0);\n return texture(SAMPLER_2D(u_colorTexture), coord);\n}\n\nvoid main() {\n float value = getElevation(v_texCoord,0.0);\n if (value == u_noDataValue) {\n outputColor = vec4(0.0, 0, 0, 0.0);\n } else if ((u_clampLow < 0.5 && value < u_domain[0]) || (u_clampHigh < 0.5 && value > u_domain[1])) {\n outputColor = vec4(0.0, 0, 0, 0.0);\n } else {\n \n outputColor = getColor(value);\n outputColor.a = outputColor.a * u_opacity ;\n if(outputColor.a < 0.01)\n discard;\n }\n}\n";
10
9
  /* babel-plugin-inline-import '../shaders/terrain/terrain_rgb_vert.glsl' */
11
- const Raster_terrainVert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 14) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_unpack;\n vec2 u_domain;\n float u_opacity;\n float u_noDataValue;\n float u_clampLow;\n float u_clampHigh;\n};\nout vec2 v_texCoord;\n#pragma include \"projection\"\n\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));\n}\n";
10
+ const Raster_terrainVert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_unpack;\n vec2 u_domain;\n float u_opacity;\n float u_noDataValue;\n float u_clampLow;\n float u_clampHigh;\n};\nout vec2 v_texCoord;\n#pragma include \"projection\"\n\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));\n}\n";
12
11
  export default class RasterTerrainRGB extends BaseModel {
13
12
  constructor(...args) {
14
13
  super(...args);
15
14
  _defineProperty(this, "texture", void 0);
16
15
  }
16
+ get attributeLocation() {
17
+ return Object.assign(super.attributeLocation, {
18
+ MAX: super.attributeLocation.MAX,
19
+ UV: 9
20
+ });
21
+ }
17
22
  getCommonUniformsInfo() {
18
23
  const {
19
24
  opacity,
@@ -69,6 +74,7 @@ export default class RasterTerrainRGB extends BaseModel {
69
74
  moduleName: 'RasterTileDataImage',
70
75
  vertexShader: Raster_terrainVert,
71
76
  fragmentShader: Raster_terrainFrag,
77
+ defines: _this.getDefines(),
72
78
  triangulation: RasterImageTriangulation,
73
79
  primitive: gl.TRIANGLES,
74
80
  depth: {
@@ -89,12 +95,14 @@ export default class RasterTerrainRGB extends BaseModel {
89
95
  })();
90
96
  }
91
97
  registerBuiltinAttributes() {
98
+ // 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 22 层级以上出现数据偏移
99
+ this.registerPosition64LowAttribute();
92
100
  this.styleAttributeService.registerStyleAttribute({
93
101
  name: 'uv',
94
102
  type: AttributeType.Attribute,
95
103
  descriptor: {
96
104
  name: 'a_Uv',
97
- shaderLocation: ShaderLocation.UV,
105
+ shaderLocation: this.attributeLocation.UV,
98
106
  buffer: {
99
107
  usage: gl.DYNAMIC_DRAW,
100
108
  data: [],
@@ -1,6 +1,6 @@
1
-
2
- layout(location = 0) in vec3 a_Position;
3
- layout(location = 14) in vec2 a_Uv;
1
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
2
+ layout(location = ATTRIBUTE_LOCATION_POSITION_64LOW) in vec2 a_Position64Low;
3
+ layout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;
4
4
 
5
5
  layout(std140) uniform commonUniforms {
6
6
  vec2 u_domain;
@@ -15,7 +15,7 @@ out vec2 v_texCoord;
15
15
  #pragma include "projection"
16
16
 
17
17
  void main() {
18
- v_texCoord = a_Uv;
19
- vec4 project_pos = project_position(vec4(a_Position, 1.0));
20
- gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));
18
+ v_texCoord = a_Uv;
19
+ vec4 project_pos = project_position(vec4(a_Position, 1.0), a_Position64Low);
20
+ gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));
21
21
  }
@@ -1,13 +1,13 @@
1
-
2
- layout(location = 0) in vec3 a_Position;
3
- layout(location = 14) in vec2 a_Uv;
1
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
2
+ layout(location = ATTRIBUTE_LOCATION_POSITION_64LOW) in vec2 a_Position64Low;
3
+ layout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;
4
4
 
5
5
  layout(std140) uniform commonUniforms {
6
- vec2 u_rminmax;
7
- vec2 u_gminmax;
8
- vec2 u_bminmax;
9
- float u_opacity;
10
- float u_noDataValue;
6
+ vec2 u_rminmax;
7
+ vec2 u_gminmax;
8
+ vec2 u_bminmax;
9
+ float u_opacity;
10
+ float u_noDataValue;
11
11
  };
12
12
 
13
13
  out vec2 v_texCoord;
@@ -15,7 +15,7 @@ out vec2 v_texCoord;
15
15
  #pragma include "projection"
16
16
 
17
17
  void main() {
18
- v_texCoord = a_Uv;
19
- vec4 project_pos = project_position(vec4(a_Position, 1.0));
20
- gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));
18
+ v_texCoord = a_Uv;
19
+ vec4 project_pos = project_position(vec4(a_Position, 1.0), a_Position64Low);
20
+ gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));
21
21
  }
@@ -1,19 +1,19 @@
1
- layout(location = 0) in vec3 a_Position;
2
- layout(location = 14) in vec2 a_Uv;
1
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
2
+ layout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;
3
3
 
4
4
  layout(std140) uniform commonUniforms {
5
- vec4 u_unpack;
6
- vec2 u_domain;
7
- float u_opacity;
8
- float u_noDataValue;
9
- float u_clampLow;
10
- float u_clampHigh;
5
+ vec4 u_unpack;
6
+ vec2 u_domain;
7
+ float u_opacity;
8
+ float u_noDataValue;
9
+ float u_clampLow;
10
+ float u_clampHigh;
11
11
  };
12
12
  out vec2 v_texCoord;
13
13
  #pragma include "projection"
14
14
 
15
15
  void main() {
16
- v_texCoord = a_Uv;
17
- vec4 project_pos = project_position(vec4(a_Position, 1.0));
18
- gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));
16
+ v_texCoord = a_Uv;
17
+ vec4 project_pos = project_position(vec4(a_Position, 1.0));
18
+ gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));
19
19
  }
@@ -32,22 +32,6 @@ export default class BaseTileLayer {
32
32
  latLonBounds,
33
33
  zoom
34
34
  } = this.getCurrentView();
35
- if (this.mapService.version === 'GAODE1.x') {
36
- const {
37
- visible
38
- } = this.parent.getLayerConfig();
39
- if (zoom < 2 && visible) {
40
- this.parent.updateLayerConfig({
41
- visible: false
42
- });
43
- this.layerService.reRender();
44
- } else if (zoom >= 2 && !visible) {
45
- this.parent.updateLayerConfig({
46
- visible: true
47
- });
48
- this.layerService.reRender();
49
- }
50
- }
51
35
  if (this.lastViewStates && this.lastViewStates.zoom === zoom && this.lastViewStates.latLonBounds.toString() === latLonBounds.toString()) {
52
36
  return;
53
37
  }
@@ -39,20 +39,6 @@ export default class ExtrudePolyline {
39
39
  startIndex: number;
40
40
  indexes: number[];
41
41
  };
42
- simpleExtrude_gaode2(points: number[][], originPoints: number[][]): {
43
- positions: number[];
44
- indices: number[];
45
- normals: number[];
46
- startIndex: number;
47
- indexes: number[];
48
- };
49
- extrude_gaode2(points: number[][], originPoints: number[][]): {
50
- positions: number[];
51
- indices: number[];
52
- normals: number[];
53
- startIndex: number;
54
- indexes: number[];
55
- };
56
42
  extrude(points: number[][]): {
57
43
  positions: number[];
58
44
  indices: number[];
@@ -61,7 +47,6 @@ export default class ExtrudePolyline {
61
47
  indexes: number[];
62
48
  };
63
49
  private simpleSegment;
64
- private segment_gaode2;
65
50
  private segment;
66
51
  private extrusions;
67
52
  private lineSegmentDistance;
@@ -91,98 +91,6 @@ export default class ExtrudePolyline {
91
91
  complex.startIndex = complex.positions.length / 6;
92
92
  return complex;
93
93
  }
94
- simpleExtrude_gaode2(points, originPoints) {
95
- const complex = this.complex;
96
- if (points.length <= 1) {
97
- return complex;
98
- }
99
- this.lastFlip = -1;
100
- this.started = false;
101
- this.normal = null;
102
- this.totalDistance = 0;
103
- // 去除数组里重复的点
104
- // points = getArrayUnique(points);
105
- const total = points.length;
106
- let count = complex.startIndex;
107
- for (let i = 1; i < total; i++) {
108
- var _originPoints$, _originPoints$i$, _originPoints$2;
109
- const last = points[i - 1];
110
- last.push((_originPoints$ = originPoints[i - 1][2]) !== null && _originPoints$ !== void 0 ? _originPoints$ : 0);
111
- // @ts-ignore
112
- const originLast = originPoints[i - 1];
113
- const cur = points[i];
114
- cur.push((_originPoints$i$ = originPoints[i][2]) !== null && _originPoints$i$ !== void 0 ? _originPoints$i$ : 0);
115
- // @ts-ignore
116
- const originCur = originPoints[i];
117
- const next = i < points.length - 1 ? [...points[i + 1], (_originPoints$2 = originPoints[i + 1][2]) !== null && _originPoints$2 !== void 0 ? _originPoints$2 : 0] : null;
118
- const originNext = i < originPoints.length - 1 ? originPoints[i + 1] : null;
119
- const amt = this.simpleSegment(complex, count,
120
- // @ts-ignore
121
- last,
122
- // @ts-ignore
123
- cur,
124
- // @ts-ignore
125
- next,
126
- // @ts-ignore
127
- originLast, originCur,
128
- // @ts-ignore
129
- originNext);
130
- count += amt;
131
- }
132
- if (this.dash) {
133
- for (let i = 0; i < complex.positions.length / 6; i++) {
134
- complex.positions[i * 6 + 5] = this.totalDistance;
135
- }
136
- }
137
- complex.startIndex = complex.positions.length / 6;
138
- return complex;
139
- }
140
- extrude_gaode2(points, originPoints) {
141
- const complex = this.complex;
142
- if (points.length <= 1) {
143
- return complex;
144
- }
145
- this.lastFlip = -1;
146
- this.started = false;
147
- this.normal = null;
148
- this.totalDistance = 0;
149
- // 去除数组里重复的点
150
- // points = getArrayUnique(points);
151
- const total = points.length;
152
- let count = complex.startIndex;
153
- for (let i = 1; i < total; i++) {
154
- var _originPoints$3, _originPoints$i$2, _originPoints$4;
155
- const last = points[i - 1];
156
- last.push((_originPoints$3 = originPoints[i - 1][2]) !== null && _originPoints$3 !== void 0 ? _originPoints$3 : 0);
157
- // @ts-ignore
158
- const originLast = originPoints[i - 1];
159
- const cur = points[i];
160
- cur.push((_originPoints$i$2 = originPoints[i][2]) !== null && _originPoints$i$2 !== void 0 ? _originPoints$i$2 : 0);
161
- // @ts-ignore
162
- const originCur = originPoints[i];
163
- const next = i < points.length - 1 ? [...points[i + 1], (_originPoints$4 = originPoints[i + 1][2]) !== null && _originPoints$4 !== void 0 ? _originPoints$4 : 0] : null;
164
- const originNext = i < originPoints.length - 1 ? originPoints[i + 1] : null;
165
- const amt = this.segment_gaode2(complex, count,
166
- // @ts-ignore
167
- last,
168
- // @ts-ignore
169
- cur,
170
- // @ts-ignore
171
- next,
172
- // @ts-ignore
173
- originLast, originCur,
174
- // @ts-ignore
175
- originNext);
176
- count += amt;
177
- }
178
- if (this.dash) {
179
- for (let i = 0; i < complex.positions.length / 6; i++) {
180
- complex.positions[i * 6 + 5] = this.totalDistance;
181
- }
182
- }
183
- complex.startIndex = complex.positions.length / 6;
184
- return complex;
185
- }
186
94
  extrude(points) {
187
95
  const complex = this.complex;
188
96
  if (points.length <= 1) {
@@ -265,131 +173,6 @@ export default class ExtrudePolyline {
265
173
  }
266
174
  return count;
267
175
  }
268
- segment_gaode2(complex, index, last, cur, next, originLast, originCur,
269
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
270
- originNext) {
271
- let count = 0;
272
- const indices = complex.indices;
273
- const positions = complex.positions;
274
- const normals = complex.normals;
275
- const capSquare = this.cap === 'square';
276
- const joinBevel = this.join === 'bevel';
277
- const flatCur = aProjectFlat([originCur[0], originCur[1]]);
278
- const flatLast = aProjectFlat([originLast[0], originLast[1]]);
279
- // @ts-ignore
280
- direction(lineA, cur, last);
281
- let segmentDistance = 0;
282
- if (this.dash) {
283
- // @ts-ignore
284
- segmentDistance = this.lineSegmentDistance(flatCur, flatLast);
285
- this.totalDistance += segmentDistance;
286
- }
287
- if (!this.normal) {
288
- this.normal = vec2.create();
289
- computeNormal(this.normal, lineA);
290
- }
291
- if (!this.started) {
292
- this.started = true;
293
-
294
- // if the end cap is type square, we can just push the verts out a bit
295
- if (capSquare) {
296
- // vec2.scaleAndAdd(capEnd, last, lineA, -this.thickness);
297
- const out1 = vec2.create();
298
- const out2 = vec2.create();
299
- vec2.add(out1, this.normal, lineA);
300
- vec2.add(out2, this.normal, lineA);
301
- normals.push(out2[0], out2[1], 0);
302
- normals.push(out1[0], out1[1], 0);
303
- positions.push(last[0], last[1], last[2] | 0, this.totalDistance - segmentDistance, -this.thickness, last[2] | 0);
304
- this.complex.indexes.push(this.currentIndex);
305
- positions.push(last[0], last[1], last[2] | 0, this.totalDistance - segmentDistance, this.thickness, last[2] | 0);
306
- this.complex.indexes.push(this.currentIndex);
307
- this.currentIndex++;
308
- } else {
309
- this.extrusions(positions, normals, last, this.normal, this.thickness, this.totalDistance - segmentDistance);
310
- }
311
- }
312
- indices.push(index + 0, index + 1, index + 2);
313
- if (!next) {
314
- computeNormal(this.normal, lineA);
315
- if (capSquare) {
316
- const out1 = vec2.create();
317
- const out2 = vec2.create();
318
- vec2.sub(out2, lineA, this.normal);
319
- vec2.add(out1, lineA, this.normal);
320
- normals.push(out2[0], out2[1], 0);
321
- normals.push(out1[0], out1[1], 0);
322
- positions.push(cur[0], cur[1], cur[2] | 0, this.totalDistance, this.thickness, cur[2] | 0);
323
- this.complex.indexes.push(this.currentIndex);
324
- positions.push(cur[0], cur[1], cur[2] | 0, this.totalDistance, this.thickness, cur[2] | 0);
325
- this.complex.indexes.push(this.currentIndex);
326
- this.currentIndex++;
327
- } else {
328
- this.extrusions(positions, normals, cur, this.normal, this.thickness, this.totalDistance);
329
- }
330
- indices.push(...(this.lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
331
- count += 2;
332
- } else {
333
- // @ts-ignore
334
- if (isPointEqual(cur, next)) {
335
- vec2.add(
336
- // @ts-ignore
337
- next,
338
- // @ts-ignore
339
- cur, vec2.normalize(
340
- // @ts-ignore
341
- next,
342
- // @ts-ignore
343
- vec2.subtract(next, cur, last)));
344
- }
345
- // @ts-ignore
346
- direction(lineB, next, cur);
347
- // stores tangent & miter
348
-
349
- const [miterLen, miter] = computeMiter(tangent, vec2.create(), lineA, lineB, this.thickness);
350
- // normal(tmp, lineA)
351
-
352
- // get orientation
353
- let flip = vec2.dot(tangent, this.normal) < 0 ? -1 : 1;
354
- let bevel = joinBevel;
355
- if (!bevel && this.join === 'miter') {
356
- const limit = miterLen;
357
- if (limit > this.miterLimit) {
358
- bevel = true;
359
- }
360
- }
361
- if (bevel) {
362
- normals.push(this.normal[0], this.normal[1], 0);
363
- normals.push(miter[0], miter[1], 0);
364
- positions.push(cur[0], cur[1], cur[2] | 0, this.totalDistance, -this.thickness * flip, cur[2] | 0);
365
- this.complex.indexes.push(this.currentIndex);
366
- positions.push(cur[0], cur[1], cur[2] | 0, this.totalDistance, this.thickness * flip, cur[2] | 0);
367
- this.complex.indexes.push(this.currentIndex);
368
- this.currentIndex++;
369
- indices.push(...(this.lastFlip !== -flip ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
370
-
371
- // now add the bevel triangle
372
- indices.push(index + 2, index + 3, index + 4);
373
- computeNormal(tmp, lineB);
374
- vec2.copy(this.normal, tmp); // store normal for next round
375
- normals.push(this.normal[0], this.normal[1], 0);
376
- positions.push(cur[0], cur[1], cur[2] | 0, this.totalDistance, -this.thickness * flip, cur[2] | 0);
377
- this.complex.indexes.push(this.currentIndex);
378
- this.currentIndex++;
379
- count += 3;
380
- } else {
381
- this.extrusions(positions, normals, cur, miter, miterLen, this.totalDistance);
382
- indices.push(...(this.lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
383
- flip = -1;
384
-
385
- // the miter is now the normal for our next join
386
- vec2.copy(this.normal, miter);
387
- count += 2;
388
- }
389
- this.lastFlip = flip;
390
- }
391
- return count;
392
- }
393
176
  segment(complex, index, last, cur, next) {
394
177
  let count = 0;
395
178
  const indices = complex.indices;
@@ -1,6 +1,20 @@
1
1
  import type { IModel, IModelUniform, IRenderOptions, ITexture2D } from '@antv/l7-core';
2
2
  import BaseModel from '../../core/BaseModel';
3
3
  export default class WindModel 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
+ UV: number;
17
+ };
4
18
  protected texture: ITexture2D;
5
19
  private colorModel;
6
20
  private wind;
@@ -7,7 +7,7 @@ import { RasterImageTriangulation } from "../../core/triangulation";
7
7
  /* babel-plugin-inline-import '../shaders/wind_frag.glsl' */
8
8
  const WindFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nvarying vec2 v_texCoord;\nvoid main() {\n vec4 color = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y));\n gl_FragColor = color;\n gl_FragColor.a *= u_opacity;\n}\n";
9
9
  /* babel-plugin-inline-import '../shaders/wind_vert.glsl' */
10
- const WindVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));\n}\n";
10
+ const WindVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nlayout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;\n\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));\n}\n";
11
11
  import { Wind } from "./windRender";
12
12
  const defaultRampColors = {
13
13
  0.0: '#3288bd',
@@ -32,6 +32,12 @@ export default class WindModel extends BaseModel {
32
32
  _defineProperty(this, "frequency", new FrequencyController(7.2));
33
33
  _defineProperty(this, "cacheZoom", void 0);
34
34
  }
35
+ get attributeLocation() {
36
+ return Object.assign(super.attributeLocation, {
37
+ MAX: super.attributeLocation.MAX,
38
+ UV: 9
39
+ });
40
+ }
35
41
  render(options) {
36
42
  this.drawColorMode(options);
37
43
  // Tip: 控制风场的平均更新频率
@@ -108,6 +114,7 @@ export default class WindModel extends BaseModel {
108
114
  moduleName: 'wind',
109
115
  vertexShader: WindVert,
110
116
  fragmentShader: WindFrag,
117
+ defines: _this.getDefines(),
111
118
  triangulation: RasterImageTriangulation,
112
119
  primitive: gl.TRIANGLES,
113
120
  depth: {
@@ -146,6 +153,7 @@ export default class WindModel extends BaseModel {
146
153
  type: AttributeType.Attribute,
147
154
  descriptor: {
148
155
  name: 'a_Uv',
156
+ shaderLocation: this.attributeLocation.UV,
149
157
  buffer: {
150
158
  // give the WebGL driver a hint that this buffer may change
151
159
  usage: gl.DYNAMIC_DRAW,
@@ -1,13 +1,14 @@
1
1
  precision highp float;
2
2
  uniform mat4 u_ModelMatrix;
3
3
 
4
- attribute vec3 a_Position;
5
- attribute vec2 a_Uv;
4
+ layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
5
+ layout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;
6
+
6
7
  varying vec2 v_texCoord;
7
8
  #pragma include "projection"
8
9
  void main() {
9
- v_texCoord = a_Uv;
10
- vec4 project_pos = project_position(vec4(a_Position, 1.0));
10
+ v_texCoord = a_Uv;
11
+ vec4 project_pos = project_position(vec4(a_Position, 1.0));
11
12
 
12
- gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));
13
+ gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy, 0.0, 1.0));
13
14
  }