@antv/l7-layers 2.21.10 → 2.21.11-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/citybuliding/models/build.d.ts +16 -0
- package/es/citybuliding/models/build.js +18 -20
- package/es/citybuliding/shaders/build_frag.glsl +6 -6
- package/es/citybuliding/shaders/build_vert.glsl +8 -14
- package/es/core/BaseLayer.d.ts +0 -1
- package/es/core/BaseLayer.js +9 -19
- package/es/core/BaseModel.d.ts +15 -2
- package/es/core/BaseModel.js +98 -64
- package/es/core/CommonStyleAttribute.d.ts +14 -18
- package/es/core/CommonStyleAttribute.js +23 -67
- package/es/core/shape/extrude.js +6 -3
- package/es/core/triangulation.js +22 -50
- package/es/core/utils.d.ts +4 -0
- package/es/core/utils.js +33 -0
- package/es/earth/models/atmosphere.d.ts +15 -0
- package/es/earth/models/atmosphere.js +30 -24
- package/es/earth/models/base.d.ts +15 -0
- package/es/earth/models/base.js +30 -24
- package/es/earth/models/bloomsphere.d.ts +15 -0
- package/es/earth/models/bloomsphere.js +30 -24
- package/es/earth/shaders/atmosphere/atmosphere_vert.glsl +7 -5
- package/es/earth/shaders/base/base_vert.glsl +3 -3
- package/es/earth/shaders/bloomshpere/bloomsphere_vert.glsl +5 -4
- package/es/geometry/models/billboard.d.ts +15 -0
- package/es/geometry/models/billboard.js +14 -8
- package/es/geometry/models/plane.d.ts +14 -0
- package/es/geometry/models/plane.js +10 -10
- package/es/geometry/models/sprite.js +3 -9
- package/es/geometry/shaders/billboard_vert.glsl +28 -25
- package/es/geometry/shaders/plane_vert.glsl +6 -6
- package/es/geometry/shaders/sprite_vert.glsl +7 -9
- package/es/heatmap/models/grid.d.ts +14 -0
- package/es/heatmap/models/grid.js +10 -3
- package/es/heatmap/models/grid3d.d.ts +16 -0
- package/es/heatmap/models/grid3d.js +14 -6
- package/es/heatmap/models/heatmap.d.ts +20 -1
- package/es/heatmap/models/heatmap.js +96 -83
- package/es/heatmap/models/hexagon.d.ts +14 -0
- package/es/heatmap/models/hexagon.js +9 -3
- package/es/heatmap/shaders/grid/grid_vert.glsl +30 -42
- package/es/heatmap/shaders/grid3d/grid_3d_vert.glsl +14 -26
- package/es/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +19 -16
- package/es/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +16 -22
- package/es/heatmap/shaders/heatmap/heatmap_vert.glsl +3 -4
- package/es/heatmap/shaders/hexagon/hexagon_vert.glsl +13 -23
- package/es/image/models/image.d.ts +14 -0
- package/es/image/models/image.js +11 -7
- package/es/image/shaders/image_vert.glsl +7 -6
- package/es/line/models/arc.d.ts +18 -0
- package/es/line/models/arc.js +57 -8
- package/es/line/models/arc_3d.d.ts +18 -0
- package/es/line/models/arc_3d.js +55 -7
- package/es/line/models/flow.d.ts +17 -0
- package/es/line/models/flow.js +35 -7
- package/es/line/models/great_circle.d.ts +17 -0
- package/es/line/models/great_circle.js +34 -6
- package/es/line/models/line.d.ts +17 -0
- package/es/line/models/line.js +17 -8
- package/es/line/models/simple_line.d.ts +14 -0
- package/es/line/models/simple_line.js +12 -47
- package/es/line/models/wall.d.ts +17 -0
- package/es/line/models/wall.js +22 -48
- package/es/line/shaders/arc/line_arc_vert.glsl +44 -52
- package/es/line/shaders/arc3d/line_arc_3d_vert.glsl +15 -20
- package/es/line/shaders/flow/flow_line_vert.glsl +30 -48
- package/es/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +53 -74
- package/es/line/shaders/line/line_vert.glsl +31 -48
- package/es/line/shaders/simple/simpleline_vert.glsl +18 -23
- package/es/line/shaders/wall/wall_vert.glsl +36 -45
- package/es/mask/models/fill.js +2 -1
- package/es/mask/shaders/mask_vert.glsl +2 -7
- package/es/plugins/DataMappingPlugin.d.ts +0 -1
- package/es/plugins/DataMappingPlugin.js +1 -24
- package/es/plugins/PixelPickingPlugin.js +2 -2
- package/es/plugins/RegisterStyleAttributePlugin.d.ts +0 -1
- package/es/plugins/RegisterStyleAttributePlugin.js +3 -25
- package/es/plugins/ShaderUniformPlugin.d.ts +0 -5
- package/es/plugins/ShaderUniformPlugin.js +4 -35
- package/es/point/models/billboard_point.d.ts +14 -0
- package/es/point/models/billboard_point.js +11 -3
- package/es/point/models/earthExtrude.d.ts +16 -0
- package/es/point/models/earthExtrude.js +15 -8
- package/es/point/models/earthFill.d.ts +16 -0
- package/es/point/models/earthFill.js +13 -5
- package/es/point/models/extrude.d.ts +16 -0
- package/es/point/models/extrude.js +19 -12
- package/es/point/models/fill.d.ts +16 -0
- package/es/point/models/fill.js +16 -5
- package/es/point/models/fillImage.d.ts +16 -0
- package/es/point/models/fillImage.js +16 -16
- package/es/point/models/image.d.ts +15 -0
- package/es/point/models/image.js +14 -4
- package/es/point/models/normal.d.ts +14 -0
- package/es/point/models/normal.js +11 -3
- package/es/point/models/radar.d.ts +15 -0
- package/es/point/models/radar.js +13 -4
- package/es/point/models/text.d.ts +16 -0
- package/es/point/models/text.js +18 -11
- package/es/point/shaders/billboard/billboard_point_vert.glsl +10 -13
- package/es/point/shaders/earthExtrude/earthExtrude_vert.glsl +15 -25
- package/es/point/shaders/earthFill/earthFill_vert.glsl +6 -6
- package/es/point/shaders/extrude/extrude_vert.glsl +35 -39
- package/es/point/shaders/fill/fill_vert.glsl +12 -14
- package/es/point/shaders/fillImage/fillImage_vert.glsl +16 -28
- package/es/point/shaders/image/image_vert.glsl +15 -12
- package/es/point/shaders/normal/normal_vert.glsl +7 -10
- package/es/point/shaders/radar/radar_vert.glsl +11 -11
- package/es/point/shaders/text/text_vert.glsl +10 -9
- package/es/polygon/models/extrude.d.ts +16 -0
- package/es/polygon/models/extrude.js +26 -26
- package/es/polygon/models/extrusion.d.ts +16 -0
- package/es/polygon/models/extrusion.js +34 -4
- package/es/polygon/models/fill.d.ts +14 -0
- package/es/polygon/models/fill.js +12 -4
- package/es/polygon/models/ocean.d.ts +14 -0
- package/es/polygon/models/ocean.js +11 -6
- package/es/polygon/models/water.d.ts +14 -0
- package/es/polygon/models/water.js +11 -6
- package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +17 -15
- package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +22 -20
- package/es/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +17 -17
- package/es/polygon/shaders/extrusion/polygon_extrusion_vert.glsl +8 -8
- package/es/polygon/shaders/fill/fill_linear_vert.glsl +7 -6
- package/es/polygon/shaders/fill/fill_vert.glsl +10 -12
- package/es/polygon/shaders/ocean/ocean_vert.glsl +3 -4
- package/es/polygon/shaders/water/polygon_water_vert.glsl +5 -5
- package/es/raster/index.d.ts +1 -1
- package/es/raster/index.js +1 -1
- package/es/raster/models/raster.d.ts +14 -0
- package/es/raster/models/raster.js +13 -3
- package/es/raster/models/rasterRgb.d.ts +14 -0
- package/es/raster/models/rasterRgb.js +12 -3
- package/es/raster/models/rasterTerrainRgb.d.ts +14 -0
- package/es/raster/models/rasterTerrainRgb.js +11 -3
- package/es/raster/shaders/raster/raster_2d_vert.glsl +6 -6
- package/es/raster/shaders/rgb/raster_rgb_vert.glsl +11 -11
- package/es/raster/shaders/terrain/terrain_rgb_vert.glsl +11 -11
- package/es/tile/core/BaseLayer.js +0 -16
- package/es/utils/extrude_polyline.d.ts +0 -15
- package/es/utils/extrude_polyline.js +0 -217
- package/es/wind/models/wind.d.ts +14 -0
- package/es/wind/models/wind.js +9 -1
- package/es/wind/shaders/wind_vert.glsl +6 -5
- package/lib/citybuliding/models/build.d.ts +16 -0
- package/lib/citybuliding/models/build.js +18 -20
- package/lib/citybuliding/shaders/build_frag.glsl +6 -6
- package/lib/citybuliding/shaders/build_vert.glsl +8 -14
- package/lib/core/BaseLayer.d.ts +0 -1
- package/lib/core/BaseLayer.js +9 -19
- package/lib/core/BaseModel.d.ts +15 -2
- package/lib/core/BaseModel.js +96 -62
- package/lib/core/CommonStyleAttribute.d.ts +14 -18
- package/lib/core/CommonStyleAttribute.js +23 -68
- package/lib/core/shape/extrude.js +6 -3
- package/lib/core/triangulation.js +22 -50
- package/lib/core/utils.d.ts +4 -0
- package/lib/core/utils.js +35 -0
- package/lib/earth/models/atmosphere.d.ts +15 -0
- package/lib/earth/models/atmosphere.js +30 -24
- package/lib/earth/models/base.d.ts +15 -0
- package/lib/earth/models/base.js +30 -24
- package/lib/earth/models/bloomsphere.d.ts +15 -0
- package/lib/earth/models/bloomsphere.js +30 -24
- package/lib/earth/shaders/atmosphere/atmosphere_vert.glsl +7 -5
- package/lib/earth/shaders/base/base_vert.glsl +3 -3
- package/lib/earth/shaders/bloomshpere/bloomsphere_vert.glsl +5 -4
- package/lib/geometry/models/billboard.d.ts +15 -0
- package/lib/geometry/models/billboard.js +14 -8
- package/lib/geometry/models/plane.d.ts +14 -0
- package/lib/geometry/models/plane.js +10 -10
- package/lib/geometry/models/sprite.js +3 -9
- package/lib/geometry/shaders/billboard_vert.glsl +28 -25
- package/lib/geometry/shaders/plane_vert.glsl +6 -6
- package/lib/geometry/shaders/sprite_vert.glsl +7 -9
- package/lib/heatmap/models/grid.d.ts +14 -0
- package/lib/heatmap/models/grid.js +10 -3
- package/lib/heatmap/models/grid3d.d.ts +16 -0
- package/lib/heatmap/models/grid3d.js +14 -6
- package/lib/heatmap/models/heatmap.d.ts +20 -1
- package/lib/heatmap/models/heatmap.js +95 -82
- package/lib/heatmap/models/hexagon.d.ts +14 -0
- package/lib/heatmap/models/hexagon.js +9 -3
- package/lib/heatmap/shaders/grid/grid_vert.glsl +30 -42
- package/lib/heatmap/shaders/grid3d/grid_3d_vert.glsl +14 -26
- package/lib/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +19 -16
- package/lib/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +16 -22
- package/lib/heatmap/shaders/heatmap/heatmap_vert.glsl +3 -4
- package/lib/heatmap/shaders/hexagon/hexagon_vert.glsl +13 -23
- package/lib/image/models/image.d.ts +14 -0
- package/lib/image/models/image.js +11 -7
- package/lib/image/shaders/image_vert.glsl +7 -6
- package/lib/line/models/arc.d.ts +18 -0
- package/lib/line/models/arc.js +56 -7
- package/lib/line/models/arc_3d.d.ts +18 -0
- package/lib/line/models/arc_3d.js +55 -7
- package/lib/line/models/flow.d.ts +17 -0
- package/lib/line/models/flow.js +35 -7
- package/lib/line/models/great_circle.d.ts +17 -0
- package/lib/line/models/great_circle.js +33 -5
- package/lib/line/models/line.d.ts +17 -0
- package/lib/line/models/line.js +17 -8
- package/lib/line/models/simple_line.d.ts +14 -0
- package/lib/line/models/simple_line.js +12 -47
- package/lib/line/models/wall.d.ts +17 -0
- package/lib/line/models/wall.js +22 -48
- package/lib/line/shaders/arc/line_arc_vert.glsl +44 -52
- package/lib/line/shaders/arc3d/line_arc_3d_vert.glsl +15 -20
- package/lib/line/shaders/flow/flow_line_vert.glsl +30 -48
- package/lib/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +53 -74
- package/lib/line/shaders/line/line_vert.glsl +31 -48
- package/lib/line/shaders/simple/simpleline_vert.glsl +18 -23
- package/lib/line/shaders/wall/wall_vert.glsl +36 -45
- package/lib/mask/models/fill.js +2 -1
- package/lib/mask/shaders/mask_vert.glsl +2 -7
- package/lib/plugins/DataMappingPlugin.d.ts +0 -1
- package/lib/plugins/DataMappingPlugin.js +0 -23
- package/lib/plugins/PixelPickingPlugin.js +1 -1
- package/lib/plugins/RegisterStyleAttributePlugin.d.ts +0 -1
- package/lib/plugins/RegisterStyleAttributePlugin.js +2 -24
- package/lib/plugins/ShaderUniformPlugin.d.ts +0 -5
- package/lib/plugins/ShaderUniformPlugin.js +4 -35
- package/lib/point/models/billboard_point.d.ts +14 -0
- package/lib/point/models/billboard_point.js +11 -3
- package/lib/point/models/earthExtrude.d.ts +16 -0
- package/lib/point/models/earthExtrude.js +14 -7
- package/lib/point/models/earthFill.d.ts +16 -0
- package/lib/point/models/earthFill.js +13 -5
- package/lib/point/models/extrude.d.ts +16 -0
- package/lib/point/models/extrude.js +18 -11
- package/lib/point/models/fill.d.ts +16 -0
- package/lib/point/models/fill.js +16 -5
- package/lib/point/models/fillImage.d.ts +16 -0
- package/lib/point/models/fillImage.js +16 -16
- package/lib/point/models/image.d.ts +15 -0
- package/lib/point/models/image.js +14 -4
- package/lib/point/models/normal.d.ts +14 -0
- package/lib/point/models/normal.js +11 -3
- package/lib/point/models/radar.d.ts +15 -0
- package/lib/point/models/radar.js +13 -4
- package/lib/point/models/text.d.ts +16 -0
- package/lib/point/models/text.js +18 -11
- package/lib/point/shaders/billboard/billboard_point_vert.glsl +10 -13
- package/lib/point/shaders/earthExtrude/earthExtrude_vert.glsl +15 -25
- package/lib/point/shaders/earthFill/earthFill_vert.glsl +6 -6
- package/lib/point/shaders/extrude/extrude_vert.glsl +35 -39
- package/lib/point/shaders/fill/fill_vert.glsl +12 -14
- package/lib/point/shaders/fillImage/fillImage_vert.glsl +16 -28
- package/lib/point/shaders/image/image_vert.glsl +15 -12
- package/lib/point/shaders/normal/normal_vert.glsl +7 -10
- package/lib/point/shaders/radar/radar_vert.glsl +11 -11
- package/lib/point/shaders/text/text_vert.glsl +10 -9
- package/lib/polygon/models/extrude.d.ts +16 -0
- package/lib/polygon/models/extrude.js +25 -25
- package/lib/polygon/models/extrusion.d.ts +16 -0
- package/lib/polygon/models/extrusion.js +34 -4
- package/lib/polygon/models/fill.d.ts +14 -0
- package/lib/polygon/models/fill.js +12 -4
- package/lib/polygon/models/ocean.d.ts +14 -0
- package/lib/polygon/models/ocean.js +11 -6
- package/lib/polygon/models/water.d.ts +14 -0
- package/lib/polygon/models/water.js +11 -6
- package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +17 -15
- package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +22 -20
- package/lib/polygon/shaders/extrude/polygon_extrudetex_vert.glsl +17 -17
- package/lib/polygon/shaders/extrusion/polygon_extrusion_vert.glsl +8 -8
- package/lib/polygon/shaders/fill/fill_linear_vert.glsl +7 -6
- package/lib/polygon/shaders/fill/fill_vert.glsl +10 -12
- package/lib/polygon/shaders/ocean/ocean_vert.glsl +3 -4
- package/lib/polygon/shaders/water/polygon_water_vert.glsl +5 -5
- package/lib/raster/index.d.ts +1 -1
- package/lib/raster/index.js +2 -2
- package/lib/raster/models/raster.d.ts +14 -0
- package/lib/raster/models/raster.js +13 -3
- package/lib/raster/models/rasterRgb.d.ts +14 -0
- package/lib/raster/models/rasterRgb.js +12 -3
- package/lib/raster/models/rasterTerrainRgb.d.ts +14 -0
- package/lib/raster/models/rasterTerrainRgb.js +11 -3
- package/lib/raster/shaders/raster/raster_2d_vert.glsl +6 -6
- package/lib/raster/shaders/rgb/raster_rgb_vert.glsl +11 -11
- package/lib/raster/shaders/terrain/terrain_rgb_vert.glsl +11 -11
- package/lib/tile/core/BaseLayer.js +0 -16
- package/lib/utils/extrude_polyline.d.ts +0 -15
- package/lib/utils/extrude_polyline.js +0 -217
- package/lib/wind/models/wind.d.ts +14 -0
- package/lib/wind/models/wind.js +9 -1
- package/lib/wind/shaders/wind_vert.glsl +6 -5
- package/package.json +6 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
layout(location =
|
|
1
|
+
layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;
|
|
2
2
|
|
|
3
3
|
layout(std140) uniform commonUniorm {
|
|
4
4
|
vec4 u_color;
|
|
@@ -9,11 +9,6 @@ layout(std140) uniform commonUniorm {
|
|
|
9
9
|
|
|
10
10
|
void main() {
|
|
11
11
|
vec4 project_pos = project_position(vec4(a_Position, 1.0));
|
|
12
|
-
|
|
13
|
-
if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x
|
|
14
|
-
gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));
|
|
15
|
-
} else {
|
|
16
|
-
gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));
|
|
17
|
-
}
|
|
12
|
+
gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));
|
|
18
13
|
}
|
|
19
14
|
|
|
@@ -5,7 +5,6 @@ export default class DataMappingPlugin implements ILayerPlugin {
|
|
|
5
5
|
apply(layer: ILayer, { styleAttributeService, mapService, fontService }: L7Container): void;
|
|
6
6
|
private generateMaping;
|
|
7
7
|
private mapping;
|
|
8
|
-
private adjustData2Amap2Coordinates;
|
|
9
8
|
private adjustData2SimpleCoordinates;
|
|
10
9
|
private unProjectCoordinates;
|
|
11
10
|
private applyAttributeMapping;
|
|
@@ -10,9 +10,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
var _l7Core = require("@antv/l7-core");
|
|
12
12
|
var _l7Utils = require("@antv/l7-utils");
|
|
13
|
-
const {
|
|
14
|
-
cloneDeep
|
|
15
|
-
} = _l7Utils.lodashUtil;
|
|
16
13
|
class DataMappingPlugin {
|
|
17
14
|
constructor() {
|
|
18
15
|
(0, _defineProperty2.default)(this, "mapService", void 0);
|
|
@@ -143,31 +140,11 @@ class DataMappingPlugin {
|
|
|
143
140
|
attributes.forEach(attribute => {
|
|
144
141
|
attribute.needRemapping = false;
|
|
145
142
|
});
|
|
146
|
-
// 调整数据兼容 Amap2.0
|
|
147
|
-
this.adjustData2Amap2Coordinates(mappedData, layer);
|
|
148
143
|
|
|
149
144
|
// 调整数据兼容 SimpleCoordinates
|
|
150
145
|
this.adjustData2SimpleCoordinates(mappedData);
|
|
151
146
|
return mappedData;
|
|
152
147
|
}
|
|
153
|
-
adjustData2Amap2Coordinates(mappedData, layer) {
|
|
154
|
-
// 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移
|
|
155
|
-
if (mappedData.length > 0 && this.mapService.version === 'GAODE2.x') {
|
|
156
|
-
const layerCenter = layer.coordCenter || layer.getSource().center;
|
|
157
|
-
// 单个的点数据
|
|
158
|
-
// @ts-ignore
|
|
159
|
-
mappedData
|
|
160
|
-
// TODO: 避免经纬度被重复计算导致坐标位置偏移
|
|
161
|
-
.filter(d => !d.originCoordinates).map(d => {
|
|
162
|
-
d.version = 'GAODE2.x';
|
|
163
|
-
// @ts-ignore
|
|
164
|
-
d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)
|
|
165
|
-
// @ts-ignore
|
|
166
|
-
// d.coordinates = this.mapService.lngLatToCoord(d.coordinates);
|
|
167
|
-
d.coordinates = this.mapService.coordToAMap2RelativeCoordinates(d.coordinates, layerCenter);
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
148
|
adjustData2SimpleCoordinates(mappedData) {
|
|
172
149
|
if (mappedData.length > 0 && this.mapService.version === 'SIMPLE') {
|
|
173
150
|
mappedData.map(d => {
|
|
@@ -66,7 +66,7 @@ class PixelPickingPlugin {
|
|
|
66
66
|
type: _l7Core.AttributeType.Attribute,
|
|
67
67
|
descriptor: {
|
|
68
68
|
name: 'a_PickingColor',
|
|
69
|
-
shaderLocation: _CommonStyleAttribute.
|
|
69
|
+
shaderLocation: _CommonStyleAttribute.COMMON_ATTRIBUTE_LOCATION.PICKING_COLOR,
|
|
70
70
|
buffer: {
|
|
71
71
|
data: [],
|
|
72
72
|
type: _l7Core.gl.FLOAT
|
|
@@ -32,7 +32,6 @@ class RegisterStyleAttributePlugin {
|
|
|
32
32
|
this.registerPositionAttribute(styleAttributeService);
|
|
33
33
|
// this.registerFilterAttribute(styleAttributeService);//数据层数据过滤
|
|
34
34
|
this.registerColorAttribute(styleAttributeService);
|
|
35
|
-
this.registerVertexIdAttribute(styleAttributeService);
|
|
36
35
|
}
|
|
37
36
|
registerPositionAttribute(styleAttributeService) {
|
|
38
37
|
styleAttributeService.registerStyleAttribute({
|
|
@@ -40,7 +39,7 @@ class RegisterStyleAttributePlugin {
|
|
|
40
39
|
type: _l7Core.AttributeType.Attribute,
|
|
41
40
|
descriptor: {
|
|
42
41
|
name: 'a_Position',
|
|
43
|
-
shaderLocation: _CommonStyleAttribute.
|
|
42
|
+
shaderLocation: _CommonStyleAttribute.COMMON_ATTRIBUTE_LOCATION.POSITION,
|
|
44
43
|
buffer: {
|
|
45
44
|
data: [],
|
|
46
45
|
type: _l7Core.gl.FLOAT
|
|
@@ -58,7 +57,7 @@ class RegisterStyleAttributePlugin {
|
|
|
58
57
|
type: _l7Core.AttributeType.Attribute,
|
|
59
58
|
descriptor: {
|
|
60
59
|
name: 'a_Color',
|
|
61
|
-
shaderLocation: _CommonStyleAttribute.
|
|
60
|
+
shaderLocation: _CommonStyleAttribute.COMMON_ATTRIBUTE_LOCATION.COLOR,
|
|
62
61
|
buffer: {
|
|
63
62
|
// give the WebGL driver a hint that this buffer may change
|
|
64
63
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -75,26 +74,5 @@ class RegisterStyleAttributePlugin {
|
|
|
75
74
|
}
|
|
76
75
|
});
|
|
77
76
|
}
|
|
78
|
-
registerVertexIdAttribute(styleAttributeService) {
|
|
79
|
-
styleAttributeService.registerStyleAttribute({
|
|
80
|
-
// 统一注册每个顶点的唯一编号(目前用于样式的数据映射计算使用)
|
|
81
|
-
name: 'vertexId',
|
|
82
|
-
type: _l7Core.AttributeType.Attribute,
|
|
83
|
-
descriptor: {
|
|
84
|
-
name: 'a_vertexId',
|
|
85
|
-
shaderLocation: _CommonStyleAttribute.ShaderLocation.VERTEX_ID,
|
|
86
|
-
buffer: {
|
|
87
|
-
// give the WebGL driver a hint that this buffer may change
|
|
88
|
-
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
89
|
-
data: [],
|
|
90
|
-
type: _l7Core.gl.FLOAT
|
|
91
|
-
},
|
|
92
|
-
size: 1,
|
|
93
|
-
update: (feature, featureIdx) => {
|
|
94
|
-
return [featureIdx];
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
77
|
}
|
|
100
78
|
exports.default = RegisterStyleAttributePlugin;
|
|
@@ -13,10 +13,5 @@ export default class ShaderUniformPlugin implements ILayerPlugin {
|
|
|
13
13
|
private mapService;
|
|
14
14
|
private layerService;
|
|
15
15
|
apply(layer: ILayer, { rendererService, mapService, layerService, coordinateSystemService, cameraService, }: L7Container): void;
|
|
16
|
-
/**
|
|
17
|
-
* 对于每个 layer 都有不同的几何中心点,因此在绘制每个 layer 的时候都需要重新设置
|
|
18
|
-
* @param layer
|
|
19
|
-
*/
|
|
20
|
-
private setLayerCenter;
|
|
21
16
|
private generateUBO;
|
|
22
17
|
}
|
|
@@ -35,15 +35,13 @@ class ShaderUniformPlugin {
|
|
|
35
35
|
this.layerService = layerService;
|
|
36
36
|
this.coordinateSystemService = coordinateSystemService;
|
|
37
37
|
this.cameraService = cameraService;
|
|
38
|
-
const version = this.mapService.version;
|
|
39
|
-
let mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; // default matrix (for gaode2.x)
|
|
40
|
-
let sceneCenterMercator = [0, 0];
|
|
41
38
|
let uniformBuffer;
|
|
42
39
|
if (!this.rendererService.uniformBuffers[0]) {
|
|
43
40
|
// Create a Uniform Buffer Object(UBO).
|
|
44
41
|
uniformBuffer = this.rendererService.createBuffer({
|
|
45
42
|
data: new Float32Array(16 * 4 + 4 * 7),
|
|
46
|
-
isUBO: true
|
|
43
|
+
isUBO: true,
|
|
44
|
+
label: 'renderUniformBuffer'
|
|
47
45
|
});
|
|
48
46
|
this.rendererService.uniformBuffers[0] = uniformBuffer;
|
|
49
47
|
}
|
|
@@ -52,19 +50,6 @@ class ShaderUniformPlugin {
|
|
|
52
50
|
const offset = layer.getLayerConfig().tileOrigin;
|
|
53
51
|
// 重新计算坐标系参数
|
|
54
52
|
this.coordinateSystemService.refresh(offset);
|
|
55
|
-
if (version === 'GAODE2.x') {
|
|
56
|
-
this.setLayerCenter(layer);
|
|
57
|
-
// @ts-ignore
|
|
58
|
-
mvp = this.mapService.map.customCoords.getMVPMatrix();
|
|
59
|
-
// mvp = amapCustomCoords.getMVPMatrix()
|
|
60
|
-
// @ts-ignore
|
|
61
|
-
sceneCenterMercator = this.mapService.getCustomCoordCenter();
|
|
62
|
-
const uniformBuffer = layer.getLayerUniformBuffer();
|
|
63
|
-
uniformBuffer.subData({
|
|
64
|
-
offset: 0,
|
|
65
|
-
data: new Uint8Array(new Float32Array([...mvp, ...sceneCenterMercator]).buffer)
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
53
|
const {
|
|
69
54
|
width,
|
|
70
55
|
height
|
|
@@ -72,7 +57,7 @@ class ShaderUniformPlugin {
|
|
|
72
57
|
const {
|
|
73
58
|
data,
|
|
74
59
|
uniforms
|
|
75
|
-
} = this.generateUBO(
|
|
60
|
+
} = this.generateUBO(width, height);
|
|
76
61
|
if (this.layerService.alreadyInRendering && this.rendererService.uniformBuffers[0]) {
|
|
77
62
|
const renderUniformBuffer = this.rendererService.uniformBuffers[0];
|
|
78
63
|
// Update only once since all models can share one UBO.
|
|
@@ -96,20 +81,7 @@ class ShaderUniformPlugin {
|
|
|
96
81
|
}
|
|
97
82
|
});
|
|
98
83
|
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* 对于每个 layer 都有不同的几何中心点,因此在绘制每个 layer 的时候都需要重新设置
|
|
102
|
-
* @param layer
|
|
103
|
-
*/
|
|
104
|
-
setLayerCenter(layer) {
|
|
105
|
-
if (layer.coordCenter === undefined) {
|
|
106
|
-
layer.coordCenter = layer.getSource().center;
|
|
107
|
-
}
|
|
108
|
-
if (this.mapService.setCoordCenter) {
|
|
109
|
-
this.mapService.setCoordCenter(layer.coordCenter);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
generateUBO(u_Mvp, sceneCenterMercator, width, height) {
|
|
84
|
+
generateUBO(width, height) {
|
|
113
85
|
const u_ProjectionMatrix = this.cameraService.getProjectionMatrix();
|
|
114
86
|
const u_ViewMatrix = this.cameraService.getViewMatrix();
|
|
115
87
|
const u_ViewProjectionMatrix = this.cameraService.getViewProjectionMatrix();
|
|
@@ -169,9 +141,6 @@ class ShaderUniformPlugin {
|
|
|
169
141
|
[_l7Core.CoordinateUniform.PixelsPerDegree]: u_PixelsPerDegree,
|
|
170
142
|
[_l7Core.CoordinateUniform.PixelsPerDegree2]: u_PixelsPerDegree2,
|
|
171
143
|
[_l7Core.CoordinateUniform.PixelsPerMeter]: u_PixelsPerMeter,
|
|
172
|
-
// 坐标系是高德2.0的时候单独计算
|
|
173
|
-
[_l7Core.CoordinateUniform.Mvp]: u_Mvp,
|
|
174
|
-
u_sceneCenterMercator: sceneCenterMercator,
|
|
175
144
|
// 其他参数,例如视口大小、DPR 等
|
|
176
145
|
u_ViewportSize: u_ViewportSize,
|
|
177
146
|
u_ModelMatrix,
|
|
@@ -7,6 +7,20 @@ export declare function PointTriangulation(feature: IEncodeFeature): {
|
|
|
7
7
|
size: number;
|
|
8
8
|
};
|
|
9
9
|
export default class SimplePointModel extends BaseModel {
|
|
10
|
+
protected get attributeLocation(): {
|
|
11
|
+
readonly POSITION: 0;
|
|
12
|
+
readonly POSITION_64LOW: 1;
|
|
13
|
+
readonly COLOR: 2;
|
|
14
|
+
readonly PICKING_COLOR: 3;
|
|
15
|
+
readonly STROKE: 4;
|
|
16
|
+
readonly OPACITY: 5;
|
|
17
|
+
readonly OFFSETS: 6;
|
|
18
|
+
readonly ROTATION: 7;
|
|
19
|
+
readonly MAX: 8;
|
|
20
|
+
} & Record<string, number> & {
|
|
21
|
+
MAX: 8;
|
|
22
|
+
SIZE: number;
|
|
23
|
+
};
|
|
10
24
|
getDefaultStyle(): Partial<IPointLayerStyleOptions>;
|
|
11
25
|
protected getCommonUniformsInfo(): {
|
|
12
26
|
uniformsArray: number[];
|
|
@@ -10,11 +10,10 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
10
10
|
var _l7Core = require("@antv/l7-core");
|
|
11
11
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
12
12
|
var _l7Utils = require("@antv/l7-utils");
|
|
13
|
-
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
14
13
|
/* babel-plugin-inline-import '../shaders/billboard/billboard_point_frag.glsl' */
|
|
15
14
|
const simplePointFrag = "\nlayout(std140) uniform commonUniorm {\n vec4 u_stroke_color;\n float u_additive;\n float u_stroke_opacity;\n float u_stroke_width;\n};\n\nin vec4 v_color;\nin float v_blur;\nin float v_innerRadius;\n\nout vec4 outputColor;\n\n#pragma include \"picking\"\nvoid main() {\n vec2 center = vec2(0.5);\n\n // Tip: \u7247\u5143\u5230\u4E2D\u5FC3\u70B9\u7684\u8DDD\u79BB 0 - 1\n float fragmengTocenter = distance(center, gl_PointCoord) * 2.0;\n // Tip: \u7247\u5143\u7684\u526A\u5207\u6210\u5706\u5F62\n float circleClipOpacity = 1.0 - smoothstep(v_blur, 1.0, fragmengTocenter);\n\n\n if(v_innerRadius < 0.99) {\n // \u5F53\u5B58\u5728 stroke \u4E14 stroke > 0.01\n float blurWidth = (1.0 - v_blur)/2.0;\n vec4 stroke = vec4(u_stroke_color.rgb, u_stroke_opacity);\n if(fragmengTocenter > v_innerRadius + blurWidth) {\n outputColor = stroke;\n } else if(fragmengTocenter > v_innerRadius - blurWidth){\n float mixR = (fragmengTocenter - (v_innerRadius - blurWidth)) / (blurWidth * 2.0);\n outputColor = mix(v_color, stroke, mixR);\n } else {\n outputColor = v_color;\n }\n } else {\n // \u5F53\u4E0D\u5B58\u5728 stroke \u6216 stroke <= 0.01\n outputColor = v_color;\n }\n\n outputColor = filterColor(outputColor);\n \n if(u_additive > 0.0) {\n outputColor *= circleClipOpacity;\n } else {\n outputColor.a *= circleClipOpacity;\n }\n\n}\n";
|
|
16
15
|
/* babel-plugin-inline-import '../shaders/billboard/billboard_point_vert.glsl' */
|
|
17
|
-
const simplePointVert = "\nlayout(location =
|
|
16
|
+
const simplePointVert = "\nlayout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_POSITION_64LOW) in vec2 a_Position64Low;\nlayout(location = ATTRIBUTE_LOCATION_COLOR) in vec4 a_Color;\nlayout(location = ATTRIBUTE_LOCATION_SIZE) in float a_Size;\n\nlayout(std140) uniform commonUniorm {\n vec4 u_stroke_color;\n float u_additive;\n float u_stroke_opacity;\n float u_stroke_width;\n};\n\nout vec4 v_color;\nout float v_blur;\nout float v_innerRadius;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"project\"\nvoid main() {\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n v_blur = 1.0 - max(2.0 / a_Size, 0.05);\n v_innerRadius = max((a_Size - u_stroke_width) / a_Size, 0.0);\n\n vec2 offset = project_pixel(u_offsets);\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0), a_Position64Low);\n gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy+offset),project_pos.z,project_pos.w));\n\n gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio;\n setPickingColor(a_PickingColor);\n}\n";
|
|
18
17
|
function PointTriangulation(feature) {
|
|
19
18
|
const coordinates = feature.coordinates;
|
|
20
19
|
return {
|
|
@@ -24,6 +23,12 @@ function PointTriangulation(feature) {
|
|
|
24
23
|
};
|
|
25
24
|
}
|
|
26
25
|
class SimplePointModel extends _BaseModel.default {
|
|
26
|
+
get attributeLocation() {
|
|
27
|
+
return Object.assign(super.attributeLocation, {
|
|
28
|
+
MAX: super.attributeLocation.MAX,
|
|
29
|
+
SIZE: 9
|
|
30
|
+
});
|
|
31
|
+
}
|
|
27
32
|
getDefaultStyle() {
|
|
28
33
|
return {
|
|
29
34
|
blend: 'additive'
|
|
@@ -60,6 +65,7 @@ class SimplePointModel extends _BaseModel.default {
|
|
|
60
65
|
moduleName: 'pointSimple',
|
|
61
66
|
vertexShader: simplePointVert,
|
|
62
67
|
fragmentShader: simplePointFrag,
|
|
68
|
+
defines: _this2.getDefines(),
|
|
63
69
|
inject: _this2.getInject(),
|
|
64
70
|
triangulation: PointTriangulation,
|
|
65
71
|
depth: {
|
|
@@ -71,12 +77,14 @@ class SimplePointModel extends _BaseModel.default {
|
|
|
71
77
|
})();
|
|
72
78
|
}
|
|
73
79
|
registerBuiltinAttributes() {
|
|
80
|
+
// 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 22 层级以上出现数据偏移
|
|
81
|
+
this.registerPosition64LowAttribute();
|
|
74
82
|
this.styleAttributeService.registerStyleAttribute({
|
|
75
83
|
name: 'size',
|
|
76
84
|
type: _l7Core.AttributeType.Attribute,
|
|
77
85
|
descriptor: {
|
|
78
86
|
name: 'a_Size',
|
|
79
|
-
shaderLocation:
|
|
87
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
80
88
|
buffer: {
|
|
81
89
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
82
90
|
data: [],
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { IModel } from '@antv/l7-core';
|
|
2
2
|
import BaseModel from '../../core/BaseModel';
|
|
3
3
|
export default class ExtrudeModel extends BaseModel {
|
|
4
|
+
protected get attributeLocation(): {
|
|
5
|
+
readonly POSITION: 0;
|
|
6
|
+
readonly POSITION_64LOW: 1;
|
|
7
|
+
readonly COLOR: 2;
|
|
8
|
+
readonly PICKING_COLOR: 3;
|
|
9
|
+
readonly STROKE: 4;
|
|
10
|
+
readonly OPACITY: 5;
|
|
11
|
+
readonly OFFSETS: 6;
|
|
12
|
+
readonly ROTATION: 7;
|
|
13
|
+
readonly MAX: 8;
|
|
14
|
+
} & Record<string, number> & {
|
|
15
|
+
MAX: 8;
|
|
16
|
+
SIZE: number;
|
|
17
|
+
POS: number;
|
|
18
|
+
NORMAL: number;
|
|
19
|
+
};
|
|
4
20
|
private raiseCount;
|
|
5
21
|
private raiseRepeat;
|
|
6
22
|
protected getCommonUniformsInfo(): {
|
|
@@ -10,13 +10,12 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
var _l7Core = require("@antv/l7-core");
|
|
11
11
|
var _l7Utils = require("@antv/l7-utils");
|
|
12
12
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
13
|
-
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
14
13
|
var _triangulation = require("../../core/triangulation");
|
|
15
14
|
var _utils = require("../../earth/utils");
|
|
16
15
|
/* babel-plugin-inline-import '../shaders/earthExtrude/earthExtrude_frag.glsl' */
|
|
17
16
|
const pointExtrudeFrag = "precision highp float;\nin vec4 v_color;\n\n#pragma include \"picking\"\n\nlayout(std140) uniform commonUniform {\n vec4 u_sourceColor;\n vec4 u_targetColor;\n float u_linearColor: 0;\n float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\n float u_globel;\n float u_r;\n float u_pickLight: 0.0;\n float u_opacitylinear: 0.0;\n float u_opacitylinear_dir: 1.0;\n float u_lightEnable: 1.0;\n};\nin float v_lightWeight;\nin float v_barLinearZ;\nout vec4 outputColor;\nvoid main() {\n\n outputColor = v_color;\n\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n if(u_opacitylinear > 0.0) {\n outputColor.a *= u_opacitylinear_dir > 0.0 ? (1.0 - v_barLinearZ): v_barLinearZ;\n }\n\n // picking\n if(u_pickLight > 0.0) {\n outputColor = filterColorAlpha(outputColor, v_lightWeight);\n } else {\n outputColor = filterColor(outputColor);\n }\n}\n";
|
|
18
17
|
/* babel-plugin-inline-import '../shaders/earthExtrude/earthExtrude_vert.glsl' */
|
|
19
|
-
const pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\
|
|
18
|
+
const pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nlayout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_COLOR) in vec4 a_Color;\nlayout(location = ATTRIBUTE_LOCATION_SIZE) in vec3 a_Size;\nlayout(location = ATTRIBUTE_LOCATION_POS) in vec3 a_Pos;\nlayout(location = ATTRIBUTE_LOCATION_NORMAL) in vec3 a_Normal;\n\nlayout(std140) uniform commonUniform {\n vec4 u_sourceColor;\n vec4 u_targetColor;\n float u_linearColor: 0;\n float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\n float u_globel;\n float u_r;\n float u_pickLight: 0.0;\n float u_opacitylinear: 0.0;\n float u_opacitylinear_dir: 1.0;\n float u_lightEnable: 1.0;\n};\n\nout vec4 v_color;\nout float v_lightWeight;\nout float v_barLinearZ;\n// \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\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 // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n v_barLinearZ = a_Position.z;\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 if(u_heightfixed < 1.0) { // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\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_Pos.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 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 v_lightWeight = lightWeight;\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, v_barLinearZ);\n v_color.rgb *= lightWeight;\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n v_color = a_Color;\n }\n v_color.a *= u_opacity;\n\n\n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0,\n 0,xcos,-xsin,0,\n 0,xsin,xcos,0,\n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0,\n 0,1,0,0,\n ysin,0,ycos,0,\n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
20
19
|
const {
|
|
21
20
|
isNumber
|
|
22
21
|
} = _l7Utils.lodashUtil;
|
|
@@ -26,6 +25,14 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
26
25
|
(0, _defineProperty2.default)(this, "raiseCount", 0);
|
|
27
26
|
(0, _defineProperty2.default)(this, "raiseRepeat", 0);
|
|
28
27
|
}
|
|
28
|
+
get attributeLocation() {
|
|
29
|
+
return Object.assign(super.attributeLocation, {
|
|
30
|
+
MAX: super.attributeLocation.MAX,
|
|
31
|
+
SIZE: 9,
|
|
32
|
+
POS: 10,
|
|
33
|
+
NORMAL: 11
|
|
34
|
+
});
|
|
35
|
+
}
|
|
29
36
|
getCommonUniformsInfo() {
|
|
30
37
|
const {
|
|
31
38
|
animateOption = {
|
|
@@ -100,7 +107,6 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
100
107
|
buildModels() {
|
|
101
108
|
var _this2 = this;
|
|
102
109
|
return (0, _asyncToGenerator2.default)(function* () {
|
|
103
|
-
// GAODE1.x GAODE2.x MAPBOX
|
|
104
110
|
const {
|
|
105
111
|
animateOption: {
|
|
106
112
|
repeat = 1
|
|
@@ -115,10 +121,11 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
115
121
|
depth: {
|
|
116
122
|
enable: true
|
|
117
123
|
},
|
|
124
|
+
defines: _this2.getDefines(),
|
|
118
125
|
inject: _this2.getInject(),
|
|
119
126
|
cull: {
|
|
120
127
|
enable: true,
|
|
121
|
-
face:
|
|
128
|
+
face: _l7Core.gl.FRONT
|
|
122
129
|
},
|
|
123
130
|
blend: _this2.getBlend()
|
|
124
131
|
});
|
|
@@ -131,7 +138,7 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
131
138
|
type: _l7Core.AttributeType.Attribute,
|
|
132
139
|
descriptor: {
|
|
133
140
|
name: 'a_Size',
|
|
134
|
-
shaderLocation:
|
|
141
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
135
142
|
buffer: {
|
|
136
143
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
137
144
|
data: [],
|
|
@@ -164,7 +171,7 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
164
171
|
type: _l7Core.AttributeType.Attribute,
|
|
165
172
|
descriptor: {
|
|
166
173
|
name: 'a_Normal',
|
|
167
|
-
shaderLocation:
|
|
174
|
+
shaderLocation: this.attributeLocation.NORMAL,
|
|
168
175
|
buffer: {
|
|
169
176
|
// give the WebGL driver a hint that this buffer may change
|
|
170
177
|
usage: _l7Core.gl.STATIC_DRAW,
|
|
@@ -182,7 +189,7 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
182
189
|
type: _l7Core.AttributeType.Attribute,
|
|
183
190
|
descriptor: {
|
|
184
191
|
name: 'a_Pos',
|
|
185
|
-
shaderLocation:
|
|
192
|
+
shaderLocation: this.attributeLocation.POS,
|
|
186
193
|
buffer: {
|
|
187
194
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
188
195
|
data: [],
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { IAnimateOption, IModel } from '@antv/l7-core';
|
|
2
2
|
import BaseModel from '../../core/BaseModel';
|
|
3
3
|
export default class FillModel extends BaseModel {
|
|
4
|
+
protected get attributeLocation(): {
|
|
5
|
+
readonly POSITION: 0;
|
|
6
|
+
readonly POSITION_64LOW: 1;
|
|
7
|
+
readonly COLOR: 2;
|
|
8
|
+
readonly PICKING_COLOR: 3;
|
|
9
|
+
readonly STROKE: 4;
|
|
10
|
+
readonly OPACITY: 5;
|
|
11
|
+
readonly OFFSETS: 6;
|
|
12
|
+
readonly ROTATION: 7;
|
|
13
|
+
readonly MAX: 8;
|
|
14
|
+
} & Record<string, number> & {
|
|
15
|
+
MAX: 8;
|
|
16
|
+
SIZE: number;
|
|
17
|
+
SHAPE: number;
|
|
18
|
+
EXTRUDE: number;
|
|
19
|
+
};
|
|
4
20
|
protected getCommonUniformsInfo(): {
|
|
5
21
|
uniformsArray: number[];
|
|
6
22
|
uniformsLength: number;
|
|
@@ -10,12 +10,19 @@ var _l7Core = require("@antv/l7-core");
|
|
|
10
10
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
11
11
|
var _triangulation = require("../../core/triangulation");
|
|
12
12
|
var _glMatrix = require("gl-matrix");
|
|
13
|
-
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
14
13
|
/* babel-plugin-inline-import '../shaders/earthFill/earthFill_frag.glsl' */
|
|
15
14
|
const pointFillFrag = "in vec4 v_data;\nin vec4 v_color;\nin float v_radius;\n\nlayout(std140) uniform commonUniform {\n float u_additive;\n float u_stroke_opacity : 1;\n float u_stroke_width : 2;\n float u_blur : 0.0;\n};\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\n vec4 strokeColor = u_stroke == vec4(0.0) ? v_color : u_stroke;\n\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 if(outer_df > antialiasblur + 0.018) discard;\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 if(u_stroke_width < 0.01) {\n outputColor = vec4(v_color.rgb, v_color.a * u_opacity);\n } else {\n outputColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), strokeColor * u_stroke_opacity, color_t);\n }\n\n if(u_additive > 0.0) {\n outputColor *= opacity_t;\n outputColor = filterColorAlpha(outputColor, outputColor.a);\n } else {\n outputColor.a *= opacity_t;\n outputColor = filterColor(outputColor);\n }\n}\n";
|
|
16
15
|
/* babel-plugin-inline-import '../shaders/earthFill/earthFill_vert.glsl' */
|
|
17
|
-
const pointFillVert = "layout(location =
|
|
16
|
+
const pointFillVert = "layout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_COLOR) in vec4 a_Color;\nlayout(location = ATTRIBUTE_LOCATION_SIZE) in float a_Size;\nlayout(location = ATTRIBUTE_LOCATION_SHAPE) in float a_Shape;\nlayout(location = ATTRIBUTE_LOCATION_EXTRUDE) in vec3 a_Extrude;\n\nlayout(std140) uniform commonUniform {\n float u_additive;\n float u_stroke_opacity : 1;\n float u_stroke_width : 2;\n float u_blur : 0.0;\n};\nout vec4 v_data;\nout vec4 v_color;\nout float v_radius;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n float shape_type = a_Shape;\n /*\n * setPickingSize \u8BBE\u7F6E\u62FE\u53D6\u5927\u5C0F\n */\n float newSize = setPickingSize(a_Size);\n // float newSize = setPickingSize(a_Size) * 0.00001038445708445579;\n\n // unpack color(vec2)\n v_color = a_Color;\n\n // radius(16-bit)\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);\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 gl_Position = u_ViewProjectionMatrix * vec4(a_Position + extrude * newSize * 0.1 + vec3(u_offsets,0.0), 1.0);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
18
17
|
class FillModel extends _BaseModel.default {
|
|
18
|
+
get attributeLocation() {
|
|
19
|
+
return Object.assign(super.attributeLocation, {
|
|
20
|
+
MAX: super.attributeLocation.MAX,
|
|
21
|
+
SIZE: 9,
|
|
22
|
+
SHAPE: 10,
|
|
23
|
+
EXTRUDE: 11
|
|
24
|
+
});
|
|
25
|
+
}
|
|
19
26
|
getCommonUniformsInfo() {
|
|
20
27
|
const {
|
|
21
28
|
strokeOpacity = 1,
|
|
@@ -50,6 +57,7 @@ class FillModel extends _BaseModel.default {
|
|
|
50
57
|
vertexShader: pointFillVert,
|
|
51
58
|
fragmentShader: pointFillFrag,
|
|
52
59
|
triangulation: _triangulation.GlobelPointFillTriangulation,
|
|
60
|
+
defines: _this2.getDefines(),
|
|
53
61
|
inject: _this2.getInject(),
|
|
54
62
|
depth: {
|
|
55
63
|
enable: true
|
|
@@ -70,7 +78,7 @@ class FillModel extends _BaseModel.default {
|
|
|
70
78
|
type: _l7Core.AttributeType.Attribute,
|
|
71
79
|
descriptor: {
|
|
72
80
|
name: 'a_Extrude',
|
|
73
|
-
shaderLocation:
|
|
81
|
+
shaderLocation: this.attributeLocation.EXTRUDE,
|
|
74
82
|
buffer: {
|
|
75
83
|
// give the WebGL driver a hint that this buffer may change
|
|
76
84
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -112,7 +120,7 @@ class FillModel extends _BaseModel.default {
|
|
|
112
120
|
type: _l7Core.AttributeType.Attribute,
|
|
113
121
|
descriptor: {
|
|
114
122
|
name: 'a_Size',
|
|
115
|
-
shaderLocation:
|
|
123
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
116
124
|
buffer: {
|
|
117
125
|
// give the WebGL driver a hint that this buffer may change
|
|
118
126
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -135,7 +143,7 @@ class FillModel extends _BaseModel.default {
|
|
|
135
143
|
type: _l7Core.AttributeType.Attribute,
|
|
136
144
|
descriptor: {
|
|
137
145
|
name: 'a_Shape',
|
|
138
|
-
shaderLocation:
|
|
146
|
+
shaderLocation: this.attributeLocation.SHAPE,
|
|
139
147
|
buffer: {
|
|
140
148
|
// give the WebGL driver a hint that this buffer may change
|
|
141
149
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { IModel } from '@antv/l7-core';
|
|
2
2
|
import BaseModel from '../../core/BaseModel';
|
|
3
3
|
export default class ExtrudeModel extends BaseModel {
|
|
4
|
+
protected get attributeLocation(): {
|
|
5
|
+
readonly POSITION: 0;
|
|
6
|
+
readonly POSITION_64LOW: 1;
|
|
7
|
+
readonly COLOR: 2;
|
|
8
|
+
readonly PICKING_COLOR: 3;
|
|
9
|
+
readonly STROKE: 4;
|
|
10
|
+
readonly OPACITY: 5;
|
|
11
|
+
readonly OFFSETS: 6;
|
|
12
|
+
readonly ROTATION: 7;
|
|
13
|
+
readonly MAX: 8;
|
|
14
|
+
} & Record<string, number> & {
|
|
15
|
+
MAX: 8;
|
|
16
|
+
SIZE: number;
|
|
17
|
+
EXTRUDE: number;
|
|
18
|
+
NORMAL: number;
|
|
19
|
+
};
|
|
4
20
|
private raiseCount;
|
|
5
21
|
private raiseRepeat;
|
|
6
22
|
protected getCommonUniformsInfo(): {
|
|
@@ -10,18 +10,25 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
var _l7Core = require("@antv/l7-core");
|
|
11
11
|
var _l7Utils = require("@antv/l7-utils");
|
|
12
12
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
13
|
-
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
14
13
|
var _triangulation = require("../../core/triangulation");
|
|
15
14
|
/* babel-plugin-inline-import '../shaders/extrude/extrude_frag.glsl' */
|
|
16
15
|
const 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 \"scene_uniforms\"\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";
|
|
17
16
|
/* babel-plugin-inline-import '../shaders/extrude/extrude_vert.glsl' */
|
|
18
|
-
const pointExtrudeVert = "#define pi 3.1415926535\n\nlayout(location =
|
|
17
|
+
const pointExtrudeVert = "#define pi (3.1415926535)\n\nlayout(location = ATTRIBUTE_LOCATION_POSITION) in vec3 a_Position;\nlayout(location = ATTRIBUTE_LOCATION_COLOR) in vec4 a_Color;\nlayout(location = ATTRIBUTE_LOCATION_SIZE) in vec3 a_Size;\nlayout(location = ATTRIBUTE_LOCATION_EXTRUDE) in vec4 a_Extrude;\nlayout(location = ATTRIBUTE_LOCATION_NORMAL) 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;\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 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) {\n // \u5706\u67F1\u4F53\u4E0D\u56FA\u5B9A\u9AD8\u5EA6\n } else {\n // \u5706\u67F1\u4F53\u56FA\u5B9A\u9AD8\u5EA6 \uFF08 \u5904\u7406 mapbox \uFF09\n if (\n u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET\n ) {\n offset *= 4.0 / pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n vec2 positions = a_Extrude.xy;\n vec2 positions64Low = a_Extrude.zw;\n vec4 project_pos = project_position(vec4(positions, 0.0, 1.0), positions64Low);\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) {\n // \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) {\n // \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 gl_Position = project_common_position_to_clipspace(pos);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
19
18
|
class ExtrudeModel extends _BaseModel.default {
|
|
20
19
|
constructor(...args) {
|
|
21
20
|
super(...args);
|
|
22
21
|
(0, _defineProperty2.default)(this, "raiseCount", 0);
|
|
23
22
|
(0, _defineProperty2.default)(this, "raiseRepeat", 0);
|
|
24
23
|
}
|
|
24
|
+
get attributeLocation() {
|
|
25
|
+
return Object.assign(super.attributeLocation, {
|
|
26
|
+
MAX: super.attributeLocation.MAX,
|
|
27
|
+
SIZE: 9,
|
|
28
|
+
EXTRUDE: 10,
|
|
29
|
+
NORMAL: 11
|
|
30
|
+
});
|
|
31
|
+
}
|
|
25
32
|
getCommonUniformsInfo() {
|
|
26
33
|
const {
|
|
27
34
|
animateOption = {
|
|
@@ -93,7 +100,6 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
93
100
|
buildModels() {
|
|
94
101
|
var _this2 = this;
|
|
95
102
|
return (0, _asyncToGenerator2.default)(function* () {
|
|
96
|
-
// GAODE1.x GAODE2.x MAPBOX
|
|
97
103
|
const {
|
|
98
104
|
depth = true,
|
|
99
105
|
animateOption: {
|
|
@@ -107,10 +113,11 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
107
113
|
vertexShader: pointExtrudeVert,
|
|
108
114
|
fragmentShader: pointExtrudeFrag,
|
|
109
115
|
triangulation: _triangulation.PointExtrudeTriangulation,
|
|
116
|
+
defines: _this2.getDefines(),
|
|
110
117
|
inject: _this2.getInject(),
|
|
111
118
|
cull: {
|
|
112
119
|
enable: true,
|
|
113
|
-
face:
|
|
120
|
+
face: _l7Core.gl.FRONT
|
|
114
121
|
},
|
|
115
122
|
depth: {
|
|
116
123
|
enable: depth
|
|
@@ -126,7 +133,7 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
126
133
|
type: _l7Core.AttributeType.Attribute,
|
|
127
134
|
descriptor: {
|
|
128
135
|
name: 'a_Size',
|
|
129
|
-
shaderLocation:
|
|
136
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
130
137
|
buffer: {
|
|
131
138
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
132
139
|
data: [],
|
|
@@ -152,14 +159,12 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
161
|
});
|
|
155
|
-
|
|
156
|
-
// point layer size;
|
|
157
162
|
this.styleAttributeService.registerStyleAttribute({
|
|
158
163
|
name: 'normal',
|
|
159
164
|
type: _l7Core.AttributeType.Attribute,
|
|
160
165
|
descriptor: {
|
|
161
166
|
name: 'a_Normal',
|
|
162
|
-
shaderLocation:
|
|
167
|
+
shaderLocation: this.attributeLocation.NORMAL,
|
|
163
168
|
buffer: {
|
|
164
169
|
// give the WebGL driver a hint that this buffer may change
|
|
165
170
|
usage: _l7Core.gl.STATIC_DRAW,
|
|
@@ -177,17 +182,19 @@ class ExtrudeModel extends _BaseModel.default {
|
|
|
177
182
|
type: _l7Core.AttributeType.Attribute,
|
|
178
183
|
descriptor: {
|
|
179
184
|
name: 'a_Extrude',
|
|
180
|
-
shaderLocation:
|
|
185
|
+
shaderLocation: this.attributeLocation.EXTRUDE,
|
|
181
186
|
buffer: {
|
|
182
187
|
// give the WebGL driver a hint that this buffer may change
|
|
183
188
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
184
189
|
data: [],
|
|
185
190
|
type: _l7Core.gl.FLOAT
|
|
186
191
|
},
|
|
187
|
-
size:
|
|
192
|
+
size: 4,
|
|
188
193
|
update: feature => {
|
|
189
194
|
const coordinates = (0, _l7Utils.calculateCentroid)(feature.coordinates);
|
|
190
|
-
|
|
195
|
+
// [lng, lat, lowLng, lowLat]
|
|
196
|
+
// low part for enabled double precision
|
|
197
|
+
return [coordinates[0], coordinates[1], (0, _l7Utils.fp64LowPart)(coordinates[0]), (0, _l7Utils.fp64LowPart)(coordinates[1])];
|
|
191
198
|
}
|
|
192
199
|
}
|
|
193
200
|
});
|