@antv/l7-layers 2.5.25 → 2.5.26

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.
@@ -0,0 +1,62 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
+ import _inherits from "@babel/runtime/helpers/inherits";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+
9
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
+
11
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
+
13
+ import BaseLayer from '../core/BaseLayer';
14
+ import BaseEarthModel from './models/base';
15
+ var EarthModels = {
16
+ base: BaseEarthModel
17
+ };
18
+
19
+ var EarthLayer = function (_BaseLayer) {
20
+ _inherits(EarthLayer, _BaseLayer);
21
+
22
+ var _super = _createSuper(EarthLayer);
23
+
24
+ function EarthLayer() {
25
+ var _this;
26
+
27
+ _classCallCheck(this, EarthLayer);
28
+
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
+
33
+ _this = _super.call.apply(_super, [this].concat(args));
34
+
35
+ _defineProperty(_assertThisInitialized(_this), "type", 'EarthLayer');
36
+
37
+ return _this;
38
+ }
39
+
40
+ _createClass(EarthLayer, [{
41
+ key: "buildModels",
42
+ value: function buildModels() {
43
+ var shape = 'base';
44
+ this.layerModel = new EarthModels[shape](this);
45
+ this.models = this.layerModel.initModels();
46
+ }
47
+ }, {
48
+ key: "setEarthTime",
49
+ value: function setEarthTime(time) {
50
+ if (this.layerModel && this.layerModel.setEarthTime) {
51
+ this.layerModel.setEarthTime(time);
52
+ } else {
53
+ console.error('请在 scene loaded 之后执行该方法!');
54
+ }
55
+ }
56
+ }]);
57
+
58
+ return EarthLayer;
59
+ }(BaseLayer);
60
+
61
+ export { EarthLayer as default };
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/earth/index.ts"],"names":["BaseLayer","BaseEarthModel","EarthModels","base","EarthLayer","shape","layerModel","models","initModels","time","setEarthTime","console","error"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AACA,OAAOC,cAAP,MAA2B,eAA3B;AAOA,IAAMC,WAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAEF;AADyC,CAAjD;;IAIqBG,U;;;;;;;;;;;;;;;;2DACG,Y;;;;;;;WAEtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,MAAd;AACA,WAAKC,UAAL,GAAkB,IAAIJ,WAAW,CAACG,KAAD,CAAf,CAAuB,IAAvB,CAAlB;AACA,WAAKE,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WAMD,sBAAoBC,IAApB,EAAkC;AAChC,UAAI,KAAKH,UAAL,IAAmB,KAAKA,UAAL,CAAgBI,YAAvC,EAAqD;AACnD,aAAKJ,UAAL,CAAgBI,YAAhB,CAA6BD,IAA7B;AACD,OAFD,MAEO;AACLE,QAAAA,OAAO,CAACC,KAAR,CAAc,0BAAd;AACD;AACF;;;;EAnBqCZ,S;;SAAnBI,U","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport BaseEarthModel from './models/base';\n\nexport type EarthType = 'base';\ninterface IEarthLayerStyleOptions {\n setEarthTime(time: number): void;\n}\n\nconst EarthModels: { [key in EarthType]: any } = {\n base: BaseEarthModel,\n};\n\nexport default class EarthLayer extends BaseLayer<IEarthLayerStyleOptions> {\n public type: string = 'EarthLayer';\n\n public buildModels() {\n const shape = 'base';\n this.layerModel = new EarthModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n\n /**\n * 设置当前地球时间\n * @param time\n */\n public setEarthTime(time: number) {\n if (this.layerModel && this.layerModel.setEarthTime) {\n this.layerModel.setEarthTime(time);\n } else {\n console.error('请在 scene loaded 之后执行该方法!');\n }\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,16 @@
1
+ import { IModel, IModelUniform, ITexture2D } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class BaseEarthModel extends BaseModel {
4
+ protected texture: ITexture2D;
5
+ private earthTime;
6
+ private sunX;
7
+ private sunY;
8
+ private sunZ;
9
+ private sunRadius;
10
+ getUninforms(): IModelUniform;
11
+ setEarthTime(time: number): void;
12
+ initModels(): IModel[];
13
+ clearModels(): string;
14
+ buildModels(): IModel[];
15
+ protected registerBuiltinAttributes(): void;
16
+ }
@@ -0,0 +1,192 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
+ import _inherits from "@babel/runtime/helpers/inherits";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+
9
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
+
11
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
+
13
+ import { AttributeType, gl } from '@antv/l7-core';
14
+ import BaseModel from '../../core/BaseModel';
15
+ import { earthTriangulation } from '../../core/triangulation';
16
+ var baseFrag = "\nuniform sampler2D u_texture;\n\nvarying vec2 v_texCoord;\nvarying float v_lightWeight;\n\n\nvoid main() {\n\n vec4 color = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y));\n color.xyz = color.xyz * v_lightWeight;\n gl_FragColor = color;\n}\n";
17
+ var baseVert = "// attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n\n// attribute vec2 a_Extrude;\n// attribute float a_Size;\n// attribute float a_Shape;\n\nuniform vec3 u_CameraPosition;\nuniform mat4 u_ViewProjectionMatrix;\nuniform mat4 u_ModelMatrix;\nuniform float u_ambientRatio : 0.5;\nuniform float u_diffuseRatio : 0.3;\nuniform float u_specularRatio : 0.2;\nuniform vec3 u_sunLight: [1.0, -10.5, 12.0];\n\n\n\nfloat calc_lighting(vec4 pos) {\n\n vec3 worldPos = vec3(pos * u_ModelMatrix);\n\n vec3 worldNormal = a_Normal;\n\n // cal light weight\n vec3 viewDir = normalize(u_CameraPosition - worldPos);\n\n vec3 lightDir = normalize(u_sunLight);\n\n vec3 halfDir = normalize(viewDir+lightDir);\n // lambert\n float lambert = dot(worldNormal, lightDir);\n // specular\n float specular = pow(max(0.0, dot(worldNormal, halfDir)), 32.0);\n //sum to light weight\n float lightWeight = u_ambientRatio + u_diffuseRatio * lambert + u_specularRatio * specular;\n\n return lightWeight;\n}\n\nvarying float v_lightWeight;\nvoid main() {\n\n v_texCoord = a_Uv;\n\n float lightWeight = calc_lighting(vec4(a_Position, 1.0));\n v_lightWeight = lightWeight;\n\n gl_Position = u_ViewProjectionMatrix * u_ModelMatrix * vec4(a_Position, 1.0);\n}\n";
18
+
19
+ var BaseEarthModel = function (_BaseModel) {
20
+ _inherits(BaseEarthModel, _BaseModel);
21
+
22
+ var _super = _createSuper(BaseEarthModel);
23
+
24
+ function BaseEarthModel() {
25
+ var _this;
26
+
27
+ _classCallCheck(this, BaseEarthModel);
28
+
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
+
33
+ _this = _super.call.apply(_super, [this].concat(args));
34
+
35
+ _defineProperty(_assertThisInitialized(_this), "texture", void 0);
36
+
37
+ _defineProperty(_assertThisInitialized(_this), "earthTime", 3.4);
38
+
39
+ _defineProperty(_assertThisInitialized(_this), "sunX", 1000);
40
+
41
+ _defineProperty(_assertThisInitialized(_this), "sunY", 1000);
42
+
43
+ _defineProperty(_assertThisInitialized(_this), "sunZ", 1000);
44
+
45
+ _defineProperty(_assertThisInitialized(_this), "sunRadius", Math.sqrt(_this.sunX * _this.sunX + _this.sunY * _this.sunY + _this.sunZ * _this.sunZ));
46
+
47
+ return _this;
48
+ }
49
+
50
+ _createClass(BaseEarthModel, [{
51
+ key: "getUninforms",
52
+ value: function getUninforms() {
53
+ var _this$layer$getLayerC = this.layer.getLayerConfig(),
54
+ animateOption = _this$layer$getLayerC.animateOption,
55
+ globelOtions = _this$layer$getLayerC.globelOtions;
56
+
57
+ if (animateOption !== null && animateOption !== void 0 && animateOption.enable) {
58
+ this.mapService.rotateY({
59
+ reg: 0.002
60
+ });
61
+ this.earthTime += 0.02;
62
+ this.sunY = 10;
63
+ this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);
64
+ this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);
65
+ }
66
+
67
+ return {
68
+ u_ambientRatio: (globelOtions === null || globelOtions === void 0 ? void 0 : globelOtions.ambientRatio) || 0.6,
69
+ u_diffuseRatio: (globelOtions === null || globelOtions === void 0 ? void 0 : globelOtions.diffuseRatio) || 0.4,
70
+ u_specularRatio: (globelOtions === null || globelOtions === void 0 ? void 0 : globelOtions.specularRatio) || 0.1,
71
+ u_sunLight: [this.sunX, this.sunY, this.sunZ],
72
+ u_texture: this.texture
73
+ };
74
+ }
75
+ }, {
76
+ key: "setEarthTime",
77
+ value: function setEarthTime(time) {
78
+ this.earthTime = time;
79
+ this.sunY = 10;
80
+ this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);
81
+ this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);
82
+ this.layerService.renderLayers();
83
+ }
84
+ }, {
85
+ key: "initModels",
86
+ value: function initModels() {
87
+ var _this2 = this;
88
+
89
+ var _this$layer$getLayerC2 = this.layer.getLayerConfig(),
90
+ globelOtions = _this$layer$getLayerC2.globelOtions;
91
+
92
+ if ((globelOtions === null || globelOtions === void 0 ? void 0 : globelOtions.earthTime) !== undefined) {
93
+ this.setEarthTime(globelOtions.earthTime);
94
+ }
95
+
96
+ var source = this.layer.getSource();
97
+ var createTexture2D = this.rendererService.createTexture2D;
98
+ this.texture = createTexture2D({
99
+ height: 0,
100
+ width: 0
101
+ });
102
+ source.data.images.then(function (imageData) {
103
+ _this2.texture = createTexture2D({
104
+ data: imageData[0],
105
+ width: imageData[0].width,
106
+ height: imageData[0].height
107
+ });
108
+
109
+ _this2.layerService.renderLayers();
110
+ });
111
+ return this.buildModels();
112
+ }
113
+ }, {
114
+ key: "clearModels",
115
+ value: function clearModels() {
116
+ return '';
117
+ }
118
+ }, {
119
+ key: "buildModels",
120
+ value: function buildModels() {
121
+ return [this.layer.buildLayerModel({
122
+ moduleName: 'baseEarth',
123
+ vertexShader: baseVert,
124
+ fragmentShader: baseFrag,
125
+ triangulation: earthTriangulation,
126
+ depth: {
127
+ enable: true
128
+ },
129
+ blend: this.getBlend()
130
+ })];
131
+ }
132
+ }, {
133
+ key: "registerBuiltinAttributes",
134
+ value: function registerBuiltinAttributes() {
135
+ this.styleAttributeService.registerStyleAttribute({
136
+ name: 'size',
137
+ type: AttributeType.Attribute,
138
+ descriptor: {
139
+ name: 'a_Size',
140
+ buffer: {
141
+ usage: gl.DYNAMIC_DRAW,
142
+ data: [],
143
+ type: gl.FLOAT
144
+ },
145
+ size: 1,
146
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
147
+ var _feature$size = feature.size,
148
+ size = _feature$size === void 0 ? 1 : _feature$size;
149
+ return Array.isArray(size) ? [size[0]] : [size];
150
+ }
151
+ }
152
+ });
153
+ this.styleAttributeService.registerStyleAttribute({
154
+ name: 'normal',
155
+ type: AttributeType.Attribute,
156
+ descriptor: {
157
+ name: 'a_Normal',
158
+ buffer: {
159
+ usage: gl.STATIC_DRAW,
160
+ data: [],
161
+ type: gl.FLOAT
162
+ },
163
+ size: 3,
164
+ update: function update(feature, featureIdx, vertex, attributeIdx, normal) {
165
+ return normal;
166
+ }
167
+ }
168
+ });
169
+ this.styleAttributeService.registerStyleAttribute({
170
+ name: 'uv',
171
+ type: AttributeType.Attribute,
172
+ descriptor: {
173
+ name: 'a_Uv',
174
+ buffer: {
175
+ usage: gl.DYNAMIC_DRAW,
176
+ data: [],
177
+ type: gl.FLOAT
178
+ },
179
+ size: 2,
180
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
181
+ return [vertex[3], vertex[4]];
182
+ }
183
+ }
184
+ });
185
+ }
186
+ }]);
187
+
188
+ return BaseEarthModel;
189
+ }(BaseModel);
190
+
191
+ export { BaseEarthModel as default };
192
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/earth/models/base.ts"],"names":["AttributeType","gl","BaseModel","earthTriangulation","BaseEarthModel","Math","sqrt","sunX","sunY","sunZ","layer","getLayerConfig","animateOption","globelOtions","enable","mapService","rotateY","reg","earthTime","cos","sunRadius","sin","u_ambientRatio","ambientRatio","u_diffuseRatio","diffuseRatio","u_specularRatio","specularRatio","u_sunLight","u_texture","texture","time","layerService","renderLayers","undefined","setEarthTime","source","getSource","createTexture2D","rendererService","height","width","data","images","then","imageData","buildModels","buildLayerModel","moduleName","vertexShader","baseVert","fragmentShader","baseFrag","triangulation","depth","blend","getBlend","styleAttributeService","registerStyleAttribute","name","type","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","normal"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n BlendType,\n gl,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { earthTriangulation } from '../../core/triangulation';\n\nimport baseFrag from '../shaders/base_frag.glsl';\nimport baseVert from '../shaders/base_vert.glsl';\n\nexport default class BaseEarthModel extends BaseModel {\n protected texture: ITexture2D;\n // T: 当前的地球时间 - 控制太阳的方位\n private earthTime: number = 3.4;\n private sunX = 1000;\n private sunY = 1000;\n private sunZ = 1000;\n private sunRadius = Math.sqrt(\n this.sunX * this.sunX + this.sunY * this.sunY + this.sunZ * this.sunZ,\n );\n\n public getUninforms(): IModelUniform {\n const { animateOption, globelOtions } = this.layer.getLayerConfig();\n if (animateOption?.enable) {\n // @ts-ignore\n // T: rotateY 方法只有在地球模式下存在\n this.mapService.rotateY({\n reg: 0.002,\n });\n this.earthTime += 0.02;\n\n this.sunY = 10;\n this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);\n this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);\n }\n\n return {\n u_ambientRatio: globelOtions?.ambientRatio || 0.6, // 环境光\n u_diffuseRatio: globelOtions?.diffuseRatio || 0.4, // 漫反射\n u_specularRatio: globelOtions?.specularRatio || 0.1, // 高光反射\n // u_sunLight: [120, 120, 120],\n u_sunLight: [this.sunX, this.sunY, this.sunZ],\n\n u_texture: this.texture,\n };\n }\n\n public setEarthTime(time: number) {\n this.earthTime = time;\n\n this.sunY = 10;\n this.sunX = Math.cos(this.earthTime) * (this.sunRadius - this.sunY);\n this.sunZ = Math.sin(this.earthTime) * (this.sunRadius - this.sunY);\n\n this.layerService.renderLayers();\n }\n\n public initModels(): IModel[] {\n const { globelOtions } = this.layer.getLayerConfig();\n if (globelOtions?.earthTime !== undefined) {\n this.setEarthTime(globelOtions.earthTime);\n }\n\n const source = this.layer.getSource();\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n source.data.images.then((imageData: HTMLImageElement[]) => {\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n this.layerService.renderLayers();\n });\n\n return this.buildModels();\n }\n\n public clearModels() {\n return '';\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'baseEarth',\n vertexShader: baseVert,\n fragmentShader: baseFrag,\n triangulation: earthTriangulation,\n depth: { enable: true },\n blend: this.getBlend(),\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"base.js"}
package/es/index.d.ts CHANGED
@@ -7,4 +7,5 @@ import LineLayer from './line/index';
7
7
  import PointLayer from './point';
8
8
  import PolygonLayer from './polygon';
9
9
  import RasterLayer from './raster';
10
- export { BaseLayer, PointLayer, PolygonLayer, LineLayer, CityBuildingLayer, ImageLayer, RasterLayer, HeatmapLayer, };
10
+ import EarthLayer from './earth';
11
+ export { BaseLayer, PointLayer, PolygonLayer, LineLayer, CityBuildingLayer, ImageLayer, RasterLayer, HeatmapLayer, EarthLayer, };
package/es/index.js CHANGED
@@ -8,6 +8,7 @@ import LineLayer from './line/index';
8
8
  import PointLayer from './point';
9
9
  import PolygonLayer from './polygon';
10
10
  import RasterLayer from './raster';
11
+ import EarthLayer from './earth';
11
12
  import DataMappingPlugin from './plugins/DataMappingPlugin';
12
13
  import DataSourcePlugin from './plugins/DataSourcePlugin';
13
14
  import FeatureScalePlugin from './plugins/FeatureScalePlugin';
@@ -34,5 +35,5 @@ container.bind(TYPES.ILayerPlugin).to(LayerAnimateStylePlugin).inRequestScope();
34
35
  container.bind(TYPES.ILayerPlugin).to(LightingPlugin).inRequestScope();
35
36
  container.bind(TYPES.ILayerPlugin).to(PixelPickingPlugin).inRequestScope();
36
37
  container.bind(TYPES.ILayerPlugin).to(LayerModelPlugin).inRequestScope();
37
- export { BaseLayer, PointLayer, PolygonLayer, LineLayer, CityBuildingLayer, ImageLayer, RasterLayer, HeatmapLayer };
38
+ export { BaseLayer, PointLayer, PolygonLayer, LineLayer, CityBuildingLayer, ImageLayer, RasterLayer, HeatmapLayer, EarthLayer };
38
39
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["container","TYPES","CityBuildingLayer","BaseLayer","HeatmapLayer","ImageLayer","LineLayer","PointLayer","PolygonLayer","RasterLayer","DataMappingPlugin","DataSourcePlugin","FeatureScalePlugin","LayerAnimateStylePlugin","LayerModelPlugin","LayerStylePlugin","LightingPlugin","MultiPassRendererPlugin","PixelPickingPlugin","RegisterStyleAttributePlugin","ShaderUniformPlugin","UpdateModelPlugin","UpdateStyleAttributePlugin","bind","ILayerPlugin","to","inRequestScope"],"mappings":"AAAA,SAASA,SAAT,EAAkCC,KAAlC,QAA+C,eAA/C;AACA,OAAOC,iBAAP,MAA8B,yBAA9B;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAO,UAAP;AACA,OAAOC,YAAP,MAAyB,WAAzB;AACA,OAAOC,UAAP,MAAuB,SAAvB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,UAAP,MAAuB,SAAvB;AACA,OAAOC,YAAP,MAAyB,WAAzB;AACA,OAAOC,WAAP,MAAwB,UAAxB;AAGA,OAAOC,iBAAP,MAA8B,6BAA9B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,kBAAP,MAA+B,8BAA/B;AACA,OAAOC,uBAAP,MAAoC,mCAApC;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,cAAP,MAA2B,0BAA3B;AACA,OAAOC,uBAAP,MAAoC,mCAApC;AACA,OAAOC,kBAAP,MAA+B,8BAA/B;AACA,OAAOC,4BAAP,MAAyC,wCAAzC;AACA,OAAOC,mBAAP,MAAgC,+BAAhC;AACA,OAAOC,iBAAP,MAA8B,6BAA9B;AACA,OAAOC,0BAAP,MAAuC,sCAAvC;AAYAtB,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMd,gBAFN,EAGGe,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMN,4BAFN,EAGGO,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMb,kBAFN,EAGGc,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMf,iBAFN,EAGGgB,cAHH;AAQA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMV,gBAFN,EAGGW,cAHH;AAQA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMH,0BAFN,EAGGI,cAHH;AAQA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMJ,iBAFN,EAGGK,cAHH;AAQA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMR,uBAFN,EAGGS,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEML,mBAFN,EAGGM,cAHH;AAQA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMZ,uBAFN,EAGGa,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMT,cAFN,EAGGU,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMP,kBAFN,EAGGQ,cAHH;AAOA1B,SAAS,CACNuB,IADH,CACsBtB,KAAK,CAACuB,YAD5B,EAEGC,EAFH,CAEMX,gBAFN,EAGGY,cAHH;AAKA,SACEvB,SADF,EAEEI,UAFF,EAGEC,YAHF,EAIEF,SAJF,EAKEJ,iBALF,EAMEG,UANF,EAOEI,WAPF,EAQEL,YARF","sourcesContent":["import { container, ILayerPlugin, TYPES } from '@antv/l7-core';\nimport CityBuildingLayer from './citybuliding/building';\nimport BaseLayer from './core/BaseLayer';\nimport './glsl.d';\nimport HeatmapLayer from './heatmap';\nimport ImageLayer from './image';\nimport LineLayer from './line/index';\nimport PointLayer from './point';\nimport PolygonLayer from './polygon';\nimport RasterLayer from './raster';\n\n// import ConfigSchemaValidationPlugin from './plugins/ConfigSchemaValidationPlugin';\nimport DataMappingPlugin from './plugins/DataMappingPlugin';\nimport DataSourcePlugin from './plugins/DataSourcePlugin';\nimport FeatureScalePlugin from './plugins/FeatureScalePlugin';\nimport LayerAnimateStylePlugin from './plugins/LayerAnimateStylePlugin';\nimport LayerModelPlugin from './plugins/LayerModelPlugin';\nimport LayerStylePlugin from './plugins/LayerStylePlugin';\nimport LightingPlugin from './plugins/LightingPlugin';\nimport MultiPassRendererPlugin from './plugins/MultiPassRendererPlugin';\nimport PixelPickingPlugin from './plugins/PixelPickingPlugin';\nimport RegisterStyleAttributePlugin from './plugins/RegisterStyleAttributePlugin';\nimport ShaderUniformPlugin from './plugins/ShaderUniformPlugin';\nimport UpdateModelPlugin from './plugins/UpdateModelPlugin';\nimport UpdateStyleAttributePlugin from './plugins/UpdateStyleAttributePlugin';\n/**\n * 校验传入参数配置项的正确性\n * @see /dev-docs/ConfigSchemaValidation.md\n */\n// container\n// .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n// .to(ConfigSchemaValidationPlugin)\n// .inRequestScope();\n/**\n * 获取 Source\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataSourcePlugin)\n .inRequestScope();\n/**\n * 根据 StyleAttribute 创建 VertexAttribute\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(RegisterStyleAttributePlugin)\n .inRequestScope();\n/**\n * 根据 Source 创建 Scale\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(FeatureScalePlugin)\n .inRequestScope();\n/**\n * 使用 Scale 进行数据映射\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataMappingPlugin)\n .inRequestScope();\n\n/**\n * 更新地图样式配置项 如active, show, hide\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerStylePlugin)\n .inRequestScope();\n\n/**\n * 负责属性更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateStyleAttributePlugin)\n .inRequestScope();\n\n/**\n * 负责Model更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateModelPlugin)\n .inRequestScope();\n\n/**\n * Multi Pass 自定义渲染管线\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(MultiPassRendererPlugin)\n .inRequestScope();\n/**\n * 传入相机坐标系参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(ShaderUniformPlugin)\n .inRequestScope();\n\n/**\n * 传入动画参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerAnimateStylePlugin)\n .inRequestScope();\n/**\n * 传入光照相关参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LightingPlugin)\n .inRequestScope();\n/**\n * 负责拾取过程中 Encode 以及 Highlight 阶段及结束后恢复\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(PixelPickingPlugin)\n .inRequestScope();\n/**\n * 初始化Model\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerModelPlugin)\n .inRequestScope();\n\nexport {\n BaseLayer,\n PointLayer,\n PolygonLayer,\n LineLayer,\n CityBuildingLayer,\n ImageLayer,\n RasterLayer,\n HeatmapLayer,\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["container","TYPES","CityBuildingLayer","BaseLayer","HeatmapLayer","ImageLayer","LineLayer","PointLayer","PolygonLayer","RasterLayer","EarthLayer","DataMappingPlugin","DataSourcePlugin","FeatureScalePlugin","LayerAnimateStylePlugin","LayerModelPlugin","LayerStylePlugin","LightingPlugin","MultiPassRendererPlugin","PixelPickingPlugin","RegisterStyleAttributePlugin","ShaderUniformPlugin","UpdateModelPlugin","UpdateStyleAttributePlugin","bind","ILayerPlugin","to","inRequestScope"],"mappings":"AAAA,SAASA,SAAT,EAAkCC,KAAlC,QAA+C,eAA/C;AACA,OAAOC,iBAAP,MAA8B,yBAA9B;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAO,UAAP;AACA,OAAOC,YAAP,MAAyB,WAAzB;AACA,OAAOC,UAAP,MAAuB,SAAvB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,UAAP,MAAuB,SAAvB;AACA,OAAOC,YAAP,MAAyB,WAAzB;AACA,OAAOC,WAAP,MAAwB,UAAxB;AAEA,OAAOC,UAAP,MAAuB,SAAvB;AAGA,OAAOC,iBAAP,MAA8B,6BAA9B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,kBAAP,MAA+B,8BAA/B;AACA,OAAOC,uBAAP,MAAoC,mCAApC;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,gBAAP,MAA6B,4BAA7B;AACA,OAAOC,cAAP,MAA2B,0BAA3B;AACA,OAAOC,uBAAP,MAAoC,mCAApC;AACA,OAAOC,kBAAP,MAA+B,8BAA/B;AACA,OAAOC,4BAAP,MAAyC,wCAAzC;AACA,OAAOC,mBAAP,MAAgC,+BAAhC;AACA,OAAOC,iBAAP,MAA8B,6BAA9B;AACA,OAAOC,0BAAP,MAAuC,sCAAvC;AAYAvB,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMd,gBAFN,EAGGe,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMN,4BAFN,EAGGO,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMb,kBAFN,EAGGc,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMf,iBAFN,EAGGgB,cAHH;AAQA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMV,gBAFN,EAGGW,cAHH;AAQA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMH,0BAFN,EAGGI,cAHH;AAQA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMJ,iBAFN,EAGGK,cAHH;AAQA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMR,uBAFN,EAGGS,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEML,mBAFN,EAGGM,cAHH;AAQA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMZ,uBAFN,EAGGa,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMT,cAFN,EAGGU,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMP,kBAFN,EAGGQ,cAHH;AAOA3B,SAAS,CACNwB,IADH,CACsBvB,KAAK,CAACwB,YAD5B,EAEGC,EAFH,CAEMX,gBAFN,EAGGY,cAHH;AAKA,SACExB,SADF,EAEEI,UAFF,EAGEC,YAHF,EAIEF,SAJF,EAKEJ,iBALF,EAMEG,UANF,EAOEI,WAPF,EAQEL,YARF,EASEM,UATF","sourcesContent":["import { container, ILayerPlugin, TYPES } from '@antv/l7-core';\nimport CityBuildingLayer from './citybuliding/building';\nimport BaseLayer from './core/BaseLayer';\nimport './glsl.d';\nimport HeatmapLayer from './heatmap';\nimport ImageLayer from './image';\nimport LineLayer from './line/index';\nimport PointLayer from './point';\nimport PolygonLayer from './polygon';\nimport RasterLayer from './raster';\n\nimport EarthLayer from './earth';\n\n// import ConfigSchemaValidationPlugin from './plugins/ConfigSchemaValidationPlugin';\nimport DataMappingPlugin from './plugins/DataMappingPlugin';\nimport DataSourcePlugin from './plugins/DataSourcePlugin';\nimport FeatureScalePlugin from './plugins/FeatureScalePlugin';\nimport LayerAnimateStylePlugin from './plugins/LayerAnimateStylePlugin';\nimport LayerModelPlugin from './plugins/LayerModelPlugin';\nimport LayerStylePlugin from './plugins/LayerStylePlugin';\nimport LightingPlugin from './plugins/LightingPlugin';\nimport MultiPassRendererPlugin from './plugins/MultiPassRendererPlugin';\nimport PixelPickingPlugin from './plugins/PixelPickingPlugin';\nimport RegisterStyleAttributePlugin from './plugins/RegisterStyleAttributePlugin';\nimport ShaderUniformPlugin from './plugins/ShaderUniformPlugin';\nimport UpdateModelPlugin from './plugins/UpdateModelPlugin';\nimport UpdateStyleAttributePlugin from './plugins/UpdateStyleAttributePlugin';\n/**\n * 校验传入参数配置项的正确性\n * @see /dev-docs/ConfigSchemaValidation.md\n */\n// container\n// .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n// .to(ConfigSchemaValidationPlugin)\n// .inRequestScope();\n/**\n * 获取 Source\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataSourcePlugin)\n .inRequestScope();\n/**\n * 根据 StyleAttribute 创建 VertexAttribute\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(RegisterStyleAttributePlugin)\n .inRequestScope();\n/**\n * 根据 Source 创建 Scale\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(FeatureScalePlugin)\n .inRequestScope();\n/**\n * 使用 Scale 进行数据映射\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(DataMappingPlugin)\n .inRequestScope();\n\n/**\n * 更新地图样式配置项 如active, show, hide\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerStylePlugin)\n .inRequestScope();\n\n/**\n * 负责属性更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateStyleAttributePlugin)\n .inRequestScope();\n\n/**\n * 负责Model更新\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(UpdateModelPlugin)\n .inRequestScope();\n\n/**\n * Multi Pass 自定义渲染管线\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(MultiPassRendererPlugin)\n .inRequestScope();\n/**\n * 传入相机坐标系参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(ShaderUniformPlugin)\n .inRequestScope();\n\n/**\n * 传入动画参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerAnimateStylePlugin)\n .inRequestScope();\n/**\n * 传入光照相关参数\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LightingPlugin)\n .inRequestScope();\n/**\n * 负责拾取过程中 Encode 以及 Highlight 阶段及结束后恢复\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(PixelPickingPlugin)\n .inRequestScope();\n/**\n * 初始化Model\n */\ncontainer\n .bind<ILayerPlugin>(TYPES.ILayerPlugin)\n .to(LayerModelPlugin)\n .inRequestScope();\n\nexport {\n BaseLayer,\n PointLayer,\n PolygonLayer,\n LineLayer,\n CityBuildingLayer,\n ImageLayer,\n RasterLayer,\n HeatmapLayer,\n EarthLayer,\n};\n"],"file":"index.js"}
@@ -46,7 +46,7 @@ var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraServ
46
46
  layer.models.forEach(function (model) {
47
47
  var _model$addUniforms;
48
48
 
49
- model.addUniforms((_model$addUniforms = {}, _defineProperty(_model$addUniforms, CameraUniform.ProjectionMatrix, _this.cameraService.getProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewMatrix, _this.cameraService.getViewMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewProjectionMatrix, _this.cameraService.getViewProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.Zoom, _this.cameraService.getZoom()), _defineProperty(_model$addUniforms, CameraUniform.ZoomScale, _this.cameraService.getZoomScale()), _defineProperty(_model$addUniforms, CameraUniform.FocalDistance, _this.cameraService.getFocalDistance()), _defineProperty(_model$addUniforms, CameraUniform.CameraPosition, _this.cameraService.getCameraPosition()), _defineProperty(_model$addUniforms, CoordinateUniform.CoordinateSystem, _this.coordinateSystemService.getCoordinateSystem()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenter, _this.coordinateSystemService.getViewportCenter()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenterProjection, _this.coordinateSystemService.getViewportCenterProjection()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree, _this.coordinateSystemService.getPixelsPerDegree()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree2, _this.coordinateSystemService.getPixelsPerDegree2()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerMeter, _this.coordinateSystemService.getPixelsPerMeter()), _defineProperty(_model$addUniforms, CoordinateUniform.Mvp, mvp), _defineProperty(_model$addUniforms, "u_SceneCenterMKT", sceneCenterMKT), _defineProperty(_model$addUniforms, "u_ViewportSize", [width, height]), _defineProperty(_model$addUniforms, "u_DevicePixelRatio", window.devicePixelRatio), _defineProperty(_model$addUniforms, "u_ModelMatrix", [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), _defineProperty(_model$addUniforms, "u_PickingBuffer", layer.getLayerConfig().pickingBuffer || 0), _model$addUniforms));
49
+ model.addUniforms((_model$addUniforms = {}, _defineProperty(_model$addUniforms, CameraUniform.ProjectionMatrix, _this.cameraService.getProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewMatrix, _this.cameraService.getViewMatrix()), _defineProperty(_model$addUniforms, CameraUniform.ViewProjectionMatrix, _this.cameraService.getViewProjectionMatrix()), _defineProperty(_model$addUniforms, CameraUniform.Zoom, _this.cameraService.getZoom()), _defineProperty(_model$addUniforms, CameraUniform.ZoomScale, _this.cameraService.getZoomScale()), _defineProperty(_model$addUniforms, CameraUniform.FocalDistance, _this.cameraService.getFocalDistance()), _defineProperty(_model$addUniforms, CameraUniform.CameraPosition, _this.cameraService.getCameraPosition()), _defineProperty(_model$addUniforms, CoordinateUniform.CoordinateSystem, _this.coordinateSystemService.getCoordinateSystem()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenter, _this.coordinateSystemService.getViewportCenter()), _defineProperty(_model$addUniforms, CoordinateUniform.ViewportCenterProjection, _this.coordinateSystemService.getViewportCenterProjection()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree, _this.coordinateSystemService.getPixelsPerDegree()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerDegree2, _this.coordinateSystemService.getPixelsPerDegree2()), _defineProperty(_model$addUniforms, CoordinateUniform.PixelsPerMeter, _this.coordinateSystemService.getPixelsPerMeter()), _defineProperty(_model$addUniforms, CoordinateUniform.Mvp, mvp), _defineProperty(_model$addUniforms, "u_SceneCenterMKT", sceneCenterMKT), _defineProperty(_model$addUniforms, "u_ViewportSize", [width, height]), _defineProperty(_model$addUniforms, "u_DevicePixelRatio", window.devicePixelRatio), _defineProperty(_model$addUniforms, "u_ModelMatrix", _this.cameraService.getModelMatrix()), _defineProperty(_model$addUniforms, "u_PickingBuffer", layer.getLayerConfig().pickingBuffer || 0), _model$addUniforms));
50
50
  });
51
51
  });
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/ShaderUniformPlugin.ts"],"names":["CameraUniform","CoordinateUniform","TYPES","inject","injectable","ShaderUniformPlugin","ICameraService","ICoordinateSystemService","IRendererService","IMapService","layer","version","mapService","mvp","sceneCenterMKT","hooks","beforeRender","tap","coordinateSystemService","refresh","map","customCoords","getMVPMatrix","getCustomCoordCenter","rendererService","getViewportSize","width","height","models","forEach","model","addUniforms","ProjectionMatrix","cameraService","getProjectionMatrix","ViewMatrix","getViewMatrix","ViewProjectionMatrix","getViewProjectionMatrix","Zoom","getZoom","ZoomScale","getZoomScale","FocalDistance","getFocalDistance","CameraPosition","getCameraPosition","CoordinateSystem","getCoordinateSystem","ViewportCenter","getViewportCenter","ViewportCenterProjection","getViewportCenterProjection","PixelsPerDegree","getPixelsPerDegree","PixelsPerDegree2","getPixelsPerDegree2","PixelsPerMeter","getPixelsPerMeter","Mvp","window","devicePixelRatio","getLayerConfig","pickingBuffer"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IMapService,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在渲染之前需要获取当前 Shader 所需 Uniform,例如:\n * 1. 从相机服务中获取 View & ProjectionMatrix,当前缩放等级等等\n * 2. 从坐标系服务中获取当前坐标系,例如是否是偏移坐标系\n * @see https://yuque.antfin-inc.com/yuqi.pyq/fgetpa/doml91\n * 3. 当前 Layer 本身的样式属性\n */\n@injectable()\nexport default class ShaderUniformPlugin implements ILayerPlugin {\n @inject(TYPES.ICameraService)\n private readonly cameraService: ICameraService;\n\n @inject(TYPES.ICoordinateSystemService)\n private readonly coordinateSystemService: ICoordinateSystemService;\n\n @inject(TYPES.IRendererService)\n private readonly rendererService: IRendererService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n public apply(layer: ILayer) {\n const version = this.mapService.version;\n\n let mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; // default matrix (for gaode2.x)\n let sceneCenterMKT = [0, 0];\n layer.hooks.beforeRender.tap('ShaderUniformPlugin', () => {\n // 重新计算坐标系参数\n this.coordinateSystemService.refresh();\n\n if (version === 'GAODE2.x') {\n // @ts-ignore\n mvp = this.mapService.map.customCoords.getMVPMatrix();\n // mvp = amapCustomCoords.getMVPMatrix()\n // @ts-ignore\n sceneCenterMKT = this.mapService.getCustomCoordCenter();\n }\n\n const { width, height } = this.rendererService.getViewportSize();\n layer.models.forEach((model) => {\n model.addUniforms({\n // 相机参数,包含 VP 矩阵、缩放等级\n [CameraUniform.ProjectionMatrix]: this.cameraService.getProjectionMatrix(),\n [CameraUniform.ViewMatrix]: this.cameraService.getViewMatrix(),\n [CameraUniform.ViewProjectionMatrix]: this.cameraService.getViewProjectionMatrix(),\n [CameraUniform.Zoom]: this.cameraService.getZoom(),\n [CameraUniform.ZoomScale]: this.cameraService.getZoomScale(),\n [CameraUniform.FocalDistance]: this.cameraService.getFocalDistance(),\n [CameraUniform.CameraPosition]: this.cameraService.getCameraPosition(),\n // 坐标系参数\n [CoordinateUniform.CoordinateSystem]: this.coordinateSystemService.getCoordinateSystem(),\n [CoordinateUniform.ViewportCenter]: this.coordinateSystemService.getViewportCenter(),\n [CoordinateUniform.ViewportCenterProjection]: this.coordinateSystemService.getViewportCenterProjection(),\n [CoordinateUniform.PixelsPerDegree]: this.coordinateSystemService.getPixelsPerDegree(),\n [CoordinateUniform.PixelsPerDegree2]: this.coordinateSystemService.getPixelsPerDegree2(),\n [CoordinateUniform.PixelsPerMeter]: this.coordinateSystemService.getPixelsPerMeter(),\n // 坐标系是高德2.0的时候单独计算\n [CoordinateUniform.Mvp]: mvp,\n u_SceneCenterMKT: sceneCenterMKT,\n // 其他参数,例如视口大小、DPR 等\n u_ViewportSize: [width, height],\n u_DevicePixelRatio: window.devicePixelRatio,\n u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0,\n });\n });\n\n // TODO:脏检查,决定是否需要渲染\n });\n }\n}\n"],"file":"ShaderUniformPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/ShaderUniformPlugin.ts"],"names":["CameraUniform","CoordinateUniform","TYPES","inject","injectable","ShaderUniformPlugin","ICameraService","ICoordinateSystemService","IRendererService","IMapService","layer","version","mapService","mvp","sceneCenterMKT","hooks","beforeRender","tap","coordinateSystemService","refresh","map","customCoords","getMVPMatrix","getCustomCoordCenter","rendererService","getViewportSize","width","height","models","forEach","model","addUniforms","ProjectionMatrix","cameraService","getProjectionMatrix","ViewMatrix","getViewMatrix","ViewProjectionMatrix","getViewProjectionMatrix","Zoom","getZoom","ZoomScale","getZoomScale","FocalDistance","getFocalDistance","CameraPosition","getCameraPosition","CoordinateSystem","getCoordinateSystem","ViewportCenter","getViewportCenter","ViewportCenterProjection","getViewportCenterProjection","PixelsPerDegree","getPixelsPerDegree","PixelsPerDegree2","getPixelsPerDegree2","PixelsPerMeter","getPixelsPerMeter","Mvp","window","devicePixelRatio","getModelMatrix","getLayerConfig","pickingBuffer"],"mappings":"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","sourcesContent":["import {\n CameraUniform,\n CoordinateUniform,\n ICameraService,\n ICoordinateSystemService,\n ILayer,\n ILayerPlugin,\n IMapService,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在渲染之前需要获取当前 Shader 所需 Uniform,例如:\n * 1. 从相机服务中获取 View & ProjectionMatrix,当前缩放等级等等\n * 2. 从坐标系服务中获取当前坐标系,例如是否是偏移坐标系\n * @see https://yuque.antfin-inc.com/yuqi.pyq/fgetpa/doml91\n * 3. 当前 Layer 本身的样式属性\n */\n@injectable()\nexport default class ShaderUniformPlugin implements ILayerPlugin {\n @inject(TYPES.ICameraService)\n private readonly cameraService: ICameraService;\n\n @inject(TYPES.ICoordinateSystemService)\n private readonly coordinateSystemService: ICoordinateSystemService;\n\n @inject(TYPES.IRendererService)\n private readonly rendererService: IRendererService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n public apply(layer: ILayer) {\n const version = this.mapService.version;\n\n let mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; // default matrix (for gaode2.x)\n let sceneCenterMKT = [0, 0];\n layer.hooks.beforeRender.tap('ShaderUniformPlugin', () => {\n // 重新计算坐标系参数\n this.coordinateSystemService.refresh();\n\n if (version === 'GAODE2.x') {\n // @ts-ignore\n mvp = this.mapService.map.customCoords.getMVPMatrix();\n // mvp = amapCustomCoords.getMVPMatrix()\n // @ts-ignore\n sceneCenterMKT = this.mapService.getCustomCoordCenter();\n }\n\n const { width, height } = this.rendererService.getViewportSize();\n layer.models.forEach((model) => {\n model.addUniforms({\n // 相机参数,包含 VP 矩阵、缩放等级\n [CameraUniform.ProjectionMatrix]: this.cameraService.getProjectionMatrix(),\n [CameraUniform.ViewMatrix]: this.cameraService.getViewMatrix(),\n [CameraUniform.ViewProjectionMatrix]: this.cameraService.getViewProjectionMatrix(),\n [CameraUniform.Zoom]: this.cameraService.getZoom(),\n [CameraUniform.ZoomScale]: this.cameraService.getZoomScale(),\n [CameraUniform.FocalDistance]: this.cameraService.getFocalDistance(),\n [CameraUniform.CameraPosition]: this.cameraService.getCameraPosition(),\n // 坐标系参数\n [CoordinateUniform.CoordinateSystem]: this.coordinateSystemService.getCoordinateSystem(),\n [CoordinateUniform.ViewportCenter]: this.coordinateSystemService.getViewportCenter(),\n [CoordinateUniform.ViewportCenterProjection]: this.coordinateSystemService.getViewportCenterProjection(),\n [CoordinateUniform.PixelsPerDegree]: this.coordinateSystemService.getPixelsPerDegree(),\n [CoordinateUniform.PixelsPerDegree2]: this.coordinateSystemService.getPixelsPerDegree2(),\n [CoordinateUniform.PixelsPerMeter]: this.coordinateSystemService.getPixelsPerMeter(),\n // 坐标系是高德2.0的时候单独计算\n [CoordinateUniform.Mvp]: mvp,\n u_SceneCenterMKT: sceneCenterMKT,\n // 其他参数,例如视口大小、DPR 等\n u_ViewportSize: [width, height],\n u_DevicePixelRatio: window.devicePixelRatio,\n // u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n u_ModelMatrix: this.cameraService.getModelMatrix(),\n u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0,\n });\n });\n\n // TODO:脏检查,决定是否需要渲染\n });\n }\n}\n"],"file":"ShaderUniformPlugin.js"}
@@ -1,3 +1,5 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
3
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
4
  import _createClass from "@babel/runtime/helpers/createClass";
3
5
  import _inherits from "@babel/runtime/helpers/inherits";
@@ -11,9 +13,10 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
11
13
 
12
14
  import { AttributeType, gl } from '@antv/l7-core';
13
15
  import BaseModel from '../../core/BaseModel';
14
- import { PointFillTriangulation } from '../../core/triangulation';
16
+ import { GlobelPointFillTriangulation, PointFillTriangulation } from '../../core/triangulation';
15
17
  var pointFillFrag = "#define Animate 0.0\n\nuniform float u_blur : 0;\n// uniform float u_stroke_width : 1;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\n\nvoid main() {\n int shape = int(floor(v_data.w + 0.5));\n\n \n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n float opacity = styleMappingMat[0][0];\n float stroke_opacity = styleMappingMat[0][1];\n float strokeWidth = styleMappingMat[0][2];\n vec4 strokeColor = textrueStroke == vec4(0) ? v_color : textrueStroke;\n\n lowp float antialiasblur = v_data.z;\n float antialiased_blur = -max(u_blur, antialiasblur);\n // float r = v_radius / (v_radius + u_stroke_width);\n float r = v_radius / (v_radius + strokeWidth);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n if (shape == 0) {\n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n } else if (shape == 1) {\n outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\n inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\n } else if (shape == 2) {\n outer_df = sdBox(v_data.xy, vec2(1.));\n inner_df = sdBox(v_data.xy, vec2(r));\n } else if (shape == 3) {\n outer_df = sdPentagon(v_data.xy, 0.8);\n inner_df = sdPentagon(v_data.xy, r * 0.8);\n } else if (shape == 4) {\n outer_df = sdHexagon(v_data.xy, 0.8);\n inner_df = sdHexagon(v_data.xy, r * 0.8);\n } else if (shape == 5) {\n outer_df = sdOctogon(v_data.xy, 1.0);\n inner_df = sdOctogon(v_data.xy, r);\n } else if (shape == 6) {\n outer_df = sdHexagram(v_data.xy, 0.52);\n inner_df = sdHexagram(v_data.xy, r * 0.52);\n } else if (shape == 7) {\n outer_df = sdRhombus(v_data.xy, vec2(1.0));\n inner_df = sdRhombus(v_data.xy, vec2(r));\n } else if (shape == 8) {\n outer_df = sdVesica(v_data.xy, 1.1, 0.8);\n inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\n }\n\n float opacity_t = smoothstep(0.0, antialiased_blur, outer_df);\n // float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(\n // antialiased_blur,\n // 0.0,\n // inner_df\n // );\n float color_t = strokeWidth < 0.01 ? 0.0 : smoothstep(\n antialiased_blur,\n 0.0,\n inner_df\n );\n float PI = 3.14159;\n float N_RINGS = 3.0;\n float FREQ = 1.0;\n\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * opacity), strokeColor * stroke_opacity, color_t);\n\n \n gl_FragColor.a = gl_FragColor.a * opacity_t;\n if(u_aimate.x == Animate) {\n float d = length(v_data.xy);\n float intensity = clamp(cos(d * PI), 0.0, 1.0) * clamp(cos(2.0 * PI * (d * 2.0 * u_aimate.z - u_aimate.y * u_time)), 0.0, 1.0);\n gl_FragColor = vec4(gl_FragColor.xyz, intensity);\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n\n}\n";
16
- var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec2 a_Extrude;\nattribute float a_Size;\nattribute float a_Shape;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\nuniform float u_opacity : 1;\nuniform float u_stroke_opacity : 1;\nuniform float u_stroke_width : 2;\nuniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\nuniform vec2 u_offsets;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n#pragma include \"styleMappingCalStrokeOpacity\"\n#pragma include \"styleMappingCalStrokeWidth\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec2 extrude = a_Extrude;\n float shape_type = a_Shape;\n float newSize = setPickingSize(a_Size);\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 strokeOpacityAndOffset = calStrokeOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][1] = strokeOpacityAndOffset.r;\n textureOffset = strokeOpacityAndOffset.g;\n\n vec2 strokeWidthAndOffset = calStrokeWidthAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][2] = strokeWidthAndOffset.r;\n textureOffset = strokeWidthAndOffset.g;\n\n vec4 textrueStroke = vec4(-1.0, -1.0, -1.0, -1.0);\n if(hasStroke()) {\n vec2 valueRPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][0] = pos2value(valueRPos, columnWidth, rowHeight); // R\n textureOffset += 1.0;\n\n vec2 valueGPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][1] = pos2value(valueGPos, columnWidth, rowHeight); // G\n textureOffset += 1.0;\n\n vec2 valueBPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][2] = pos2value(valueBPos, columnWidth, rowHeight); // B\n textureOffset += 1.0;\n\n vec2 valueAPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][3] = pos2value(valueAPos, columnWidth, rowHeight); // A\n textureOffset += 1.0;\n } else {\n if(u_stroke_color == vec4(0.0)) {\n styleMappingMat[1][0] = v_color.r;\n styleMappingMat[1][1] = v_color.g;\n styleMappingMat[1][2] = v_color.b;\n styleMappingMat[1][3] = v_color.a;\n } else {\n styleMappingMat[1][0] = u_stroke_color.r;\n styleMappingMat[1][1] = u_stroke_color.g;\n styleMappingMat[1][2] = u_stroke_color.b;\n styleMappingMat[1][3] = u_stroke_color.a;\n }\n }\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // unpack color(vec2)\n v_color = a_Color;\n\n // radius(16-bit)\n v_radius = newSize;\n\n // TODO: billboard\n // anti-alias\n float antialiasblur = 1.0 / u_DevicePixelRatio / (newSize + u_stroke_width);\n\n // construct point coords\n v_data = vec4(extrude, antialiasblur,shape_type);\n\n // vec2 offset = project_pixel(extrude * (newSize + u_stroke_width) + u_offsets);\n vec2 offset = project_pixel(extrude * (newSize + u_stroke_width) + textrueOffsets);\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, 0.0, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n }\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
18
+ var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute float a_Shape;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform float u_globel;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\nuniform float u_opacity : 1;\nuniform float u_stroke_opacity : 1;\nuniform float u_stroke_width : 2;\nuniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\nuniform vec2 u_offsets;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n#pragma include \"styleMappingCalStrokeOpacity\"\n#pragma include \"styleMappingCalStrokeWidth\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n float shape_type = a_Shape;\n float newSize = setPickingSize(a_Size);\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 strokeOpacityAndOffset = calStrokeOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][1] = strokeOpacityAndOffset.r;\n textureOffset = strokeOpacityAndOffset.g;\n\n vec2 strokeWidthAndOffset = calStrokeWidthAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][2] = strokeWidthAndOffset.r;\n textureOffset = strokeWidthAndOffset.g;\n\n vec4 textrueStroke = vec4(-1.0, -1.0, -1.0, -1.0);\n if(hasStroke()) {\n vec2 valueRPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][0] = pos2value(valueRPos, columnWidth, rowHeight); // R\n textureOffset += 1.0;\n\n vec2 valueGPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][1] = pos2value(valueGPos, columnWidth, rowHeight); // G\n textureOffset += 1.0;\n\n vec2 valueBPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][2] = pos2value(valueBPos, columnWidth, rowHeight); // B\n textureOffset += 1.0;\n\n vec2 valueAPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n styleMappingMat[1][3] = pos2value(valueAPos, columnWidth, rowHeight); // A\n textureOffset += 1.0;\n } else {\n if(u_stroke_color == vec4(0.0)) {\n styleMappingMat[1][0] = v_color.r;\n styleMappingMat[1][1] = v_color.g;\n styleMappingMat[1][2] = v_color.b;\n styleMappingMat[1][3] = v_color.a;\n } else {\n styleMappingMat[1][0] = u_stroke_color.r;\n styleMappingMat[1][1] = u_stroke_color.g;\n styleMappingMat[1][2] = u_stroke_color.b;\n styleMappingMat[1][3] = u_stroke_color.a;\n }\n }\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // unpack color(vec2)\n v_color = a_Color;\n\n // radius(16-bit)\n v_radius = newSize;\n\n // TODO: billboard\n // anti-alias\n float antialiasblur = 1.0 / u_DevicePixelRatio / (newSize + u_stroke_width);\n\n // construct point coords\n // TODP: /abs(extrude.x) \u662F\u4E3A\u4E86\u517C\u5BB9\u5730\u7403\u6A21\u5F0F\n v_data = vec4(extrude.x/abs(extrude.x), extrude.y/abs(extrude.y), antialiasblur,shape_type);\n\n // vec2 offset = project_pixel(extrude * (newSize + u_stroke_width) + u_offsets);\n vec2 offset = project_pixel(extrude.xy * (newSize + u_stroke_width) + textrueOffsets);\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, 0.0, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n }\n\n if(u_globel > 0.0) {\n gl_Position = u_ViewProjectionMatrix * vec4(a_Position + extrude * newSize * 0.1, 1.0);\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
19
+ import { mat4, vec3 } from 'gl-matrix';
17
20
 
18
21
  var FillModel = function (_BaseModel) {
19
22
  _inherits(FillModel, _BaseModel);
@@ -39,7 +42,9 @@ var FillModel = function (_BaseModel) {
39
42
  _ref$stroke = _ref.stroke,
40
43
  stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
41
44
  _ref$offsets = _ref.offsets,
42
- offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets;
45
+ offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
46
+ _ref$isGlobel = _ref.isGlobel,
47
+ isGlobel = _ref$isGlobel === void 0 ? false : _ref$isGlobel;
43
48
 
44
49
  if (this.dataTextureTest && this.dataTextureNeedUpdate({
45
50
  opacity: opacity,
@@ -81,6 +86,7 @@ var FillModel = function (_BaseModel) {
81
86
  }
82
87
 
83
88
  return {
89
+ u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,
84
90
  u_dataTexture: this.dataTexture,
85
91
  u_cellTypeLayout: this.getCellTypeLayout(),
86
92
  u_opacity: _isNumber(opacity) ? opacity : 1.0,
@@ -114,13 +120,14 @@ var FillModel = function (_BaseModel) {
114
120
  }, {
115
121
  key: "buildModels",
116
122
  value: function buildModels() {
123
+ var isGlobel = this.mapService.version === 'GLOBEL';
117
124
  return [this.layer.buildLayerModel({
118
125
  moduleName: 'pointfill',
119
126
  vertexShader: pointFillVert,
120
127
  fragmentShader: pointFillFrag,
121
- triangulation: PointFillTriangulation,
128
+ triangulation: isGlobel ? GlobelPointFillTriangulation : PointFillTriangulation,
122
129
  depth: {
123
- enable: false
130
+ enable: isGlobel
124
131
  },
125
132
  blend: this.getBlend()
126
133
  })];
@@ -142,6 +149,7 @@ var FillModel = function (_BaseModel) {
142
149
  value: function registerBuiltinAttributes() {
143
150
  var _this = this;
144
151
 
152
+ var isGlobel = this.mapService.version === 'GLOBEL';
145
153
  this.styleAttributeService.registerStyleAttribute({
146
154
  name: 'extrude',
147
155
  type: AttributeType.Attribute,
@@ -152,11 +160,42 @@ var FillModel = function (_BaseModel) {
152
160
  data: [],
153
161
  type: gl.FLOAT
154
162
  },
155
- size: 2,
163
+ size: 3,
156
164
  update: function update(feature, featureIdx, vertex, attributeIdx) {
157
- var extrude = [1, 1, -1, 1, -1, -1, 1, -1];
158
- var extrudeIndex = attributeIdx % 4 * 2;
159
- return [extrude[extrudeIndex], extrude[extrudeIndex + 1]];
165
+ var extrude;
166
+
167
+ if (isGlobel) {
168
+ var _vertex = _slicedToArray(vertex, 3),
169
+ x = _vertex[0],
170
+ y = _vertex[1],
171
+ z = _vertex[2];
172
+
173
+ var n1 = vec3.fromValues(0, 0, 1);
174
+ var n2 = vec3.fromValues(x, 0, z);
175
+ var xzReg = x >= 0 ? vec3.angle(n1, n2) : Math.PI * 2 - vec3.angle(n1, n2);
176
+ var yReg = Math.PI * 2 - Math.asin(y / 100);
177
+ var m = mat4.create();
178
+ mat4.rotateY(m, m, xzReg);
179
+ mat4.rotateX(m, m, yReg);
180
+ var v1 = vec3.fromValues(1, 1, 0);
181
+ vec3.transformMat4(v1, v1, m);
182
+ vec3.normalize(v1, v1);
183
+ var v2 = vec3.fromValues(-1, 1, 0);
184
+ vec3.transformMat4(v2, v2, m);
185
+ vec3.normalize(v2, v2);
186
+ var v3 = vec3.fromValues(-1, -1, 0);
187
+ vec3.transformMat4(v3, v3, m);
188
+ vec3.normalize(v3, v3);
189
+ var v4 = vec3.fromValues(1, -1, 0);
190
+ vec3.transformMat4(v4, v4, m);
191
+ vec3.normalize(v4, v4);
192
+ extrude = [].concat(_toConsumableArray(v1), _toConsumableArray(v2), _toConsumableArray(v3), _toConsumableArray(v4));
193
+ } else {
194
+ extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];
195
+ }
196
+
197
+ var extrudeIndex = attributeIdx % 4 * 3;
198
+ return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
160
199
  }
161
200
  }
162
201
  });