@antv/l7-layers 2.21.9-beta.0 → 2.21.10
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 +0 -16
- package/es/citybuliding/models/build.js +20 -18
- package/es/citybuliding/shaders/build_frag.glsl +6 -6
- package/es/citybuliding/shaders/build_vert.glsl +14 -8
- package/es/core/BaseLayer.js +8 -12
- package/es/core/BaseModel.d.ts +2 -15
- package/es/core/BaseModel.js +62 -94
- package/es/core/CommonStyleAttribute.d.ts +18 -14
- package/es/core/CommonStyleAttribute.js +67 -23
- package/es/core/triangulation.js +39 -13
- package/es/earth/models/atmosphere.d.ts +0 -15
- package/es/earth/models/atmosphere.js +24 -30
- package/es/earth/models/base.d.ts +0 -15
- package/es/earth/models/base.js +24 -30
- package/es/earth/models/bloomsphere.d.ts +0 -15
- package/es/earth/models/bloomsphere.js +24 -30
- package/es/earth/shaders/atmosphere/atmosphere_vert.glsl +5 -7
- package/es/earth/shaders/base/base_vert.glsl +3 -3
- package/es/earth/shaders/bloomshpere/bloomsphere_vert.glsl +4 -5
- package/es/geometry/models/billboard.d.ts +0 -15
- package/es/geometry/models/billboard.js +8 -14
- package/es/geometry/models/plane.d.ts +0 -14
- package/es/geometry/models/plane.js +10 -10
- package/es/geometry/models/sprite.js +9 -3
- package/es/geometry/shaders/billboard_vert.glsl +25 -28
- package/es/geometry/shaders/plane_vert.glsl +6 -6
- package/es/geometry/shaders/sprite_vert.glsl +9 -7
- package/es/heatmap/models/grid.d.ts +0 -14
- package/es/heatmap/models/grid.js +3 -10
- package/es/heatmap/models/grid3d.d.ts +0 -16
- package/es/heatmap/models/grid3d.js +6 -14
- package/es/heatmap/models/heatmap.d.ts +1 -20
- package/es/heatmap/models/heatmap.js +83 -96
- package/es/heatmap/models/hexagon.d.ts +0 -14
- package/es/heatmap/models/hexagon.js +3 -9
- package/es/heatmap/shaders/grid/grid_vert.glsl +42 -30
- package/es/heatmap/shaders/grid3d/grid_3d_vert.glsl +26 -14
- package/es/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +16 -19
- package/es/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +22 -16
- package/es/heatmap/shaders/heatmap/heatmap_vert.glsl +4 -3
- package/es/heatmap/shaders/hexagon/hexagon_vert.glsl +23 -13
- package/es/image/models/image.d.ts +0 -14
- package/es/image/models/image.js +3 -11
- package/es/image/shaders/image_vert.glsl +6 -7
- package/es/line/models/arc.d.ts +0 -18
- package/es/line/models/arc.js +8 -57
- package/es/line/models/arc_3d.d.ts +0 -18
- package/es/line/models/arc_3d.js +7 -55
- package/es/line/models/flow.d.ts +0 -17
- package/es/line/models/flow.js +7 -35
- package/es/line/models/great_circle.d.ts +0 -17
- package/es/line/models/great_circle.js +6 -34
- package/es/line/models/line.d.ts +0 -17
- package/es/line/models/line.js +8 -17
- package/es/line/models/simple_line.d.ts +0 -14
- package/es/line/models/simple_line.js +47 -12
- package/es/line/models/wall.d.ts +0 -17
- package/es/line/models/wall.js +48 -22
- package/es/line/shaders/arc/line_arc_vert.glsl +48 -42
- package/es/line/shaders/arc3d/line_arc_3d_vert.glsl +20 -15
- package/es/line/shaders/flow/flow_line_vert.glsl +48 -30
- package/es/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +72 -56
- package/es/line/shaders/line/line_vert.glsl +48 -31
- package/es/line/shaders/simple/simpleline_vert.glsl +23 -18
- package/es/line/shaders/wall/wall_vert.glsl +45 -36
- package/es/mask/models/fill.js +1 -2
- package/es/mask/shaders/mask_vert.glsl +7 -2
- package/es/plugins/DataMappingPlugin.d.ts +1 -0
- package/es/plugins/DataMappingPlugin.js +24 -1
- package/es/plugins/PixelPickingPlugin.js +2 -2
- package/es/plugins/RegisterStyleAttributePlugin.d.ts +1 -0
- package/es/plugins/RegisterStyleAttributePlugin.js +25 -3
- package/es/plugins/ShaderUniformPlugin.d.ts +5 -0
- package/es/plugins/ShaderUniformPlugin.js +34 -2
- package/es/point/models/billboard_point.d.ts +0 -14
- package/es/point/models/billboard_point.js +3 -11
- package/es/point/models/earthExtrude.d.ts +0 -16
- package/es/point/models/earthExtrude.js +8 -15
- package/es/point/models/earthFill.d.ts +0 -16
- package/es/point/models/earthFill.js +5 -13
- package/es/point/models/extrude.d.ts +0 -16
- package/es/point/models/extrude.js +12 -19
- package/es/point/models/fill.d.ts +0 -16
- package/es/point/models/fill.js +5 -16
- package/es/point/models/fillImage.d.ts +0 -16
- package/es/point/models/fillImage.js +16 -16
- package/es/point/models/image.d.ts +0 -15
- package/es/point/models/image.js +4 -14
- package/es/point/models/normal.d.ts +0 -14
- package/es/point/models/normal.js +3 -11
- package/es/point/models/radar.d.ts +0 -15
- package/es/point/models/radar.js +4 -13
- package/es/point/models/text.d.ts +0 -16
- package/es/point/models/text.js +11 -18
- package/es/point/shaders/billboard/billboard_point_vert.glsl +13 -10
- package/es/point/shaders/earthExtrude/earthExtrude_vert.glsl +25 -15
- package/es/point/shaders/earthFill/earthFill_vert.glsl +6 -6
- package/es/point/shaders/extrude/extrude_vert.glsl +39 -35
- package/es/point/shaders/fill/fill_vert.glsl +14 -12
- package/es/point/shaders/fillImage/fillImage_vert.glsl +28 -16
- package/es/point/shaders/image/image_vert.glsl +12 -15
- package/es/point/shaders/normal/normal_vert.glsl +10 -7
- package/es/point/shaders/radar/radar_vert.glsl +11 -11
- package/es/point/shaders/text/text_vert.glsl +9 -10
- package/es/polygon/models/extrude.d.ts +0 -16
- package/es/polygon/models/extrude.js +26 -26
- package/es/polygon/models/extrusion.d.ts +0 -16
- package/es/polygon/models/extrusion.js +4 -34
- package/es/polygon/models/fill.d.ts +0 -14
- package/es/polygon/models/fill.js +4 -12
- package/es/polygon/models/ocean.d.ts +0 -14
- package/es/polygon/models/ocean.js +6 -11
- package/es/polygon/models/water.d.ts +0 -14
- package/es/polygon/models/water.js +6 -11
- package/es/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +15 -17
- package/es/polygon/shaders/extrude/polygon_extrude_vert.glsl +20 -22
- 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 +6 -7
- package/es/polygon/shaders/fill/fill_vert.glsl +12 -10
- package/es/polygon/shaders/ocean/ocean_vert.glsl +4 -3
- 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 +0 -14
- package/es/raster/models/raster.js +3 -12
- package/es/raster/models/rasterRgb.d.ts +0 -14
- package/es/raster/models/rasterRgb.js +3 -12
- package/es/raster/models/rasterTerrainRgb.d.ts +0 -14
- package/es/raster/models/rasterTerrainRgb.js +3 -11
- 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 +16 -0
- package/es/tile/tile/Tile.d.ts +0 -2
- package/es/utils/extrude_polyline.d.ts +15 -0
- package/es/utils/extrude_polyline.js +217 -0
- package/es/utils/multiPassRender.js +2 -10
- package/es/wind/models/wind.d.ts +0 -14
- package/es/wind/models/wind.js +1 -9
- package/es/wind/shaders/wind_vert.glsl +5 -6
- package/lib/citybuliding/models/build.d.ts +0 -16
- package/lib/citybuliding/models/build.js +20 -18
- package/lib/citybuliding/shaders/build_frag.glsl +6 -6
- package/lib/citybuliding/shaders/build_vert.glsl +14 -8
- package/lib/core/BaseLayer.js +8 -12
- package/lib/core/BaseModel.d.ts +2 -15
- package/lib/core/BaseModel.js +60 -92
- package/lib/core/CommonStyleAttribute.d.ts +18 -14
- package/lib/core/CommonStyleAttribute.js +68 -23
- package/lib/core/triangulation.js +39 -13
- package/lib/earth/models/atmosphere.d.ts +0 -15
- package/lib/earth/models/atmosphere.js +24 -30
- package/lib/earth/models/base.d.ts +0 -15
- package/lib/earth/models/base.js +24 -30
- package/lib/earth/models/bloomsphere.d.ts +0 -15
- package/lib/earth/models/bloomsphere.js +24 -30
- package/lib/earth/shaders/atmosphere/atmosphere_vert.glsl +5 -7
- package/lib/earth/shaders/base/base_vert.glsl +3 -3
- package/lib/earth/shaders/bloomshpere/bloomsphere_vert.glsl +4 -5
- package/lib/geometry/models/billboard.d.ts +0 -15
- package/lib/geometry/models/billboard.js +8 -14
- package/lib/geometry/models/plane.d.ts +0 -14
- package/lib/geometry/models/plane.js +10 -10
- package/lib/geometry/models/sprite.js +9 -3
- package/lib/geometry/shaders/billboard_vert.glsl +25 -28
- package/lib/geometry/shaders/plane_vert.glsl +6 -6
- package/lib/geometry/shaders/sprite_vert.glsl +9 -7
- package/lib/heatmap/models/grid.d.ts +0 -14
- package/lib/heatmap/models/grid.js +3 -10
- package/lib/heatmap/models/grid3d.d.ts +0 -16
- package/lib/heatmap/models/grid3d.js +6 -14
- package/lib/heatmap/models/heatmap.d.ts +1 -20
- package/lib/heatmap/models/heatmap.js +82 -95
- package/lib/heatmap/models/hexagon.d.ts +0 -14
- package/lib/heatmap/models/hexagon.js +3 -9
- package/lib/heatmap/shaders/grid/grid_vert.glsl +42 -30
- package/lib/heatmap/shaders/grid3d/grid_3d_vert.glsl +26 -14
- package/lib/heatmap/shaders/heatmap/heatmap_3d_vert.glsl +16 -19
- package/lib/heatmap/shaders/heatmap/heatmap_framebuffer_vert.glsl +22 -16
- package/lib/heatmap/shaders/heatmap/heatmap_vert.glsl +4 -3
- package/lib/heatmap/shaders/hexagon/hexagon_vert.glsl +23 -13
- package/lib/image/models/image.d.ts +0 -14
- package/lib/image/models/image.js +3 -11
- package/lib/image/shaders/image_vert.glsl +6 -7
- package/lib/line/models/arc.d.ts +0 -18
- package/lib/line/models/arc.js +7 -56
- package/lib/line/models/arc_3d.d.ts +0 -18
- package/lib/line/models/arc_3d.js +7 -55
- package/lib/line/models/flow.d.ts +0 -17
- package/lib/line/models/flow.js +7 -35
- package/lib/line/models/great_circle.d.ts +0 -17
- package/lib/line/models/great_circle.js +5 -33
- package/lib/line/models/line.d.ts +0 -17
- package/lib/line/models/line.js +8 -17
- package/lib/line/models/simple_line.d.ts +0 -14
- package/lib/line/models/simple_line.js +47 -12
- package/lib/line/models/wall.d.ts +0 -17
- package/lib/line/models/wall.js +48 -22
- package/lib/line/shaders/arc/line_arc_vert.glsl +48 -42
- package/lib/line/shaders/arc3d/line_arc_3d_vert.glsl +20 -15
- package/lib/line/shaders/flow/flow_line_vert.glsl +48 -30
- package/lib/line/shaders/greatCircle/line_arc_great_circle_vert.glsl +72 -56
- package/lib/line/shaders/line/line_vert.glsl +48 -31
- package/lib/line/shaders/simple/simpleline_vert.glsl +23 -18
- package/lib/line/shaders/wall/wall_vert.glsl +45 -36
- package/lib/mask/models/fill.js +1 -2
- package/lib/mask/shaders/mask_vert.glsl +7 -2
- package/lib/plugins/DataMappingPlugin.d.ts +1 -0
- package/lib/plugins/DataMappingPlugin.js +23 -0
- package/lib/plugins/PixelPickingPlugin.js +1 -1
- package/lib/plugins/RegisterStyleAttributePlugin.d.ts +1 -0
- package/lib/plugins/RegisterStyleAttributePlugin.js +24 -2
- package/lib/plugins/ShaderUniformPlugin.d.ts +5 -0
- package/lib/plugins/ShaderUniformPlugin.js +34 -2
- package/lib/point/models/billboard_point.d.ts +0 -14
- package/lib/point/models/billboard_point.js +3 -11
- package/lib/point/models/earthExtrude.d.ts +0 -16
- package/lib/point/models/earthExtrude.js +7 -14
- package/lib/point/models/earthFill.d.ts +0 -16
- package/lib/point/models/earthFill.js +5 -13
- package/lib/point/models/extrude.d.ts +0 -16
- package/lib/point/models/extrude.js +11 -18
- package/lib/point/models/fill.d.ts +0 -16
- package/lib/point/models/fill.js +5 -16
- package/lib/point/models/fillImage.d.ts +0 -16
- package/lib/point/models/fillImage.js +16 -16
- package/lib/point/models/image.d.ts +0 -15
- package/lib/point/models/image.js +4 -14
- package/lib/point/models/normal.d.ts +0 -14
- package/lib/point/models/normal.js +3 -11
- package/lib/point/models/radar.d.ts +0 -15
- package/lib/point/models/radar.js +4 -13
- package/lib/point/models/text.d.ts +0 -16
- package/lib/point/models/text.js +11 -18
- package/lib/point/shaders/billboard/billboard_point_vert.glsl +13 -10
- package/lib/point/shaders/earthExtrude/earthExtrude_vert.glsl +25 -15
- package/lib/point/shaders/earthFill/earthFill_vert.glsl +6 -6
- package/lib/point/shaders/extrude/extrude_vert.glsl +39 -35
- package/lib/point/shaders/fill/fill_vert.glsl +14 -12
- package/lib/point/shaders/fillImage/fillImage_vert.glsl +28 -16
- package/lib/point/shaders/image/image_vert.glsl +12 -15
- package/lib/point/shaders/normal/normal_vert.glsl +10 -7
- package/lib/point/shaders/radar/radar_vert.glsl +11 -11
- package/lib/point/shaders/text/text_vert.glsl +9 -10
- package/lib/polygon/models/extrude.d.ts +0 -16
- package/lib/polygon/models/extrude.js +25 -25
- package/lib/polygon/models/extrusion.d.ts +0 -16
- package/lib/polygon/models/extrusion.js +4 -34
- package/lib/polygon/models/fill.d.ts +0 -14
- package/lib/polygon/models/fill.js +4 -12
- package/lib/polygon/models/ocean.d.ts +0 -14
- package/lib/polygon/models/ocean.js +6 -11
- package/lib/polygon/models/water.d.ts +0 -14
- package/lib/polygon/models/water.js +6 -11
- package/lib/polygon/shaders/extrude/polygon_extrude_picklight_vert.glsl +15 -17
- package/lib/polygon/shaders/extrude/polygon_extrude_vert.glsl +20 -22
- 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 +6 -7
- package/lib/polygon/shaders/fill/fill_vert.glsl +12 -10
- package/lib/polygon/shaders/ocean/ocean_vert.glsl +4 -3
- 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 +0 -14
- package/lib/raster/models/raster.js +3 -12
- package/lib/raster/models/rasterRgb.d.ts +0 -14
- package/lib/raster/models/rasterRgb.js +3 -12
- package/lib/raster/models/rasterTerrainRgb.d.ts +0 -14
- package/lib/raster/models/rasterTerrainRgb.js +3 -11
- 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 +16 -0
- package/lib/tile/tile/Tile.d.ts +0 -2
- package/lib/utils/extrude_polyline.d.ts +15 -0
- package/lib/utils/extrude_polyline.js +217 -0
- package/lib/utils/multiPassRender.js +2 -10
- package/lib/wind/models/wind.d.ts +0 -14
- package/lib/wind/models/wind.js +1 -9
- package/lib/wind/shaders/wind_vert.glsl +5 -6
- package/package.json +9 -9
|
@@ -7,20 +7,6 @@ export declare function PointTriangulation(feature: IEncodeFeature): {
|
|
|
7
7
|
size: number;
|
|
8
8
|
};
|
|
9
9
|
export default class NormalModel 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
|
-
};
|
|
24
10
|
getDefaultStyle(): Partial<IPointLayerStyleOptions>;
|
|
25
11
|
protected getCommonUniformsInfo(): {
|
|
26
12
|
uniformsArray: number[];
|
|
@@ -9,10 +9,11 @@ exports.default = void 0;
|
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _l7Core = require("@antv/l7-core");
|
|
11
11
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
12
|
+
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
12
13
|
/* babel-plugin-inline-import '../shaders/normal/normal_frag.glsl' */
|
|
13
14
|
const normalFrag = "in vec4 v_color;\nout vec4 outputColor;\nvoid main() {\n outputColor = v_color;\n}";
|
|
14
15
|
/* babel-plugin-inline-import '../shaders/normal/normal_vert.glsl' */
|
|
15
|
-
const normalVert = "layout(location =
|
|
16
|
+
const normalVert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\n\nlayout(std140) uniform u_Common {\n float u_size_scale;\n};\n\nout vec4 v_color;\n\n#pragma include \"projection\"\n#pragma include \"project\"\n\nvoid main() {\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n\n if (u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(a_Position, 1.0);\n } else {\n vec4 project_pos = project_position(vec4(a_Position, 1.0)) + vec4(a_Size / 2., -a_Size /2., 0., 0.);\n gl_Position = project_common_position_to_clipspace(project_pos);\n }\n\n gl_PointSize = a_Size * u_size_scale * 2.0 * u_DevicePixelRatio;\n}\n";
|
|
16
17
|
function PointTriangulation(feature) {
|
|
17
18
|
const coordinates = feature.coordinates;
|
|
18
19
|
return {
|
|
@@ -22,12 +23,6 @@ function PointTriangulation(feature) {
|
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
class NormalModel extends _BaseModel.default {
|
|
25
|
-
get attributeLocation() {
|
|
26
|
-
return Object.assign(super.attributeLocation, {
|
|
27
|
-
MAX: super.attributeLocation.MAX,
|
|
28
|
-
SIZE: 9
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
26
|
getDefaultStyle() {
|
|
32
27
|
return {
|
|
33
28
|
blend: 'additive'
|
|
@@ -56,7 +51,6 @@ class NormalModel extends _BaseModel.default {
|
|
|
56
51
|
vertexShader: normalVert,
|
|
57
52
|
fragmentShader: normalFrag,
|
|
58
53
|
triangulation: PointTriangulation,
|
|
59
|
-
defines: _this2.getDefines(),
|
|
60
54
|
inject: _this2.getInject(),
|
|
61
55
|
depth: {
|
|
62
56
|
enable: false
|
|
@@ -71,14 +65,12 @@ class NormalModel extends _BaseModel.default {
|
|
|
71
65
|
return;
|
|
72
66
|
}
|
|
73
67
|
registerBuiltinAttributes() {
|
|
74
|
-
// 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 20层级以上出现数据偏移
|
|
75
|
-
this.registerPosition64LowAttribute();
|
|
76
68
|
this.styleAttributeService.registerStyleAttribute({
|
|
77
69
|
name: 'size',
|
|
78
70
|
type: _l7Core.AttributeType.Attribute,
|
|
79
71
|
descriptor: {
|
|
80
72
|
name: 'a_Size',
|
|
81
|
-
shaderLocation:
|
|
73
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
|
|
82
74
|
buffer: {
|
|
83
75
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
84
76
|
data: [],
|
|
@@ -1,21 +1,6 @@
|
|
|
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 RadarModel 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
|
-
};
|
|
19
4
|
protected getCommonUniformsInfo(): {
|
|
20
5
|
uniformsArray: number[];
|
|
21
6
|
uniformsLength: number;
|
|
@@ -10,18 +10,12 @@ var _l7Core = require("@antv/l7-core");
|
|
|
10
10
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
11
11
|
var _interface = require("../../core/interface");
|
|
12
12
|
var _triangulation = require("../../core/triangulation");
|
|
13
|
+
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
13
14
|
/* babel-plugin-inline-import '../shaders/radar/radar_frag.glsl' */
|
|
14
15
|
const pointFillFrag = "\nlayout(std140) uniform commonUniorm{\n float u_additive;\n float u_size_unit;\n float u_speed: 1.0;\n float u_time;\n};\nin vec4 v_data;\nin vec4 v_color;\nin float v_radius;\nin vec2 v_extrude;\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nout vec4 outputColor;\n\nvoid main() {\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius);\n\n float outer_df = sdCircle(v_data.xy, 1.0);\n float inner_df = sdCircle(v_data.xy, r);\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n outputColor = vec4(v_color.rgb, v_color.a);\n\n if(u_additive > 0.0) {\n outputColor *= opacity_t;\n } else {\n outputColor.a *= opacity_t;\n }\n\n if(outputColor.a > 0.0) {\n outputColor = filterColor(outputColor);\n }\n\n vec2 extrude = v_extrude;\n vec2 dir = normalize(extrude);\n vec2 baseDir = vec2(1.0, 0.0);\n float pi = 3.14159265359;\n float flag = sign(dir.y);\n float rades = dot(dir, baseDir);\n float radar_v = (flag - 1.0) * -0.5 * acos(rades)/pi;\n // simple AA\n if(radar_v > 0.99) {\n radar_v = 1.0 - (radar_v - 0.99)/0.01;\n }\n\n outputColor.a *= radar_v;\n}\n";
|
|
15
16
|
/* babel-plugin-inline-import '../shaders/radar/radar_vert.glsl' */
|
|
16
|
-
const pointFillVert = "layout(location =
|
|
17
|
+
const pointFillVert = "layout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 11) in vec3 a_Extrude;\n\nlayout(std140) uniform commonUniorm {\n float u_additive;\n float u_size_unit;\n float u_speed: 1.0;\n float u_time;\n};\n\nout vec4 v_data;\nout vec4 v_color;\nout float v_radius;\nout vec2 v_extrude;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main() {\n float newSize = setPickingSize(a_Size);\n\n float time = u_time * u_speed;\n mat2 rotateMatrix = mat2( \n cos(time), sin(time), \n -sin(time), cos(time)\n );\n v_extrude = rotateMatrix * a_Extrude.xy;\n\n v_color = a_Color;\n v_color.a *= opacity;\n\n float blur = 0.0;\n float antialiasblur = -max(2.0 / u_DevicePixelRatio / a_Size, blur);\n\n if(u_size_unit == 1.) {\n newSize = newSize * u_PixelsPerMeter.z;\n }\n v_radius = newSize;\n\n vec2 offset = (a_Extrude.xy * (newSize));\n vec3 aPosition = a_Position;\n \n offset = project_pixel(offset);\n \n v_data = vec4(a_Extrude.x, a_Extrude.y, antialiasblur, -1.0);\n\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
17
18
|
class RadarModel extends _BaseModel.default {
|
|
18
|
-
get attributeLocation() {
|
|
19
|
-
return Object.assign(super.attributeLocation, {
|
|
20
|
-
MAX: super.attributeLocation.MAX,
|
|
21
|
-
SIZE: 9,
|
|
22
|
-
EXTRUDE: 10
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
19
|
getCommonUniformsInfo() {
|
|
26
20
|
const {
|
|
27
21
|
blend,
|
|
@@ -58,7 +52,6 @@ class RadarModel extends _BaseModel.default {
|
|
|
58
52
|
vertexShader: pointFillVert,
|
|
59
53
|
fragmentShader: pointFillFrag,
|
|
60
54
|
triangulation: _triangulation.PointFillTriangulation,
|
|
61
|
-
defines: _this2.getDefines(),
|
|
62
55
|
inject: _this2.getInject(),
|
|
63
56
|
depth: {
|
|
64
57
|
enable: false
|
|
@@ -73,14 +66,12 @@ class RadarModel extends _BaseModel.default {
|
|
|
73
66
|
return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];
|
|
74
67
|
}
|
|
75
68
|
registerBuiltinAttributes() {
|
|
76
|
-
// 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 20层级以上出现数据偏移
|
|
77
|
-
this.registerPosition64LowAttribute();
|
|
78
69
|
this.styleAttributeService.registerStyleAttribute({
|
|
79
70
|
name: 'extrude',
|
|
80
71
|
type: _l7Core.AttributeType.Attribute,
|
|
81
72
|
descriptor: {
|
|
82
73
|
name: 'a_Extrude',
|
|
83
|
-
shaderLocation:
|
|
74
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.EXTRUDE,
|
|
84
75
|
buffer: {
|
|
85
76
|
// give the WebGL driver a hint that this buffer may change
|
|
86
77
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -101,7 +92,7 @@ class RadarModel extends _BaseModel.default {
|
|
|
101
92
|
name: 'size',
|
|
102
93
|
type: _l7Core.AttributeType.Attribute,
|
|
103
94
|
descriptor: {
|
|
104
|
-
shaderLocation:
|
|
95
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
|
|
105
96
|
name: 'a_Size',
|
|
106
97
|
buffer: {
|
|
107
98
|
// give the WebGL driver a hint that this buffer may change
|
|
@@ -7,22 +7,6 @@ export declare function TextTrianglation(feature: IEncodeFeature): {
|
|
|
7
7
|
size: number;
|
|
8
8
|
};
|
|
9
9
|
export default class TextModel 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
|
-
TEXT_OFFSETS: number;
|
|
24
|
-
UV: number;
|
|
25
|
-
};
|
|
26
10
|
glyphInfo: IEncodeFeature[];
|
|
27
11
|
glyphInfoMap: {
|
|
28
12
|
[key: string]: {
|
package/lib/point/models/text.js
CHANGED
|
@@ -12,12 +12,13 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
12
12
|
var _l7Core = require("@antv/l7-core");
|
|
13
13
|
var _l7Utils = require("@antv/l7-utils");
|
|
14
14
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
15
|
+
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
15
16
|
var _collisionIndex = _interopRequireDefault(require("../../utils/collision-index"));
|
|
16
17
|
var _symbolLayout = require("../../utils/symbol-layout");
|
|
17
18
|
/* babel-plugin-inline-import '../shaders/text/text_frag.glsl' */
|
|
18
19
|
const textFrag = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 48.0\n\nuniform sampler2D u_sdf_map;\nlayout(std140) uniform commonUniforms {\n vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n vec2 u_sdf_map_size;\n float u_raisingHeight: 0.0;\n float u_stroke_width : 2;\n float u_gamma_scale : 0.5;\n float u_halo_blur : 0.5;\n};\n\nin vec2 v_uv;\nin float v_gamma_scale;\nin vec4 v_color;\nin vec4 v_stroke_color;\nin float v_fontScale;\n\nout vec4 outputColor;\n\n#pragma include \"picking\"\nvoid main() {\n // get style data mapping\n\n // get sdf from atlas\n float dist = texture(SAMPLER_2D(u_sdf_map), v_uv).a;\n\n lowp float buff = (6.0 - u_stroke_width / v_fontScale) / SDF_PX;\n highp float gamma = (u_halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (v_fontScale * u_gamma_scale) / 1.0;\n\n highp float gamma_scaled = gamma * v_gamma_scale;\n\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);\n\n outputColor = mix(v_color, v_stroke_color, smoothstep(0., 0.5, 1.- dist));\n\n outputColor.a *= alpha;\n // \u4F5C\u4E3A mask \u6A21\u677F\u65F6\u9700\u8981\u4E22\u5F03\u900F\u660E\u7684\u50CF\u7D20\n if (outputColor.a < 0.01) {\n discard;\n }\n outputColor = filterColor(outputColor);\n}\n";
|
|
19
20
|
/* babel-plugin-inline-import '../shaders/text/text_vert.glsl' */
|
|
20
|
-
const textVert = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 24.0\n\nlayout(location =
|
|
21
|
+
const textVert = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 24.0\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 10) in vec2 a_textOffsets;\nlayout(location = 14) in vec2 a_tex;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n vec2 u_sdf_map_size;\n float u_raisingHeight: 0.0;\n float u_stroke_width : 2;\n float u_gamma_scale : 0.5;\n float u_halo_blur : 0.5;\n};\n\nout vec2 v_uv;\nout float v_gamma_scale;\nout vec4 v_color;\nout vec4 v_stroke_color;\nout float v_fontScale;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n#pragma include \"rotation_2d\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n \n v_uv = a_tex / u_sdf_map_size;\n\n\n\n v_color = vec4(a_Color.xyz, a_Color.w * opacity);\n v_stroke_color = vec4(u_stroke_color.xyz, u_stroke_color.w * opacity);\n\n // \u6587\u672C\u7F29\u653E\u6BD4\u4F8B\n float fontScale = a_Size / FONT_SIZE;\n v_fontScale = fontScale;\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // vec4 projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n vec2 offset = rotate_matrix(a_textOffsets,rotation);\n \n // gl_Position = vec4(projected_position.xy / projected_position.w + rotation_matrix * a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n\n float raiseHeight = u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n vec4 projected_position = project_common_position_to_clipspace_v2(vec4(project_pos.xyz + vec3(0.0, 0.0, raiseHeight), 1.0));\n\n gl_Position = vec4(\n projected_position.xy / projected_position.w + offset * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n v_gamma_scale = gl_Position.w;\n setPickingColor(a_PickingColor);\n\n}\n";
|
|
21
22
|
const {
|
|
22
23
|
isEqual
|
|
23
24
|
} = _l7Utils.lodashUtil;
|
|
@@ -68,14 +69,6 @@ class TextModel extends _BaseModel.default {
|
|
|
68
69
|
yield _this.reBuildModel();
|
|
69
70
|
}));
|
|
70
71
|
}
|
|
71
|
-
get attributeLocation() {
|
|
72
|
-
return Object.assign(super.attributeLocation, {
|
|
73
|
-
MAX: super.attributeLocation.MAX,
|
|
74
|
-
SIZE: 9,
|
|
75
|
-
TEXT_OFFSETS: 10,
|
|
76
|
-
UV: 11
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
72
|
getUninforms() {
|
|
80
73
|
const commoninfo = this.getCommonUniformsInfo();
|
|
81
74
|
const attributeInfo = this.getUniformsBufferInfo(this.getStyleAttribute());
|
|
@@ -139,7 +132,6 @@ class TextModel extends _BaseModel.default {
|
|
|
139
132
|
moduleName: 'pointText',
|
|
140
133
|
vertexShader: textVert,
|
|
141
134
|
fragmentShader: textFrag,
|
|
142
|
-
defines: _this3.getDefines(),
|
|
143
135
|
inject: _this3.getInject(),
|
|
144
136
|
triangulation: TextTrianglation.bind(_this3),
|
|
145
137
|
depth: {
|
|
@@ -195,13 +187,11 @@ class TextModel extends _BaseModel.default {
|
|
|
195
187
|
this.layer.off('remapping', this.mapping);
|
|
196
188
|
}
|
|
197
189
|
registerBuiltinAttributes() {
|
|
198
|
-
// 注册 Position 属性 64 位地位部分,经纬度数据开启双精度,避免大于 20层级以上出现数据偏移
|
|
199
|
-
this.registerPosition64LowAttribute();
|
|
200
190
|
this.styleAttributeService.registerStyleAttribute({
|
|
201
191
|
name: 'textOffsets',
|
|
202
192
|
type: _l7Core.AttributeType.Attribute,
|
|
203
193
|
descriptor: {
|
|
204
|
-
shaderLocation:
|
|
194
|
+
shaderLocation: 10,
|
|
205
195
|
name: 'a_textOffsets',
|
|
206
196
|
// 文字偏移量
|
|
207
197
|
buffer: {
|
|
@@ -221,7 +211,7 @@ class TextModel extends _BaseModel.default {
|
|
|
221
211
|
type: _l7Core.AttributeType.Attribute,
|
|
222
212
|
descriptor: {
|
|
223
213
|
name: 'a_tex',
|
|
224
|
-
shaderLocation:
|
|
214
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.UV,
|
|
225
215
|
buffer: {
|
|
226
216
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
227
217
|
data: [],
|
|
@@ -233,14 +223,13 @@ class TextModel extends _BaseModel.default {
|
|
|
233
223
|
}
|
|
234
224
|
}
|
|
235
225
|
});
|
|
236
|
-
|
|
237
226
|
// point layer size;
|
|
238
227
|
this.styleAttributeService.registerStyleAttribute({
|
|
239
228
|
name: 'size',
|
|
240
229
|
type: _l7Core.AttributeType.Attribute,
|
|
241
230
|
descriptor: {
|
|
242
231
|
name: 'a_Size',
|
|
243
|
-
shaderLocation:
|
|
232
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
|
|
244
233
|
buffer: {
|
|
245
234
|
// give the WebGL driver a hint that this buffer may change
|
|
246
235
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -380,6 +369,9 @@ class TextModel extends _BaseModel.default {
|
|
|
380
369
|
// feature.centroid = calculteCentroid(coordinates);
|
|
381
370
|
|
|
382
371
|
feature.centroid = (0, _l7Utils.calculateCentroid)(feature.coordinates);
|
|
372
|
+
|
|
373
|
+
// 此时地图高德2.0 originCentroid == centroid
|
|
374
|
+
feature.originCentroid = feature.version === 'GAODE2.x' ? (0, _l7Utils.calculateCentroid)(feature.originCoordinates) : feature.originCentroid = feature.centroid;
|
|
383
375
|
this.glyphInfoMap[id] = {
|
|
384
376
|
shaping,
|
|
385
377
|
glyphQuads,
|
|
@@ -429,7 +421,9 @@ class TextModel extends _BaseModel.default {
|
|
|
429
421
|
shaping,
|
|
430
422
|
id = 0
|
|
431
423
|
} = feature;
|
|
432
|
-
const centroid = feature.centroid;
|
|
424
|
+
// const centroid = feature.centroid as [number, number];
|
|
425
|
+
// const centroid = feature.originCentroid as [number, number];
|
|
426
|
+
const centroid = feature.version === 'GAODE2.x' ? feature.originCentroid : feature.centroid;
|
|
433
427
|
const size = feature.size;
|
|
434
428
|
const fontScale = size / 16;
|
|
435
429
|
const pixels = this.mapService.lngLatToContainer(centroid);
|
|
@@ -498,7 +492,6 @@ class TextModel extends _BaseModel.default {
|
|
|
498
492
|
vertexShader: textVert,
|
|
499
493
|
fragmentShader: textFrag,
|
|
500
494
|
triangulation: TextTrianglation.bind(_this5),
|
|
501
|
-
defines: _this5.getDefines(),
|
|
502
495
|
inject: _this5.getInject(),
|
|
503
496
|
depth: {
|
|
504
497
|
enable: false
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
layout(location =
|
|
3
|
-
layout(location =
|
|
4
|
-
layout(location =
|
|
5
|
-
layout(location = ATTRIBUTE_LOCATION_SIZE) in float a_Size;
|
|
2
|
+
layout(location = 0) in vec3 a_Position;
|
|
3
|
+
layout(location = 1) in vec4 a_Color;
|
|
4
|
+
layout(location = 9) in float a_Size;
|
|
6
5
|
|
|
7
6
|
layout(std140) uniform commonUniorm {
|
|
8
7
|
vec4 u_stroke_color;
|
|
@@ -20,14 +19,18 @@ out float v_innerRadius;
|
|
|
20
19
|
#pragma include "project"
|
|
21
20
|
void main() {
|
|
22
21
|
v_color = vec4(a_Color.xyz, a_Color.w * opacity);
|
|
23
|
-
v_blur = 1.0 - max(2.0
|
|
22
|
+
v_blur = 1.0 - max(2.0/a_Size, 0.05);
|
|
24
23
|
v_innerRadius = max((a_Size - u_stroke_width) / a_Size, 0.0);
|
|
25
|
-
|
|
24
|
+
|
|
26
25
|
vec2 offset = project_pixel(u_offsets);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
|
|
27
|
+
if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x
|
|
28
|
+
gl_Position = u_Mvp * vec4(a_Position.xy + offset, a_Position.z, 1.0);
|
|
29
|
+
} else { // else
|
|
30
|
+
vec4 project_pos = project_position(vec4(a_Position, 1.0)) + vec4(a_Size / 2.,-a_Size /2.,0.,0.);
|
|
31
|
+
gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy+offset),project_pos.z,project_pos.w));
|
|
32
|
+
}
|
|
33
|
+
|
|
31
34
|
gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio;
|
|
32
35
|
setPickingColor(a_PickingColor);
|
|
33
36
|
}
|
|
@@ -5,11 +5,13 @@ precision highp float;
|
|
|
5
5
|
#define diffuseRatio 0.3
|
|
6
6
|
#define specularRatio 0.2
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
layout(location =
|
|
10
|
-
layout(location =
|
|
11
|
-
layout(location =
|
|
12
|
-
layout(location =
|
|
8
|
+
|
|
9
|
+
layout(location = 0) in vec3 a_Position;
|
|
10
|
+
layout(location = 1) in vec4 a_Color;
|
|
11
|
+
layout(location = 9) in vec3 a_Size;
|
|
12
|
+
layout(location = 11) in vec3 a_Pos;
|
|
13
|
+
layout(location = 13) in vec3 a_Normal;
|
|
14
|
+
|
|
13
15
|
|
|
14
16
|
layout(std140) uniform commonUniform {
|
|
15
17
|
vec4 u_sourceColor;
|
|
@@ -40,7 +42,7 @@ float getYRadian(float x, float z) {
|
|
|
40
42
|
} else if(x > 0.0 && z <= 0.0){
|
|
41
43
|
return atan(-z/x) + pi/2.0;
|
|
42
44
|
} else if(x <= 0.0 && z <= 0.0) {
|
|
43
|
-
return pi + atan(x/z); //atan(x/z) +
|
|
45
|
+
return pi + atan(x/z); //atan(x/z) +
|
|
44
46
|
} else {
|
|
45
47
|
return atan(z/-x) + pi*3.0/2.0;
|
|
46
48
|
}
|
|
@@ -60,7 +62,15 @@ void main() {
|
|
|
60
62
|
|
|
61
63
|
vec3 offset = size; // 控制圆柱体的大小 - 从标准单位圆柱体进行偏移
|
|
62
64
|
if(u_heightfixed < 1.0) { // 圆柱体不固定高度
|
|
63
|
-
|
|
65
|
+
|
|
66
|
+
if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {
|
|
67
|
+
// P20 坐标系下,为了和 Web 墨卡托坐标系统一,zoom 默认减1
|
|
68
|
+
offset = offset * pow(2.0, (19.0 - u_Zoom));
|
|
69
|
+
}
|
|
70
|
+
if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {
|
|
71
|
+
// P20_2 坐标系下,为了和 Web 墨卡托坐标系统一,zoom 默认减3
|
|
72
|
+
offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));
|
|
73
|
+
}
|
|
64
74
|
} else {// 圆柱体固定高度 ( 处理 mapbox )
|
|
65
75
|
if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {
|
|
66
76
|
offset *= 4.0/pow(2.0, 21.0 - u_Zoom);
|
|
@@ -88,7 +98,7 @@ void main() {
|
|
|
88
98
|
}
|
|
89
99
|
v_color.a *= u_opacity;
|
|
90
100
|
|
|
91
|
-
|
|
101
|
+
|
|
92
102
|
// 在地球模式下,将原本垂直于 xy 平面的圆柱调整姿态到适应圆的角度
|
|
93
103
|
//旋转矩阵mx,创建绕x轴旋转矩阵
|
|
94
104
|
float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);
|
|
@@ -96,9 +106,9 @@ void main() {
|
|
|
96
106
|
float xcos = cos(xRadian);//求解旋转角度余弦值
|
|
97
107
|
float xsin = sin(xRadian);//求解旋转角度正弦值
|
|
98
108
|
mat4 mx = mat4(
|
|
99
|
-
1,0,0,0,
|
|
100
|
-
0,xcos,-xsin,0,
|
|
101
|
-
0,xsin,xcos,0,
|
|
109
|
+
1,0,0,0,
|
|
110
|
+
0,xcos,-xsin,0,
|
|
111
|
+
0,xsin,xcos,0,
|
|
102
112
|
0,0,0,1);
|
|
103
113
|
|
|
104
114
|
//旋转矩阵my,创建绕y轴旋转矩阵
|
|
@@ -106,13 +116,13 @@ void main() {
|
|
|
106
116
|
float ycos = cos(yRadian);//求解旋转角度余弦值
|
|
107
117
|
float ysin = sin(yRadian);//求解旋转角度正弦值
|
|
108
118
|
mat4 my = mat4(
|
|
109
|
-
ycos,0,-ysin,0,
|
|
110
|
-
0,1,0,0,
|
|
111
|
-
ysin,0,ycos,0,
|
|
119
|
+
ycos,0,-ysin,0,
|
|
120
|
+
0,1,0,0,
|
|
121
|
+
ysin,0,ycos,0,
|
|
112
122
|
0,0,0,1);
|
|
113
123
|
|
|
114
124
|
gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);
|
|
115
|
-
|
|
125
|
+
|
|
116
126
|
|
|
117
127
|
setPickingColor(a_PickingColor);
|
|
118
128
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
layout(location =
|
|
2
|
-
layout(location =
|
|
3
|
-
layout(location =
|
|
4
|
-
layout(location =
|
|
5
|
-
layout(location =
|
|
1
|
+
layout(location = 0) in vec3 a_Position;
|
|
2
|
+
layout(location = 1) in vec4 a_Color;
|
|
3
|
+
layout(location = 9) in float a_Size;
|
|
4
|
+
layout(location = 10) in float a_Shape;
|
|
5
|
+
layout(location = 11) in vec3 a_Extrude;
|
|
6
6
|
|
|
7
7
|
layout(std140) uniform commonUniform {
|
|
8
8
|
float u_additive;
|
|
@@ -43,4 +43,4 @@ void main() {
|
|
|
43
43
|
gl_Position = u_ViewProjectionMatrix * vec4(a_Position + extrude * newSize * 0.1 + vec3(u_offsets,0.0), 1.0);
|
|
44
44
|
|
|
45
45
|
setPickingColor(a_PickingColor);
|
|
46
|
-
}
|
|
46
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#define pi
|
|
1
|
+
#define pi 3.1415926535
|
|
2
2
|
|
|
3
|
-
layout(location =
|
|
4
|
-
layout(location =
|
|
5
|
-
layout(location =
|
|
6
|
-
layout(location =
|
|
7
|
-
layout(location =
|
|
3
|
+
layout(location = 0) in vec3 a_Position;
|
|
4
|
+
layout(location = 1) in vec4 a_Color;
|
|
5
|
+
layout(location = 9) in vec3 a_Size;
|
|
6
|
+
layout(location = 11) in vec3 a_Extrude;
|
|
7
|
+
layout(location = 13) in vec3 a_Normal;
|
|
8
8
|
|
|
9
9
|
layout(std140) uniform commonUniforms {
|
|
10
10
|
float u_pickLight;
|
|
@@ -25,41 +25,46 @@ out float v_lightWeight;
|
|
|
25
25
|
#pragma include "picking"
|
|
26
26
|
|
|
27
27
|
float getYRadian(float x, float z) {
|
|
28
|
-
if
|
|
29
|
-
return atan(x
|
|
30
|
-
} else if
|
|
31
|
-
return atan(-z
|
|
32
|
-
} else if
|
|
33
|
-
return
|
|
28
|
+
if(x > 0.0 && z > 0.0) {
|
|
29
|
+
return atan(x/z);
|
|
30
|
+
} else if(x > 0.0 && z <= 0.0){
|
|
31
|
+
return atan(-z/x) + pi/2.0;
|
|
32
|
+
} else if(x <= 0.0 && z <= 0.0) {
|
|
33
|
+
return pi + atan(x/z); //atan(x/z) +
|
|
34
34
|
} else {
|
|
35
|
-
return atan(z
|
|
35
|
+
return atan(z/-x) + pi*3.0/2.0;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
float getXRadian(float y, float r) {
|
|
40
|
-
return atan(y
|
|
40
|
+
return atan(y/r);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
void main() {
|
|
44
|
+
|
|
45
|
+
|
|
44
46
|
vec3 size = a_Size * a_Position;
|
|
45
47
|
|
|
46
48
|
vec3 offset = size; // 控制圆柱体的大小 - 从标准单位圆柱体进行偏移
|
|
47
49
|
|
|
48
|
-
if
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
offset
|
|
50
|
+
if(u_heightfixed < 1.0) { // 圆柱体不固定高度
|
|
51
|
+
|
|
52
|
+
if (u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {
|
|
53
|
+
// P20 坐标系下,为了和 Web 墨卡托坐标系统一,zoom 默认减1
|
|
54
|
+
offset = offset * pow(2.0, (19.0 - u_Zoom));
|
|
55
|
+
}
|
|
56
|
+
if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {
|
|
57
|
+
// P20_2 坐标系下,为了和 Web 墨卡托坐标系统一,zoom 默认减3
|
|
58
|
+
offset = offset * pow(2.0, (19.0 - 3.0 - u_Zoom));
|
|
59
|
+
}
|
|
60
|
+
} else {// 圆柱体固定高度 ( 处理 mapbox )
|
|
61
|
+
if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {
|
|
62
|
+
offset *= 4.0/pow(2.0, 21.0 - u_Zoom);
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
vec4 project_pos = project_position(vec4(positions, 0.0, 1.0), positions64Low);
|
|
66
|
+
|
|
67
|
+
vec4 project_pos = project_position(vec4(a_Extrude.xy, 0., 1.0));
|
|
63
68
|
|
|
64
69
|
// u_r 控制圆柱的生长
|
|
65
70
|
vec4 pos = vec4(project_pos.xy + offset.xy, offset.z * u_r, 1.0);
|
|
@@ -67,8 +72,7 @@ void main() {
|
|
|
67
72
|
// // 圆柱光照效果
|
|
68
73
|
float lightWeight = 1.0;
|
|
69
74
|
|
|
70
|
-
if
|
|
71
|
-
// 取消三元表达式,增强健壮性
|
|
75
|
+
if(u_lightEnable > 0.0) { // 取消三元表达式,增强健壮性
|
|
72
76
|
lightWeight = calc_lighting(pos);
|
|
73
77
|
}
|
|
74
78
|
|
|
@@ -76,20 +80,20 @@ void main() {
|
|
|
76
80
|
|
|
77
81
|
v_color = a_Color;
|
|
78
82
|
|
|
79
|
-
|
|
80
|
-
if
|
|
81
|
-
// 使用渐变颜色
|
|
83
|
+
// 设置圆柱的底色
|
|
84
|
+
if(u_linearColor == 1.0) { // 使用渐变颜色
|
|
82
85
|
v_color = mix(u_sourceColor, u_targetColor, a_Position.z);
|
|
83
|
-
v_color.a =
|
|
86
|
+
v_color.a = v_color.a * opacity;
|
|
84
87
|
} else {
|
|
85
88
|
v_color = vec4(a_Color.rgb * lightWeight, a_Color.w * opacity);
|
|
86
89
|
}
|
|
87
90
|
|
|
88
|
-
|
|
89
|
-
v_color.a *= u_opacitylinear_dir > 0.0 ? 1.0 - a_Position.z
|
|
91
|
+
if(u_opacitylinear > 0.0) {
|
|
92
|
+
v_color.a *= u_opacitylinear_dir > 0.0 ? (1.0 - a_Position.z): a_Position.z;
|
|
90
93
|
}
|
|
91
94
|
|
|
92
|
-
|
|
95
|
+
|
|
96
|
+
gl_Position = project_common_position_to_clipspace_v2(pos);
|
|
93
97
|
|
|
94
98
|
setPickingColor(a_PickingColor);
|
|
95
99
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
layout(location =
|
|
2
|
-
layout(location =
|
|
3
|
-
layout(location =
|
|
4
|
-
layout(location =
|
|
5
|
-
layout(location =
|
|
6
|
-
layout(location = ATTRIBUTE_LOCATION_EXTRUDE) in vec3 a_Extrude;
|
|
1
|
+
layout(location = 0) in vec3 a_Position;
|
|
2
|
+
layout(location = 1) in vec4 a_Color;
|
|
3
|
+
layout(location = 9) in float a_Size;
|
|
4
|
+
layout(location = 10) in float a_Shape;
|
|
5
|
+
layout(location = 11) in vec3 a_Extrude;
|
|
7
6
|
|
|
8
7
|
layout(std140) uniform commonUniforms {
|
|
9
8
|
vec3 u_blur_height_fixed;
|
|
@@ -12,7 +11,7 @@ layout(std140) uniform commonUniforms {
|
|
|
12
11
|
float u_stroke_opacity;
|
|
13
12
|
float u_size_unit;
|
|
14
13
|
float u_time;
|
|
15
|
-
vec4 u_animate;
|
|
14
|
+
vec4 u_animate;
|
|
16
15
|
};
|
|
17
16
|
|
|
18
17
|
out vec4 v_color;
|
|
@@ -26,7 +25,7 @@ out float v_radius;
|
|
|
26
25
|
|
|
27
26
|
void main() {
|
|
28
27
|
// 透明度计算
|
|
29
|
-
v_stroke = stroke;
|
|
28
|
+
v_stroke = stroke;
|
|
30
29
|
vec3 extrude = a_Extrude;
|
|
31
30
|
float shape_type = a_Shape;
|
|
32
31
|
/*
|
|
@@ -52,14 +51,17 @@ void main() {
|
|
|
52
51
|
float antialiasblur = -max(2.0 / u_DevicePixelRatio / newSize, u_blur_height_fixed.x);
|
|
53
52
|
|
|
54
53
|
vec2 offset = (extrude.xy * (newSize + u_stroke_width) + u_offsets);
|
|
54
|
+
vec3 aPosition = a_Position;
|
|
55
55
|
|
|
56
56
|
offset = project_pixel(offset);
|
|
57
57
|
offset = rotate_matrix(offset,rotation);
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
// TODP: /abs(extrude.x) 是为了兼容地球模式
|
|
60
60
|
v_data = vec4(extrude.x/abs(extrude.x), extrude.y/abs(extrude.y), antialiasblur,shape_type);
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
|
|
63
|
+
// vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));
|
|
64
|
+
vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));
|
|
63
65
|
// gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));
|
|
64
66
|
|
|
65
67
|
float raisingHeight = u_blur_height_fixed.y;
|
|
@@ -72,8 +74,8 @@ void main() {
|
|
|
72
74
|
raisingHeight = u_blur_height_fixed.y * mapboxZoomScale;
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
|
-
|
|
76
|
-
gl_Position =
|
|
77
|
+
|
|
78
|
+
gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy + offset, raisingHeight, 1.0));
|
|
77
79
|
|
|
78
80
|
setPickingColor(a_PickingColor);
|
|
79
81
|
}
|