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.
- package/{BufferGeometryUtils-582025b8.js → BufferGeometryUtils-1a7a235c.js} +2 -1
- package/{BufferGeometryUtils-9eb5c2e7.js → BufferGeometryUtils-971dfde3.js} +0 -0
- package/animation/MMDAnimationHelper.d.ts +17 -17
- package/animation/MMDPhysics.d.ts +3 -3
- package/csm/CSM.d.ts +47 -22
- package/csm/CSMHelper.d.ts +20 -7
- package/effects/OutlineEffect.d.ts +4 -4
- package/effects/OutlineEffect.js +8 -2
- package/exporters/GLTFExporter.js +5 -10
- package/geometries/ConvexGeometry.d.ts +1 -1
- package/geometries/ParametricGeometries.d.ts +4 -2
- package/helpers/RectAreaLightHelper.d.ts +3 -3
- package/loaders/AssimpLoader.js +39 -10
- package/loaders/ColladaLoader.js +22 -5
- package/loaders/EXRLoader.js +5 -1
- package/loaders/FBXLoader.js +10 -2
- package/loaders/GLTFLoader.d.ts +44 -20
- package/loaders/LDrawLoader.d.ts +6 -0
- package/loaders/MTLLoader.d.ts +18 -18
- package/loaders/RGBMLoader.d.ts +10 -10
- package/loaders/RGBMLoader.js +253 -178
- package/loaders/SVGLoader.d.ts +5 -3
- package/loaders/SVGLoader.js +10 -5
- package/loaders/lwo/IFFParser.js +4 -1
- package/math/OBB.d.ts +1 -1
- package/misc/GPUComputationRenderer.d.ts +8 -6
- package/misc/MD2CharacterComplex.js +9 -2
- package/misc/Volume.d.ts +2 -0
- package/modifiers/EdgeSplitModifier.cjs.js +1 -1
- package/modifiers/SimplifyModifier.cjs.js +1 -1
- package/nodes/inputs/ColorNode.d.ts +2 -2
- package/nodes/inputs/TextureNode.d.ts +3 -2
- package/nodes/materials/StandardNodeMaterial.d.ts +1 -1
- package/nodes/materials/nodes/StandardNode.d.ts +1 -0
- package/nodes/utils/ColorSpaceNode.d.ts +1 -1
- package/nodes/utils/JoinNode.d.ts +1 -0
- package/objects/MarchingCubes.d.ts +12 -4
- package/objects/Reflector.d.ts +4 -2
- package/objects/ReflectorForSSRPass.d.ts +6 -6
- package/objects/Refractor.d.ts +4 -2
- package/objects/Water.d.ts +4 -3
- package/objects/Water2.d.ts +12 -3
- package/package.json +1 -1
- package/postprocessing/ClearPass.d.ts +3 -3
- package/postprocessing/SAOPass.d.ts +3 -2
- package/postprocessing/SSAARenderPass.d.ts +3 -3
- package/postprocessing/SSAOPass.d.ts +3 -2
- package/postprocessing/SSRPass.d.ts +14 -17
- package/postprocessing/TAARenderPass.d.ts +2 -2
- package/renderers/CSS2DRenderer.d.ts +5 -1
- package/renderers/CSS3DRenderer.d.ts +5 -1
- package/renderers/webgpu/WebGPUTextures.js +62 -41
- package/shaders/SSRShader.d.ts +1 -2
- package/utils/BufferGeometryUtils.cjs.js +1 -1
- package/utils/BufferGeometryUtils.js +2 -1
- package/utils/LDrawUtils.cjs.js +1 -1
- package/utils/LDrawUtils.d.ts +5 -0
- package/utils/LDrawUtils.js +1 -1
- package/utils/RoughnessMipmapper.js +5 -1
- package/utils/SceneUtils.d.ts +10 -12
- package/utils/ShadowMapViewer.js +4 -1
- package/webxr/XRHandModelFactory.d.ts +3 -3
- package/webxr/XRHandPrimitiveModel.d.ts +1 -1
- package/csm/Frustum.d.ts +0 -16
- package/csm/Shader.d.ts +0 -6
- package/loaders/XLoader.d.ts +0 -19
- package/shaders/FresnelShader.d.ts +0 -13
- package/shaders/ParallaxShader.d.ts +0 -20
- package/utils/RoughnessMipmapper.d.ts +0 -7
- package/webxr/XRHandOculusMeshModel.d.ts +0 -23
package/loaders/MTLLoader.d.ts
CHANGED
@@ -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 {
|
package/loaders/RGBMLoader.d.ts
CHANGED
@@ -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:
|
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
|
}
|
package/loaders/RGBMLoader.js
CHANGED
@@ -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)
|
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
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
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
|
-
|
139
|
-
|
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)
|
147
|
-
var
|
148
|
-
|
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
|
-
|
151
|
-
|
152
|
-
|
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
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
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
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
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)
|
178
|
-
var
|
179
|
-
|
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
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
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
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
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
|
-
|
210
|
-
|
211
|
-
|
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)
|
231
|
-
var
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
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
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
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
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
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
|
-
|
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
|
-
|
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')
|
401
|
-
|
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)
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
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
|
-
|
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++)
|
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++)
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
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
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
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
|
|
package/loaders/SVGLoader.d.ts
CHANGED
@@ -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
|
-
|
6
|
-
|
4
|
+
userData?:
|
5
|
+
| {
|
6
|
+
[key: string]: any;
|
7
|
+
}
|
8
|
+
| undefined;
|
7
9
|
}
|
8
10
|
|
9
11
|
export interface SVGResult {
|