@antv/l7-layers 2.5.22 → 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.
- package/es/core/BaseLayer.d.ts +5 -0
- package/es/core/BaseLayer.js +5 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/triangulation.d.ts +19 -0
- package/es/core/triangulation.js +106 -1
- package/es/core/triangulation.js.map +1 -1
- package/es/earth/index.d.ts +15 -0
- package/es/earth/index.js +62 -0
- package/es/earth/index.js.map +1 -0
- package/es/earth/models/base.d.ts +16 -0
- package/es/earth/models/base.js +192 -0
- package/es/earth/models/base.js.map +1 -0
- package/es/index.d.ts +2 -1
- package/es/index.js +2 -1
- package/es/index.js.map +1 -1
- package/es/plugins/ShaderUniformPlugin.js +1 -1
- package/es/plugins/ShaderUniformPlugin.js.map +1 -1
- package/es/point/models/fill.js +48 -9
- package/es/point/models/fill.js.map +1 -1
- package/lib/core/BaseLayer.js +5 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/triangulation.js +121 -0
- package/lib/core/triangulation.js.map +1 -1
- package/lib/earth/index.js +76 -0
- package/lib/earth/index.js.map +1 -0
- package/lib/earth/models/base.js +202 -0
- package/lib/earth/models/base.js.map +1 -0
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -1
- package/lib/plugins/ShaderUniformPlugin.js +1 -1
- package/lib/plugins/ShaderUniformPlugin.js.map +1 -1
- package/lib/point/models/fill.js +68 -8
- package/lib/point/models/fill.js.map +1 -1
- package/package.json +5 -5
|
@@ -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
|
-
|
|
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;
|
|
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",
|
|
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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
|
|
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"}
|
package/es/point/models/fill.js
CHANGED
|
@@ -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
|
|
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:
|
|
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:
|
|
163
|
+
size: 3,
|
|
156
164
|
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
157
|
-
var extrude
|
|
158
|
-
|
|
159
|
-
|
|
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
|
});
|