@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
package/es/wind/models/wind.js
CHANGED
|
@@ -7,7 +7,7 @@ import { RasterImageTriangulation } from "../../core/triangulation";
|
|
|
7
7
|
/* babel-plugin-inline-import '../shaders/wind_frag.glsl' */
|
|
8
8
|
const WindFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nvarying vec2 v_texCoord;\nvoid main() {\n vec4 color = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y));\n gl_FragColor = color;\n gl_FragColor.a *= u_opacity;\n}\n";
|
|
9
9
|
/* babel-plugin-inline-import '../shaders/wind_vert.glsl' */
|
|
10
|
-
const WindVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\
|
|
10
|
+
const WindVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\n\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));\n}\n";
|
|
11
11
|
import { Wind } from "./windRender";
|
|
12
12
|
const defaultRampColors = {
|
|
13
13
|
0.0: '#3288bd',
|
|
@@ -32,12 +32,6 @@ export default class WindModel extends BaseModel {
|
|
|
32
32
|
_defineProperty(this, "frequency", new FrequencyController(7.2));
|
|
33
33
|
_defineProperty(this, "cacheZoom", void 0);
|
|
34
34
|
}
|
|
35
|
-
get attributeLocation() {
|
|
36
|
-
return Object.assign(super.attributeLocation, {
|
|
37
|
-
MAX: super.attributeLocation.MAX,
|
|
38
|
-
UV: 9
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
35
|
render(options) {
|
|
42
36
|
this.drawColorMode(options);
|
|
43
37
|
// Tip: 控制风场的平均更新频率
|
|
@@ -114,7 +108,6 @@ export default class WindModel extends BaseModel {
|
|
|
114
108
|
moduleName: 'wind',
|
|
115
109
|
vertexShader: WindVert,
|
|
116
110
|
fragmentShader: WindFrag,
|
|
117
|
-
defines: _this.getDefines(),
|
|
118
111
|
triangulation: RasterImageTriangulation,
|
|
119
112
|
primitive: gl.TRIANGLES,
|
|
120
113
|
depth: {
|
|
@@ -153,7 +146,6 @@ export default class WindModel extends BaseModel {
|
|
|
153
146
|
type: AttributeType.Attribute,
|
|
154
147
|
descriptor: {
|
|
155
148
|
name: 'a_Uv',
|
|
156
|
-
shaderLocation: this.attributeLocation.UV,
|
|
157
149
|
buffer: {
|
|
158
150
|
// give the WebGL driver a hint that this buffer may change
|
|
159
151
|
usage: gl.DYNAMIC_DRAW,
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
precision highp float;
|
|
2
2
|
uniform mat4 u_ModelMatrix;
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
attribute vec3 a_Position;
|
|
5
|
+
attribute vec2 a_Uv;
|
|
7
6
|
varying vec2 v_texCoord;
|
|
8
7
|
#pragma include "projection"
|
|
9
8
|
void main() {
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
v_texCoord = a_Uv;
|
|
10
|
+
vec4 project_pos = project_position(vec4(a_Position, 1.0));
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
gl_Position = project_common_position_to_clipspace_v2(vec4(project_pos.xy,0., 1.0));
|
|
14
13
|
}
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import type { IModel } from '@antv/l7-core';
|
|
2
2
|
import BaseModel from '../../core/BaseModel';
|
|
3
3
|
export default class CityBuildModel 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
|
-
NORMAL: number;
|
|
18
|
-
UV: number;
|
|
19
|
-
};
|
|
20
4
|
private cityCenter;
|
|
21
5
|
private cityMinSize;
|
|
22
6
|
protected getCommonUniformsInfo(): {
|
|
@@ -10,25 +10,18 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
var _l7Core = require("@antv/l7-core");
|
|
11
11
|
var _l7Utils = require("@antv/l7-utils");
|
|
12
12
|
var _BaseModel = _interopRequireDefault(require("../../core/BaseModel"));
|
|
13
|
+
var _CommonStyleAttribute = require("../../core/CommonStyleAttribute");
|
|
13
14
|
var _triangulation = require("../../core/triangulation");
|
|
14
15
|
/* babel-plugin-inline-import '../shaders/build_frag.glsl' */
|
|
15
|
-
const buildFrag = "precision highp float;\nlayout(std140) uniform commonUniforms {\n vec4 u_baseColor: [ 1.0, 0, 0, 1.0 ];\n vec4 u_brightColor: [ 1.0, 0, 0, 1.0 ];\n vec4 u_windowColor: [ 1.0, 0, 0, 1.0 ];\n vec4 u_circleSweepColor;\n vec2 u_cityCenter;\n float u_circleSweep;\n float u_cityMinSize;\n float u_circleSweepSpeed;\n float u_opacity: 1.0;\n float u_near: 0;\n float u_far: 1;\n float u_time;\n};\nin vec4 v_Color;\nin vec2 v_texCoord;\nin float v_worldDis;\nout vec4 outputColor;\n\n#pragma include \"picking\"\n#pragma include \"scene_uniforms\"\n\nvec3 getWindowColor(float n, float hot, vec3 brightColor, vec3 darkColor) {\n float s = step(hot, n);\n vec3 color = mix(brightColor,vec3(0.9,0.9,1.0),n);\n\n return mix(darkColor, color, s);\n}\nfloat random (vec2 st) {\n return fract(sin(dot(st.xy, vec2(12.9898,78.233)))* 43758.5453123);\n}\n\nfloat LinearizeDepth()\n{\n float z = gl_FragCoord.z * 2.0 - 1.0;\n return (2.0 * u_near * u_far) / (u_far + u_near - z * (u_far - u_near));\n}\n\nvec3 fog(vec3 color, vec3 fogColor, float depth){\n float fogFactor=clamp(depth,0.0,1.0);\n vec3 output_color=mix(fogColor,color,fogFactor);\n return output_color;\n}\n\nfloat sdRect(vec2 p, vec2 sz) {\n vec2 d = abs(p) - sz;\n float outside = length(max(d, 0.));\n float inside = min(max(d.x, d.y), 0.);\n return outside + inside;\n}\n\nvoid main() {\n outputColor = v_Color;\n vec3 baseColor = u_baseColor.xyz;\n vec3 brightColor = u_brightColor.xyz;\n vec3 windowColor = u_windowColor.xyz;\n float targetColId = 5.;\n float depth = 1.0 - LinearizeDepth() / u_far * u_Zoom;\n vec3 fogColor = vec3(23.0/255.0,31.0/255.0,51.0/255.0);\n if(v_texCoord.x < 0.) { //\u9876\u90E8\u989C\u8272\n vec3 foggedColor = fog(baseColor.xyz + vec3(0.12*0.9,0.2*0.9,0.3*0.9),fogColor,depth);\n outputColor = vec4( foggedColor, v_Color.w);\n }else { // \u4FA7\u9762\u989C\u8272\n vec2 st = v_texCoord;\n vec2 UvScale = v_texCoord;\n float tStep = min(0.08,max(0.05* (18.0-u_Zoom),0.02));\n float tStart = 0.25 * tStep;\n float tEnd = 0.75 * tStep;\n float u = mod(UvScale.x, tStep);\n float v = mod(UvScale.y, tStep);\n float ux = floor(UvScale.x/tStep);\n float uy = floor(UvScale.y/tStep);\n float n = random(vec2(ux,uy));\n float lightP = u_time;\n float head = 1.0- step(0.005,st.y);\n /*step3*/\n // \u5C06\u7A97\u6237\u989C\u8272\u548C\u5899\u9762\u989C\u8272\u533A\u522B\u5F00\u6765\n float sU = step(tStart, u) - step(tEnd, u);\n float sV = step(tStart, v) - step(tEnd, v);\n vec2 windowSize = vec2(abs(tEnd-tStart),abs(tEnd-tStart));\n float dist = sdRect(vec2(u,v), windowSize);\n float s = sU * sV;\n\n float curColId = floor(UvScale.x / tStep);\n float sCol = step(targetColId - 0.2, curColId) - step(targetColId + 0.2, curColId);\n\n float mLightP = mod(lightP, 2.);\n float sRow = step(mLightP - 0.2, st.y) - step(mLightP, st.y);\n if(ux == targetColId){\n n =0.;\n }\n float timeP = min(0.75, abs ( sin(u_time/3.0) ) );\n float hot = smoothstep(1.0,0.0,timeP);\n vec3 color = mix(baseColor, getWindowColor(n,hot,brightColor,windowColor), s);\n //vec3 color = mix(baseColor, getWindowColor(n,hot,brightColor,windowColor), 1.0);\n float sFinal = s * sCol * sRow;\n color += mix(baseColor, brightColor, sFinal*n);\n if (st.y<0.01){\n color = baseColor;\n }\n if(head ==1.0) { // \u9876\u90E8\u4EAE\u7EBF\n color = brightColor;\n }\n color = color * v_Color.rgb;\n\n vec3 foggedColor = fog(color,fogColor,depth);\n\n outputColor = vec4(foggedColor,1.0);\n }\n\n\n if(u_circleSweep > 0.0 && v_worldDis < u_cityMinSize) {\n float r = fract(((v_worldDis/u_cityMinSize) - u_time * u_circleSweepSpeed) * 2.0);\n outputColor.rgb += r * r * u_circleSweepColor.rgb;\n }\n\n outputColor.a *= u_opacity;\n outputColor = filterColor(outputColor);\n}\n";
|
|
16
|
+
const buildFrag = "precision highp float;\nlayout(std140) uniform commonUniforms {\n vec4 u_baseColor : [ 1.0, 0, 0, 1.0 ];\n vec4 u_brightColor : [ 1.0, 0, 0, 1.0 ];\n vec4 u_windowColor : [ 1.0, 0, 0, 1.0 ];\n vec4 u_circleSweepColor;\n vec2 u_cityCenter;\n float u_circleSweep;\n float u_cityMinSize;\n float u_circleSweepSpeed;\n float u_opacity: 1.0;\n float u_near : 0;\n float u_far : 1;\n float u_time;\n};\nin vec4 v_Color;\nin vec2 v_texCoord;\nin float v_worldDis;\nout vec4 outputColor;\n\n#pragma include \"picking\"\n#pragma include \"scene_uniforms\"\n\nvec3 getWindowColor(float n, float hot, vec3 brightColor, vec3 darkColor) {\n float s = step(hot, n);\n vec3 color = mix(brightColor,vec3(0.9,0.9,1.0),n);\n\n return mix(darkColor, color, s);\n}\nfloat random (vec2 st) {\n return fract(sin(dot(st.xy, vec2(12.9898,78.233)))* 43758.5453123);\n}\n\nfloat LinearizeDepth()\n{\n float z = gl_FragCoord.z * 2.0 - 1.0;\n return (2.0 * u_near * u_far) / (u_far + u_near - z * (u_far - u_near));\n}\n\nvec3 fog(vec3 color, vec3 fogColor, float depth){\n float fogFactor=clamp(depth,0.0,1.0);\n vec3 output_color=mix(fogColor,color,fogFactor);\n return output_color;\n}\n\nfloat sdRect(vec2 p, vec2 sz) {\n vec2 d = abs(p) - sz;\n float outside = length(max(d, 0.));\n float inside = min(max(d.x, d.y), 0.);\n return outside + inside;\n}\n\nvoid main() {\n outputColor = v_Color;\n vec3 baseColor = u_baseColor.xyz;\n vec3 brightColor = u_brightColor.xyz;\n vec3 windowColor = u_windowColor.xyz;\n float targetColId = 5.;\n float depth = 1.0 - LinearizeDepth() / u_far * u_Zoom;\n vec3 fogColor = vec3(23.0/255.0,31.0/255.0,51.0/255.0);\n if(v_texCoord.x < 0.) { //\u9876\u90E8\u989C\u8272\n vec3 foggedColor = fog(baseColor.xyz + vec3(0.12*0.9,0.2*0.9,0.3*0.9),fogColor,depth);\n outputColor = vec4( foggedColor, v_Color.w);\n }else { // \u4FA7\u9762\u989C\u8272\n vec2 st = v_texCoord;\n vec2 UvScale = v_texCoord;\n float tStep = min(0.08,max(0.05* (18.0-u_Zoom),0.02));\n float tStart = 0.25 * tStep;\n float tEnd = 0.75 * tStep;\n float u = mod(UvScale.x, tStep);\n float v = mod(UvScale.y, tStep);\n float ux = floor(UvScale.x/tStep);\n float uy = floor(UvScale.y/tStep);\n float n = random(vec2(ux,uy));\n float lightP = u_time;\n float head = 1.0- step(0.005,st.y);\n /*step3*/\n // \u5C06\u7A97\u6237\u989C\u8272\u548C\u5899\u9762\u989C\u8272\u533A\u522B\u5F00\u6765\n float sU = step(tStart, u) - step(tEnd, u);\n float sV = step(tStart, v) - step(tEnd, v);\n vec2 windowSize = vec2(abs(tEnd-tStart),abs(tEnd-tStart));\n float dist = sdRect(vec2(u,v), windowSize);\n float s = sU * sV;\n\n float curColId = floor(UvScale.x / tStep);\n float sCol = step(targetColId - 0.2, curColId) - step(targetColId + 0.2, curColId);\n\n float mLightP = mod(lightP, 2.);\n float sRow = step(mLightP - 0.2, st.y) - step(mLightP, st.y);\n if(ux == targetColId){\n n =0.;\n }\n float timeP = min(0.75, abs ( sin(u_time/3.0) ) );\n float hot = smoothstep(1.0,0.0,timeP);\n vec3 color = mix(baseColor, getWindowColor(n,hot,brightColor,windowColor), s);\n //vec3 color = mix(baseColor, getWindowColor(n,hot,brightColor,windowColor), 1.0);\n float sFinal = s * sCol * sRow;\n color += mix(baseColor, brightColor, sFinal*n);\n if (st.y<0.01){\n color = baseColor;\n }\n if(head ==1.0) { // \u9876\u90E8\u4EAE\u7EBF\n color = brightColor;\n }\n color = color * v_Color.rgb;\n\n vec3 foggedColor = fog(color,fogColor,depth);\n\n outputColor = vec4(foggedColor,1.0);\n }\n\n\n if(u_circleSweep > 0.0 && v_worldDis < u_cityMinSize) {\n float r = fract(((v_worldDis/u_cityMinSize) - u_time * u_circleSweepSpeed) * 2.0);\n outputColor.rgb += r * r * u_circleSweepColor.rgb;\n }\n \n outputColor.a *= u_opacity;\n outputColor = filterColor(outputColor);\n}\n";
|
|
16
17
|
/* babel-plugin-inline-import '../shaders/build_vert.glsl' */
|
|
17
|
-
const buildVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nlayout(location =
|
|
18
|
+
const buildVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nlayout(location = 0) in vec3 a_Position;\nlayout(location = 1) in vec4 a_Color;\nlayout(location = 9) in float a_Size;\nlayout(location = 13) in vec3 a_Normal;\nlayout(location = 14) in vec2 a_Uv;\n\nout vec2 v_texCoord;\nout vec4 v_Color;\nout float v_worldDis;\n\nlayout(std140) uniform commonUniforms {\n vec4 u_baseColor : [ 1.0, 0, 0, 1.0 ];\n vec4 u_brightColor : [ 1.0, 0, 0, 1.0 ];\n vec4 u_windowColor : [ 1.0, 0, 0, 1.0 ];\n vec4 u_circleSweepColor;\n vec2 u_cityCenter;\n float u_circleSweep;\n float u_cityMinSize;\n float u_circleSweepSpeed;\n float u_opacity: 1.0;\n float u_near : 0;\n float u_far : 1;\n float u_time;\n};\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n v_texCoord = a_Uv;\n\n if(u_circleSweep > 0.0) {\n vec2 lnglatscale = vec2(0.0);\n if(u_CoordinateSystem != COORDINATE_SYSTEM_P20_2) {\n lnglatscale = (a_Position.xy - u_cityCenter) * vec2(0.0, 0.135);\n }\n v_worldDis = length(a_Position.xy + lnglatscale - u_cityCenter);\n }\n \n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
18
19
|
class CityBuildModel extends _BaseModel.default {
|
|
19
20
|
constructor(...args) {
|
|
20
21
|
super(...args);
|
|
21
22
|
(0, _defineProperty2.default)(this, "cityCenter", void 0);
|
|
22
23
|
(0, _defineProperty2.default)(this, "cityMinSize", void 0);
|
|
23
24
|
}
|
|
24
|
-
get attributeLocation() {
|
|
25
|
-
return Object.assign(super.attributeLocation, {
|
|
26
|
-
MAX: super.attributeLocation.MAX,
|
|
27
|
-
SIZE: 9,
|
|
28
|
-
NORMAL: 10,
|
|
29
|
-
UV: 11
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
25
|
getCommonUniformsInfo() {
|
|
33
26
|
const {
|
|
34
27
|
opacity = 1,
|
|
@@ -64,10 +57,20 @@ class CityBuildModel extends _BaseModel.default {
|
|
|
64
57
|
calCityGeo() {
|
|
65
58
|
// @ts-ignore
|
|
66
59
|
const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
if (this.mapService.version === 'GAODE2.x') {
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
this.cityCenter = this.mapService.lngLatToCoord([(maxLng + minLng) / 2, (maxLat + minLat) / 2]);
|
|
63
|
+
// @ts-ignore
|
|
64
|
+
const l1 = this.mapService.lngLatToCoord([maxLng, maxLat]);
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
const l2 = this.mapService.lngLatToCoord([minLng, minLat]);
|
|
67
|
+
this.cityMinSize = Math.sqrt(Math.pow(l1[0] - l2[0], 2) + Math.pow(l1[1] - l2[1], 2)) / 4;
|
|
68
|
+
} else {
|
|
69
|
+
const w = maxLng - minLng;
|
|
70
|
+
const h = maxLat - minLat;
|
|
71
|
+
this.cityCenter = [(maxLng + minLng) / 2, (maxLat + minLat) / 2];
|
|
72
|
+
this.cityMinSize = Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2)) / 4;
|
|
73
|
+
}
|
|
71
74
|
}
|
|
72
75
|
initModels() {
|
|
73
76
|
var _this = this;
|
|
@@ -89,7 +92,6 @@ class CityBuildModel extends _BaseModel.default {
|
|
|
89
92
|
depth: {
|
|
90
93
|
enable: true
|
|
91
94
|
},
|
|
92
|
-
defines: _this2.getDefines(),
|
|
93
95
|
inject: _this2.getInject(),
|
|
94
96
|
cull: {
|
|
95
97
|
enable: true,
|
|
@@ -106,7 +108,7 @@ class CityBuildModel extends _BaseModel.default {
|
|
|
106
108
|
type: _l7Core.AttributeType.Attribute,
|
|
107
109
|
descriptor: {
|
|
108
110
|
name: 'a_Normal',
|
|
109
|
-
shaderLocation:
|
|
111
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.NORMAL,
|
|
110
112
|
buffer: {
|
|
111
113
|
// give the WebGL driver a hint that this buffer may change
|
|
112
114
|
usage: _l7Core.gl.STATIC_DRAW,
|
|
@@ -124,7 +126,7 @@ class CityBuildModel extends _BaseModel.default {
|
|
|
124
126
|
type: _l7Core.AttributeType.Attribute,
|
|
125
127
|
descriptor: {
|
|
126
128
|
name: 'a_Size',
|
|
127
|
-
shaderLocation:
|
|
129
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.SIZE,
|
|
128
130
|
buffer: {
|
|
129
131
|
// give the WebGL driver a hint that this buffer may change
|
|
130
132
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -145,7 +147,7 @@ class CityBuildModel extends _BaseModel.default {
|
|
|
145
147
|
type: _l7Core.AttributeType.Attribute,
|
|
146
148
|
descriptor: {
|
|
147
149
|
name: 'a_Uv',
|
|
148
|
-
shaderLocation:
|
|
150
|
+
shaderLocation: _CommonStyleAttribute.ShaderLocation.UV,
|
|
149
151
|
buffer: {
|
|
150
152
|
// give the WebGL driver a hint that this buffer may change
|
|
151
153
|
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
precision highp float;
|
|
2
2
|
layout(std140) uniform commonUniforms {
|
|
3
|
-
vec4 u_baseColor: [ 1.0, 0, 0, 1.0 ];
|
|
4
|
-
vec4 u_brightColor: [ 1.0, 0, 0, 1.0 ];
|
|
5
|
-
vec4 u_windowColor: [ 1.0, 0, 0, 1.0 ];
|
|
3
|
+
vec4 u_baseColor : [ 1.0, 0, 0, 1.0 ];
|
|
4
|
+
vec4 u_brightColor : [ 1.0, 0, 0, 1.0 ];
|
|
5
|
+
vec4 u_windowColor : [ 1.0, 0, 0, 1.0 ];
|
|
6
6
|
vec4 u_circleSweepColor;
|
|
7
7
|
vec2 u_cityCenter;
|
|
8
8
|
float u_circleSweep;
|
|
9
9
|
float u_cityMinSize;
|
|
10
10
|
float u_circleSweepSpeed;
|
|
11
11
|
float u_opacity: 1.0;
|
|
12
|
-
float u_near: 0;
|
|
13
|
-
float u_far: 1;
|
|
12
|
+
float u_near : 0;
|
|
13
|
+
float u_far : 1;
|
|
14
14
|
float u_time;
|
|
15
15
|
};
|
|
16
16
|
in vec4 v_Color;
|
|
@@ -114,7 +114,7 @@ void main() {
|
|
|
114
114
|
float r = fract(((v_worldDis/u_cityMinSize) - u_time * u_circleSweepSpeed) * 2.0);
|
|
115
115
|
outputColor.rgb += r * r * u_circleSweepColor.rgb;
|
|
116
116
|
}
|
|
117
|
-
|
|
117
|
+
|
|
118
118
|
outputColor.a *= u_opacity;
|
|
119
119
|
outputColor = filterColor(outputColor);
|
|
120
120
|
}
|
|
@@ -4,11 +4,11 @@ precision highp float;
|
|
|
4
4
|
#define diffuseRatio 0.3
|
|
5
5
|
#define specularRatio 0.2
|
|
6
6
|
|
|
7
|
-
layout(location =
|
|
8
|
-
layout(location =
|
|
9
|
-
layout(location =
|
|
10
|
-
layout(location =
|
|
11
|
-
layout(location =
|
|
7
|
+
layout(location = 0) in vec3 a_Position;
|
|
8
|
+
layout(location = 1) in vec4 a_Color;
|
|
9
|
+
layout(location = 9) in float a_Size;
|
|
10
|
+
layout(location = 13) in vec3 a_Normal;
|
|
11
|
+
layout(location = 14) in vec2 a_Uv;
|
|
12
12
|
|
|
13
13
|
out vec2 v_texCoord;
|
|
14
14
|
out vec4 v_Color;
|
|
@@ -41,11 +41,17 @@ void main() {
|
|
|
41
41
|
|
|
42
42
|
if(u_circleSweep > 0.0) {
|
|
43
43
|
vec2 lnglatscale = vec2(0.0);
|
|
44
|
-
|
|
44
|
+
if(u_CoordinateSystem != COORDINATE_SYSTEM_P20_2) {
|
|
45
|
+
lnglatscale = (a_Position.xy - u_cityCenter) * vec2(0.0, 0.135);
|
|
46
|
+
}
|
|
45
47
|
v_worldDis = length(a_Position.xy + lnglatscale - u_cityCenter);
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
|
|
50
|
+
if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x
|
|
51
|
+
gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));
|
|
52
|
+
} else {
|
|
53
|
+
gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));
|
|
54
|
+
}
|
|
49
55
|
|
|
50
56
|
float lightWeight = calc_lighting(pos);
|
|
51
57
|
// v_Color = a_Color;
|
package/lib/core/BaseLayer.js
CHANGED
|
@@ -19,7 +19,7 @@ var _multiPassRender = require("../utils/multiPassRender");
|
|
|
19
19
|
var _LayerPickService = _interopRequireDefault(require("./LayerPickService"));
|
|
20
20
|
var _TextureService = _interopRequireDefault(require("./TextureService"));
|
|
21
21
|
const _excluded = ["passes"],
|
|
22
|
-
_excluded2 = ["moduleName", "vertexShader", "fragmentShader", "
|
|
22
|
+
_excluded2 = ["moduleName", "vertexShader", "fragmentShader", "inject", "triangulation", "styleOption", "pickingEnabled"]; // @ts-ignore
|
|
23
23
|
const {
|
|
24
24
|
isEqual,
|
|
25
25
|
isFunction,
|
|
@@ -64,8 +64,7 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
64
64
|
return this.container.interactionService;
|
|
65
65
|
}
|
|
66
66
|
get mapService() {
|
|
67
|
-
|
|
68
|
-
return (_this$container = this.container) === null || _this$container === void 0 ? void 0 : _this$container.mapService;
|
|
67
|
+
return this.container.mapService;
|
|
69
68
|
}
|
|
70
69
|
get normalPassFactory() {
|
|
71
70
|
return this.container.normalPassFactory;
|
|
@@ -612,9 +611,6 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
612
611
|
if (_this2.multiPassRenderer && _this2.multiPassRenderer.getRenderFlag()) {
|
|
613
612
|
// multi render 开始执行 multiPassRender 的渲染流程
|
|
614
613
|
yield _this2.multiPassRenderer.render();
|
|
615
|
-
} else if (_this2.multiPassRenderer) {
|
|
616
|
-
// renderPass 触发的渲染
|
|
617
|
-
_this2.renderModels();
|
|
618
614
|
} else {
|
|
619
615
|
_this2.renderModels();
|
|
620
616
|
}
|
|
@@ -928,8 +924,12 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
928
924
|
type
|
|
929
925
|
}) => {
|
|
930
926
|
if (this.coordCenter === undefined) {
|
|
927
|
+
var _this$mapService;
|
|
931
928
|
const layerCenter = this.layerSource.center;
|
|
932
929
|
this.coordCenter = layerCenter;
|
|
930
|
+
if ((_this$mapService = this.mapService) !== null && _this$mapService !== void 0 && _this$mapService.setCoordCenter) {
|
|
931
|
+
this.mapService.setCoordCenter(layerCenter);
|
|
932
|
+
}
|
|
933
933
|
}
|
|
934
934
|
if (type === 'update') {
|
|
935
935
|
if (this.tileLayer) {
|
|
@@ -1023,7 +1023,6 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
1023
1023
|
moduleName,
|
|
1024
1024
|
vertexShader,
|
|
1025
1025
|
fragmentShader,
|
|
1026
|
-
defines,
|
|
1027
1026
|
inject,
|
|
1028
1027
|
triangulation,
|
|
1029
1028
|
styleOption,
|
|
@@ -1033,7 +1032,6 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
1033
1032
|
_this3.shaderModuleService.registerModule(moduleName, {
|
|
1034
1033
|
vs: vertexShader,
|
|
1035
1034
|
fs: fragmentShader,
|
|
1036
|
-
defines,
|
|
1037
1035
|
inject
|
|
1038
1036
|
});
|
|
1039
1037
|
const {
|
|
@@ -1050,9 +1048,7 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
1050
1048
|
elements,
|
|
1051
1049
|
count
|
|
1052
1050
|
} = _this3.styleAttributeService.createAttributesAndIndices(_this3.encodedData, triangulation, styleOption, _this3);
|
|
1053
|
-
const uniformBuffers = [..._this3.layerModel.uniformBuffers, ..._this3.rendererService.uniformBuffers,
|
|
1054
|
-
// TODO: 目前未使用
|
|
1055
|
-
_this3.getLayerUniformBuffer()];
|
|
1051
|
+
const uniformBuffers = [..._this3.layerModel.uniformBuffers, ..._this3.rendererService.uniformBuffers, _this3.getLayerUniformBuffer()];
|
|
1056
1052
|
if (pickingEnabled) {
|
|
1057
1053
|
uniformBuffers.push(_this3.getPickingUniformBuffer());
|
|
1058
1054
|
}
|
|
@@ -1237,8 +1233,8 @@ class BaseLayer extends _eventemitter.EventEmitter {
|
|
|
1237
1233
|
_this5.uniformBuffers = [];
|
|
1238
1234
|
// Layer Uniform
|
|
1239
1235
|
const layerUniforms = _this5.rendererService.createBuffer({
|
|
1240
|
-
// TODO: 不再需要,之前用于 amap2 u_Mvp
|
|
1241
1236
|
data: new Float32Array(16 + 4).fill(0),
|
|
1237
|
+
// u_Mvp
|
|
1242
1238
|
isUBO: true
|
|
1243
1239
|
});
|
|
1244
1240
|
_this5.uniformBuffers.push(layerUniforms);
|
package/lib/core/BaseModel.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { IAnimateOption, IAttribute, IBlendOptions, IBuffer, ICameraService, IElements, IFontService, IGlobalConfigService, IIconService, ILayer, ILayerModel, ILayerService, IMapService, IModel, IModelUniform, IPickingService,
|
|
2
|
-
import { COMMON_ATTRIBUTE_LOCATION } from './CommonStyleAttribute';
|
|
1
|
+
import type { IAnimateOption, IAttribute, IBlendOptions, IBuffer, ICameraService, IElements, IFontService, IGlobalConfigService, IIconService, IInject, ILayer, ILayerModel, ILayerService, IMapService, IModel, IModelUniform, IPickingService, IRendererService, IRenderOptions, IShaderModuleService, IStencilOptions, IStyleAttributeService, ITexture2D, ITexture2DInitializationOptions, Triangulation } from '@antv/l7-core';
|
|
3
2
|
export type styleSingle = number | string | [string, (single: any) => number] | [string, [number, number]];
|
|
4
3
|
export type styleOffset = string | [number, number] | [string, (single: any) => number];
|
|
5
4
|
export type styleColor = string | [string, (single: any) => string] | [string, [string, string]];
|
|
@@ -12,15 +11,10 @@ export interface ICellProperty {
|
|
|
12
11
|
attr: string;
|
|
13
12
|
count: number;
|
|
14
13
|
}
|
|
15
|
-
type AttributeLayoutLocationType = typeof COMMON_ATTRIBUTE_LOCATION & Record<string, number>;
|
|
16
14
|
export default class BaseModel<ChildLayerStyleOptions = {}> implements ILayerModel {
|
|
17
15
|
triangulation: Triangulation;
|
|
18
16
|
uniformBuffers: IBuffer[];
|
|
19
17
|
textures: ITexture2D[];
|
|
20
|
-
/**
|
|
21
|
-
* Attribute Layout Location in Shader
|
|
22
|
-
*/
|
|
23
|
-
protected get attributeLocation(): AttributeLayoutLocationType;
|
|
24
18
|
createTexture2D: (options: ITexture2DInitializationOptions) => ITexture2D;
|
|
25
19
|
preStyleAttribute: Record<string, any>;
|
|
26
20
|
protected encodeStyleAttribute: Record<string, boolean>;
|
|
@@ -61,17 +55,11 @@ export default class BaseModel<ChildLayerStyleOptions = {}> implements ILayerMod
|
|
|
61
55
|
protected registerBuiltinAttributes(): void;
|
|
62
56
|
protected animateOption2Array(option: IAnimateOption): number[];
|
|
63
57
|
protected startModelAnimate(): void;
|
|
64
|
-
protected getInject():
|
|
65
|
-
protected getDefines(): Record<string, ShaderDefine>;
|
|
58
|
+
protected getInject(): IInject;
|
|
66
59
|
protected getStyleAttribute(): {
|
|
67
60
|
[key: string]: any;
|
|
68
61
|
};
|
|
69
62
|
protected registerStyleAttribute(): void;
|
|
70
|
-
/**
|
|
71
|
-
* 注册 Position 属性 64 位地位部分,当经纬度数据开启双精度浮点数使用,
|
|
72
|
-
* 避免大于 20层级以上出现数据偏移
|
|
73
|
-
*/
|
|
74
|
-
protected registerPosition64LowAttribute(enable64bitPosition?: boolean): void;
|
|
75
63
|
updateEncodeAttribute(type: string, flag: boolean): void;
|
|
76
64
|
initUniformsBuffer(): void;
|
|
77
65
|
protected getUniformsBufferInfo(uniformsOption: {
|
|
@@ -92,4 +80,3 @@ export default class BaseModel<ChildLayerStyleOptions = {}> implements ILayerMod
|
|
|
92
80
|
};
|
|
93
81
|
updateStyleUnifoms(): void;
|
|
94
82
|
}
|
|
95
|
-
export {};
|
package/lib/core/BaseModel.js
CHANGED
|
@@ -15,20 +15,17 @@ var _stencil = require("../utils/stencil");
|
|
|
15
15
|
var _CommonStyleAttribute = require("./CommonStyleAttribute");
|
|
16
16
|
var _constant = require("./constant");
|
|
17
17
|
var _utils = require("./utils");
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const shaderLocationMap = {
|
|
19
|
+
opacity: _CommonStyleAttribute.ShaderLocation.OPACITY,
|
|
20
|
+
stroke: _CommonStyleAttribute.ShaderLocation.STROKE,
|
|
21
|
+
offsets: _CommonStyleAttribute.ShaderLocation.OFFSETS,
|
|
22
|
+
rotation: _CommonStyleAttribute.ShaderLocation.ROTATION,
|
|
23
|
+
extrusionBase: _CommonStyleAttribute.ShaderLocation.EXTRUSION_BASE,
|
|
24
|
+
thetaOffset: 15
|
|
25
|
+
};
|
|
20
26
|
|
|
21
27
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
28
|
class BaseModel {
|
|
23
|
-
/**
|
|
24
|
-
* Attribute Layout Location in Shader
|
|
25
|
-
*/
|
|
26
|
-
get attributeLocation() {
|
|
27
|
-
return (0, _objectSpread2.default)({}, _CommonStyleAttribute.COMMON_ATTRIBUTE_LOCATION);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// style texture data mapping
|
|
31
|
-
|
|
32
29
|
// 不支持数据映射的buffer
|
|
33
30
|
|
|
34
31
|
// style texture data mapping
|
|
@@ -37,6 +34,7 @@ class BaseModel {
|
|
|
37
34
|
(0, _defineProperty2.default)(this, "triangulation", void 0);
|
|
38
35
|
(0, _defineProperty2.default)(this, "uniformBuffers", []);
|
|
39
36
|
(0, _defineProperty2.default)(this, "textures", []);
|
|
37
|
+
// style texture data mapping
|
|
40
38
|
(0, _defineProperty2.default)(this, "createTexture2D", void 0);
|
|
41
39
|
(0, _defineProperty2.default)(this, "preStyleAttribute", {});
|
|
42
40
|
(0, _defineProperty2.default)(this, "encodeStyleAttribute", {});
|
|
@@ -187,18 +185,55 @@ class BaseModel {
|
|
|
187
185
|
this.layer.setAnimateStartTime();
|
|
188
186
|
}
|
|
189
187
|
}
|
|
188
|
+
|
|
189
|
+
// 动态注入参与数据映射的uniform
|
|
190
190
|
getInject() {
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
//
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
191
|
+
const encodeStyleAttribute = this.layer.encodeStyleAttribute;
|
|
192
|
+
let str = '';
|
|
193
|
+
// a_Position = 0
|
|
194
|
+
// a_Color = 1
|
|
195
|
+
// a_PickingColor = 2
|
|
196
|
+
|
|
197
|
+
const uniforms = [];
|
|
198
|
+
// 支持数据映射的类型
|
|
199
|
+
this.layer.enableShaderEncodeStyles.forEach(key => {
|
|
200
|
+
if (encodeStyleAttribute[key]) {
|
|
201
|
+
// 配置了数据映射的类型
|
|
202
|
+
str += `#define USE_ATTRIBUTE_${key.toUpperCase()} 0.0; \n\n`;
|
|
203
|
+
} else {
|
|
204
|
+
uniforms.push(` ${_constant.DefaultUniformStyleType[key]} u_${key};`);
|
|
205
|
+
}
|
|
206
|
+
let location = shaderLocationMap[key];
|
|
207
|
+
if (!location && key === 'THETA_OFFSET') {
|
|
208
|
+
location = 15;
|
|
209
|
+
}
|
|
210
|
+
str += `
|
|
211
|
+
#ifdef USE_ATTRIBUTE_${key.toUpperCase()}
|
|
212
|
+
layout(location = ${shaderLocationMap[key]}) in ${_constant.DefaultUniformStyleType[key]} a_${key.charAt(0).toUpperCase() + key.slice(1)};
|
|
213
|
+
#endif\n
|
|
214
|
+
`;
|
|
215
|
+
});
|
|
216
|
+
const attributeUniforms = uniforms.length ? `
|
|
217
|
+
layout(std140) uniform AttributeUniforms {
|
|
218
|
+
${uniforms.join('\n')}
|
|
219
|
+
};
|
|
220
|
+
` : '';
|
|
221
|
+
str += attributeUniforms;
|
|
222
|
+
let innerStr = '';
|
|
223
|
+
this.layer.enableShaderEncodeStyles.forEach(key => {
|
|
224
|
+
innerStr += `\n
|
|
225
|
+
#ifdef USE_ATTRIBUTE_${key.toUpperCase()}
|
|
226
|
+
${_constant.DefaultUniformStyleType[key]} ${key} = a_${key.charAt(0).toUpperCase() + key.slice(1)};
|
|
227
|
+
#else
|
|
228
|
+
${_constant.DefaultUniformStyleType[key]} ${key} = u_${key};
|
|
229
|
+
#endif\n
|
|
230
|
+
`;
|
|
231
|
+
});
|
|
232
|
+
return {
|
|
233
|
+
'vs:#decl': str,
|
|
234
|
+
'fs:#decl': attributeUniforms,
|
|
235
|
+
'vs:#main-start': innerStr
|
|
236
|
+
};
|
|
202
237
|
}
|
|
203
238
|
|
|
204
239
|
// 获取数据映射样式
|
|
@@ -219,36 +254,14 @@ class BaseModel {
|
|
|
219
254
|
});
|
|
220
255
|
return options;
|
|
221
256
|
}
|
|
222
|
-
|
|
223
257
|
// 注册数据映射样式
|
|
224
258
|
registerStyleAttribute() {
|
|
225
259
|
Object.keys(this.layer.encodeStyleAttribute).forEach(key => {
|
|
226
260
|
const options = (0, _CommonStyleAttribute.getCommonStyleAttributeOptions)(key);
|
|
227
261
|
if (options) {
|
|
228
262
|
this.styleAttributeService.registerStyleAttribute(options);
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* 注册 Position 属性 64 位地位部分,当经纬度数据开启双精度浮点数使用,
|
|
235
|
-
* 避免大于 20层级以上出现数据偏移
|
|
236
|
-
*/
|
|
237
|
-
registerPosition64LowAttribute(enable64bitPosition = true) {
|
|
238
|
-
// save low part for enabled double precision POSITION attribute
|
|
239
|
-
this.styleAttributeService.registerStyleAttribute({
|
|
240
|
-
name: 'position64Low',
|
|
241
|
-
type: _l7Core.AttributeType.Attribute,
|
|
242
|
-
descriptor: {
|
|
243
|
-
name: 'a_Position64Low',
|
|
244
|
-
shaderLocation: this.attributeLocation.POSITION_64LOW,
|
|
245
|
-
buffer: {
|
|
246
|
-
data: [],
|
|
247
|
-
type: _l7Core.gl.FLOAT
|
|
248
|
-
},
|
|
249
|
-
size: 2,
|
|
250
|
-
update: (feature, featureIdx, vertex) => {
|
|
251
|
-
return enable64bitPosition ? [(0, _l7Utils.fp64LowPart)(vertex[0]), (0, _l7Utils.fp64LowPart)(vertex[1])] : [0, 0];
|
|
263
|
+
if (options.descriptor) {
|
|
264
|
+
options.descriptor.shaderLocation = shaderLocationMap[key];
|
|
252
265
|
}
|
|
253
266
|
}
|
|
254
267
|
});
|
|
@@ -325,49 +338,4 @@ class BaseModel {
|
|
|
325
338
|
});
|
|
326
339
|
}
|
|
327
340
|
}
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* 获取动态注入参与数据映射 uniform/attribute
|
|
331
|
-
*/
|
|
332
|
-
exports.default = BaseModel;
|
|
333
|
-
function getDynamicStyleInject(shaderEncodeStyles, styleAttribute) {
|
|
334
|
-
const uniforms = [];
|
|
335
|
-
let vsDeclInjection = '';
|
|
336
|
-
|
|
337
|
-
// 支持数据映射的类型
|
|
338
|
-
shaderEncodeStyles.forEach(key => {
|
|
339
|
-
const upperCaseKey = key.replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
|
|
340
|
-
const shaderDefineName = DEFINE_ATTRIBUTE_LOCATION_PREFIX + upperCaseKey;
|
|
341
|
-
if (styleAttribute[key]) {
|
|
342
|
-
// 配置了数据映射的类型
|
|
343
|
-
vsDeclInjection += `#define USE_ATTRIBUTE_${upperCaseKey} 0.0 \n`;
|
|
344
|
-
} else {
|
|
345
|
-
uniforms.push(` ${_constant.DefaultUniformStyleType[key]} u_${key};`);
|
|
346
|
-
}
|
|
347
|
-
vsDeclInjection += `
|
|
348
|
-
#ifdef USE_ATTRIBUTE_${upperCaseKey}
|
|
349
|
-
layout(location = ${shaderDefineName}) in ${_constant.DefaultUniformStyleType[key]} a_${key.charAt(0).toUpperCase() + key.slice(1)};
|
|
350
|
-
#endif \n`;
|
|
351
|
-
});
|
|
352
|
-
const fsDeclInjection = uniforms.length ? `
|
|
353
|
-
layout(std140) uniform AttributeUniforms {
|
|
354
|
-
${uniforms.join('\n')}
|
|
355
|
-
};\n` : '';
|
|
356
|
-
vsDeclInjection += fsDeclInjection;
|
|
357
|
-
let vsMainInjection = '';
|
|
358
|
-
shaderEncodeStyles.forEach(key => {
|
|
359
|
-
const upperCaseKey = key.replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
|
|
360
|
-
vsMainInjection += `
|
|
361
|
-
#ifdef USE_ATTRIBUTE_${upperCaseKey}
|
|
362
|
-
${_constant.DefaultUniformStyleType[key]} ${key} = a_${key.charAt(0).toUpperCase() + key.slice(1)};
|
|
363
|
-
#else
|
|
364
|
-
${_constant.DefaultUniformStyleType[key]} ${key} = u_${key};
|
|
365
|
-
#endif
|
|
366
|
-
`;
|
|
367
|
-
});
|
|
368
|
-
return {
|
|
369
|
-
'vs:#decl': vsDeclInjection,
|
|
370
|
-
'fs:#decl': fsDeclInjection,
|
|
371
|
-
'vs:#main-start': vsMainInjection
|
|
372
|
-
};
|
|
373
|
-
}
|
|
341
|
+
exports.default = BaseModel;
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import type { IStyleAttribute } from '@antv/l7-core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
export declare enum ShaderLocation {
|
|
3
|
+
POSITION = 0,
|
|
4
|
+
COLOR = 1,
|
|
5
|
+
VERTEX_ID = 2,
|
|
6
|
+
PICKING_COLOR = 3,
|
|
7
|
+
STROKE = 4,
|
|
8
|
+
OPACITY = 5,
|
|
9
|
+
OFFSETS = 6,
|
|
10
|
+
ROTATION = 7,
|
|
11
|
+
EXTRUSION_BASE = 8,
|
|
12
|
+
SIZE = 9,
|
|
13
|
+
SHAPE = 10,
|
|
14
|
+
EXTRUDE = 11,
|
|
15
|
+
MAX = 12,
|
|
16
|
+
NORMAL = 13,
|
|
17
|
+
UV = 14,
|
|
18
|
+
LINEAR = 15
|
|
19
|
+
}
|
|
16
20
|
export declare function getCommonStyleAttributeOptions(name: string): Partial<IStyleAttribute> | undefined;
|