@loaders.gl/draco 4.2.0-alpha.4 → 4.2.0-alpha.6
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/dist/dist.dev.js +268 -79
- package/dist/dist.min.js +11 -0
- package/dist/draco-loader.d.ts +2 -2
- package/dist/draco-loader.d.ts.map +1 -1
- package/dist/draco-loader.js +23 -17
- package/dist/draco-worker-node.js +186 -127
- package/dist/draco-worker-node.js.map +3 -3
- package/dist/draco-worker.js +5 -3
- package/dist/draco-worker.js.map +2 -2
- package/dist/draco-writer-worker-node.js +188 -127
- package/dist/draco-writer-worker-node.js.map +3 -3
- package/dist/draco-writer-worker.js +5 -3
- package/dist/draco-writer-worker.js.map +2 -2
- package/dist/draco-writer.d.ts +2 -2
- package/dist/draco-writer.d.ts.map +1 -1
- package/dist/draco-writer.js +30 -23
- package/dist/draco3d/draco3d-types.js +48 -41
- package/dist/index.cjs +34 -71
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -21
- package/dist/lib/draco-builder.d.ts +2 -2
- package/dist/lib/draco-builder.d.ts.map +1 -1
- package/dist/lib/draco-builder.js +314 -243
- package/dist/lib/draco-module-loader.js +78 -62
- package/dist/lib/draco-parser.d.ts +2 -2
- package/dist/lib/draco-parser.d.ts.map +1 -1
- package/dist/lib/draco-parser.js +437 -323
- package/dist/lib/draco-types.js +1 -1
- package/dist/lib/utils/get-draco-schema.d.ts +1 -1
- package/dist/lib/utils/get-draco-schema.d.ts.map +1 -1
- package/dist/lib/utils/get-draco-schema.js +29 -32
- package/dist/lib/utils/version.js +4 -2
- package/dist/workers/draco-worker-node.js +1 -1
- package/dist/workers/draco-worker.js +0 -1
- package/dist/workers/draco-writer-worker-node.js +20 -25
- package/dist/workers/draco-writer-worker.js +19 -25
- package/package.json +10 -10
- package/dist/draco-loader.js.map +0 -1
- package/dist/draco-writer.js.map +0 -1
- package/dist/draco3d/draco3d-types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/draco-builder.js.map +0 -1
- package/dist/lib/draco-module-loader.js.map +0 -1
- package/dist/lib/draco-parser.js.map +0 -1
- package/dist/lib/draco-types.js.map +0 -1
- package/dist/lib/utils/get-draco-schema.js.map +0 -1
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/libs/libs/draco_decoder.wasm +0 -0
- package/dist/libs/libs/draco_encoder.js +0 -52
- package/dist/libs/libs/draco_wasm_wrapper.js +0 -117
- package/dist/workers/draco-worker-node.js.map +0 -1
- package/dist/workers/draco-worker.js.map +0 -1
- package/dist/workers/draco-writer-worker-node.js.map +0 -1
- package/dist/workers/draco-writer-worker.js.map +0 -1
|
@@ -1,84 +1,100 @@
|
|
|
1
|
+
// Dynamic DRACO module loading inspired by THREE.DRACOLoader
|
|
2
|
+
// https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js
|
|
3
|
+
// by Don McCurdy / https://www.donmccurdy.com / MIT license
|
|
1
4
|
import { loadLibrary } from '@loaders.gl/worker-utils';
|
|
2
5
|
const DRACO_DECODER_VERSION = '1.5.6';
|
|
3
6
|
const DRACO_ENCODER_VERSION = '1.4.1';
|
|
4
7
|
const STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
|
|
5
8
|
export const DRACO_EXTERNAL_LIBRARIES = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
/** The primary Draco3D encoder, javascript wrapper part */
|
|
10
|
+
DECODER: 'draco_wasm_wrapper.js',
|
|
11
|
+
/** The primary draco decoder, compiled web assembly part */
|
|
12
|
+
DECODER_WASM: 'draco_decoder.wasm',
|
|
13
|
+
/** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */
|
|
14
|
+
FALLBACK_DECODER: 'draco_decoder.js',
|
|
15
|
+
/** Draco encoder */
|
|
16
|
+
ENCODER: 'draco_encoder.js'
|
|
10
17
|
};
|
|
11
18
|
export const DRACO_EXTERNAL_LIBRARY_URLS = {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
[DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,
|
|
20
|
+
[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,
|
|
21
|
+
[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,
|
|
22
|
+
[DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`
|
|
16
23
|
};
|
|
17
24
|
let loadDecoderPromise;
|
|
18
25
|
let loadEncoderPromise;
|
|
19
26
|
export async function loadDracoDecoderModule(options) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
const modules = options.modules || {};
|
|
28
|
+
// Check if a bundled draco3d library has been supplied by application
|
|
29
|
+
if (modules.draco3d) {
|
|
30
|
+
loadDecoderPromise =
|
|
31
|
+
loadDecoderPromise ||
|
|
32
|
+
modules.draco3d.createDecoderModule({}).then((draco) => {
|
|
33
|
+
return { draco };
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// If not, dynamically load the WASM script from our CDN
|
|
38
|
+
loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);
|
|
39
|
+
}
|
|
40
|
+
return await loadDecoderPromise;
|
|
31
41
|
}
|
|
32
42
|
export async function loadDracoEncoderModule(options) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
const modules = options.modules || {};
|
|
44
|
+
// Check if a bundled draco3d library has been supplied by application
|
|
45
|
+
if (modules.draco3d) {
|
|
46
|
+
loadEncoderPromise =
|
|
47
|
+
loadEncoderPromise ||
|
|
48
|
+
modules.draco3d.createEncoderModule({}).then((draco) => {
|
|
49
|
+
return { draco };
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// If not, dynamically load the WASM script from our CDN
|
|
54
|
+
loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);
|
|
55
|
+
}
|
|
56
|
+
return await loadEncoderPromise;
|
|
44
57
|
}
|
|
58
|
+
// DRACO DECODER LOADING
|
|
45
59
|
async function loadDracoDecoder(options) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
let DracoDecoderModule;
|
|
61
|
+
let wasmBinary;
|
|
62
|
+
switch (options.draco && options.draco.decoderType) {
|
|
63
|
+
case 'js':
|
|
64
|
+
DracoDecoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER);
|
|
65
|
+
break;
|
|
66
|
+
case 'wasm':
|
|
67
|
+
default:
|
|
68
|
+
[DracoDecoderModule, wasmBinary] = await Promise.all([
|
|
69
|
+
await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER),
|
|
70
|
+
await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM], 'draco', options, DRACO_EXTERNAL_LIBRARIES.DECODER_WASM)
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
// Depends on how import happened...
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;
|
|
76
|
+
return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);
|
|
58
77
|
}
|
|
59
78
|
function initializeDracoDecoder(DracoDecoderModule, wasmBinary) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
})
|
|
79
|
+
const options = {};
|
|
80
|
+
if (wasmBinary) {
|
|
81
|
+
options.wasmBinary = wasmBinary;
|
|
82
|
+
}
|
|
83
|
+
return new Promise((resolve) => {
|
|
84
|
+
DracoDecoderModule({
|
|
85
|
+
...options,
|
|
86
|
+
onModuleLoaded: (draco) => resolve({ draco }) // Module is Promise-like. Wrap in object to avoid loop.
|
|
87
|
+
});
|
|
70
88
|
});
|
|
71
|
-
});
|
|
72
89
|
}
|
|
90
|
+
// ENCODER
|
|
73
91
|
async function loadDracoEncoder(options) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
92
|
+
let DracoEncoderModule = await loadLibrary(DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER], 'draco', options, DRACO_EXTERNAL_LIBRARIES.ENCODER);
|
|
93
|
+
// @ts-ignore
|
|
94
|
+
DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;
|
|
95
|
+
return new Promise((resolve) => {
|
|
96
|
+
DracoEncoderModule({
|
|
97
|
+
onModuleLoaded: (draco) => resolve({ draco }) // Module is Promise-like. Wrap in object to avoid loop.
|
|
98
|
+
});
|
|
81
99
|
});
|
|
82
|
-
});
|
|
83
100
|
}
|
|
84
|
-
//# sourceMappingURL=draco-module-loader.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TypedArray, MeshAttribute, MeshGeometry } from '@loaders.gl/schema';
|
|
2
|
-
import type { Draco3D, Decoder, Mesh, PointCloud, PointAttribute, Metadata, MetadataQuerier } from
|
|
3
|
-
import type { DracoMesh, DracoLoaderData, DracoAttribute, DracoMetadataEntry, DracoQuantizationTransform, DracoOctahedronTransform } from
|
|
2
|
+
import type { Draco3D, Decoder, Mesh, PointCloud, PointAttribute, Metadata, MetadataQuerier } from "../draco3d/draco3d-types.js";
|
|
3
|
+
import type { DracoMesh, DracoLoaderData, DracoAttribute, DracoMetadataEntry, DracoQuantizationTransform, DracoOctahedronTransform } from "./draco-types.js";
|
|
4
4
|
/**
|
|
5
5
|
* @param topology - How triangle indices should be generated (mesh only)
|
|
6
6
|
* @param attributeNameEntry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draco-parser.d.ts","sourceRoot":"","sources":["../../src/lib/draco-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGhF,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,IAAI,EACJ,UAAU,EACV,cAAc,EACd,QAAQ,EACR,eAAe,EAGhB,
|
|
1
|
+
{"version":3,"file":"draco-parser.d.ts","sourceRoot":"","sources":["../../src/lib/draco-parser.ts"],"names":[],"mappings":"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"}
|