three-stdlib 2.8.2 → 2.8.3

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 (70) hide show
  1. package/{BufferGeometryUtils-582025b8.js → BufferGeometryUtils-1a7a235c.js} +2 -1
  2. package/{BufferGeometryUtils-9eb5c2e7.js → BufferGeometryUtils-971dfde3.js} +0 -0
  3. package/animation/MMDAnimationHelper.d.ts +17 -17
  4. package/animation/MMDPhysics.d.ts +3 -3
  5. package/csm/CSM.d.ts +47 -22
  6. package/csm/CSMHelper.d.ts +20 -7
  7. package/effects/OutlineEffect.d.ts +4 -4
  8. package/effects/OutlineEffect.js +8 -2
  9. package/exporters/GLTFExporter.js +5 -10
  10. package/geometries/ConvexGeometry.d.ts +1 -1
  11. package/geometries/ParametricGeometries.d.ts +4 -2
  12. package/helpers/RectAreaLightHelper.d.ts +3 -3
  13. package/loaders/AssimpLoader.js +39 -10
  14. package/loaders/ColladaLoader.js +22 -5
  15. package/loaders/EXRLoader.js +5 -1
  16. package/loaders/FBXLoader.js +10 -2
  17. package/loaders/GLTFLoader.d.ts +44 -20
  18. package/loaders/LDrawLoader.d.ts +6 -0
  19. package/loaders/MTLLoader.d.ts +18 -18
  20. package/loaders/RGBMLoader.d.ts +10 -10
  21. package/loaders/RGBMLoader.js +253 -178
  22. package/loaders/SVGLoader.d.ts +5 -3
  23. package/loaders/SVGLoader.js +10 -5
  24. package/loaders/lwo/IFFParser.js +4 -1
  25. package/math/OBB.d.ts +1 -1
  26. package/misc/GPUComputationRenderer.d.ts +8 -6
  27. package/misc/MD2CharacterComplex.js +9 -2
  28. package/misc/Volume.d.ts +2 -0
  29. package/modifiers/EdgeSplitModifier.cjs.js +1 -1
  30. package/modifiers/SimplifyModifier.cjs.js +1 -1
  31. package/nodes/inputs/ColorNode.d.ts +2 -2
  32. package/nodes/inputs/TextureNode.d.ts +3 -2
  33. package/nodes/materials/StandardNodeMaterial.d.ts +1 -1
  34. package/nodes/materials/nodes/StandardNode.d.ts +1 -0
  35. package/nodes/utils/ColorSpaceNode.d.ts +1 -1
  36. package/nodes/utils/JoinNode.d.ts +1 -0
  37. package/objects/MarchingCubes.d.ts +12 -4
  38. package/objects/Reflector.d.ts +4 -2
  39. package/objects/ReflectorForSSRPass.d.ts +6 -6
  40. package/objects/Refractor.d.ts +4 -2
  41. package/objects/Water.d.ts +4 -3
  42. package/objects/Water2.d.ts +12 -3
  43. package/package.json +1 -1
  44. package/postprocessing/ClearPass.d.ts +3 -3
  45. package/postprocessing/SAOPass.d.ts +3 -2
  46. package/postprocessing/SSAARenderPass.d.ts +3 -3
  47. package/postprocessing/SSAOPass.d.ts +3 -2
  48. package/postprocessing/SSRPass.d.ts +14 -17
  49. package/postprocessing/TAARenderPass.d.ts +2 -2
  50. package/renderers/CSS2DRenderer.d.ts +5 -1
  51. package/renderers/CSS3DRenderer.d.ts +5 -1
  52. package/renderers/webgpu/WebGPUTextures.js +62 -41
  53. package/shaders/SSRShader.d.ts +1 -2
  54. package/utils/BufferGeometryUtils.cjs.js +1 -1
  55. package/utils/BufferGeometryUtils.js +2 -1
  56. package/utils/LDrawUtils.cjs.js +1 -1
  57. package/utils/LDrawUtils.d.ts +5 -0
  58. package/utils/LDrawUtils.js +1 -1
  59. package/utils/RoughnessMipmapper.js +5 -1
  60. package/utils/SceneUtils.d.ts +10 -12
  61. package/utils/ShadowMapViewer.js +4 -1
  62. package/webxr/XRHandModelFactory.d.ts +3 -3
  63. package/webxr/XRHandPrimitiveModel.d.ts +1 -1
  64. package/csm/Frustum.d.ts +0 -16
  65. package/csm/Shader.d.ts +0 -6
  66. package/loaders/XLoader.d.ts +0 -19
  67. package/shaders/FresnelShader.d.ts +0 -13
  68. package/shaders/ParallaxShader.d.ts +0 -20
  69. package/utils/RoughnessMipmapper.d.ts +0 -7
  70. package/webxr/XRHandOculusMeshModel.d.ts +0 -23
@@ -15,28 +15,28 @@ export interface MaterialCreatorOptions {
15
15
  * side: Which side to apply the material
16
16
  * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
17
17
  */
18
- side?: Side;
18
+ side?: Side | undefined;
19
19
  /*
20
20
  * wrap: What type of wrapping to apply for textures
21
21
  * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
22
22
  */
23
- wrap?: Wrapping;
23
+ wrap?: Wrapping | undefined;
24
24
  /*
25
25
  * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
26
26
  * Default: false, assumed to be already normalized
27
27
  */
28
- normalizeRGB?: boolean;
28
+ normalizeRGB?: boolean | undefined;
29
29
  /*
30
30
  * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
31
31
  * Default: false
32
32
  */
33
- ignoreZeroRGBs?: boolean;
33
+ ignoreZeroRGBs?: boolean | undefined;
34
34
  /*
35
35
  * invertTrProperty: Use values 1 of Tr field for fully opaque. This option is useful for obj
36
36
  * exported from 3ds MAX, vcglib or meshlab.
37
37
  * Default: false
38
38
  */
39
- invertTrProperty?: boolean;
39
+ invertTrProperty?: boolean | undefined;
40
40
  }
41
41
 
42
42
  export class MTLLoader extends Loader {
@@ -56,19 +56,19 @@ export class MTLLoader extends Loader {
56
56
  }
57
57
 
58
58
  export interface MaterialInfo {
59
- ks?: number[];
60
- kd?: number[];
61
- ke?: number[];
62
- map_kd?: string;
63
- map_ks?: string;
64
- map_ke?: string;
65
- norm?: string;
66
- map_bump?: string;
67
- bump?: string;
68
- map_d?: string;
69
- ns?: number;
70
- d?: number;
71
- tr?: number;
59
+ ks?: number[] | undefined;
60
+ kd?: number[] | undefined;
61
+ ke?: number[] | undefined;
62
+ map_kd?: string | undefined;
63
+ map_ks?: string | undefined;
64
+ map_ke?: string | undefined;
65
+ norm?: string | undefined;
66
+ map_bump?: string | undefined;
67
+ bump?: string | undefined;
68
+ map_d?: string | undefined;
69
+ ns?: number | undefined;
70
+ d?: number | undefined;
71
+ tr?: number | undefined;
72
72
  }
73
73
 
74
74
  export interface TexParams {
@@ -1,24 +1,20 @@
1
- import {
2
- CubeTexture,
3
- LoadingManager,
4
- DataTextureLoader,
5
- PixelFormat,
6
- TextureDataType,
7
- TextureEncoding,
8
- } from 'three';
1
+ import { CubeTexture, LoadingManager, DataTextureLoader, PixelFormat, TextureDataType } from 'three';
9
2
 
10
3
  export interface RGBM {
11
4
  width: number;
12
5
  height: number;
13
- data: Uint8Array;
6
+ data: Uint16Array | Float32Array;
14
7
  header: string;
15
8
  format: PixelFormat;
16
9
  type: TextureDataType;
17
10
  flipY: boolean;
18
- encoding: TextureEncoding;
19
11
  }
20
12
 
21
13
  export class RGBMLoader extends DataTextureLoader {
14
+ type: TextureDataType;
15
+
16
+ maxRange: number;
17
+
22
18
  constructor(manager?: LoadingManager);
23
19
 
24
20
  loadCubemap(
@@ -29,4 +25,8 @@ export class RGBMLoader extends DataTextureLoader {
29
25
  ): CubeTexture;
30
26
 
31
27
  parse(buffer: ArrayBuffer): RGBM;
28
+
29
+ setDataType(dataType: TextureDataType): this;
30
+
31
+ setMaxRange(value: number): this;
32
32
  }
@@ -108,7 +108,11 @@ UPNG.toRGBA8 = function (out) {
108
108
  if (frm.blend == 0) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 0);else if (frm.blend == 1) UPNG._copyTile(fdata, fw, fh, img, w, h, fx, fy, 1);
109
109
  frms.push(img.buffer.slice(0));
110
110
 
111
- if (frm.dispose == 0) ; else if (frm.dispose == 1) UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0);else if (frm.dispose == 2) for (var j = 0; j < len; j++) img[j] = prev[j];
111
+ if (frm.dispose == 0) ; else if (frm.dispose == 1) {
112
+ UPNG._copyTile(empty, fw, fh, img, w, h, fx, fy, 0);
113
+ } else if (frm.dispose == 2) {
114
+ for (var j = 0; j < len; j++) img[j] = prev[j];
115
+ }
112
116
  }
113
117
 
114
118
  return frms;
@@ -129,43 +133,60 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
129
133
  if (ctype == 6) {
130
134
  // RGB + alpha
131
135
  var qarea = area << 2;
132
- if (depth == 8) for (var i = 0; i < qarea; i += 4) {
133
- bf[i] = data[i];
134
- bf[i + 1] = data[i + 1];
135
- bf[i + 2] = data[i + 2];
136
- bf[i + 3] = data[i + 3];
136
+
137
+ if (depth == 8) {
138
+ for (var i = 0; i < qarea; i += 4) {
139
+ bf[i] = data[i];
140
+ bf[i + 1] = data[i + 1];
141
+ bf[i + 2] = data[i + 2];
142
+ bf[i + 3] = data[i + 3];
143
+ }
137
144
  }
138
- if (depth == 16) for (var i = 0; i < qarea; i++) {
139
- bf[i] = data[i << 1];
145
+
146
+ if (depth == 16) {
147
+ for (var i = 0; i < qarea; i++) {
148
+ bf[i] = data[i << 1];
149
+ }
140
150
  }
141
151
  } else if (ctype == 2) {
142
152
  // RGB
143
153
  var ts = out.tabs['tRNS'];
144
154
 
145
155
  if (ts == null) {
146
- if (depth == 8) for (var i = 0; i < area; i++) {
147
- var ti = i * 3;
148
- bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
156
+ if (depth == 8) {
157
+ for (var i = 0; i < area; i++) {
158
+ var ti = i * 3;
159
+ bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
160
+ }
149
161
  }
150
- if (depth == 16) for (var i = 0; i < area; i++) {
151
- var ti = i * 6;
152
- bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
162
+
163
+ if (depth == 16) {
164
+ for (var i = 0; i < area; i++) {
165
+ var ti = i * 6;
166
+ bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
167
+ }
153
168
  }
154
169
  } else {
155
170
  var tr = ts[0],
156
171
  tg = ts[1],
157
172
  tb = ts[2];
158
- if (depth == 8) for (var i = 0; i < area; i++) {
159
- var qi = i << 2,
160
- ti = i * 3;
161
- bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
162
- if (data[ti] == tr && data[ti + 1] == tg && data[ti + 2] == tb) bf[qi + 3] = 0;
173
+
174
+ if (depth == 8) {
175
+ for (var i = 0; i < area; i++) {
176
+ var qi = i << 2,
177
+ ti = i * 3;
178
+ bf32[i] = 255 << 24 | data[ti + 2] << 16 | data[ti + 1] << 8 | data[ti];
179
+ if (data[ti] == tr && data[ti + 1] == tg && data[ti + 2] == tb) bf[qi + 3] = 0;
180
+ }
163
181
  }
164
- if (depth == 16) for (var i = 0; i < area; i++) {
165
- var qi = i << 2,
166
- ti = i * 6;
167
- bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
168
- if (rs(data, ti) == tr && rs(data, ti + 2) == tg && rs(data, ti + 4) == tb) bf[qi + 3] = 0;
182
+
183
+ if (depth == 16) {
184
+ for (var i = 0; i < area; i++) {
185
+ var qi = i << 2,
186
+ ti = i * 6;
187
+ bf32[i] = 255 << 24 | data[ti + 4] << 16 | data[ti + 2] << 8 | data[ti];
188
+ if (rs(data, ti) == tr && rs(data, ti + 2) == tg && rs(data, ti + 4) == tb) bf[qi + 3] = 0;
189
+ }
169
190
  }
170
191
  }
171
192
  } else if (ctype == 3) {
@@ -174,41 +195,61 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
174
195
  ap = out.tabs['tRNS'],
175
196
  tl = ap ? ap.length : 0; //console.log(p, ap);
176
197
 
177
- if (depth == 1) for (var y = 0; y < h; y++) {
178
- var s0 = y * bpl,
179
- t0 = y * w;
198
+ if (depth == 1) {
199
+ for (var y = 0; y < h; y++) {
200
+ var s0 = y * bpl,
201
+ t0 = y * w;
202
+
203
+ for (var i = 0; i < w; i++) {
204
+ var qi = t0 + i << 2,
205
+ j = data[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1,
206
+ cj = 3 * j;
207
+ bf[qi] = p[cj];
208
+ bf[qi + 1] = p[cj + 1];
209
+ bf[qi + 2] = p[cj + 2];
210
+ bf[qi + 3] = j < tl ? ap[j] : 255;
211
+ }
212
+ }
213
+ }
180
214
 
181
- for (var i = 0; i < w; i++) {
182
- var qi = t0 + i << 2,
183
- j = data[s0 + (i >> 3)] >> 7 - ((i & 7) << 0) & 1,
184
- cj = 3 * j;
185
- bf[qi] = p[cj];
186
- bf[qi + 1] = p[cj + 1];
187
- bf[qi + 2] = p[cj + 2];
188
- bf[qi + 3] = j < tl ? ap[j] : 255;
215
+ if (depth == 2) {
216
+ for (var y = 0; y < h; y++) {
217
+ var s0 = y * bpl,
218
+ t0 = y * w;
219
+
220
+ for (var i = 0; i < w; i++) {
221
+ var qi = t0 + i << 2,
222
+ j = data[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3,
223
+ cj = 3 * j;
224
+ bf[qi] = p[cj];
225
+ bf[qi + 1] = p[cj + 1];
226
+ bf[qi + 2] = p[cj + 2];
227
+ bf[qi + 3] = j < tl ? ap[j] : 255;
228
+ }
189
229
  }
190
230
  }
191
- if (depth == 2) for (var y = 0; y < h; y++) {
192
- var s0 = y * bpl,
193
- t0 = y * w;
194
231
 
195
- for (var i = 0; i < w; i++) {
196
- var qi = t0 + i << 2,
197
- j = data[s0 + (i >> 2)] >> 6 - ((i & 3) << 1) & 3,
198
- cj = 3 * j;
199
- bf[qi] = p[cj];
200
- bf[qi + 1] = p[cj + 1];
201
- bf[qi + 2] = p[cj + 2];
202
- bf[qi + 3] = j < tl ? ap[j] : 255;
232
+ if (depth == 4) {
233
+ for (var y = 0; y < h; y++) {
234
+ var s0 = y * bpl,
235
+ t0 = y * w;
236
+
237
+ for (var i = 0; i < w; i++) {
238
+ var qi = t0 + i << 2,
239
+ j = data[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15,
240
+ cj = 3 * j;
241
+ bf[qi] = p[cj];
242
+ bf[qi + 1] = p[cj + 1];
243
+ bf[qi + 2] = p[cj + 2];
244
+ bf[qi + 3] = j < tl ? ap[j] : 255;
245
+ }
203
246
  }
204
247
  }
205
- if (depth == 4) for (var y = 0; y < h; y++) {
206
- var s0 = y * bpl,
207
- t0 = y * w;
208
248
 
209
- for (var i = 0; i < w; i++) {
210
- var qi = t0 + i << 2,
211
- j = data[s0 + (i >> 1)] >> 4 - ((i & 1) << 2) & 15,
249
+ if (depth == 8) {
250
+ for (var i = 0; i < area; i++) {
251
+ var qi = i << 2,
252
+ j = data[i],
212
253
  cj = 3 * j;
213
254
  bf[qi] = p[cj];
214
255
  bf[qi + 1] = p[cj + 1];
@@ -216,34 +257,30 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
216
257
  bf[qi + 3] = j < tl ? ap[j] : 255;
217
258
  }
218
259
  }
219
- if (depth == 8) for (var i = 0; i < area; i++) {
220
- var qi = i << 2,
221
- j = data[i],
222
- cj = 3 * j;
223
- bf[qi] = p[cj];
224
- bf[qi + 1] = p[cj + 1];
225
- bf[qi + 2] = p[cj + 2];
226
- bf[qi + 3] = j < tl ? ap[j] : 255;
227
- }
228
260
  } else if (ctype == 4) {
229
261
  // gray + alpha
230
- if (depth == 8) for (var i = 0; i < area; i++) {
231
- var qi = i << 2,
232
- di = i << 1,
233
- gr = data[di];
234
- bf[qi] = gr;
235
- bf[qi + 1] = gr;
236
- bf[qi + 2] = gr;
237
- bf[qi + 3] = data[di + 1];
262
+ if (depth == 8) {
263
+ for (var i = 0; i < area; i++) {
264
+ var qi = i << 2,
265
+ di = i << 1,
266
+ gr = data[di];
267
+ bf[qi] = gr;
268
+ bf[qi + 1] = gr;
269
+ bf[qi + 2] = gr;
270
+ bf[qi + 3] = data[di + 1];
271
+ }
238
272
  }
239
- if (depth == 16) for (var i = 0; i < area; i++) {
240
- var qi = i << 2,
241
- di = i << 2,
242
- gr = data[di];
243
- bf[qi] = gr;
244
- bf[qi + 1] = gr;
245
- bf[qi + 2] = gr;
246
- bf[qi + 3] = data[di + 2];
273
+
274
+ if (depth == 16) {
275
+ for (var i = 0; i < area; i++) {
276
+ var qi = i << 2,
277
+ di = i << 2,
278
+ gr = data[di];
279
+ bf[qi] = gr;
280
+ bf[qi + 1] = gr;
281
+ bf[qi + 2] = gr;
282
+ bf[qi + 3] = data[di + 2];
283
+ }
247
284
  }
248
285
  } else if (ctype == 0) {
249
286
  // gray
@@ -252,26 +289,37 @@ UPNG.toRGBA8.decodeImage = function (data, w, h, out) {
252
289
  for (var y = 0; y < h; y++) {
253
290
  var off = y * bpl,
254
291
  to = y * w;
255
- if (depth == 1) for (var x = 0; x < w; x++) {
256
- var gr = 255 * (data[off + (x >>> 3)] >>> 7 - (x & 7) & 1),
257
- al = gr == tr * 255 ? 0 : 255;
258
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
259
- } else if (depth == 2) for (var x = 0; x < w; x++) {
260
- var gr = 85 * (data[off + (x >>> 2)] >>> 6 - ((x & 3) << 1) & 3),
261
- al = gr == tr * 85 ? 0 : 255;
262
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
263
- } else if (depth == 4) for (var x = 0; x < w; x++) {
264
- var gr = 17 * (data[off + (x >>> 1)] >>> 4 - ((x & 1) << 2) & 15),
265
- al = gr == tr * 17 ? 0 : 255;
266
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
267
- } else if (depth == 8) for (var x = 0; x < w; x++) {
268
- var gr = data[off + x],
269
- al = gr == tr ? 0 : 255;
270
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
271
- } else if (depth == 16) for (var x = 0; x < w; x++) {
272
- var gr = data[off + (x << 1)],
273
- al = rs(data, off + (x << 1)) == tr ? 0 : 255;
274
- bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
292
+
293
+ if (depth == 1) {
294
+ for (var x = 0; x < w; x++) {
295
+ var gr = 255 * (data[off + (x >>> 3)] >>> 7 - (x & 7) & 1),
296
+ al = gr == tr * 255 ? 0 : 255;
297
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
298
+ }
299
+ } else if (depth == 2) {
300
+ for (var x = 0; x < w; x++) {
301
+ var gr = 85 * (data[off + (x >>> 2)] >>> 6 - ((x & 3) << 1) & 3),
302
+ al = gr == tr * 85 ? 0 : 255;
303
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
304
+ }
305
+ } else if (depth == 4) {
306
+ for (var x = 0; x < w; x++) {
307
+ var gr = 17 * (data[off + (x >>> 1)] >>> 4 - ((x & 1) << 2) & 15),
308
+ al = gr == tr * 17 ? 0 : 255;
309
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
310
+ }
311
+ } else if (depth == 8) {
312
+ for (var x = 0; x < w; x++) {
313
+ var gr = data[off + x],
314
+ al = gr == tr ? 0 : 255;
315
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
316
+ }
317
+ } else if (depth == 16) {
318
+ for (var x = 0; x < w; x++) {
319
+ var gr = data[off + (x << 1)],
320
+ al = rs(data, off + (x << 1)) == tr ? 0 : 255;
321
+ bf32[to + x] = al << 24 | gr << 16 | gr << 8 | gr;
322
+ }
275
323
  }
276
324
  }
277
325
  } //console.log(Date.now()-time);
@@ -359,11 +407,15 @@ UPNG.decode = function (buff) {
359
407
  var keyw = bin.readASCII(data, offset, nz - offset);
360
408
  var text,
361
409
  tl = offset + len - nz - 1;
362
- if (type == 'tEXt') text = bin.readASCII(data, nz + 1, tl);else {
410
+
411
+ if (type == 'tEXt') {
412
+ text = bin.readASCII(data, nz + 1, tl);
413
+ } else {
363
414
  var bfr = UPNG.decode._inflate(data.slice(nz + 2, nz + 2 + tl));
364
415
 
365
416
  text = bin.readUTF8(bfr, 0, bfr.length);
366
417
  }
418
+
367
419
  out.tabs[type][keyw] = text;
368
420
  } else if (type == 'iTXt') {
369
421
  if (out.tabs[type] == null) out.tabs[type] = {};
@@ -382,11 +434,15 @@ UPNG.decode = function (buff) {
382
434
  off = nz + 1;
383
435
  var text,
384
436
  tl = len - (off - offset);
385
- if (cflag == 0) text = bin.readUTF8(data, off, tl);else {
437
+
438
+ if (cflag == 0) {
439
+ text = bin.readUTF8(data, off, tl);
440
+ } else {
386
441
  var bfr = UPNG.decode._inflate(data.slice(off, off + tl));
387
442
 
388
443
  text = bin.readUTF8(bfr, 0, bfr.length);
389
444
  }
445
+
390
446
  out.tabs[type][keyw] = text;
391
447
  } else if (type == 'PLTE') {
392
448
  out.tabs[type] = bin.readBytes(data, offset, len);
@@ -397,8 +453,18 @@ UPNG.decode = function (buff) {
397
453
  for (var i = 0; i < pl; i++) out.tabs[type].push(rUs(data, offset + i * 2));
398
454
  } else if (type == 'tRNS') {
399
455
  if (out.ctype == 3) out.tabs[type] = bin.readBytes(data, offset, len);else if (out.ctype == 0) out.tabs[type] = rUs(data, offset);else if (out.ctype == 2) out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)]; //else console.log("tRNS for unsupported color type",out.ctype, len);
400
- } else if (type == 'gAMA') out.tabs[type] = bin.readUint(data, offset) / 100000;else if (type == 'sRGB') out.tabs[type] = data[offset];else if (type == 'bKGD') {
401
- if (out.ctype == 0 || out.ctype == 4) out.tabs[type] = [rUs(data, offset)];else if (out.ctype == 2 || out.ctype == 6) out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)];else if (out.ctype == 3) out.tabs[type] = data[offset];
456
+ } else if (type == 'gAMA') {
457
+ out.tabs[type] = bin.readUint(data, offset) / 100000;
458
+ } else if (type == 'sRGB') {
459
+ out.tabs[type] = data[offset];
460
+ } else if (type == 'bKGD') {
461
+ if (out.ctype == 0 || out.ctype == 4) {
462
+ out.tabs[type] = [rUs(data, offset)];
463
+ } else if (out.ctype == 2 || out.ctype == 6) {
464
+ out.tabs[type] = [rUs(data, offset), rUs(data, offset + 2), rUs(data, offset + 4)];
465
+ } else if (out.ctype == 3) {
466
+ out.tabs[type] = data[offset];
467
+ }
402
468
  } else if (type == 'IEND') {
403
469
  break;
404
470
  } //else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
@@ -673,18 +739,20 @@ UPNG.inflateRaw = function () {
673
739
  n = H.H.m,
674
740
  A = n.r;
675
741
 
676
- for (var l = 0; l < V; l += 2) if (N[l + 1] != 0) {
677
- var M = l >> 1,
678
- I = N[l + 1],
679
- e = M << 4 | I,
680
- b = W - I,
681
- Z = N[l] << b,
682
- m = Z + (1 << b);
683
-
684
- while (Z != m) {
685
- var J = A[Z] >>> 15 - W;
686
- R[J] = e;
687
- Z++;
742
+ for (var l = 0; l < V; l += 2) {
743
+ if (N[l + 1] != 0) {
744
+ var M = l >> 1,
745
+ I = N[l + 1],
746
+ e = M << 4 | I,
747
+ b = W - I,
748
+ Z = N[l] << b,
749
+ m = Z + (1 << b);
750
+
751
+ while (Z != m) {
752
+ var J = A[Z] >>> 15 - W;
753
+ R[J] = e;
754
+ Z++;
755
+ }
688
756
  }
689
757
  }
690
758
  };
@@ -915,7 +983,10 @@ UPNG.decode._filterZero = function (data, out, off, w, h) {
915
983
  di = i + y + 1;
916
984
  type = data[di - 1];
917
985
  x = 0;
918
- if (type == 0) for (; x < bpl; x++) data[i + x] = data[di + x];else if (type == 1) {
986
+
987
+ if (type == 0) {
988
+ for (; x < bpl; x++) data[i + x] = data[di + x];
989
+ } else if (type == 1) {
919
990
  for (; x < bpp; x++) data[i + x] = data[di + x];
920
991
 
921
992
  for (; x < bpl; x++) data[i + x] = data[di + x] + data[i + x - bpp];
@@ -928,7 +999,9 @@ UPNG.decode._filterZero = function (data, out, off, w, h) {
928
999
  } else {
929
1000
  for (; x < bpp; x++) data[i + x] = data[di + x] + paeth(0, data[i + x - bpl], 0);
930
1001
 
931
- for (; x < bpl; x++) data[i + x] = data[di + x] + paeth(data[i + x - bpp], data[i + x - bpl], data[i + x - bpp - bpl]);
1002
+ for (; x < bpl; x++) {
1003
+ data[i + x] = data[di + x] + paeth(data[i + x - bpp], data[i + x - bpl], data[i + x - bpp - bpl]);
1004
+ }
932
1005
  }
933
1006
  }
934
1007
 
@@ -1026,71 +1099,73 @@ UPNG._copyTile = function (sb, sw, sh, tb, tw, th, xoff, yoff, mode) {
1026
1099
  var si = 0,
1027
1100
  ti = 0;
1028
1101
 
1029
- for (var y = 0; y < h; y++) for (var x = 0; x < w; x++) {
1030
- if (xoff >= 0 && yoff >= 0) {
1031
- si = y * sw + x << 2;
1032
- ti = (yoff + y) * tw + xoff + x << 2;
1033
- } else {
1034
- si = (-yoff + y) * sw - xoff + x << 2;
1035
- ti = y * tw + x << 2;
1036
- }
1037
-
1038
- if (mode == 0) {
1039
- tb[ti] = sb[si];
1040
- tb[ti + 1] = sb[si + 1];
1041
- tb[ti + 2] = sb[si + 2];
1042
- tb[ti + 3] = sb[si + 3];
1043
- } else if (mode == 1) {
1044
- var fa = sb[si + 3] * (1 / 255),
1045
- fr = sb[si] * fa,
1046
- fg = sb[si + 1] * fa,
1047
- fb = sb[si + 2] * fa;
1048
- var ba = tb[ti + 3] * (1 / 255),
1049
- br = tb[ti] * ba,
1050
- bg = tb[ti + 1] * ba,
1051
- bb = tb[ti + 2] * ba;
1052
- var ifa = 1 - fa,
1053
- oa = fa + ba * ifa,
1054
- ioa = oa == 0 ? 0 : 1 / oa;
1055
- tb[ti + 3] = 255 * oa;
1056
- tb[ti + 0] = (fr + br * ifa) * ioa;
1057
- tb[ti + 1] = (fg + bg * ifa) * ioa;
1058
- tb[ti + 2] = (fb + bb * ifa) * ioa;
1059
- } else if (mode == 2) {
1060
- // copy only differences, otherwise zero
1061
- var fa = sb[si + 3],
1062
- fr = sb[si],
1063
- fg = sb[si + 1],
1064
- fb = sb[si + 2];
1065
- var ba = tb[ti + 3],
1066
- br = tb[ti],
1067
- bg = tb[ti + 1],
1068
- bb = tb[ti + 2];
1069
-
1070
- if (fa == ba && fr == br && fg == bg && fb == bb) {
1071
- tb[ti] = 0;
1072
- tb[ti + 1] = 0;
1073
- tb[ti + 2] = 0;
1074
- tb[ti + 3] = 0;
1102
+ for (var y = 0; y < h; y++) {
1103
+ for (var x = 0; x < w; x++) {
1104
+ if (xoff >= 0 && yoff >= 0) {
1105
+ si = y * sw + x << 2;
1106
+ ti = (yoff + y) * tw + xoff + x << 2;
1075
1107
  } else {
1076
- tb[ti] = fr;
1077
- tb[ti + 1] = fg;
1078
- tb[ti + 2] = fb;
1079
- tb[ti + 3] = fa;
1108
+ si = (-yoff + y) * sw - xoff + x << 2;
1109
+ ti = y * tw + x << 2;
1110
+ }
1111
+
1112
+ if (mode == 0) {
1113
+ tb[ti] = sb[si];
1114
+ tb[ti + 1] = sb[si + 1];
1115
+ tb[ti + 2] = sb[si + 2];
1116
+ tb[ti + 3] = sb[si + 3];
1117
+ } else if (mode == 1) {
1118
+ var fa = sb[si + 3] * (1 / 255),
1119
+ fr = sb[si] * fa,
1120
+ fg = sb[si + 1] * fa,
1121
+ fb = sb[si + 2] * fa;
1122
+ var ba = tb[ti + 3] * (1 / 255),
1123
+ br = tb[ti] * ba,
1124
+ bg = tb[ti + 1] * ba,
1125
+ bb = tb[ti + 2] * ba;
1126
+ var ifa = 1 - fa,
1127
+ oa = fa + ba * ifa,
1128
+ ioa = oa == 0 ? 0 : 1 / oa;
1129
+ tb[ti + 3] = 255 * oa;
1130
+ tb[ti + 0] = (fr + br * ifa) * ioa;
1131
+ tb[ti + 1] = (fg + bg * ifa) * ioa;
1132
+ tb[ti + 2] = (fb + bb * ifa) * ioa;
1133
+ } else if (mode == 2) {
1134
+ // copy only differences, otherwise zero
1135
+ var fa = sb[si + 3],
1136
+ fr = sb[si],
1137
+ fg = sb[si + 1],
1138
+ fb = sb[si + 2];
1139
+ var ba = tb[ti + 3],
1140
+ br = tb[ti],
1141
+ bg = tb[ti + 1],
1142
+ bb = tb[ti + 2];
1143
+
1144
+ if (fa == ba && fr == br && fg == bg && fb == bb) {
1145
+ tb[ti] = 0;
1146
+ tb[ti + 1] = 0;
1147
+ tb[ti + 2] = 0;
1148
+ tb[ti + 3] = 0;
1149
+ } else {
1150
+ tb[ti] = fr;
1151
+ tb[ti + 1] = fg;
1152
+ tb[ti + 2] = fb;
1153
+ tb[ti + 3] = fa;
1154
+ }
1155
+ } else if (mode == 3) {
1156
+ // check if can be blended
1157
+ var fa = sb[si + 3],
1158
+ fr = sb[si],
1159
+ fg = sb[si + 1],
1160
+ fb = sb[si + 2];
1161
+ var ba = tb[ti + 3],
1162
+ br = tb[ti],
1163
+ bg = tb[ti + 1],
1164
+ bb = tb[ti + 2];
1165
+ if (fa == ba && fr == br && fg == bg && fb == bb) continue; //if(fa!=255 && ba!=0) return false;
1166
+
1167
+ if (fa < 220 && ba > 20) return false;
1080
1168
  }
1081
- } else if (mode == 3) {
1082
- // check if can be blended
1083
- var fa = sb[si + 3],
1084
- fr = sb[si],
1085
- fg = sb[si + 1],
1086
- fb = sb[si + 2];
1087
- var ba = tb[ti + 3],
1088
- br = tb[ti],
1089
- bg = tb[ti + 1],
1090
- bb = tb[ti + 2];
1091
- if (fa == ba && fr == br && fg == bg && fb == bb) continue; //if(fa!=255 && ba!=0) return false;
1092
-
1093
- if (fa < 220 && ba > 20) return false;
1094
1169
  }
1095
1170
  }
1096
1171
 
@@ -1,9 +1,11 @@
1
1
  import { Loader, LoadingManager, ShapePath, BufferGeometry, Vector3, Shape } from 'three';
2
2
 
3
3
  export interface SVGResultPaths extends ShapePath {
4
- userData?: {
5
- [key: string]: any;
6
- };
4
+ userData?:
5
+ | {
6
+ [key: string]: any;
7
+ }
8
+ | undefined;
7
9
  }
8
10
 
9
11
  export interface SVGResult {