@antv/l7-layers 2.6.4 → 2.6.8

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.
Files changed (62) hide show
  1. package/es/core/BaseLayer.js +5 -0
  2. package/es/core/BaseLayer.js.map +1 -1
  3. package/es/core/BaseModel.d.ts +4 -0
  4. package/es/core/BaseModel.js +19 -2
  5. package/es/core/BaseModel.js.map +1 -1
  6. package/es/index.d.ts +2 -1
  7. package/es/index.js +2 -1
  8. package/es/index.js.map +1 -1
  9. package/es/line/models/arc.js +6 -4
  10. package/es/line/models/arc.js.map +1 -1
  11. package/es/point/models/extrude.js +1 -1
  12. package/es/point/models/extrude.js.map +1 -1
  13. package/es/polygon/models/extrude.js +8 -2
  14. package/es/polygon/models/extrude.js.map +1 -1
  15. package/es/utils/dataMappingStyle.d.ts +1 -0
  16. package/es/utils/dataMappingStyle.js +4 -0
  17. package/es/utils/dataMappingStyle.js.map +1 -1
  18. package/es/wind/index.d.ts +36 -0
  19. package/es/wind/index.js +91 -0
  20. package/es/wind/index.js.map +1 -0
  21. package/es/wind/models/index.d.ts +5 -0
  22. package/es/wind/models/index.js +6 -0
  23. package/es/wind/models/index.js.map +1 -0
  24. package/es/wind/models/utils.d.ts +19 -0
  25. package/es/wind/models/utils.js +201 -0
  26. package/es/wind/models/utils.js.map +1 -0
  27. package/es/wind/models/wind.d.ts +31 -0
  28. package/es/wind/models/wind.js +298 -0
  29. package/es/wind/models/wind.js.map +1 -0
  30. package/es/wind/models/windRender.d.ts +104 -0
  31. package/es/wind/models/windRender.js +346 -0
  32. package/es/wind/models/windRender.js.map +1 -0
  33. package/es/wind/models/windShader.d.ts +12 -0
  34. package/es/wind/models/windShader.js +7 -0
  35. package/es/wind/models/windShader.js.map +1 -0
  36. package/lib/core/BaseLayer.js +5 -0
  37. package/lib/core/BaseLayer.js.map +1 -1
  38. package/lib/core/BaseModel.js +19 -2
  39. package/lib/core/BaseModel.js.map +1 -1
  40. package/lib/index.js +8 -0
  41. package/lib/index.js.map +1 -1
  42. package/lib/line/models/arc.js +6 -4
  43. package/lib/line/models/arc.js.map +1 -1
  44. package/lib/point/models/extrude.js +1 -1
  45. package/lib/point/models/extrude.js.map +1 -1
  46. package/lib/polygon/models/extrude.js +8 -2
  47. package/lib/polygon/models/extrude.js.map +1 -1
  48. package/lib/utils/dataMappingStyle.js +4 -0
  49. package/lib/utils/dataMappingStyle.js.map +1 -1
  50. package/lib/wind/index.js +104 -0
  51. package/lib/wind/index.js.map +1 -0
  52. package/lib/wind/models/index.js +17 -0
  53. package/lib/wind/models/index.js.map +1 -0
  54. package/lib/wind/models/utils.js +228 -0
  55. package/lib/wind/models/utils.js.map +1 -0
  56. package/lib/wind/models/wind.js +310 -0
  57. package/lib/wind/models/wind.js.map +1 -0
  58. package/lib/wind/models/windRender.js +340 -0
  59. package/lib/wind/models/windRender.js.map +1 -0
  60. package/lib/wind/models/windShader.js +19 -0
  61. package/lib/wind/models/windShader.js.map +1 -0
  62. package/package.json +5 -5
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.bindAttriBuffer = bindAttriBuffer;
7
+ exports.bindAttriIndicesBuffer = bindAttriIndicesBuffer;
8
+ exports.bindTexture = bindTexture;
9
+ exports.bindUnifrom = bindUnifrom;
10
+ exports.createBuffer = createBuffer;
11
+ exports.createDataTexture = createDataTexture;
12
+ exports.createProgram = createProgram;
13
+ exports.createTexture = createTexture;
14
+ exports.initFramebuffer = initFramebuffer;
15
+ exports.loadShader = loadShader;
16
+ exports.setUnifrom = setUnifrom;
17
+
18
+ function createProgram(gl, vshader, fshader) {
19
+ var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader);
20
+ var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader);
21
+
22
+ if (!vertexShader || !fragmentShader) {
23
+ return null;
24
+ }
25
+
26
+ var program = gl.createProgram();
27
+
28
+ if (!program) {
29
+ return null;
30
+ }
31
+
32
+ gl.attachShader(program, vertexShader);
33
+ gl.attachShader(program, fragmentShader);
34
+ gl.linkProgram(program);
35
+ var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
36
+
37
+ if (!linked) {
38
+ var error = gl.getProgramInfoLog(program);
39
+ console.warn('Failed to link program: ' + error);
40
+ gl.deleteProgram(program);
41
+ gl.deleteShader(fragmentShader);
42
+ gl.deleteShader(vertexShader);
43
+ return null;
44
+ }
45
+
46
+ var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
47
+
48
+ for (var i = 0; i < numAttributes; i++) {
49
+ var attribute = gl.getActiveAttrib(program, i);
50
+ program[attribute.name] = gl.getAttribLocation(program, attribute.name);
51
+ }
52
+
53
+ var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
54
+
55
+ for (var i$1 = 0; i$1 < numUniforms; i$1++) {
56
+ var uniform = gl.getActiveUniform(program, i$1);
57
+ program[uniform.name] = gl.getUniformLocation(program, uniform.name);
58
+ }
59
+
60
+ program.vertexShader = vertexShader;
61
+ program.fragmentShader = fragmentShader;
62
+ return program;
63
+ }
64
+
65
+ function loadShader(gl, type, source) {
66
+ var shader = gl.createShader(type);
67
+
68
+ if (shader == null) {
69
+ console.warn('unable to create shader');
70
+ return null;
71
+ }
72
+
73
+ gl.shaderSource(shader, source);
74
+ gl.compileShader(shader);
75
+ var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
76
+
77
+ if (!compiled) {
78
+ var error = gl.getShaderInfoLog(shader);
79
+ console.warn('Failed to compile shader: ' + error);
80
+ gl.deleteShader(shader);
81
+ return null;
82
+ }
83
+
84
+ return shader;
85
+ }
86
+
87
+ function createTexture(gl, filter, data, width, height) {
88
+ var texture = gl.createTexture();
89
+ gl.bindTexture(gl.TEXTURE_2D, texture);
90
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
91
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
92
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);
93
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);
94
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);
95
+ gl.bindTexture(gl.TEXTURE_2D, null);
96
+ return texture;
97
+ }
98
+
99
+ function createDataTexture(gl, filter, data) {
100
+ var texture = gl.createTexture();
101
+ gl.bindTexture(gl.TEXTURE_2D, texture);
102
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
103
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
104
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);
105
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);
106
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, data);
107
+ gl.bindTexture(gl.TEXTURE_2D, null);
108
+ return texture;
109
+ }
110
+
111
+ function bindTexture(gl, texture, unit) {
112
+ gl.activeTexture(gl.TEXTURE0 + unit);
113
+ gl.bindTexture(gl.TEXTURE_2D, texture);
114
+ }
115
+
116
+ function createBuffer(gl, data) {
117
+ var buffer = gl.createBuffer();
118
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
119
+ gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
120
+ return buffer;
121
+ }
122
+
123
+ function bindAttriBuffer(gl, attrName, vertices, count, program) {
124
+ var buffer = gl.createBuffer();
125
+
126
+ if (!buffer) {
127
+ console.warn('failed create vertex buffer');
128
+ }
129
+
130
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
131
+ gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
132
+ var attr = gl.getAttribLocation(program, attrName);
133
+ gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);
134
+ gl.enableVertexAttribArray(attr);
135
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
136
+ return {
137
+ buffer: buffer,
138
+ attr: attr,
139
+ count: count
140
+ };
141
+ }
142
+
143
+ function bindAttriIndicesBuffer(gl, indices) {
144
+ var buffer = gl.createBuffer();
145
+
146
+ if (!buffer) {
147
+ console.warn('failed create vertex buffer');
148
+ }
149
+
150
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
151
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
152
+ return buffer;
153
+ }
154
+
155
+ function bindUnifrom(gl, unifromName, data, program, vec) {
156
+ var uniform = gl.getUniformLocation(program, unifromName);
157
+
158
+ if (uniform < 0) {
159
+ console.warn('无法获取 uniform 变量的存储位置');
160
+ }
161
+
162
+ setUnifrom(gl, uniform, data, vec);
163
+ return uniform;
164
+ }
165
+
166
+ function setUnifrom(gl, location, data, vec) {
167
+ switch (vec) {
168
+ case 'float':
169
+ gl.uniform1f(location, data);
170
+ break;
171
+
172
+ case 'vec2':
173
+ gl.uniform2fv(location, data);
174
+ break;
175
+
176
+ case 'vec3':
177
+ gl.uniform3fv(location, data);
178
+ break;
179
+
180
+ case 'vec4':
181
+ gl.uniform4fv(location, data);
182
+ break;
183
+
184
+ case 'bool':
185
+ gl.uniform1i(location, data);
186
+ break;
187
+
188
+ case 'sampler2d':
189
+ break;
190
+
191
+ case 'mat4':
192
+ gl.uniformMatrix4fv(location, false, data);
193
+ break;
194
+ }
195
+ }
196
+
197
+ function initFramebuffer(gl) {
198
+ var drawingBufferWidth = gl.drawingBufferWidth,
199
+ drawingBufferHeight = gl.drawingBufferHeight;
200
+ var OFFER_SCREEN_WIDTH = drawingBufferWidth;
201
+ var OFFER_SCREEN_HEIGHT = drawingBufferHeight;
202
+ var FRAMEBUFFER = gl.createFramebuffer();
203
+ gl.bindFramebuffer(gl.FRAMEBUFFER, FRAMEBUFFER);
204
+ var depthbuffer = gl.createRenderbuffer();
205
+ gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);
206
+ gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT);
207
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthbuffer);
208
+ var texture = gl.createTexture();
209
+ var textureSize = 1024;
210
+ FRAMEBUFFER.texture = texture;
211
+ FRAMEBUFFER.width = OFFER_SCREEN_WIDTH;
212
+ FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;
213
+ gl.bindTexture(gl.TEXTURE_2D, texture);
214
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
215
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
216
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
217
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
218
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
219
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
220
+ gl.bindTexture(gl.TEXTURE_2D, null);
221
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
222
+ return {
223
+ FRAMEBUFFER: FRAMEBUFFER,
224
+ OFFER_SCREEN_WIDTH: OFFER_SCREEN_WIDTH,
225
+ OFFER_SCREEN_HEIGHT: OFFER_SCREEN_HEIGHT
226
+ };
227
+ }
228
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/wind/models/utils.ts"],"names":["createProgram","gl","vshader","fshader","vertexShader","loadShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","program","attachShader","linkProgram","linked","getProgramParameter","LINK_STATUS","error","getProgramInfoLog","console","warn","deleteProgram","deleteShader","numAttributes","ACTIVE_ATTRIBUTES","i","attribute","getActiveAttrib","name","getAttribLocation","numUniforms","ACTIVE_UNIFORMS","i$1","uniform","getActiveUniform","getUniformLocation","type","source","shader","createShader","shaderSource","compileShader","compiled","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","createTexture","filter","data","width","height","texture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","texImage2D","RGBA","UNSIGNED_BYTE","createDataTexture","unit","activeTexture","TEXTURE0","createBuffer","buffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","bindAttriBuffer","attrName","vertices","count","attr","vertexAttribPointer","FLOAT","enableVertexAttribArray","bindAttriIndicesBuffer","indices","ELEMENT_ARRAY_BUFFER","bindUnifrom","unifromName","vec","setUnifrom","location","uniform1f","uniform2fv","uniform3fv","uniform4fv","uniform1i","uniformMatrix4fv","initFramebuffer","drawingBufferWidth","drawingBufferHeight","OFFER_SCREEN_WIDTH","OFFER_SCREEN_HEIGHT","FRAMEBUFFER","createFramebuffer","bindFramebuffer","depthbuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","framebufferRenderbuffer","DEPTH_ATTACHMENT","textureSize","NEAREST","framebufferTexture2D","COLOR_ATTACHMENT0"],"mappings":";;;;;;;;;;;;;;;;;AACO,SAASA,aAAT,CAAuBC,EAAvB,EAA2BC,OAA3B,EAAoCC,OAApC,EAA6C;AAElD,MAAMC,YAAY,GAAGC,UAAU,CAACJ,EAAD,EAAKA,EAAE,CAACK,aAAR,EAAuBJ,OAAvB,CAA/B;AACA,MAAMK,cAAc,GAAGF,UAAU,CAACJ,EAAD,EAAKA,EAAE,CAACO,eAAR,EAAyBL,OAAzB,CAAjC;;AACA,MAAI,CAACC,YAAD,IAAiB,CAACG,cAAtB,EAAsC;AACpC,WAAO,IAAP;AACD;;AAGD,MAAME,OAAO,GAAGR,EAAE,CAACD,aAAH,EAAhB;;AACA,MAAI,CAACS,OAAL,EAAc;AACZ,WAAO,IAAP;AACD;;AAGDR,EAAAA,EAAE,CAACS,YAAH,CAAgBD,OAAhB,EAAyBL,YAAzB;AACAH,EAAAA,EAAE,CAACS,YAAH,CAAgBD,OAAhB,EAAyBF,cAAzB;AAGAN,EAAAA,EAAE,CAACU,WAAH,CAAeF,OAAf;AAGA,MAAMG,MAAM,GAAGX,EAAE,CAACY,mBAAH,CAAuBJ,OAAvB,EAAgCR,EAAE,CAACa,WAAnC,CAAf;;AACA,MAAI,CAACF,MAAL,EAAa;AACX,QAAMG,KAAK,GAAGd,EAAE,CAACe,iBAAH,CAAqBP,OAArB,CAAd;AACAQ,IAAAA,OAAO,CAACC,IAAR,CAAa,6BAA6BH,KAA1C;AACAd,IAAAA,EAAE,CAACkB,aAAH,CAAiBV,OAAjB;AACAR,IAAAA,EAAE,CAACmB,YAAH,CAAgBb,cAAhB;AACAN,IAAAA,EAAE,CAACmB,YAAH,CAAgBhB,YAAhB;AACA,WAAO,IAAP;AACD;;AAED,MAAMiB,aAAa,GAAGpB,EAAE,CAACY,mBAAH,CAAuBJ,OAAvB,EAAgCR,EAAE,CAACqB,iBAAnC,CAAtB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,aAApB,EAAmCE,CAAC,EAApC,EAAwC;AACtC,QAAMC,SAAS,GAAGvB,EAAE,CAACwB,eAAH,CAAmBhB,OAAnB,EAA4Bc,CAA5B,CAAlB;AACAd,IAAAA,OAAO,CAACe,SAAS,CAACE,IAAX,CAAP,GAA0BzB,EAAE,CAAC0B,iBAAH,CAAqBlB,OAArB,EAA8Be,SAAS,CAACE,IAAxC,CAA1B;AACD;;AACD,MAAME,WAAW,GAAG3B,EAAE,CAACY,mBAAH,CAAuBJ,OAAvB,EAAgCR,EAAE,CAAC4B,eAAnC,CAApB;;AACA,OAAK,IAAIC,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGF,WAAxB,EAAqCE,GAAG,EAAxC,EAA4C;AAC1C,QAAMC,OAAO,GAAG9B,EAAE,CAAC+B,gBAAH,CAAoBvB,OAApB,EAA6BqB,GAA7B,CAAhB;AACArB,IAAAA,OAAO,CAACsB,OAAO,CAACL,IAAT,CAAP,GAAwBzB,EAAE,CAACgC,kBAAH,CAAsBxB,OAAtB,EAA+BsB,OAAO,CAACL,IAAvC,CAAxB;AACD;;AAEDjB,EAAAA,OAAO,CAACL,YAAR,GAAuBA,YAAvB;AACAK,EAAAA,OAAO,CAACF,cAAR,GAAyBA,cAAzB;AAEA,SAAOE,OAAP;AACD;;AAEM,SAASJ,UAAT,CAAoBJ,EAApB,EAA+CiC,IAA/C,EAAqDC,MAArD,EAA6D;AAElE,MAAMC,MAAM,GAAGnC,EAAE,CAACoC,YAAH,CAAgBH,IAAhB,CAAf;;AACA,MAAIE,MAAM,IAAI,IAAd,EAAoB;AAClBnB,IAAAA,OAAO,CAACC,IAAR,CAAa,yBAAb;AACA,WAAO,IAAP;AACD;;AAGDjB,EAAAA,EAAE,CAACqC,YAAH,CAAgBF,MAAhB,EAAwBD,MAAxB;AAGAlC,EAAAA,EAAE,CAACsC,aAAH,CAAiBH,MAAjB;AAGA,MAAMI,QAAQ,GAAGvC,EAAE,CAACwC,kBAAH,CAAsBL,MAAtB,EAA8BnC,EAAE,CAACyC,cAAjC,CAAjB;;AAEA,MAAI,CAACF,QAAL,EAAe;AACb,QAAMzB,KAAK,GAAGd,EAAE,CAAC0C,gBAAH,CAAoBP,MAApB,CAAd;AACAnB,IAAAA,OAAO,CAACC,IAAR,CAAa,+BAA+BH,KAA5C;AACAd,IAAAA,EAAE,CAACmB,YAAH,CAAgBgB,MAAhB;AACA,WAAO,IAAP;AACD;;AAED,SAAOA,MAAP;AACD;;AAEM,SAASQ,aAAT,CACL3C,EADK,EAEL4C,MAFK,EAGLC,IAHK,EAILC,KAJK,EAKLC,MALK,EAML;AACA,MAAMC,OAAO,GAAGhD,EAAE,CAAC2C,aAAH,EAAhB;AACA3C,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8BF,OAA9B;AACAhD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACoD,cAAnC,EAAmDpD,EAAE,CAACqD,aAAtD;AACArD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACsD,cAAnC,EAAmDtD,EAAE,CAACqD,aAAtD;AACArD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACuD,kBAAnC,EAAuDX,MAAvD;AACA5C,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACwD,kBAAnC,EAAuDZ,MAAvD;AACA5C,EAAAA,EAAE,CAACyD,UAAH,CACEzD,EAAE,CAACkD,UADL,EAEE,CAFF,EAGElD,EAAE,CAAC0D,IAHL,EAIEZ,KAJF,EAKEC,MALF,EAME,CANF,EAOE/C,EAAE,CAAC0D,IAPL,EAQE1D,EAAE,CAAC2D,aARL,EASEd,IATF;AAYA7C,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8B,IAA9B;AACA,SAAOF,OAAP;AACD;;AAEM,SAASY,iBAAT,CACL5D,EADK,EAEL4C,MAFK,EAGLC,IAHK,EAIL;AACA,MAAMG,OAAO,GAAGhD,EAAE,CAAC2C,aAAH,EAAhB;AACA3C,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8BF,OAA9B;AACAhD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACoD,cAAnC,EAAmDpD,EAAE,CAACqD,aAAtD;AACArD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACsD,cAAnC,EAAmDtD,EAAE,CAACqD,aAAtD;AACArD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACuD,kBAAnC,EAAuDX,MAAvD;AACA5C,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACwD,kBAAnC,EAAuDZ,MAAvD;AACA5C,EAAAA,EAAE,CAACyD,UAAH,CAAczD,EAAE,CAACkD,UAAjB,EAA6B,CAA7B,EAAgClD,EAAE,CAAC0D,IAAnC,EAAyC1D,EAAE,CAAC0D,IAA5C,EAAkD1D,EAAE,CAAC2D,aAArD,EAAoEd,IAApE;AACA7C,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8B,IAA9B;AACA,SAAOF,OAAP;AACD;;AAEM,SAASC,WAAT,CAAqBjD,EAArB,EAAyBgD,OAAzB,EAAkCa,IAAlC,EAAwC;AAC7C7D,EAAAA,EAAE,CAAC8D,aAAH,CAAiB9D,EAAE,CAAC+D,QAAH,GAAcF,IAA/B;AACA7D,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8BF,OAA9B;AACD;;AAEM,SAASgB,YAAT,CAAsBhE,EAAtB,EAA0B6C,IAA1B,EAAgC;AACrC,MAAMoB,MAAM,GAAGjE,EAAE,CAACgE,YAAH,EAAf;AACAhE,EAAAA,EAAE,CAACkE,UAAH,CAAclE,EAAE,CAACmE,YAAjB,EAA+BF,MAA/B;AACAjE,EAAAA,EAAE,CAACoE,UAAH,CAAcpE,EAAE,CAACmE,YAAjB,EAA+BtB,IAA/B,EAAqC7C,EAAE,CAACqE,WAAxC;AACA,SAAOJ,MAAP;AACD;;AAEM,SAASK,eAAT,CACLtE,EADK,EAELuE,QAFK,EAGLC,QAHK,EAILC,KAJK,EAKLjE,OALK,EAML;AACA,MAAMyD,MAAM,GAAGjE,EAAE,CAACgE,YAAH,EAAf;;AACA,MAAI,CAACC,MAAL,EAAa;AACXjD,IAAAA,OAAO,CAACC,IAAR,CAAa,6BAAb;AACD;;AACDjB,EAAAA,EAAE,CAACkE,UAAH,CAAclE,EAAE,CAACmE,YAAjB,EAA+BF,MAA/B;AACAjE,EAAAA,EAAE,CAACoE,UAAH,CAAcpE,EAAE,CAACmE,YAAjB,EAA+BK,QAA/B,EAAyCxE,EAAE,CAACqE,WAA5C;AAEA,MAAMK,IAAI,GAAG1E,EAAE,CAAC0B,iBAAH,CAAqBlB,OAArB,EAA8B+D,QAA9B,CAAb;AACAvE,EAAAA,EAAE,CAAC2E,mBAAH,CAAuBD,IAAvB,EAA6BD,KAA7B,EAAoCzE,EAAE,CAAC4E,KAAvC,EAA8C,KAA9C,EAAqD,CAArD,EAAwD,CAAxD;AACA5E,EAAAA,EAAE,CAAC6E,uBAAH,CAA2BH,IAA3B;AACA1E,EAAAA,EAAE,CAACkE,UAAH,CAAclE,EAAE,CAACmE,YAAjB,EAA+B,IAA/B;AACA,SAAO;AAAEF,IAAAA,MAAM,EAANA,MAAF;AAAUS,IAAAA,IAAI,EAAJA,IAAV;AAAgBD,IAAAA,KAAK,EAALA;AAAhB,GAAP;AACD;;AAEM,SAASK,sBAAT,CACL9E,EADK,EAEL+E,OAFK,EAGQ;AACb,MAAMd,MAAM,GAAGjE,EAAE,CAACgE,YAAH,EAAf;;AACA,MAAI,CAACC,MAAL,EAAa;AACXjD,IAAAA,OAAO,CAACC,IAAR,CAAa,6BAAb;AACD;;AACDjB,EAAAA,EAAE,CAACkE,UAAH,CAAclE,EAAE,CAACgF,oBAAjB,EAAuCf,MAAvC;AACAjE,EAAAA,EAAE,CAACoE,UAAH,CAAcpE,EAAE,CAACgF,oBAAjB,EAAuCD,OAAvC,EAAgD/E,EAAE,CAACqE,WAAnD;AACA,SAAOJ,MAAP;AACD;;AAEM,SAASgB,WAAT,CAAqBjF,EAArB,EAAyBkF,WAAzB,EAAsCrC,IAAtC,EAA4CrC,OAA5C,EAAqD2E,GAArD,EAA0D;AAC/D,MAAMrD,OAAO,GAAG9B,EAAE,CAACgC,kBAAH,CAAsBxB,OAAtB,EAA+B0E,WAA/B,CAAhB;;AACA,MAAIpD,OAAO,GAAG,CAAd,EAAiB;AACfd,IAAAA,OAAO,CAACC,IAAR,CAAa,sBAAb;AACD;;AACDmE,EAAAA,UAAU,CAACpF,EAAD,EAAK8B,OAAL,EAAce,IAAd,EAAoBsC,GAApB,CAAV;AACA,SAAOrD,OAAP;AACD;;AAEM,SAASsD,UAAT,CAAoBpF,EAApB,EAAwBqF,QAAxB,EAAkCxC,IAAlC,EAAwCsC,GAAxC,EAA6C;AAClD,UAAQA,GAAR;AACE,SAAK,OAAL;AACEnF,MAAAA,EAAE,CAACsF,SAAH,CAAaD,QAAb,EAAuBxC,IAAvB;AACA;;AACF,SAAK,MAAL;AACE7C,MAAAA,EAAE,CAACuF,UAAH,CAAcF,QAAd,EAAwBxC,IAAxB;AACA;;AACF,SAAK,MAAL;AACE7C,MAAAA,EAAE,CAACwF,UAAH,CAAcH,QAAd,EAAwBxC,IAAxB;AACA;;AACF,SAAK,MAAL;AACE7C,MAAAA,EAAE,CAACyF,UAAH,CAAcJ,QAAd,EAAwBxC,IAAxB;AACA;;AACF,SAAK,MAAL;AACE7C,MAAAA,EAAE,CAAC0F,SAAH,CAAaL,QAAb,EAAuBxC,IAAvB;AACA;;AACF,SAAK,WAAL;AACE;;AACF,SAAK,MAAL;AACE7C,MAAAA,EAAE,CAAC2F,gBAAH,CAAoBN,QAApB,EAA8B,KAA9B,EAAqCxC,IAArC;AACA;AApBJ;AAsBD;;AAEM,SAAS+C,eAAT,CAAyB5F,EAAzB,EAA6B;AAClC,MAAQ6F,kBAAR,GAAoD7F,EAApD,CAAQ6F,kBAAR;AAAA,MAA4BC,mBAA5B,GAAoD9F,EAApD,CAA4B8F,mBAA5B;AAEA,MAAMC,kBAAkB,GAAGF,kBAA3B;AACA,MAAMG,mBAAmB,GAAGF,mBAA5B;AAEA,MAAMG,WAAW,GAAGjG,EAAE,CAACkG,iBAAH,EAApB;AACAlG,EAAAA,EAAE,CAACmG,eAAH,CAAmBnG,EAAE,CAACiG,WAAtB,EAAmCA,WAAnC;AACA,MAAMG,WAAW,GAAGpG,EAAE,CAACqG,kBAAH,EAApB;AACArG,EAAAA,EAAE,CAACsG,gBAAH,CAAoBtG,EAAE,CAACuG,YAAvB,EAAqCH,WAArC;AACApG,EAAAA,EAAE,CAACwG,mBAAH,CACExG,EAAE,CAACuG,YADL,EAEEvG,EAAE,CAACyG,iBAFL,EAGEV,kBAHF,EAIEC,mBAJF;AAMAhG,EAAAA,EAAE,CAAC0G,uBAAH,CACE1G,EAAE,CAACiG,WADL,EAEEjG,EAAE,CAAC2G,gBAFL,EAGE3G,EAAE,CAACuG,YAHL,EAIEH,WAJF;AAOA,MAAMpD,OAAO,GAAGhD,EAAE,CAAC2C,aAAH,EAAhB;AACA,MAAMiE,WAAW,GAAG,IAApB;AACAX,EAAAA,WAAW,CAACjD,OAAZ,GAAsBA,OAAtB;AACAiD,EAAAA,WAAW,CAACnD,KAAZ,GAAoBiD,kBAApB;AACAE,EAAAA,WAAW,CAAClD,MAAZ,GAAqBiD,mBAArB;AAEAhG,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8BF,OAA9B;AACAhD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACwD,kBAAnC,EAAuDxD,EAAE,CAAC6G,OAA1D;AACA7G,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACuD,kBAAnC,EAAuDvD,EAAE,CAAC6G,OAA1D;AAEA7G,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACoD,cAAnC,EAAmDpD,EAAE,CAACqD,aAAtD;AACArD,EAAAA,EAAE,CAACmD,aAAH,CAAiBnD,EAAE,CAACkD,UAApB,EAAgClD,EAAE,CAACsD,cAAnC,EAAmDtD,EAAE,CAACqD,aAAtD;AAEArD,EAAAA,EAAE,CAACyD,UAAH,CACEzD,EAAE,CAACkD,UADL,EAEE,CAFF,EAGElD,EAAE,CAAC0D,IAHL,EAIEqC,kBAJF,EAKEC,mBALF,EAME,CANF,EAOEhG,EAAE,CAAC0D,IAPL,EAQE1D,EAAE,CAAC2D,aARL,EASE,IATF;AAWA3D,EAAAA,EAAE,CAAC8G,oBAAH,CACE9G,EAAE,CAACiG,WADL,EAEEjG,EAAE,CAAC+G,iBAFL,EAGE/G,EAAE,CAACkD,UAHL,EAIEF,OAJF,EAKE,CALF;AAOAhD,EAAAA,EAAE,CAACiD,WAAH,CAAejD,EAAE,CAACkD,UAAlB,EAA8B,IAA9B;AAEAlD,EAAAA,EAAE,CAACmG,eAAH,CAAmBnG,EAAE,CAACiG,WAAtB,EAAmC,IAAnC;AAEA,SAAO;AAAEA,IAAAA,WAAW,EAAXA,WAAF;AAAeF,IAAAA,kBAAkB,EAAlBA,kBAAf;AAAmCC,IAAAA,mBAAmB,EAAnBA;AAAnC,GAAP;AACD","sourcesContent":["// @ts-nocheck\nexport function createProgram(gl, vshader, fshader) {\n // Create shader object\n const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); // 创建顶点着色器对象\n const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); // 创建片元着色器对象\n if (!vertexShader || !fragmentShader) {\n return null;\n }\n\n // Create a program object\n const program = gl.createProgram(); // 创建程序对象\n if (!program) {\n return null;\n }\n\n // Attach the shader objects\n gl.attachShader(program, vertexShader); // 绑定着色器对象\n gl.attachShader(program, fragmentShader);\n\n // Link the program object\n gl.linkProgram(program); // 链接着色器对象\n\n // Check the result of linking\n const linked = gl.getProgramParameter(program, gl.LINK_STATUS); // 判断着色器对象是否链接成功\n if (!linked) {\n const error = gl.getProgramInfoLog(program);\n console.warn('Failed to link program: ' + error);\n gl.deleteProgram(program);\n gl.deleteShader(fragmentShader);\n gl.deleteShader(vertexShader);\n return null;\n }\n\n const numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < numAttributes; i++) {\n const attribute = gl.getActiveAttrib(program, i);\n program[attribute.name] = gl.getAttribLocation(program, attribute.name);\n }\n const numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i$1 = 0; i$1 < numUniforms; i$1++) {\n const uniform = gl.getActiveUniform(program, i$1);\n program[uniform.name] = gl.getUniformLocation(program, uniform.name);\n }\n\n program.vertexShader = vertexShader;\n program.fragmentShader = fragmentShader;\n\n return program;\n}\n\nexport function loadShader(gl: WebGLRenderingContext, type, source) {\n // Create shader object\n const shader = gl.createShader(type); // 生成着色器对象\n if (shader == null) {\n console.warn('unable to create shader');\n return null;\n }\n\n // Set the shader program\n gl.shaderSource(shader, source); // 载入着色器\n\n // Compile the shader\n gl.compileShader(shader); // 编译着色器代码\n\n // Check the result of compilation\n const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // 判断着色器对象是否生成成功\n // gl.SHADER_TYPE、gl.DELETE_STATUS、gl.COMPILE_STATUS\n if (!compiled) {\n const error = gl.getShaderInfoLog(shader);\n console.warn('Failed to compile shader: ' + error);\n gl.deleteShader(shader);\n return null;\n }\n\n return shader;\n}\n\nexport function createTexture(\n gl: WebGLRenderingContext,\n filter: any,\n data: any,\n width: number,\n height: number,\n) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data,\n );\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n return texture;\n}\n\nexport function createDataTexture(\n gl: WebGLRenderingContext,\n filter: any,\n data: any,\n) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, data);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return texture;\n}\n\nexport function bindTexture(gl, texture, unit) {\n gl.activeTexture(gl.TEXTURE0 + unit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n}\n\nexport function createBuffer(gl, data) {\n const buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);\n return buffer;\n}\n\nexport function bindAttriBuffer(\n gl: WebGLRenderingContext,\n attrName: string,\n vertices,\n count,\n program,\n) {\n const buffer = gl.createBuffer();\n if (!buffer) {\n console.warn('failed create vertex buffer');\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // 将缓冲区对象绑定到目标\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // 向缓冲区对象中写入数据\n\n const attr = gl.getAttribLocation(program, attrName);\n gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(attr);\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n return { buffer, attr, count };\n}\n\nexport function bindAttriIndicesBuffer(\n gl: WebGLRenderingContext,\n indices: Uint8Array,\n): WebGLBuffer {\n const buffer = gl.createBuffer();\n if (!buffer) {\n console.warn('failed create vertex buffer');\n }\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);\n return buffer;\n}\n\nexport function bindUnifrom(gl, unifromName, data, program, vec) {\n const uniform = gl.getUniformLocation(program, unifromName);\n if (uniform < 0) {\n console.warn('无法获取 uniform 变量的存储位置');\n }\n setUnifrom(gl, uniform, data, vec);\n return uniform;\n}\n\nexport function setUnifrom(gl, location, data, vec) {\n switch (vec) {\n case 'float':\n gl.uniform1f(location, data);\n break;\n case 'vec2':\n gl.uniform2fv(location, data);\n break;\n case 'vec3':\n gl.uniform3fv(location, data);\n break;\n case 'vec4':\n gl.uniform4fv(location, data);\n break;\n case 'bool':\n gl.uniform1i(location, data); // 1 - true 0 - false\n break;\n case 'sampler2d':\n break;\n case 'mat4':\n gl.uniformMatrix4fv(location, false, data);\n break;\n }\n}\n\nexport function initFramebuffer(gl) {\n const { drawingBufferWidth, drawingBufferHeight } = gl;\n\n const OFFER_SCREEN_WIDTH = drawingBufferWidth;\n const OFFER_SCREEN_HEIGHT = drawingBufferHeight;\n\n const FRAMEBUFFER = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, FRAMEBUFFER);\n const depthbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n OFFER_SCREEN_WIDTH,\n OFFER_SCREEN_HEIGHT,\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n depthbuffer,\n );\n\n const texture = gl.createTexture();\n const textureSize = 1024;\n FRAMEBUFFER.texture = texture;\n FRAMEBUFFER.width = OFFER_SCREEN_WIDTH;\n FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;\n\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n OFFER_SCREEN_WIDTH,\n OFFER_SCREEN_HEIGHT,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null,\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { FRAMEBUFFER, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT };\n}\n"],"file":"utils.js"}
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _l7Core = require("@antv/l7-core");
25
+
26
+ var _l7Utils = require("@antv/l7-utils");
27
+
28
+ var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
29
+
30
+ var _triangulation = require("../../core/triangulation");
31
+
32
+ var _windRender = require("./windRender");
33
+
34
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
35
+
36
+ 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; } }
37
+
38
+ var WindFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nvarying vec2 v_texCoord;\nvoid main() {\n vec4 color = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y));\n gl_FragColor = color;\n gl_FragColor.a *= u_opacity;\n}\n";
39
+ var WindVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
40
+ var defaultRampColors = {
41
+ 0.0: '#3288bd',
42
+ 0.1: '#66c2a5',
43
+ 0.2: '#abdda4',
44
+ 0.3: '#e6f598',
45
+ 0.4: '#fee08b',
46
+ 0.5: '#fdae61',
47
+ 0.6: '#f46d43',
48
+ 1.0: '#d53e4f'
49
+ };
50
+
51
+ var WindModel = function (_BaseModel) {
52
+ (0, _inherits2.default)(WindModel, _BaseModel);
53
+
54
+ var _super = _createSuper(WindModel);
55
+
56
+ function WindModel() {
57
+ var _this;
58
+
59
+ (0, _classCallCheck2.default)(this, WindModel);
60
+
61
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
62
+ args[_key] = arguments[_key];
63
+ }
64
+
65
+ _this = _super.call.apply(_super, [this].concat(args));
66
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "colorModel", void 0);
68
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "wind", void 0);
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "imageCoords", void 0);
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sizeScale", 0.5);
71
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "frequency", new _l7Utils.FrequencyController(7.2));
72
+ return _this;
73
+ }
74
+
75
+ (0, _createClass2.default)(WindModel, [{
76
+ key: "render",
77
+ value: function render() {
78
+ var _this2 = this;
79
+
80
+ this.frequency.run(function () {
81
+ _this2.drawWind();
82
+ });
83
+ this.drawColorMode();
84
+ }
85
+ }, {
86
+ key: "getUninforms",
87
+ value: function getUninforms() {
88
+ throw new Error('Method not implemented.');
89
+ }
90
+ }, {
91
+ key: "initModels",
92
+ value: function initModels() {
93
+ var _this3 = this;
94
+
95
+ var createTexture2D = this.rendererService.createTexture2D;
96
+ var source = this.layer.getSource();
97
+ this.texture = createTexture2D({
98
+ height: 0,
99
+ width: 0
100
+ });
101
+ var glContext = this.rendererService.getGLContext();
102
+ this.imageCoords = source.data.dataArray[0].coordinates;
103
+ source.data.images.then(function (imageData) {
104
+ var _ref = _this3.layer.getLayerConfig(),
105
+ _ref$uMin = _ref.uMin,
106
+ uMin = _ref$uMin === void 0 ? -21.32 : _ref$uMin,
107
+ _ref$uMax = _ref.uMax,
108
+ uMax = _ref$uMax === void 0 ? 26.8 : _ref$uMax,
109
+ _ref$vMin = _ref.vMin,
110
+ vMin = _ref$vMin === void 0 ? -21.57 : _ref$vMin,
111
+ _ref$vMax = _ref.vMax,
112
+ vMax = _ref$vMax === void 0 ? 21.42 : _ref$vMax,
113
+ _ref$fadeOpacity = _ref.fadeOpacity,
114
+ fadeOpacity = _ref$fadeOpacity === void 0 ? 0.996 : _ref$fadeOpacity,
115
+ _ref$speedFactor = _ref.speedFactor,
116
+ speedFactor = _ref$speedFactor === void 0 ? 0.25 : _ref$speedFactor,
117
+ _ref$dropRate = _ref.dropRate,
118
+ dropRate = _ref$dropRate === void 0 ? 0.003 : _ref$dropRate,
119
+ _ref$dropRateBump = _ref.dropRateBump,
120
+ dropRateBump = _ref$dropRateBump === void 0 ? 0.01 : _ref$dropRateBump,
121
+ _ref$rampColors = _ref.rampColors,
122
+ rampColors = _ref$rampColors === void 0 ? defaultRampColors : _ref$rampColors,
123
+ _ref$sizeScale = _ref.sizeScale,
124
+ sizeScale = _ref$sizeScale === void 0 ? 0.5 : _ref$sizeScale;
125
+
126
+ _this3.sizeScale = sizeScale;
127
+
128
+ var _this3$getWindSize = _this3.getWindSize(),
129
+ imageWidth = _this3$getWindSize.imageWidth,
130
+ imageHeight = _this3$getWindSize.imageHeight;
131
+
132
+ var options = {
133
+ glContext: glContext,
134
+ imageWidth: imageWidth,
135
+ imageHeight: imageHeight,
136
+ fadeOpacity: fadeOpacity,
137
+ speedFactor: speedFactor,
138
+ dropRate: dropRate,
139
+ dropRateBump: dropRateBump,
140
+ rampColors: rampColors
141
+ };
142
+ _this3.wind = new _windRender.Wind(options);
143
+
144
+ _this3.wind.setWind({
145
+ uMin: uMin,
146
+ uMax: uMax,
147
+ vMin: vMin,
148
+ vMax: vMax,
149
+ image: imageData[0]
150
+ });
151
+
152
+ _this3.texture = createTexture2D({
153
+ data: imageData[0],
154
+ width: imageData[0].width,
155
+ height: imageData[0].height
156
+ });
157
+
158
+ _this3.layerService.updateLayerRenderList();
159
+
160
+ _this3.layerService.renderLayers();
161
+ });
162
+ this.colorModel = this.layer.buildLayerModel({
163
+ moduleName: 'WindLayer',
164
+ vertexShader: WindVert,
165
+ fragmentShader: WindFrag,
166
+ triangulation: _triangulation.RasterImageTriangulation,
167
+ primitive: _l7Core.gl.TRIANGLES,
168
+ depth: {
169
+ enable: false
170
+ },
171
+ blend: this.getBlend()
172
+ });
173
+ return [this.colorModel];
174
+ }
175
+ }, {
176
+ key: "getWindSize",
177
+ value: function getWindSize() {
178
+ var p1 = this.mapService.lngLatToPixel(this.imageCoords[0]);
179
+ var p2 = this.mapService.lngLatToPixel(this.imageCoords[1]);
180
+ var imageWidth = Math.floor((p2.x - p1.x) * this.sizeScale);
181
+ var imageHeight = Math.floor((p1.y - p2.y) * this.sizeScale);
182
+ return {
183
+ imageWidth: imageWidth,
184
+ imageHeight: imageHeight
185
+ };
186
+ }
187
+ }, {
188
+ key: "buildModels",
189
+ value: function buildModels() {
190
+ return this.initModels();
191
+ }
192
+ }, {
193
+ key: "clearModels",
194
+ value: function clearModels() {
195
+ var _this$texture, _this$wind;
196
+
197
+ (_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
198
+ (_this$wind = this.wind) === null || _this$wind === void 0 ? void 0 : _this$wind.destroy();
199
+ }
200
+ }, {
201
+ key: "getConfigSchema",
202
+ value: function getConfigSchema() {
203
+ return {
204
+ properties: {
205
+ opacity: {
206
+ type: 'number',
207
+ minimum: 0,
208
+ maximum: 1
209
+ }
210
+ }
211
+ };
212
+ }
213
+ }, {
214
+ key: "registerBuiltinAttributes",
215
+ value: function registerBuiltinAttributes() {
216
+ this.styleAttributeService.registerStyleAttribute({
217
+ name: 'uv',
218
+ type: _l7Core.AttributeType.Attribute,
219
+ descriptor: {
220
+ name: 'a_Uv',
221
+ buffer: {
222
+ usage: _l7Core.gl.DYNAMIC_DRAW,
223
+ data: [],
224
+ type: _l7Core.gl.FLOAT
225
+ },
226
+ size: 2,
227
+ update: function update(feature, featureIdx, vertex, attributeIdx) {
228
+ return [vertex[3], vertex[4]];
229
+ }
230
+ }
231
+ });
232
+ }
233
+ }, {
234
+ key: "drawWind",
235
+ value: function drawWind() {
236
+ if (this.wind) {
237
+ var _ref2 = this.layer.getLayerConfig(),
238
+ _ref2$uMin = _ref2.uMin,
239
+ uMin = _ref2$uMin === void 0 ? -21.32 : _ref2$uMin,
240
+ _ref2$uMax = _ref2.uMax,
241
+ uMax = _ref2$uMax === void 0 ? 26.8 : _ref2$uMax,
242
+ _ref2$vMin = _ref2.vMin,
243
+ vMin = _ref2$vMin === void 0 ? -21.57 : _ref2$vMin,
244
+ _ref2$vMax = _ref2.vMax,
245
+ vMax = _ref2$vMax === void 0 ? 21.42 : _ref2$vMax,
246
+ _ref2$numParticles = _ref2.numParticles,
247
+ numParticles = _ref2$numParticles === void 0 ? 65535 : _ref2$numParticles,
248
+ _ref2$fadeOpacity = _ref2.fadeOpacity,
249
+ fadeOpacity = _ref2$fadeOpacity === void 0 ? 0.996 : _ref2$fadeOpacity,
250
+ _ref2$speedFactor = _ref2.speedFactor,
251
+ speedFactor = _ref2$speedFactor === void 0 ? 0.25 : _ref2$speedFactor,
252
+ _ref2$dropRate = _ref2.dropRate,
253
+ dropRate = _ref2$dropRate === void 0 ? 0.003 : _ref2$dropRate,
254
+ _ref2$dropRateBump = _ref2.dropRateBump,
255
+ dropRateBump = _ref2$dropRateBump === void 0 ? 0.01 : _ref2$dropRateBump,
256
+ _ref2$rampColors = _ref2.rampColors,
257
+ rampColors = _ref2$rampColors === void 0 ? defaultRampColors : _ref2$rampColors,
258
+ _ref2$sizeScale = _ref2.sizeScale,
259
+ sizeScale = _ref2$sizeScale === void 0 ? 0.5 : _ref2$sizeScale;
260
+
261
+ if (typeof sizeScale === 'number' && sizeScale !== this.sizeScale) {
262
+ this.sizeScale = sizeScale;
263
+
264
+ var _this$getWindSize = this.getWindSize(),
265
+ imageWidth = _this$getWindSize.imageWidth,
266
+ imageHeight = _this$getWindSize.imageHeight;
267
+
268
+ this.wind.reSize(imageWidth, imageHeight);
269
+ }
270
+
271
+ this.wind.updateWindDir(uMin, uMax, vMin, vMax);
272
+ this.wind.updateParticelNum(numParticles);
273
+ this.wind.updateColorRampTexture(rampColors);
274
+ this.wind.fadeOpacity = fadeOpacity;
275
+ this.wind.speedFactor = speedFactor;
276
+ this.wind.dropRate = dropRate;
277
+ this.wind.dropRateBump = dropRateBump;
278
+
279
+ var _this$wind$draw = this.wind.draw(),
280
+ d = _this$wind$draw.d,
281
+ w = _this$wind$draw.w,
282
+ h = _this$wind$draw.h;
283
+
284
+ this.rendererService.setBaseState();
285
+ this.texture.update({
286
+ data: d,
287
+ width: w,
288
+ height: h
289
+ });
290
+ }
291
+ }
292
+ }, {
293
+ key: "drawColorMode",
294
+ value: function drawColorMode() {
295
+ var _ref3 = this.layer.getLayerConfig(),
296
+ opacity = _ref3.opacity;
297
+
298
+ this.colorModel.draw({
299
+ uniforms: {
300
+ u_opacity: opacity || 1.0,
301
+ u_texture: this.texture
302
+ }
303
+ });
304
+ }
305
+ }]);
306
+ return WindModel;
307
+ }(_BaseModel2.default);
308
+
309
+ exports.default = WindModel;
310
+ //# sourceMappingURL=wind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/wind/models/wind.ts"],"names":["defaultRampColors","WindModel","FrequencyController","frequency","run","drawWind","drawColorMode","Error","createTexture2D","rendererService","source","layer","getSource","texture","height","width","glContext","getGLContext","imageCoords","data","dataArray","coordinates","images","then","imageData","getLayerConfig","uMin","uMax","vMin","vMax","fadeOpacity","speedFactor","dropRate","dropRateBump","rampColors","sizeScale","getWindSize","imageWidth","imageHeight","options","wind","Wind","setWind","image","layerService","updateLayerRenderList","renderLayers","colorModel","buildLayerModel","moduleName","vertexShader","WindVert","fragmentShader","WindFrag","triangulation","RasterImageTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","p1","mapService","lngLatToPixel","p2","Math","floor","x","y","initModels","destroy","properties","opacity","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","numParticles","reSize","updateWindDir","updateParticelNum","updateColorRampTexture","draw","d","w","h","setBaseState","uniforms","u_opacity","u_texture","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n Point,\n} from '@antv/l7-core';\nimport { FrequencyController, isMini } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport WindFrag from '../shaders/wind_frag.glsl';\nimport WindVert from '../shaders/wind_vert.glsl';\nimport { IWind, IWindProps, Wind } from './windRender';\n\ninterface IWindLayerStyleOptions {\n uMin?: number;\n uMax?: number;\n vMin?: number;\n vMax?: number;\n fadeOpacity?: number;\n speedFactor?: number;\n dropRate?: number;\n dropRateBump?: number;\n opacity?: number;\n numParticles?: number;\n rampColors?: {\n [key: number]: string;\n };\n sizeScale?: number;\n}\n\nconst defaultRampColors = {\n 0.0: '#3288bd',\n 0.1: '#66c2a5',\n 0.2: '#abdda4',\n 0.3: '#e6f598',\n 0.4: '#fee08b',\n 0.5: '#fdae61',\n 0.6: '#f46d43',\n 1.0: '#d53e4f',\n};\n\nexport default class WindModel extends BaseModel {\n protected texture: ITexture2D;\n\n private colorModel: IModel;\n private wind: IWind;\n private imageCoords: [Point, Point];\n private sizeScale: number = 0.5;\n // https://mapbox.github.io/webgl-wind/demo/\n // source: 'http://nomads.ncep.noaa.gov',\n\n private frequency = new FrequencyController(7.2);\n\n public render() {\n // TODO: 控制风场的平均更新频率\n this.frequency.run(() => {\n this.drawWind();\n });\n this.drawColorMode();\n }\n\n public getUninforms(): IModelUniform {\n throw new Error('Method not implemented.');\n }\n\n public initModels() {\n const { createTexture2D } = this.rendererService;\n\n const source = this.layer.getSource();\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n const glContext = this.rendererService.getGLContext();\n this.imageCoords = source.data.dataArray[0].coordinates as [Point, Point];\n\n source.data.images.then((imageData: HTMLImageElement[]) => {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n this.sizeScale = sizeScale;\n\n const { imageWidth, imageHeight } = this.getWindSize();\n\n const options: IWindProps = {\n glContext,\n imageWidth,\n imageHeight,\n fadeOpacity,\n speedFactor,\n dropRate,\n dropRateBump,\n rampColors,\n };\n\n this.wind = new Wind(options);\n\n // imageData[0] 风场图\n this.wind.setWind({\n uMin,\n uMax,\n vMin,\n vMax,\n image: imageData[0],\n });\n\n this.texture = createTexture2D({\n data: imageData[0],\n width: imageData[0].width,\n height: imageData[0].height,\n });\n\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n this.colorModel = this.layer.buildLayerModel({\n moduleName: 'WindLayer',\n vertexShader: WindVert,\n fragmentShader: WindFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n });\n\n return [this.colorModel];\n }\n\n public getWindSize() {\n const p1 = this.mapService.lngLatToPixel(this.imageCoords[0]);\n const p2 = this.mapService.lngLatToPixel(this.imageCoords[1]);\n\n const imageWidth = Math.floor((p2.x - p1.x) * this.sizeScale);\n const imageHeight = Math.floor((p1.y - p2.y) * this.sizeScale);\n return { imageWidth, imageHeight };\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n this.wind?.destroy();\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\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 private drawWind() {\n if (this.wind) {\n const {\n uMin = -21.32,\n uMax = 26.8,\n vMin = -21.57,\n vMax = 21.42,\n numParticles = 65535,\n fadeOpacity = 0.996,\n speedFactor = 0.25,\n dropRate = 0.003,\n dropRateBump = 0.01,\n rampColors = defaultRampColors,\n sizeScale = 0.5,\n } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n if (typeof sizeScale === 'number' && sizeScale !== this.sizeScale) {\n this.sizeScale = sizeScale;\n const { imageWidth, imageHeight } = this.getWindSize();\n this.wind.reSize(imageWidth, imageHeight);\n }\n\n this.wind.updateWindDir(uMin, uMax, vMin, vMax);\n\n this.wind.updateParticelNum(numParticles);\n\n this.wind.updateColorRampTexture(rampColors);\n\n this.wind.fadeOpacity = fadeOpacity;\n this.wind.speedFactor = speedFactor;\n this.wind.dropRate = dropRate;\n this.wind.dropRateBump = dropRateBump;\n\n const { d, w, h } = this.wind.draw();\n // TODO: 恢复 L7 渲染流程中 gl 状态\n this.rendererService.setBaseState();\n this.texture.update({\n data: d,\n width: w,\n height: h,\n });\n }\n }\n\n private drawColorMode() {\n const { opacity } = this.layer.getLayerConfig() as IWindLayerStyleOptions;\n this.colorModel.draw({\n uniforms: {\n u_opacity: opacity || 1.0,\n u_texture: this.texture,\n },\n });\n }\n}\n"],"file":"wind.js"}