@antv/l7-layers 2.20.10 → 2.20.12

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.
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -25,7 +24,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
25
24
  /* babel-plugin-inline-import '../shaders/line/line_frag.glsl' */
26
25
  var line_frag = "// #extension GL_OES_standard_derivatives : enable\n#define Animate 0.0\n#define LineTexture 1.0\n\nuniform sampler2D u_texture;\nlayout(std140) uniform commonUniorm {\n vec4 u_animate: [ 1., 2., 1.0, 0.2 ];\n vec4 u_dash_array;\n vec4 u_blur;\n vec4 u_sourceColor;\n vec4 u_targetColor;\n vec2 u_textSize;\n float u_icon_step: 100;\n float u_heightfixed: 0.0;\n float u_vertexScale: 1.0;\n float u_raisingHeight: 0.0;\n float u_strokeWidth: 0.0;\n float u_textureBlend;\n float u_line_texture;\n float u_linearDir: 1.0;\n float u_linearColor: 0;\n float u_time;\n};\n\nin vec4 v_color;\nin vec4 v_stroke;\nin vec2 v_iconMapUV;\nin vec4 v_texture_data;\n// dash\nin vec4 v_dash_array;\nin float v_d_distance_ratio;\n\nout vec4 outputColor;\n#pragma include \"picking\"\n\n// [animate, duration, interval, trailLength],\nvoid main() {\n if(u_dash_array!=vec4(0.0)){\n float dashLength = mod(v_d_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(!(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z))) {\n // \u865A\u7EBF\u90E8\u5206\n discard;\n };\n }\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = v_texture_data.r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n if(u_linearDir < 1.0) {\n d_distance_ratio = v_texture_data.a;\n }\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n outputColor = mix(u_sourceColor, u_targetColor, d_distance_ratio);\n outputColor.a *= v_color.a;\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n outputColor = v_color;\n }\n // anti-alias\n // float blur = 1.0 - smoothstep(u_blur, 1., length(v_normal.xy));\n if(u_animate.x == Animate) {\n animateSpeed = u_time / u_animate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_animate.z)* (1.0/ u_animate.z) + animateSpeed);\n alpha = (alpha + u_animate.w -1.0) / u_animate.w;\n alpha = smoothstep(0., 1., alpha);\n outputColor.a *= alpha;\n }\n\n if(u_line_texture == LineTexture) { // while load texture\n float aDistance = v_texture_data.g; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n float d_texPixelLen = v_texture_data.b; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n float u = fract(mod(aDistance, d_texPixelLen)/d_texPixelLen - animateSpeed);\n float v = v_texture_data.a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // v = max(smoothstep(0.95, 1.0, v), v);\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n vec4 pattern = texture(SAMPLER_2D(u_texture), uv);\n\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n outputColor += pattern;\n } else { // replace\n pattern.a *= v_color.a;\n if(outputColor.a <= 0.0) {\n pattern.a = 0.0;\n }\n outputColor = pattern;\n }\n } \n\n float v = v_texture_data.a;\n float strokeWidth = min(0.5, u_strokeWidth);\n // \u7ED8\u5236 border\n if(strokeWidth > 0.01) {\n float borderOuterWidth = strokeWidth / 2.0;\n\n\n if(v >= 1.0 - strokeWidth || v <= strokeWidth) {\n if(v > strokeWidth) { // \u5916\u4FA7\n float linear = smoothstep(0.0, 1.0, (v - (1.0 - strokeWidth))/strokeWidth);\n // float linear = step(0.0, (v - (1.0 - borderWidth))/borderWidth);\n outputColor.rgb = mix(outputColor.rgb, v_stroke.rgb, linear);\n } else if(v <= strokeWidth) {\n float linear = smoothstep(0.0, 1.0, v/strokeWidth);\n outputColor.rgb = mix(v_stroke.rgb, outputColor.rgb, linear);\n }\n }\n\n if(v < borderOuterWidth) {\n outputColor.a = mix(0.0, outputColor.a, v/borderOuterWidth);\n } else if(v > 1.0 - borderOuterWidth) {\n outputColor.a = mix(outputColor.a, 0.0, (v - (1.0 - borderOuterWidth))/borderOuterWidth);\n }\n }\n\n // blur\n float blurV = v_texture_data.a;\n if(blurV < 0.5) {\n outputColor.a *= mix(u_blur.r, u_blur.g, blurV/0.5);\n } else {\n outputColor.a *= mix(u_blur.g, u_blur.b, (blurV - 0.5)/0.5);\n }\n \n outputColor = filterColor(outputColor);\n}\n";
27
26
  /* babel-plugin-inline-import '../shaders/line/line_vert.glsl' */
28
- var line_vert = "\n#define Animate 0.0\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in vec4 a_SizeDistanceAndTotalDistance;\nlayout(location = 13) in vec4 a_NormalAndMiter;\nlayout(location = 14) in vec2 a_iconMapUV;\n\nlayout(std140) uniform commonUniorm {\n vec4 u_animate: [ 1., 2., 1.0, 0.2 ];\n vec4 u_dash_array;\n vec4 u_blur;\n vec4 u_sourceColor;\n vec4 u_targetColor;\n vec2 u_textSize;\n float u_icon_step: 100;\n float u_heightfixed: 0.0;\n float u_vertexScale: 1.0;\n float u_raisingHeight: 0.0;\n float u_strokeWidth: 0.0;\n float u_textureBlend;\n float u_line_texture;\n float u_linearDir: 1.0;\n float u_linearColor: 0;\n float u_time;\n};\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nout vec4 v_color;\nout vec4 v_stroke;\n//dash\nout vec4 v_dash_array;\nout float v_d_distance_ratio;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nout vec2 v_iconMapUV;\nout vec4 v_texture_data;\n\nvoid main() {\n //dash\u8F93\u51FA\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_SizeDistanceAndTotalDistance.a;\n v_d_distance_ratio = a_SizeDistanceAndTotalDistance.b / a_SizeDistanceAndTotalDistance.a;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_float_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n v_color = a_Color;\n v_color.a *= opacity;\n v_stroke = stroke;\n\n vec3 size = a_NormalAndMiter.w * setPickingSize(a_SizeDistanceAndTotalDistance.x) * reverse_offset_normal(a_NormalAndMiter.xyz);\n \n vec2 offset = project_pixel(size.xy);\n\n float lineDistance = a_SizeDistanceAndTotalDistance.b;\n float currentLinePointRatio = lineDistance / a_SizeDistanceAndTotalDistance.a;\n \n\n float lineOffsetWidth = length(offset + offset * sign(a_NormalAndMiter.w)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_SizeDistanceAndTotalDistance.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n \n v_texture_data = vec4(currentLinePointRatio, lineDistance, d_texPixelLen, texV);\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5 vertex height\n float lineHeight = a_SizeDistanceAndTotalDistance.y; // size \u7B2C\u4E8C\u4E2A\u53C2\u6570\u4EE3\u8868\u7684\u9AD8\u5EA6 [linewidth, lineheight]\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n lineHeight *= 0.2; // \u4FDD\u6301\u548C amap/mapbox \u4E00\u81F4\u7684\u6548\u679C\n h *= 0.2;\n if(u_heightfixed < 1.0) {\n lineHeight = project_pixel(a_SizeDistanceAndTotalDistance.y);\n }\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight + h + u_raisingHeight, 1.0));\n } else {\n // mapbox - amap\n \n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n // mapbox\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n h *= mapboxZoomScale;\n h += u_raisingHeight * mapboxZoomScale;\n if(u_heightfixed > 0.0) {\n lineHeight *= mapboxZoomScale;\n }\n \n } else {\n // amap\n h += u_raisingHeight;\n // lineHeight \u9876\u70B9\u504F\u79FB\u9AD8\u5EA6\n if(u_heightfixed < 1.0) {\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
27
+ var line_vert = "\n#define Animate 0.0\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 10) in vec2 a_DistanceAndIndex;\nlayout(location = 9) in vec2 a_Size;\nlayout(location = 11) in float a_Total_Distance;\nlayout(location = 13) in vec3 a_Normal;\nlayout(location = 15) in float a_Miter;\nlayout(location = 14) in vec2 a_iconMapUV;\n\nlayout(std140) uniform commonUniorm {\n vec4 u_animate: [ 1., 2., 1.0, 0.2 ];\n vec4 u_dash_array;\n vec4 u_blur;\n vec4 u_sourceColor;\n vec4 u_targetColor;\n vec2 u_textSize;\n float u_icon_step: 100;\n float u_heightfixed: 0.0;\n float u_vertexScale: 1.0;\n float u_raisingHeight: 0.0;\n float u_strokeWidth: 0.0;\n float u_textureBlend;\n float u_line_texture;\n float u_linearDir: 1.0;\n float u_linearColor: 0;\n float u_time;\n};\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nout vec4 v_color;\nout vec4 v_stroke;\n//dash\nout vec4 v_dash_array;\nout float v_d_distance_ratio;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nout vec2 v_iconMapUV;\nout vec4 v_texture_data;\n\nvoid main() {\n //dash\u8F93\u51FA\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_Total_Distance;\n v_d_distance_ratio = a_DistanceAndIndex.x / a_Total_Distance;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_float_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n v_color = a_Color;\n v_color.a *= opacity;\n v_stroke = stroke;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n \n vec2 offset = project_pixel(size.xy);\n\n float lineDistance = a_DistanceAndIndex.x;\n float currentLinePointRatio = lineDistance / a_Total_Distance;\n \n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n \n v_texture_data = vec4(currentLinePointRatio, lineDistance, d_texPixelLen, texV);\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5 vertex height\n float lineHeight = a_Size.y; // size \u7B2C\u4E8C\u4E2A\u53C2\u6570\u4EE3\u8868\u7684\u9AD8\u5EA6 [linewidth, lineheight]\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n lineHeight *= 0.2; // \u4FDD\u6301\u548C amap/mapbox \u4E00\u81F4\u7684\u6548\u679C\n h *= 0.2;\n if(u_heightfixed < 1.0) {\n lineHeight = project_pixel(a_Size.y);\n }\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight + h + u_raisingHeight, 1.0));\n } else {\n // mapbox - amap\n \n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n // mapbox\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n h *= mapboxZoomScale;\n h += u_raisingHeight * mapboxZoomScale;\n if(u_heightfixed > 0.0) {\n lineHeight *= mapboxZoomScale;\n }\n \n } else {\n // amap\n h += u_raisingHeight;\n // lineHeight \u9876\u70B9\u504F\u79FB\u9AD8\u5EA6\n if(u_heightfixed < 1.0) {\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
29
28
  var lineStyleObj = {
30
29
  solid: 0.0,
31
30
  dash: 1.0
@@ -238,41 +237,96 @@ var LineModel = exports.default = /*#__PURE__*/function (_BaseModel) {
238
237
  value: function registerBuiltinAttributes() {
239
238
  var _this2 = this;
240
239
  this.styleAttributeService.registerStyleAttribute({
241
- name: 'sizeDistanceAndTotalDistance',
240
+ name: 'distanceAndIndex',
242
241
  type: _l7Core.AttributeType.Attribute,
243
242
  descriptor: {
244
- name: 'a_SizeDistanceAndTotalDistance',
245
- shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
243
+ name: 'a_DistanceAndIndex',
244
+ shaderLocation: 10,
245
+ buffer: {
246
+ // give the WebGL driver a hint that this buffer may change
247
+ usage: _l7Core.gl.STATIC_DRAW,
248
+ data: [],
249
+ type: _l7Core.gl.FLOAT
250
+ },
251
+ size: 2,
252
+ update: function update(feature, featureIdx, vertex, attributeIdx, normal, vertexIndex) {
253
+ return vertexIndex === undefined ? [vertex[3], 10] : [vertex[3], vertexIndex];
254
+ }
255
+ }
256
+ });
257
+ this.styleAttributeService.registerStyleAttribute({
258
+ name: 'total_distance',
259
+ type: _l7Core.AttributeType.Attribute,
260
+ descriptor: {
261
+ name: 'a_Total_Distance',
262
+ shaderLocation: 11,
246
263
  buffer: {
264
+ // give the WebGL driver a hint that this buffer may change
247
265
  usage: _l7Core.gl.STATIC_DRAW,
248
266
  data: [],
249
267
  type: _l7Core.gl.FLOAT
250
268
  },
251
- size: 4,
269
+ size: 1,
252
270
  update: function update(feature, featureIdx, vertex) {
271
+ return [vertex[5]];
272
+ }
273
+ }
274
+ });
275
+ this.styleAttributeService.registerStyleAttribute({
276
+ name: 'size',
277
+ type: _l7Core.AttributeType.Attribute,
278
+ descriptor: {
279
+ name: 'a_Size',
280
+ shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
281
+ buffer: {
282
+ // give the WebGL driver a hint that this buffer may change
283
+ usage: _l7Core.gl.DYNAMIC_DRAW,
284
+ data: [],
285
+ type: _l7Core.gl.FLOAT
286
+ },
287
+ size: 2,
288
+ update: function update(feature) {
253
289
  var _feature$size = feature.size,
254
290
  size = _feature$size === void 0 ? 1 : _feature$size;
255
- var a_Size = Array.isArray(size) ? [size[0], size[1]] : [size, 0];
256
- return [a_Size[0], a_Size[1], vertex[3], vertex[5]];
291
+ return Array.isArray(size) ? [size[0], size[1]] : [size, 0];
257
292
  }
258
293
  }
259
294
  });
260
295
 
261
296
  // point layer size;
262
297
  this.styleAttributeService.registerStyleAttribute({
263
- name: 'normalAndMiter',
298
+ name: 'normal',
264
299
  type: _l7Core.AttributeType.Attribute,
265
300
  descriptor: {
266
- name: 'a_NormalAndMiter',
301
+ name: 'a_Normal',
267
302
  shaderLocation: _CommonStyleAttribute.ShaderLocation.NORMAL,
268
303
  buffer: {
304
+ // give the WebGL driver a hint that this buffer may change
269
305
  usage: _l7Core.gl.STATIC_DRAW,
270
306
  data: [],
271
307
  type: _l7Core.gl.FLOAT
272
308
  },
273
- size: 4,
309
+ size: 3,
274
310
  update: function update(feature, featureIdx, vertex, attributeIdx, normal) {
275
- return [].concat((0, _toConsumableArray2.default)(normal), [vertex[4]]);
311
+ return normal;
312
+ }
313
+ }
314
+ });
315
+ this.styleAttributeService.registerStyleAttribute({
316
+ name: 'miter',
317
+ type: _l7Core.AttributeType.Attribute,
318
+ descriptor: {
319
+ shaderLocation: 15,
320
+ name: 'a_Miter',
321
+ buffer: {
322
+ // give the WebGL driver a hint that this buffer may change
323
+ usage: _l7Core.gl.STATIC_DRAW,
324
+ data: [],
325
+ type: _l7Core.gl.FLOAT
326
+ },
327
+ size: 1,
328
+ update: function update(feature, featureIdx, vertex) {
329
+ return [vertex[4]];
276
330
  }
277
331
  }
278
332
  });
@@ -3,8 +3,11 @@
3
3
 
4
4
  layout(location = 0) in vec3 a_Position;
5
5
  layout(location = 1) in vec4 a_Color;
6
- layout(location = 9) in vec4 a_SizeDistanceAndTotalDistance;
7
- layout(location = 13) in vec4 a_NormalAndMiter;
6
+ layout(location = 10) in vec2 a_DistanceAndIndex;
7
+ layout(location = 9) in vec2 a_Size;
8
+ layout(location = 11) in float a_Total_Distance;
9
+ layout(location = 13) in vec3 a_Normal;
10
+ layout(location = 15) in float a_Miter;
8
11
  layout(location = 14) in vec2 a_iconMapUV;
9
12
 
10
13
  layout(std140) uniform commonUniorm {
@@ -40,8 +43,8 @@ out vec4 v_texture_data;
40
43
 
41
44
  void main() {
42
45
  //dash输出
43
- v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_SizeDistanceAndTotalDistance.a;
44
- v_d_distance_ratio = a_SizeDistanceAndTotalDistance.b / a_SizeDistanceAndTotalDistance.a;
46
+ v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_Total_Distance;
47
+ v_d_distance_ratio = a_DistanceAndIndex.x / a_Total_Distance;
45
48
 
46
49
  // cal style mapping - 数据纹理映射部分的计算
47
50
  float d_texPixelLen; // 贴图的像素长度,根据地图层级缩放
@@ -55,16 +58,16 @@ void main() {
55
58
  v_color.a *= opacity;
56
59
  v_stroke = stroke;
57
60
 
58
- vec3 size = a_NormalAndMiter.w * setPickingSize(a_SizeDistanceAndTotalDistance.x) * reverse_offset_normal(a_NormalAndMiter.xyz);
61
+ vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);
59
62
 
60
63
  vec2 offset = project_pixel(size.xy);
61
64
 
62
- float lineDistance = a_SizeDistanceAndTotalDistance.b;
63
- float currentLinePointRatio = lineDistance / a_SizeDistanceAndTotalDistance.a;
65
+ float lineDistance = a_DistanceAndIndex.x;
66
+ float currentLinePointRatio = lineDistance / a_Total_Distance;
64
67
 
65
68
 
66
- float lineOffsetWidth = length(offset + offset * sign(a_NormalAndMiter.w)); // 线横向偏移的距离(向两侧偏移的和)
67
- float linePixelSize = project_pixel(a_SizeDistanceAndTotalDistance.x) * 2.0; // 定点位置偏移,按地图等级缩放后的距离 单侧 * 2
69
+ float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // 线横向偏移的距离(向两侧偏移的和)
70
+ float linePixelSize = project_pixel(a_Size.x) * 2.0; // 定点位置偏移,按地图等级缩放后的距离 单侧 * 2
68
71
  float texV = lineOffsetWidth/linePixelSize; // 线图层贴图部分的 v 坐标值
69
72
 
70
73
  v_texture_data = vec4(currentLinePointRatio, lineDistance, d_texPixelLen, texV);
@@ -75,13 +78,13 @@ void main() {
75
78
  // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));
76
79
 
77
80
  float h = float(a_Position.z) * u_vertexScale; // 线顶点的高度 - 兼容不存在第三个数值的情况 vertex height
78
- float lineHeight = a_SizeDistanceAndTotalDistance.y; // size 第二个参数代表的高度 [linewidth, lineheight]
81
+ float lineHeight = a_Size.y; // size 第二个参数代表的高度 [linewidth, lineheight]
79
82
 
80
83
  if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x
81
84
  lineHeight *= 0.2; // 保持和 amap/mapbox 一致的效果
82
85
  h *= 0.2;
83
86
  if(u_heightfixed < 1.0) {
84
- lineHeight = project_pixel(a_SizeDistanceAndTotalDistance.y);
87
+ lineHeight = project_pixel(a_Size.y);
85
88
  }
86
89
  gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight + h + u_raisingHeight, 1.0));
87
90
  } else {
@@ -22,7 +22,7 @@ var _triangulation = require("../../core/triangulation");
22
22
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
23
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
24
24
  /* babel-plugin-inline-import '../shaders/extrude/extrude_frag.glsl' */
25
- var pointExtrudeFrag = "in vec4 v_color;\nin float v_lightWeight;\nout vec4 outputColor;\n\n\nlayout(std140) uniform commonUniforms {\n float u_pickLight;\n float u_heightfixed;\n float u_r;\n float u_linearColor;\n vec4 u_sourceColor;\n vec4 u_targetColor;\n float u_opacitylinear;\n float u_opacitylinear_dir;\n float u_lightEnable;\n};\n\n#pragma include \"picking\"\n\nvoid main() {\n\n outputColor = v_color;\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n // picking\n if(u_pickLight > 0.0) {\n outputColor = filterColorAlpha(outputColor, v_lightWeight);\n } else {\n outputColor = filterColor(outputColor);\n }\n}\n";
25
+ var pointExtrudeFrag = "\nin vec4 v_color;\nin float v_lightWeight;\nout vec4 outputColor;\n\nlayout(std140) uniform commonUniforms {\n float u_pickLight;\n float u_heightfixed;\n float u_r;\n float u_linearColor;\n vec4 u_sourceColor;\n vec4 u_targetColor;\n float u_opacitylinear;\n float u_opacitylinear_dir;\n float u_lightEnable;\n};\n\n#pragma include \"picking\"\n\nvoid main() {\n\n outputColor = v_color;\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n // picking\n if(u_pickLight > 0.0) {\n outputColor = filterColorAlpha(outputColor, v_lightWeight);\n } else {\n outputColor = filterColor(outputColor);\n }\n}\n";
26
26
  /* babel-plugin-inline-import '../shaders/extrude/extrude_vert.glsl' */
27
27
  var pointExtrudeVert = "#define pi 3.1415926535\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in vec3 a_Size;\nlayout(location = 11) in vec3 a_Extrude;\nlayout(location = 13) in vec3 a_Normal;\n\nlayout(std140) uniform commonUniforms {\n float u_pickLight;\n float u_heightfixed;\n float u_r;\n float u_linearColor;\n vec4 u_sourceColor;\n vec4 u_targetColor;\n float u_opacitylinear;\n float u_opacitylinear_dir;\n float u_lightEnable;\n};\nout vec4 v_color;\nout float v_lightWeight;\nout float v_barLinearZ;\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\n\n vec3 size = a_Size * a_Position;\n\n vec3 offset = size; // \u63A7\u5236\u5706\u67F1\u4F53\u7684\u5927\u5C0F - \u4ECE\u6807\u51C6\u5355\u4F4D\u5706\u67F1\u4F53\u8FDB\u884C\u504F\u79FB\n\n if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n \n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // P20 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF1\n offset = offset * pow(2.0, (19.0 - u_Zoom));\n }\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // P20_2 \u5750\u6807\u7CFB\u4E0B\uFF0C\u4E3A\u4E86\u548C Web \u58A8\u5361\u6258\u5750\u6807\u7CFB\u7EDF\u4E00\uFF0Czoom \u9ED8\u8BA4\u51CF3\n offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));\n }\n } else {// \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n offset *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n\n vec4 project_pos = project_position(vec4(a_Extrude.xy, 0., 1.0));\n\n // u_r \u63A7\u5236\u5706\u67F1\u7684\u751F\u957F\n vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);\n\n // // \u5706\u67F1\u5149\u7167\u6548\u679C\n float lightWeight = 1.0;\n\n if(u_lightEnable > 0.0) { // \u53D6\u6D88\u4E09\u5143\u8868\u8FBE\u5F0F\uFF0C\u589E\u5F3A\u5065\u58EE\u6027\n lightWeight = calc_lighting(pos);\n }\n\n v_lightWeight = lightWeight;\n\n v_color = a_Color;\n\n // \u8BBE\u7F6E\u5706\u67F1\u7684\u5E95\u8272\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n v_color = mix(u_sourceColor, u_targetColor, a_Position.z);\n v_color.a = v_color.a * opacity;\n } else {\n v_color = vec4(a_Color.rgb * lightWeight, a_Color.w * opacity);\n }\n\n if(u_opacitylinear > 0.0) {\n v_color.a *= u_opacitylinear_dir > 0.0 ? (1.0 - a_Position.z): a_Position.z;\n }\n\n\n gl_Position = project_common_position_to_clipspace_v2(pos);\n\n setPickingColor(a_PickingColor);\n}\n";
28
28
  var ExtrudeModel = exports.default = /*#__PURE__*/function (_BaseModel) {
@@ -22,7 +22,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
22
22
  /* babel-plugin-inline-import '../shaders/fill/fill_frag.glsl' */
23
23
  var pointFillFrag = "layout(std140) uniform commonUniforms {\n vec3 u_blur_height_fixed;\n float u_stroke_width;\n float u_additive;\n float u_stroke_opacity;\n float u_size_unit;\n float u_time;\n vec4 u_animate;\n};\n\n\nin vec4 v_color;\nin vec4 v_stroke;\nin vec4 v_data;\nin float v_radius;\n\n#pragma include \"scene_uniforms\"\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nout vec4 outputColor;\n\nvoid main() {\n int shape = int(floor(v_data.w + 0.5));\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius + u_stroke_width);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n if (shape == 0) {\n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n } else if (shape == 1) {\n outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\n inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\n } else if (shape == 2) {\n outer_df = sdBox(v_data.xy, vec2(1.));\n inner_df = sdBox(v_data.xy, vec2(r));\n } else if (shape == 3) {\n outer_df = sdPentagon(v_data.xy, 0.8);\n inner_df = sdPentagon(v_data.xy, r * 0.8);\n } else if (shape == 4) {\n outer_df = sdHexagon(v_data.xy, 0.8);\n inner_df = sdHexagon(v_data.xy, r * 0.8);\n } else if (shape == 5) {\n outer_df = sdOctogon(v_data.xy, 1.0);\n inner_df = sdOctogon(v_data.xy, r);\n } else if (shape == 6) {\n outer_df = sdHexagram(v_data.xy, 0.52);\n inner_df = sdHexagram(v_data.xy, r * 0.52);\n } else if (shape == 7) {\n outer_df = sdRhombus(v_data.xy, vec2(1.0));\n inner_df = sdRhombus(v_data.xy, vec2(r));\n } else if (shape == 8) {\n outer_df = sdVesica(v_data.xy, 1.1, 0.8);\n inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\n }\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(\n antialiasblur,\n 0.0,\n inner_df\n );\n\n float PI = 3.14159;\n float N_RINGS = 3.0;\n float FREQ = 1.0;\n\n if(u_stroke_width < 0.01) {\n outputColor = v_color;\n } else {\n outputColor = mix(v_color, v_stroke * u_stroke_opacity, color_t);\n }\n float intensity = 1.0;\n if(u_time!=-1.0){\n //wave\u76F8\u5173\u903B\u8F91\n float d = length(v_data.xy);\n if(d > 0.5) {\n discard;\n }\n intensity = clamp(cos(d * PI), 0.0, 1.0) * clamp(cos(2.0 * PI * (d * 2.0 * u_animate.z - u_animate.y * u_time)), 0.0, 1.0);\n }\n\n if(u_additive > 0.0) {\n outputColor *= opacity_t;\n outputColor *= intensity;//wave\n outputColor = filterColorAlpha(outputColor, outputColor.a);\n } else {\n outputColor.a *= opacity_t;\n outputColor.a *= intensity;//wave \n outputColor = filterColor(outputColor);\n }\n // \u4F5C\u4E3A mask \u6A21\u677F\u65F6\u9700\u8981\u4E22\u5F03\u900F\u660E\u7684\u50CF\u7D20\n if(outputColor.a < 0.01) {\n discard;\n } \n}\n";
24
24
  /* babel-plugin-inline-import '../shaders/fill/fill_vert.glsl' */
25
- var pointFillVert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in vec2 a_SizeAndShape;\nlayout(location = 11) in vec3 a_Extrude;\n\nlayout(std140) uniform commonUniforms {\n vec3 u_blur_height_fixed;\n float u_stroke_width;\n float u_additive;\n float u_stroke_opacity;\n float u_size_unit;\n float u_time;\n vec4 u_animate; \n};\n\nout vec4 v_color;\nout vec4 v_stroke;\nout vec4 v_data;\nout float v_radius;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"rotation_2d\"\n\nvoid main() {\n // \u900F\u660E\u5EA6\u8BA1\u7B97\n v_stroke = stroke; \n vec3 extrude = a_Extrude;\n float shape_type = a_SizeAndShape.y;\n /*\n * setPickingSize \u8BBE\u7F6E\u62FE\u53D6\u5927\u5C0F\n * u_meter2coord \u5728\u7B49\u9762\u79EF\u5927\u5C0F\u7684\u65F6\u5019\u8BBE\u7F6E\u5355\u4F4D\n */\n float newSize = setPickingSize(a_SizeAndShape.x);\n // float newSize = setPickingSize(a_Size) * 0.00001038445708445579;\n\n\n\n // unpack color(vec2)\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n\n if(u_size_unit == 1.0) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n\n v_radius = newSize;\n\n // anti-alias\n // float antialiased_blur = -max(u_blur, antialiasblur);\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / newSize, u_blur_height_fixed.x);\n\n vec2 offset = (extrude.xy * (newSize + u_stroke_width) + u_offsets);\n vec3 aPosition = a_Position;\n\n offset = project_pixel(offset);\n offset = rotate_matrix(offset,rotation);\n \n // TODP: /abs(extrude.x) \u662F\u4E3A\u4E86\u517C\u5BB9\u5730\u7403\u6A21\u5F0F\n v_data = vec4(extrude.x/abs(extrude.x), extrude.y/abs(extrude.y), antialiasblur,shape_type);\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n float raisingHeight = u_blur_height_fixed.y;\n\n if(u_blur_height_fixed.z < 1.0) { // false\n raisingHeight = project_pixel(u_blur_height_fixed.y);\n } else {\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raisingHeight = u_blur_height_fixed.y * mapboxZoomScale;\n }\n }\n \n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, raisingHeight, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
25
+ var pointFillVert = "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 float a_Shape;\nlayout(location = 11) in vec3 a_Extrude;\n\nlayout(std140) uniform commonUniforms {\n vec3 u_blur_height_fixed;\n float u_stroke_width;\n float u_additive;\n float u_stroke_opacity;\n float u_size_unit;\n float u_time;\n vec4 u_animate; \n};\n\nout vec4 v_color;\nout vec4 v_stroke;\nout vec4 v_data;\nout float v_radius;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"rotation_2d\"\n\nvoid main() {\n // \u900F\u660E\u5EA6\u8BA1\u7B97\n v_stroke = stroke; \n vec3 extrude = a_Extrude;\n float shape_type = a_Shape;\n /*\n * setPickingSize \u8BBE\u7F6E\u62FE\u53D6\u5927\u5C0F\n * u_meter2coord \u5728\u7B49\u9762\u79EF\u5927\u5C0F\u7684\u65F6\u5019\u8BBE\u7F6E\u5355\u4F4D\n */\n float newSize = setPickingSize(a_Size);\n // float newSize = setPickingSize(a_Size) * 0.00001038445708445579;\n\n\n\n // unpack color(vec2)\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n\n if(u_size_unit == 1.0) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n\n v_radius = newSize;\n\n // anti-alias\n // float antialiased_blur = -max(u_blur, antialiasblur);\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / newSize, u_blur_height_fixed.x);\n\n vec2 offset = (extrude.xy * (newSize + u_stroke_width) + u_offsets);\n vec3 aPosition = a_Position;\n\n offset = project_pixel(offset);\n offset = rotate_matrix(offset,rotation);\n \n // TODP: /abs(extrude.x) \u662F\u4E3A\u4E86\u517C\u5BB9\u5730\u7403\u6A21\u5F0F\n v_data = vec4(extrude.x/abs(extrude.x), extrude.y/abs(extrude.y), antialiasblur,shape_type);\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n float raisingHeight = u_blur_height_fixed.y;\n\n if(u_blur_height_fixed.z < 1.0) { // false\n raisingHeight = project_pixel(u_blur_height_fixed.y);\n } else {\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raisingHeight = u_blur_height_fixed.y * mapboxZoomScale;\n }\n }\n \n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, raisingHeight, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
26
26
  var FillModel = exports.default = /*#__PURE__*/function (_BaseModel) {
27
27
  (0, _inherits2.default)(FillModel, _BaseModel);
28
28
  var _super = _createSuper(FillModel);
@@ -187,10 +187,10 @@ var FillModel = exports.default = /*#__PURE__*/function (_BaseModel) {
187
187
 
188
188
  // point layer size;
189
189
  this.styleAttributeService.registerStyleAttribute({
190
- name: 'sizeAndShape',
190
+ name: 'size',
191
191
  type: _l7Core.AttributeType.Attribute,
192
192
  descriptor: {
193
- name: 'a_SizeAndShape',
193
+ name: 'a_Size',
194
194
  shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
195
195
  buffer: {
196
196
  // give the WebGL driver a hint that this buffer may change
@@ -198,15 +198,34 @@ var FillModel = exports.default = /*#__PURE__*/function (_BaseModel) {
198
198
  data: [],
199
199
  type: _l7Core.gl.FLOAT
200
200
  },
201
- size: 2,
201
+ size: 1,
202
202
  update: function update(feature) {
203
203
  var _feature$size = feature.size,
204
204
  size = _feature$size === void 0 ? 5 : _feature$size;
205
+ return Array.isArray(size) ? [size[0]] : [size];
206
+ }
207
+ }
208
+ });
209
+
210
+ // point layer shape;
211
+ this.styleAttributeService.registerStyleAttribute({
212
+ name: 'shape',
213
+ type: _l7Core.AttributeType.Attribute,
214
+ descriptor: {
215
+ name: 'a_Shape',
216
+ shaderLocation: _CommonStyleAttribute.ShaderLocation.SHAPE,
217
+ buffer: {
218
+ // give the WebGL driver a hint that this buffer may change
219
+ usage: _l7Core.gl.DYNAMIC_DRAW,
220
+ data: [],
221
+ type: _l7Core.gl.FLOAT
222
+ },
223
+ size: 1,
224
+ update: function update(feature) {
205
225
  var _feature$shape = feature.shape,
206
226
  shape = _feature$shape === void 0 ? 2 : _feature$shape;
207
227
  var shapeIndex = shape2d.indexOf(shape);
208
- var a_Size = Array.isArray(size) ? size[0] : size;
209
- return [a_Size, shapeIndex];
228
+ return [shapeIndex];
210
229
  }
211
230
  }
212
231
  });
@@ -22,7 +22,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
22
22
  /* babel-plugin-inline-import '../shaders/radar/radar_frag.glsl' */
23
23
  var pointFillFrag = "\nlayout(std140) uniform commonUniorm{\n float u_additive;\n float u_size_unit;\n float u_speed: 1.0;\n float u_time;\n};\nin vec4 v_data;\nin vec4 v_color;\nin float v_radius;\nin vec2 v_extrude;\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nout vec4 outputColor;\n\nvoid main() {\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius);\n\n float outer_df = sdCircle(v_data.xy, 1.0);\n float inner_df = sdCircle(v_data.xy, r);\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n outputColor = vec4(v_color.rgb, v_color.a);\n\n if(u_additive > 0.0) {\n outputColor *= opacity_t;\n } else {\n outputColor.a *= opacity_t;\n }\n\n if(outputColor.a > 0.0) {\n outputColor = filterColor(outputColor);\n }\n\n vec2 extrude = v_extrude;\n vec2 dir = normalize(extrude);\n vec2 baseDir = vec2(1.0, 0.0);\n float pi = 3.14159265359;\n float flag = sign(dir.y);\n float rades = dot(dir, baseDir);\n float radar_v = (flag - 1.0) * -0.5 * acos(rades)/pi;\n // simple AA\n if(radar_v > 0.99) {\n radar_v = 1.0 - (radar_v - 0.99)/0.01;\n }\n\n outputColor.a *= radar_v;\n}\n";
24
24
  /* babel-plugin-inline-import '../shaders/radar/radar_vert.glsl' */
25
- var pointFillVert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 11) in vec4 a_ExtrudeAndSize;\n\nlayout(std140) uniform commonUniorm {\n float u_additive;\n float u_size_unit;\n float u_speed: 1.0;\n float u_time;\n};\n\nout vec4 v_data;\nout vec4 v_color;\nout float v_radius;\nout vec2 v_extrude;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main() {\n vec3 extrude = a_ExtrudeAndSize.xyz;\n float newSize = setPickingSize(a_ExtrudeAndSize.w);\n\n float time = u_time * u_speed;\n mat2 rotateMatrix = mat2( \n cos(time), sin(time), \n -sin(time), cos(time)\n );\n v_extrude = rotateMatrix * a_ExtrudeAndSize.xy;\n\n v_color = a_Color;\n v_color.a *= opacity;\n\n float blur = 0.0;\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / a_ExtrudeAndSize.w, blur);\n\n if(u_size_unit == 1.) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n v_radius = newSize;\n\n vec2 offset = (extrude.xy * (newSize));\n vec3 aPosition = a_Position;\n \n offset = project_pixel(offset);\n \n v_data = vec4(extrude.x, extrude.y, antialiasblur, -1.0);\n\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
25
+ var pointFillVert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 11) in vec3 a_Extrude;\n\nlayout(std140) uniform commonUniorm {\n float u_additive;\n float u_size_unit;\n float u_speed: 1.0;\n float u_time;\n};\n\nout vec4 v_data;\nout vec4 v_color;\nout float v_radius;\nout vec2 v_extrude;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main() {\n float newSize = setPickingSize(a_Size);\n\n float time = u_time * u_speed;\n mat2 rotateMatrix = mat2( \n cos(time), sin(time), \n -sin(time), cos(time)\n );\n v_extrude = rotateMatrix * a_Extrude.xy;\n\n v_color = a_Color;\n v_color.a *= opacity;\n\n float blur = 0.0;\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / a_Size, blur);\n\n if(u_size_unit == 1.) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n v_radius = newSize;\n\n vec2 offset = (a_Extrude.xy * (newSize));\n vec3 aPosition = a_Position;\n \n offset = project_pixel(offset);\n \n v_data = vec4(a_Extrude.x, a_Extrude.y, antialiasblur, -1.0);\n\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
26
26
  var RadarModel = exports.default = /*#__PURE__*/function (_BaseModel) {
27
27
  (0, _inherits2.default)(RadarModel, _BaseModel);
28
28
  var _super = _createSuper(RadarModel);
@@ -120,10 +120,10 @@ var RadarModel = exports.default = /*#__PURE__*/function (_BaseModel) {
120
120
  key: "registerBuiltinAttributes",
121
121
  value: function registerBuiltinAttributes() {
122
122
  this.styleAttributeService.registerStyleAttribute({
123
- name: 'extrudeAndSize',
123
+ name: 'extrude',
124
124
  type: _l7Core.AttributeType.Attribute,
125
125
  descriptor: {
126
- name: 'a_ExtrudeAndSize',
126
+ name: 'a_Extrude',
127
127
  shaderLocation: _CommonStyleAttribute.ShaderLocation.EXTRUDE,
128
128
  buffer: {
129
129
  // give the WebGL driver a hint that this buffer may change
@@ -131,14 +131,33 @@ var RadarModel = exports.default = /*#__PURE__*/function (_BaseModel) {
131
131
  data: [],
132
132
  type: _l7Core.gl.FLOAT
133
133
  },
134
- size: 4,
134
+ size: 3,
135
135
  update: function update(feature, featureIdx, vertex, attributeIdx) {
136
136
  var extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];
137
137
  var extrudeIndex = attributeIdx % 4 * 3;
138
+ return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
139
+ }
140
+ }
141
+ });
142
+
143
+ // point layer size;
144
+ this.styleAttributeService.registerStyleAttribute({
145
+ name: 'size',
146
+ type: _l7Core.AttributeType.Attribute,
147
+ descriptor: {
148
+ shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
149
+ name: 'a_Size',
150
+ buffer: {
151
+ // give the WebGL driver a hint that this buffer may change
152
+ usage: _l7Core.gl.DYNAMIC_DRAW,
153
+ data: [],
154
+ type: _l7Core.gl.FLOAT
155
+ },
156
+ size: 1,
157
+ update: function update(feature) {
138
158
  var _feature$size = feature.size,
139
159
  size = _feature$size === void 0 ? 5 : _feature$size;
140
- var a_Size = Array.isArray(size) ? size[0] : size;
141
- return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2], a_Size];
160
+ return Array.isArray(size) ? [size[0]] : [size];
142
161
  }
143
162
  }
144
163
  });
@@ -31,7 +31,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
31
31
  /* babel-plugin-inline-import '../shaders/text/text_frag.glsl' */
32
32
  var textFrag = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 48.0\n\nuniform sampler2D u_sdf_map;\nlayout(std140) uniform commonUniforms {\n vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n vec2 u_sdf_map_size;\n float u_raisingHeight: 0.0;\n float u_stroke_width : 2;\n float u_gamma_scale : 0.5;\n float u_halo_blur : 0.5;\n};\n\nin vec4 v_color;\nin vec4 v_stroke_color;\nin vec2 v_uv;\nin float v_gamma_scale;\nin float v_fontScale;\nout vec4 outputColor;\n\n#pragma include \"picking\"\nvoid main() {\n // get style data mapping\n\n // get sdf from atlas\n float dist = texture(SAMPLER_2D(u_sdf_map), v_uv).a;\n\n lowp float buff = (6.0 - u_stroke_width / v_fontScale) / SDF_PX;\n highp float gamma = (u_halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (v_fontScale * u_gamma_scale) / 1.0;\n\n highp float gamma_scaled = gamma * v_gamma_scale;\n\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);\n\n outputColor = mix(v_color, v_stroke_color, smoothstep(0., 0.5, 1.- dist));\n\n outputColor.a *= alpha;\n // \u4F5C\u4E3A mask \u6A21\u677F\u65F6\u9700\u8981\u4E22\u5F03\u900F\u660E\u7684\u50CF\u7D20\n if (outputColor.a < 0.01) {\n discard;\n }\n outputColor = filterColor(outputColor);\n}\n";
33
33
  /* babel-plugin-inline-import '../shaders/text/text_vert.glsl' */
34
- var textVert = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 24.0\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 14) in vec4 a_textUvAndOffsets;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n vec2 u_sdf_map_size;\n float u_raisingHeight: 0.0;\n float u_stroke_width : 2;\n float u_gamma_scale : 0.5;\n float u_halo_blur : 0.5;\n};\n\nout vec2 v_uv;\nout float v_gamma_scale;\nout vec4 v_color;\nout vec4 v_stroke_color;\nout float v_fontScale;\n\n\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"rotation_2d\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n \n v_uv = a_textUvAndOffsets.xy / u_sdf_map_size;\n\n\n\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n v_stroke_color = vec4(u_stroke_color.xyz, u_stroke_color.w * opacity);\n\n // \u6587\u672C\u7F29\u653E\u6BD4\u4F8B\n float fontScale = a_Size / FONT_SIZE;\n v_fontScale = fontScale;\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // vec4 projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n vec2 offset = rotate_matrix(a_textUvAndOffsets.zw,rotation);\n \n // gl_Position = vec4(projected_position.xy / projected_position.w + rotation_matrix * a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n\n float raiseHeight = u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n vec4 projected_position = project_common_position_to_clipspace_v2(vec4(project_pos.xyz + vec3(0.0, 0.0, raiseHeight), 1.0));\n\n gl_Position = vec4(\n projected_position.xy / projected_position.w + offset * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n v_gamma_scale = gl_Position.w;\n setPickingColor(a_PickingColor);\n\n}\n";
34
+ var textVert = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 24.0\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 10) in vec2 a_textOffsets;\nlayout(location = 14) in vec2 a_tex;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n vec2 u_sdf_map_size;\n float u_raisingHeight: 0.0;\n float u_stroke_width : 2;\n float u_gamma_scale : 0.5;\n float u_halo_blur : 0.5;\n};\n\nout vec2 v_uv;\nout float v_gamma_scale;\nout vec4 v_color;\nout vec4 v_stroke_color;\nout float v_fontScale;\n\n\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"rotation_2d\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n \n v_uv = a_tex / u_sdf_map_size;\n\n\n\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n v_stroke_color = vec4(u_stroke_color.xyz, u_stroke_color.w * opacity);\n\n // \u6587\u672C\u7F29\u653E\u6BD4\u4F8B\n float fontScale = a_Size / FONT_SIZE;\n v_fontScale = fontScale;\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // vec4 projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n vec2 offset = rotate_matrix(a_textOffsets,rotation);\n \n // gl_Position = vec4(projected_position.xy / projected_position.w + rotation_matrix * a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n\n float raiseHeight = u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n vec4 projected_position = project_common_position_to_clipspace_v2(vec4(project_pos.xyz + vec3(0.0, 0.0, raiseHeight), 1.0));\n\n gl_Position = vec4(\n projected_position.xy / projected_position.w + offset * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n v_gamma_scale = gl_Position.w;\n setPickingColor(a_PickingColor);\n\n}\n";
35
35
  var isEqual = _l7Utils.lodashUtil.isEqual;
36
36
  function TextTrianglation(feature) {
37
37
  // @ts-ignore
@@ -263,21 +263,38 @@ var TextModel = exports.default = /*#__PURE__*/function (_BaseModel) {
263
263
  key: "registerBuiltinAttributes",
264
264
  value: function registerBuiltinAttributes() {
265
265
  this.styleAttributeService.registerStyleAttribute({
266
- name: 'textUvAndOffsets',
266
+ name: 'textOffsets',
267
267
  type: _l7Core.AttributeType.Attribute,
268
268
  descriptor: {
269
- name: 'a_textUvAndOffsets',
269
+ shaderLocation: 10,
270
+ name: 'a_textOffsets',
270
271
  // 文字偏移量
271
- shaderLocation: _CommonStyleAttribute.ShaderLocation.UV,
272
272
  buffer: {
273
273
  // give the WebGL driver a hint that this buffer may change
274
274
  usage: _l7Core.gl.STATIC_DRAW,
275
275
  data: [],
276
276
  type: _l7Core.gl.FLOAT
277
277
  },
278
- size: 4,
278
+ size: 2,
279
+ update: function update(feature, featureIdx, vertex) {
280
+ return [vertex[5], vertex[6]];
281
+ }
282
+ }
283
+ });
284
+ this.styleAttributeService.registerStyleAttribute({
285
+ name: 'textUv',
286
+ type: _l7Core.AttributeType.Attribute,
287
+ descriptor: {
288
+ name: 'a_tex',
289
+ shaderLocation: _CommonStyleAttribute.ShaderLocation.UV,
290
+ buffer: {
291
+ usage: _l7Core.gl.DYNAMIC_DRAW,
292
+ data: [],
293
+ type: _l7Core.gl.FLOAT
294
+ },
295
+ size: 2,
279
296
  update: function update(feature, featureIdx, vertex) {
280
- return [vertex[3], vertex[4], vertex[5], vertex[6]];
297
+ return [vertex[3], vertex[4]];
281
298
  }
282
299
  }
283
300
  });
@@ -1,8 +1,8 @@
1
+
1
2
  in vec4 v_color;
2
3
  in float v_lightWeight;
3
4
  out vec4 outputColor;
4
5
 
5
-
6
6
  layout(std140) uniform commonUniforms {
7
7
  float u_pickLight;
8
8
  float u_heightfixed;
@@ -1,6 +1,7 @@
1
1
  layout(location = 0) in vec3 a_Position;
2
2
  layout(location = 1) in vec4 a_Color;
3
- layout(location = 9) in vec2 a_SizeAndShape;
3
+ layout(location = 9) in float a_Size;
4
+ layout(location = 10) in float a_Shape;
4
5
  layout(location = 11) in vec3 a_Extrude;
5
6
 
6
7
  layout(std140) uniform commonUniforms {
@@ -26,12 +27,12 @@ void main() {
26
27
  // 透明度计算
27
28
  v_stroke = stroke;
28
29
  vec3 extrude = a_Extrude;
29
- float shape_type = a_SizeAndShape.y;
30
+ float shape_type = a_Shape;
30
31
  /*
31
32
  * setPickingSize 设置拾取大小
32
33
  * u_meter2coord 在等面积大小的时候设置单位
33
34
  */
34
- float newSize = setPickingSize(a_SizeAndShape.x);
35
+ float newSize = setPickingSize(a_Size);
35
36
  // float newSize = setPickingSize(a_Size) * 0.00001038445708445579;
36
37
 
37
38
 
@@ -1,6 +1,7 @@
1
1
  layout(location = 0) in vec3 a_Position;
2
2
  layout(location = 1) in vec4 a_Color;
3
- layout(location = 11) in vec4 a_ExtrudeAndSize;
3
+ layout(location = 9) in float a_Size;
4
+ layout(location = 11) in vec3 a_Extrude;
4
5
 
5
6
  layout(std140) uniform commonUniorm {
6
7
  float u_additive;
@@ -18,33 +19,32 @@ out vec2 v_extrude;
18
19
  #pragma include "picking"
19
20
 
20
21
  void main() {
21
- vec3 extrude = a_ExtrudeAndSize.xyz;
22
- float newSize = setPickingSize(a_ExtrudeAndSize.w);
22
+ float newSize = setPickingSize(a_Size);
23
23
 
24
24
  float time = u_time * u_speed;
25
25
  mat2 rotateMatrix = mat2(
26
26
  cos(time), sin(time),
27
27
  -sin(time), cos(time)
28
28
  );
29
- v_extrude = rotateMatrix * a_ExtrudeAndSize.xy;
29
+ v_extrude = rotateMatrix * a_Extrude.xy;
30
30
 
31
31
  v_color = a_Color;
32
32
  v_color.a *= opacity;
33
33
 
34
34
  float blur = 0.0;
35
- float antialiasblur = -max(2.0 / u_DevicePixelRatio / a_ExtrudeAndSize.w, blur);
35
+ float antialiasblur = -max(2.0 / u_DevicePixelRatio / a_Size, blur);
36
36
 
37
37
  if(u_size_unit == 1.) {
38
38
  newSize = newSize * u_PixelsPerMeter.z;
39
39
  }
40
40
  v_radius = newSize;
41
41
 
42
- vec2 offset = (extrude.xy * (newSize));
42
+ vec2 offset = (a_Extrude.xy * (newSize));
43
43
  vec3 aPosition = a_Position;
44
44
 
45
45
  offset = project_pixel(offset);
46
46
 
47
- v_data = vec4(extrude.x, extrude.y, antialiasblur, -1.0);
47
+ v_data = vec4(a_Extrude.x, a_Extrude.y, antialiasblur, -1.0);
48
48
 
49
49
  vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));
50
50
  gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));
@@ -5,7 +5,8 @@
5
5
  layout(location = 0) in vec3 a_Position;
6
6
  layout(location = 1) in vec4 a_Color;
7
7
  layout(location = 9) in float a_Size;
8
- layout(location = 14) in vec4 a_textUvAndOffsets;
8
+ layout(location = 10) in vec2 a_textOffsets;
9
+ layout(location = 14) in vec2 a_tex;
9
10
 
10
11
  layout(std140) uniform commonUniforms {
11
12
  vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];
@@ -31,7 +32,7 @@ out float v_fontScale;
31
32
  void main() {
32
33
  // cal style mapping - 数据纹理映射部分的计算
33
34
 
34
- v_uv = a_textUvAndOffsets.xy / u_sdf_map_size;
35
+ v_uv = a_tex / u_sdf_map_size;
35
36
 
36
37
 
37
38
 
@@ -45,7 +46,7 @@ void main() {
45
46
  vec4 project_pos = project_position(vec4(a_Position, 1.0));
46
47
  // vec4 projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));
47
48
 
48
- vec2 offset = rotate_matrix(a_textUvAndOffsets.zw,rotation);
49
+ vec2 offset = rotate_matrix(a_textOffsets,rotation);
49
50
 
50
51
  // gl_Position = vec4(projected_position.xy / projected_position.w + rotation_matrix * a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);
51
52
 
@@ -72,10 +72,12 @@ var RaterLayer = exports.default = /*#__PURE__*/function (_BaseLayer) {
72
72
  // 根据 source 的类型判断 model type
73
73
  var parserType = this.layerSource.getParserType();
74
74
  switch (parserType) {
75
- case 'raster':
75
+ case 'raster' || 'ndi':
76
76
  return 'raster';
77
77
  case 'rasterRgb':
78
78
  return 'rasterRgb';
79
+ case 'rgb':
80
+ return 'rasterRgb';
79
81
  case 'image':
80
82
  return 'rasterTerrainRgb';
81
83
  default:
@@ -132,13 +132,13 @@ var RasterModel = exports.default = /*#__PURE__*/function (_BaseModel) {
132
132
  key: "buildModels",
133
133
  value: function () {
134
134
  var _buildModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
135
- var source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, model;
135
+ var source, _this$rendererService, createTexture2D, queryVerdorInfo, parserDataItem, _yield$this$getRaster, data, width, height, model;
136
136
  return _regenerator.default.wrap(function _callee3$(_context3) {
137
137
  while (1) switch (_context3.prev = _context3.next) {
138
138
  case 0:
139
139
  this.initUniformsBuffer();
140
140
  source = this.layer.getSource();
141
- createTexture2D = this.rendererService.createTexture2D;
141
+ _this$rendererService = this.rendererService, createTexture2D = _this$rendererService.createTexture2D, queryVerdorInfo = _this$rendererService.queryVerdorInfo;
142
142
  parserDataItem = source.data.dataArray[0];
143
143
  _context3.next = 6;
144
144
  return this.getRasterData(parserDataItem);
@@ -148,13 +148,16 @@ var RasterModel = exports.default = /*#__PURE__*/function (_BaseModel) {
148
148
  width = _yield$this$getRaster.width;
149
149
  height = _yield$this$getRaster.height;
150
150
  this.texture = createTexture2D({
151
- data: data,
151
+ // @ts-ignore
152
+ data: new Float32Array(data),
152
153
  width: width,
153
154
  height: height,
154
- format: _l7Core.gl.LUMINANCE,
155
+ /**
156
+ * WebGL1 allow the combination of gl.LUMINANCE & gl.FLOAT with OES_texture_float
157
+ */
158
+ format: queryVerdorInfo() === 'WebGL1' ? _l7Core.gl.LUMINANCE : _l7Core.gl.RED,
155
159
  type: _l7Core.gl.FLOAT,
156
160
  alignment: 1
157
- // aniso: 4,
158
161
  });
159
162
  _context3.next = 13;
160
163
  return this.layer.buildLayerModel({