@antv/l7-layers 2.21.8 → 2.21.9-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.js +9 -8
- package/es/core/BaseModel.d.ts +15 -2
- package/es/core/BaseModel.js +94 -62
- package/es/core/CommonStyleAttribute.d.ts +14 -18
- package/es/core/CommonStyleAttribute.js +23 -67
- package/es/core/triangulation.js +13 -39
- 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 -3
- 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 +42 -48
- 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 +56 -72
- 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 +2 -34
- 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 +12 -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.js +9 -8
- package/lib/core/BaseModel.d.ts +15 -2
- package/lib/core/BaseModel.js +92 -60
- package/lib/core/CommonStyleAttribute.d.ts +14 -18
- package/lib/core/CommonStyleAttribute.js +23 -68
- package/lib/core/triangulation.js +13 -39
- 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 -3
- 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 +42 -48
- 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 +56 -72
- 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 +2 -34
- 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 +12 -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,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(): {
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
3
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
4
|
-
import { calculateCentroid,
|
|
4
|
+
import { calculateCentroid, lodashUtil, rgb2arr } from '@antv/l7-utils';
|
|
5
5
|
import BaseModel from "../../core/BaseModel";
|
|
6
|
-
import { ShaderLocation } from "../../core/CommonStyleAttribute";
|
|
7
6
|
import { PointExtrudeTriangulation } from "../../core/triangulation";
|
|
8
7
|
import { lglt2xyz } from "../../earth/utils";
|
|
9
8
|
/* babel-plugin-inline-import '../shaders/earthExtrude/earthExtrude_frag.glsl' */
|
|
10
9
|
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";
|
|
11
10
|
/* babel-plugin-inline-import '../shaders/earthExtrude/earthExtrude_vert.glsl' */
|
|
12
|
-
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\
|
|
11
|
+
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";
|
|
13
12
|
const {
|
|
14
13
|
isNumber
|
|
15
14
|
} = lodashUtil;
|
|
@@ -19,6 +18,14 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
19
18
|
_defineProperty(this, "raiseCount", 0);
|
|
20
19
|
_defineProperty(this, "raiseRepeat", 0);
|
|
21
20
|
}
|
|
21
|
+
get attributeLocation() {
|
|
22
|
+
return Object.assign(super.attributeLocation, {
|
|
23
|
+
MAX: super.attributeLocation.MAX,
|
|
24
|
+
SIZE: 9,
|
|
25
|
+
POS: 10,
|
|
26
|
+
NORMAL: 11
|
|
27
|
+
});
|
|
28
|
+
}
|
|
22
29
|
getCommonUniformsInfo() {
|
|
23
30
|
const {
|
|
24
31
|
animateOption = {
|
|
@@ -93,7 +100,6 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
93
100
|
buildModels() {
|
|
94
101
|
var _this2 = this;
|
|
95
102
|
return _asyncToGenerator(function* () {
|
|
96
|
-
// GAODE1.x GAODE2.x MAPBOX
|
|
97
103
|
const {
|
|
98
104
|
animateOption: {
|
|
99
105
|
repeat = 1
|
|
@@ -108,10 +114,11 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
108
114
|
depth: {
|
|
109
115
|
enable: true
|
|
110
116
|
},
|
|
117
|
+
defines: _this2.getDefines(),
|
|
111
118
|
inject: _this2.getInject(),
|
|
112
119
|
cull: {
|
|
113
120
|
enable: true,
|
|
114
|
-
face:
|
|
121
|
+
face: gl.FRONT
|
|
115
122
|
},
|
|
116
123
|
blend: _this2.getBlend()
|
|
117
124
|
});
|
|
@@ -124,7 +131,7 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
124
131
|
type: AttributeType.Attribute,
|
|
125
132
|
descriptor: {
|
|
126
133
|
name: 'a_Size',
|
|
127
|
-
shaderLocation:
|
|
134
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
128
135
|
buffer: {
|
|
129
136
|
usage: gl.DYNAMIC_DRAW,
|
|
130
137
|
data: [],
|
|
@@ -157,7 +164,7 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
157
164
|
type: AttributeType.Attribute,
|
|
158
165
|
descriptor: {
|
|
159
166
|
name: 'a_Normal',
|
|
160
|
-
shaderLocation:
|
|
167
|
+
shaderLocation: this.attributeLocation.NORMAL,
|
|
161
168
|
buffer: {
|
|
162
169
|
// give the WebGL driver a hint that this buffer may change
|
|
163
170
|
usage: gl.STATIC_DRAW,
|
|
@@ -175,7 +182,7 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
175
182
|
type: AttributeType.Attribute,
|
|
176
183
|
descriptor: {
|
|
177
184
|
name: 'a_Pos',
|
|
178
|
-
shaderLocation:
|
|
185
|
+
shaderLocation: this.attributeLocation.POS,
|
|
179
186
|
buffer: {
|
|
180
187
|
usage: gl.DYNAMIC_DRAW,
|
|
181
188
|
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;
|
|
@@ -5,10 +5,17 @@ import { GlobelPointFillTriangulation } from "../../core/triangulation";
|
|
|
5
5
|
/* babel-plugin-inline-import '../shaders/earthFill/earthFill_frag.glsl' */
|
|
6
6
|
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";
|
|
7
7
|
/* babel-plugin-inline-import '../shaders/earthFill/earthFill_vert.glsl' */
|
|
8
|
-
const pointFillVert = "layout(location =
|
|
8
|
+
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";
|
|
9
9
|
import { mat4, vec3 } from 'gl-matrix';
|
|
10
|
-
import { ShaderLocation } from "../../core/CommonStyleAttribute";
|
|
11
10
|
export default class FillModel extends BaseModel {
|
|
11
|
+
get attributeLocation() {
|
|
12
|
+
return Object.assign(super.attributeLocation, {
|
|
13
|
+
MAX: super.attributeLocation.MAX,
|
|
14
|
+
SIZE: 9,
|
|
15
|
+
SHAPE: 10,
|
|
16
|
+
EXTRUDE: 11
|
|
17
|
+
});
|
|
18
|
+
}
|
|
12
19
|
getCommonUniformsInfo() {
|
|
13
20
|
const {
|
|
14
21
|
strokeOpacity = 1,
|
|
@@ -43,6 +50,7 @@ export default class FillModel extends BaseModel {
|
|
|
43
50
|
vertexShader: pointFillVert,
|
|
44
51
|
fragmentShader: pointFillFrag,
|
|
45
52
|
triangulation: GlobelPointFillTriangulation,
|
|
53
|
+
defines: _this2.getDefines(),
|
|
46
54
|
inject: _this2.getInject(),
|
|
47
55
|
depth: {
|
|
48
56
|
enable: true
|
|
@@ -63,7 +71,7 @@ export default class FillModel extends BaseModel {
|
|
|
63
71
|
type: AttributeType.Attribute,
|
|
64
72
|
descriptor: {
|
|
65
73
|
name: 'a_Extrude',
|
|
66
|
-
shaderLocation:
|
|
74
|
+
shaderLocation: this.attributeLocation.EXTRUDE,
|
|
67
75
|
buffer: {
|
|
68
76
|
// give the WebGL driver a hint that this buffer may change
|
|
69
77
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -105,7 +113,7 @@ export default class FillModel extends BaseModel {
|
|
|
105
113
|
type: AttributeType.Attribute,
|
|
106
114
|
descriptor: {
|
|
107
115
|
name: 'a_Size',
|
|
108
|
-
shaderLocation:
|
|
116
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
109
117
|
buffer: {
|
|
110
118
|
// give the WebGL driver a hint that this buffer may change
|
|
111
119
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -128,7 +136,7 @@ export default class FillModel extends BaseModel {
|
|
|
128
136
|
type: AttributeType.Attribute,
|
|
129
137
|
descriptor: {
|
|
130
138
|
name: 'a_Shape',
|
|
131
|
-
shaderLocation:
|
|
139
|
+
shaderLocation: this.attributeLocation.SHAPE,
|
|
132
140
|
buffer: {
|
|
133
141
|
// give the WebGL driver a hint that this buffer may change
|
|
134
142
|
usage: 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(): {
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
3
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
4
|
-
import { calculateCentroid,
|
|
4
|
+
import { calculateCentroid, fp64LowPart, rgb2arr } from '@antv/l7-utils';
|
|
5
5
|
import BaseModel from "../../core/BaseModel";
|
|
6
|
-
import { ShaderLocation } from "../../core/CommonStyleAttribute";
|
|
7
6
|
import { PointExtrudeTriangulation } from "../../core/triangulation";
|
|
8
7
|
/* babel-plugin-inline-import '../shaders/extrude/extrude_frag.glsl' */
|
|
9
8
|
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";
|
|
10
9
|
/* babel-plugin-inline-import '../shaders/extrude/extrude_vert.glsl' */
|
|
11
|
-
const pointExtrudeVert = "#define pi 3.1415926535\n\nlayout(location =
|
|
10
|
+
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";
|
|
12
11
|
export default class ExtrudeModel extends BaseModel {
|
|
13
12
|
constructor(...args) {
|
|
14
13
|
super(...args);
|
|
15
14
|
_defineProperty(this, "raiseCount", 0);
|
|
16
15
|
_defineProperty(this, "raiseRepeat", 0);
|
|
17
16
|
}
|
|
17
|
+
get attributeLocation() {
|
|
18
|
+
return Object.assign(super.attributeLocation, {
|
|
19
|
+
MAX: super.attributeLocation.MAX,
|
|
20
|
+
SIZE: 9,
|
|
21
|
+
EXTRUDE: 10,
|
|
22
|
+
NORMAL: 11
|
|
23
|
+
});
|
|
24
|
+
}
|
|
18
25
|
getCommonUniformsInfo() {
|
|
19
26
|
const {
|
|
20
27
|
animateOption = {
|
|
@@ -86,7 +93,6 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
86
93
|
buildModels() {
|
|
87
94
|
var _this2 = this;
|
|
88
95
|
return _asyncToGenerator(function* () {
|
|
89
|
-
// GAODE1.x GAODE2.x MAPBOX
|
|
90
96
|
const {
|
|
91
97
|
depth = true,
|
|
92
98
|
animateOption: {
|
|
@@ -100,10 +106,11 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
100
106
|
vertexShader: pointExtrudeVert,
|
|
101
107
|
fragmentShader: pointExtrudeFrag,
|
|
102
108
|
triangulation: PointExtrudeTriangulation,
|
|
109
|
+
defines: _this2.getDefines(),
|
|
103
110
|
inject: _this2.getInject(),
|
|
104
111
|
cull: {
|
|
105
112
|
enable: true,
|
|
106
|
-
face:
|
|
113
|
+
face: gl.FRONT
|
|
107
114
|
},
|
|
108
115
|
depth: {
|
|
109
116
|
enable: depth
|
|
@@ -119,7 +126,7 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
119
126
|
type: AttributeType.Attribute,
|
|
120
127
|
descriptor: {
|
|
121
128
|
name: 'a_Size',
|
|
122
|
-
shaderLocation:
|
|
129
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
123
130
|
buffer: {
|
|
124
131
|
usage: gl.DYNAMIC_DRAW,
|
|
125
132
|
data: [],
|
|
@@ -145,14 +152,12 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
145
152
|
}
|
|
146
153
|
}
|
|
147
154
|
});
|
|
148
|
-
|
|
149
|
-
// point layer size;
|
|
150
155
|
this.styleAttributeService.registerStyleAttribute({
|
|
151
156
|
name: 'normal',
|
|
152
157
|
type: AttributeType.Attribute,
|
|
153
158
|
descriptor: {
|
|
154
159
|
name: 'a_Normal',
|
|
155
|
-
shaderLocation:
|
|
160
|
+
shaderLocation: this.attributeLocation.NORMAL,
|
|
156
161
|
buffer: {
|
|
157
162
|
// give the WebGL driver a hint that this buffer may change
|
|
158
163
|
usage: gl.STATIC_DRAW,
|
|
@@ -170,17 +175,19 @@ export default class ExtrudeModel extends BaseModel {
|
|
|
170
175
|
type: AttributeType.Attribute,
|
|
171
176
|
descriptor: {
|
|
172
177
|
name: 'a_Extrude',
|
|
173
|
-
shaderLocation:
|
|
178
|
+
shaderLocation: this.attributeLocation.EXTRUDE,
|
|
174
179
|
buffer: {
|
|
175
180
|
// give the WebGL driver a hint that this buffer may change
|
|
176
181
|
usage: gl.DYNAMIC_DRAW,
|
|
177
182
|
data: [],
|
|
178
183
|
type: gl.FLOAT
|
|
179
184
|
},
|
|
180
|
-
size:
|
|
185
|
+
size: 4,
|
|
181
186
|
update: feature => {
|
|
182
187
|
const coordinates = calculateCentroid(feature.coordinates);
|
|
183
|
-
|
|
188
|
+
// [lng, lat, lowLng, lowLat]
|
|
189
|
+
// low part for enabled double precision
|
|
190
|
+
return [coordinates[0], coordinates[1], fp64LowPart(coordinates[0]), fp64LowPart(coordinates[1])];
|
|
184
191
|
}
|
|
185
192
|
}
|
|
186
193
|
});
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { IAnimateOption, IAttribute, IElements, IModel, IModelUniform } 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;
|
package/es/point/models/fill.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
2
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
3
3
|
import BaseModel from "../../core/BaseModel";
|
|
4
|
-
import { ShaderLocation } from "../../core/CommonStyleAttribute";
|
|
5
4
|
import { PointFillTriangulation } from "../../core/triangulation";
|
|
6
5
|
/* babel-plugin-inline-import '../shaders/fill/fill_frag.glsl' */
|
|
7
6
|
const pointFillFrag = "\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\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";
|
|
8
7
|
/* babel-plugin-inline-import '../shaders/fill/fill_vert.glsl' */
|
|
9
|
-
const pointFillVert = "layout(location =
|
|
8
|
+
const pointFillVert = "layout(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;\nlayout(location = ATTRIBUTE_LOCATION_SHAPE) in float a_Shape;\nlayout(location = ATTRIBUTE_LOCATION_EXTRUDE) 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\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 vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0), a_Position64Low);\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(vec4(project_pos.xy + offset, raisingHeight, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
10
9
|
import { SizeUnitType } from "../../core/interface";
|
|
11
10
|
export default class FillModel extends BaseModel {
|
|
11
|
+
get attributeLocation() {
|
|
12
|
+
return Object.assign(super.attributeLocation, {
|
|
13
|
+
MAX: super.attributeLocation.MAX,
|
|
14
|
+
SIZE: 9,
|
|
15
|
+
SHAPE: 10,
|
|
16
|
+
EXTRUDE: 11
|
|
17
|
+
});
|
|
18
|
+
}
|
|
12
19
|
getCommonUniformsInfo() {
|
|
13
20
|
const {
|
|
14
21
|
strokeOpacity = 1,
|
|
@@ -69,6 +76,7 @@ export default class FillModel extends BaseModel {
|
|
|
69
76
|
moduleName: type,
|
|
70
77
|
vertexShader: vert,
|
|
71
78
|
fragmentShader: frag,
|
|
79
|
+
defines: _this2.getDefines(),
|
|
72
80
|
inject: _this2.getInject(),
|
|
73
81
|
triangulation: PointFillTriangulation,
|
|
74
82
|
depth: {
|
|
@@ -98,12 +106,15 @@ export default class FillModel extends BaseModel {
|
|
|
98
106
|
registerBuiltinAttributes() {
|
|
99
107
|
// 注册 Style 参与数据映射的内置属性
|
|
100
108
|
const shape2d = this.layer.getLayerConfig().shape2d;
|
|
109
|
+
|
|
110
|
+
// 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 20层级以上出现数据偏移
|
|
111
|
+
this.registerPosition64LowAttribute();
|
|
101
112
|
this.styleAttributeService.registerStyleAttribute({
|
|
102
113
|
name: 'extrude',
|
|
103
114
|
type: AttributeType.Attribute,
|
|
104
115
|
descriptor: {
|
|
105
116
|
name: 'a_Extrude',
|
|
106
|
-
shaderLocation:
|
|
117
|
+
shaderLocation: this.attributeLocation.EXTRUDE,
|
|
107
118
|
buffer: {
|
|
108
119
|
// give the WebGL driver a hint that this buffer may change
|
|
109
120
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -125,7 +136,7 @@ export default class FillModel extends BaseModel {
|
|
|
125
136
|
type: AttributeType.Attribute,
|
|
126
137
|
descriptor: {
|
|
127
138
|
name: 'a_Size',
|
|
128
|
-
shaderLocation:
|
|
139
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
129
140
|
buffer: {
|
|
130
141
|
// give the WebGL driver a hint that this buffer may change
|
|
131
142
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -148,7 +159,7 @@ export default class FillModel extends BaseModel {
|
|
|
148
159
|
type: AttributeType.Attribute,
|
|
149
160
|
descriptor: {
|
|
150
161
|
name: 'a_Shape',
|
|
151
|
-
shaderLocation:
|
|
162
|
+
shaderLocation: this.attributeLocation.SHAPE,
|
|
152
163
|
buffer: {
|
|
153
164
|
// give the WebGL driver a hint that this buffer may change
|
|
154
165
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { IAttribute, IElements, IModel } from '@antv/l7-core';
|
|
2
2
|
import BaseModel from '../../core/BaseModel';
|
|
3
3
|
export default class FillImageModel 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
|
+
UV: number;
|
|
19
|
+
};
|
|
4
20
|
private meter2coord;
|
|
5
21
|
private texture;
|
|
6
22
|
private isMeter;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
3
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
4
|
-
import { getCullFace } from '@antv/l7-utils';
|
|
5
4
|
import BaseModel from "../../core/BaseModel";
|
|
6
5
|
import { SizeUnitType } from "../../core/interface";
|
|
7
6
|
import { PointFillTriangulation } from "../../core/triangulation";
|
|
8
|
-
// static pointLayer shader - not support animate
|
|
9
|
-
import { ShaderLocation } from "../../core/CommonStyleAttribute";
|
|
10
7
|
/* babel-plugin-inline-import '../shaders/fillImage/fillImage_frag.glsl' */
|
|
11
8
|
const pointFillFrag = "in vec2 v_uv;// \u672C\u8EAB\u7684 uv \u5750\u6807\nin vec2 v_Iconuv;\nin float v_opacity;\nout vec4 outputColor;\n\nuniform sampler2D u_texture;\nlayout(std140) uniform commonUniform {\n vec2 u_textSize;\n float u_heightfixed: 0.0;\n float u_raisingHeight: 0.0;\n float u_size_unit;\n};\n\n#pragma include \"scene_uniforms\"\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nvoid main() {\n vec2 pos = v_Iconuv / u_textSize + v_uv / u_textSize * 64.;\n outputColor = texture(SAMPLER_2D(u_texture), pos);\n outputColor.a *= v_opacity;\n outputColor = filterColor(outputColor);\n}\n";
|
|
12
9
|
/* babel-plugin-inline-import '../shaders/fillImage/fillImage_vert.glsl' */
|
|
13
|
-
const pointFillVert = "layout(location =
|
|
10
|
+
const pointFillVert = "layout(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;\nlayout(location = ATTRIBUTE_LOCATION_EXTRUDE) in vec3 a_Extrude;\nlayout(location = ATTRIBUTE_LOCATION_UV) in vec2 a_Uv;\n\nlayout(std140) uniform commonUniform {\n vec2 u_textSize;\n float u_heightfixed;\n float u_raisingHeight;\n float u_size_unit;\n};\n\nout vec2 v_uv;\nout vec2 v_Iconuv;\nout float v_opacity;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"rotation_2d\"\n\nvoid main() {\n vec3 extrude = a_Extrude;\n v_uv = (a_Extrude.xy + 1.0) / 2.0;\n v_uv.y = 1.0 - v_uv.y;\n v_Iconuv = a_Uv;\n v_opacity = opacity;\n float newSize = a_Size;\n if (u_size_unit == 1.0) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n\n // vec2 offset = (u_RotateMatrix * extrude.xy * (a_Size) + textrueOffsets);\n vec2 offset = extrude.xy * newSize + offsets;\n\n offset = rotate_matrix(offset, rotation);\n\n offset = project_pixel(offset);\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0), a_Position64Low);\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
14
11
|
export default class FillImageModel extends BaseModel {
|
|
15
12
|
constructor(...args) {
|
|
16
13
|
super(...args);
|
|
@@ -45,6 +42,14 @@ export default class FillImageModel extends BaseModel {
|
|
|
45
42
|
this.textures = [this.texture];
|
|
46
43
|
});
|
|
47
44
|
}
|
|
45
|
+
get attributeLocation() {
|
|
46
|
+
return Object.assign(super.attributeLocation, {
|
|
47
|
+
MAX: super.attributeLocation.MAX,
|
|
48
|
+
SIZE: 9,
|
|
49
|
+
EXTRUDE: 10,
|
|
50
|
+
UV: 11
|
|
51
|
+
});
|
|
52
|
+
}
|
|
48
53
|
// 旋转的弧度
|
|
49
54
|
getCommonUniformsInfo() {
|
|
50
55
|
const {
|
|
@@ -56,14 +61,6 @@ export default class FillImageModel extends BaseModel {
|
|
|
56
61
|
var _this$texture;
|
|
57
62
|
(_this$texture = this.texture) === null || _this$texture === void 0 || _this$texture.bind();
|
|
58
63
|
}
|
|
59
|
-
/**
|
|
60
|
-
* rotateFlag
|
|
61
|
-
* DEFAULT 1
|
|
62
|
-
* MAPBOX 1
|
|
63
|
-
* GAODE2.x -1
|
|
64
|
-
* GAODE1.x -1
|
|
65
|
-
*/
|
|
66
|
-
|
|
67
64
|
const commonOptions = {
|
|
68
65
|
u_textSize: [1024, this.iconService.canvasHeight || 128],
|
|
69
66
|
u_heightfixed: Number(heightfixed),
|
|
@@ -96,10 +93,11 @@ export default class FillImageModel extends BaseModel {
|
|
|
96
93
|
depth: {
|
|
97
94
|
enable: false
|
|
98
95
|
},
|
|
96
|
+
defines: _this2.getDefines(),
|
|
99
97
|
inject: _this2.getInject(),
|
|
100
98
|
cull: {
|
|
101
99
|
enable: true,
|
|
102
|
-
face:
|
|
100
|
+
face: gl.FRONT
|
|
103
101
|
}
|
|
104
102
|
});
|
|
105
103
|
return [model];
|
|
@@ -113,12 +111,14 @@ export default class FillImageModel extends BaseModel {
|
|
|
113
111
|
|
|
114
112
|
// overwrite baseModel func
|
|
115
113
|
registerBuiltinAttributes() {
|
|
114
|
+
// 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 20层级以上出现数据偏移
|
|
115
|
+
this.registerPosition64LowAttribute();
|
|
116
116
|
this.styleAttributeService.registerStyleAttribute({
|
|
117
117
|
name: 'uv',
|
|
118
118
|
type: AttributeType.Attribute,
|
|
119
119
|
descriptor: {
|
|
120
120
|
name: 'a_Uv',
|
|
121
|
-
shaderLocation:
|
|
121
|
+
shaderLocation: this.attributeLocation.UV,
|
|
122
122
|
buffer: {
|
|
123
123
|
// give the WebGL driver a hint that this buffer may change
|
|
124
124
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -147,7 +147,7 @@ export default class FillImageModel extends BaseModel {
|
|
|
147
147
|
type: AttributeType.Attribute,
|
|
148
148
|
descriptor: {
|
|
149
149
|
name: 'a_Extrude',
|
|
150
|
-
shaderLocation:
|
|
150
|
+
shaderLocation: this.attributeLocation.EXTRUDE,
|
|
151
151
|
buffer: {
|
|
152
152
|
// give the WebGL driver a hint that this buffer may change
|
|
153
153
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -169,7 +169,7 @@ export default class FillImageModel extends BaseModel {
|
|
|
169
169
|
type: AttributeType.Attribute,
|
|
170
170
|
descriptor: {
|
|
171
171
|
name: 'a_Size',
|
|
172
|
-
shaderLocation:
|
|
172
|
+
shaderLocation: this.attributeLocation.SIZE,
|
|
173
173
|
buffer: {
|
|
174
174
|
// give the WebGL driver a hint that this buffer may change
|
|
175
175
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import type { IModel, IModelUniform } from '@antv/l7-core';
|
|
2
2
|
import BaseModel from '../../core/BaseModel';
|
|
3
3
|
export default class ImageModel extends BaseModel {
|
|
4
|
+
protected get attributeLocation(): {
|
|
5
|
+
readonly POSITION: 0;
|
|
6
|
+
readonly POSITION_64LOW: 1;
|
|
7
|
+
readonly COLOR: 2;
|
|
8
|
+
readonly PICKING_COLOR: 3;
|
|
9
|
+
readonly STROKE: 4;
|
|
10
|
+
readonly OPACITY: 5;
|
|
11
|
+
readonly OFFSETS: 6;
|
|
12
|
+
readonly ROTATION: 7;
|
|
13
|
+
readonly MAX: 8;
|
|
14
|
+
} & Record<string, number> & {
|
|
15
|
+
MAX: 8;
|
|
16
|
+
SIZE: number;
|
|
17
|
+
UV: number;
|
|
18
|
+
};
|
|
4
19
|
private texture;
|
|
5
20
|
getUninforms(): IModelUniform;
|
|
6
21
|
protected getCommonUniformsInfo(): {
|