@loaders.gl/scene 5.0.0-beta.1 → 5.0.0-beta.4
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/DRACO-README.md +15 -0
- package/README.md +7 -1
- package/THIRD-PARTY-NOTICES.md +4 -1
- package/dist/dist.dev.js +8894 -5137
- package/dist/dist.min.js +32 -24
- package/dist/draco/bundled.cjs +37 -0
- package/dist/draco/bundled.cjs.map +7 -0
- package/dist/draco/bundled.d.ts +6 -0
- package/dist/draco/bundled.d.ts.map +1 -0
- package/dist/draco/bundled.js +7 -0
- package/dist/draco/bundled.js.map +1 -0
- package/dist/draco/draco-format.cjs +41 -0
- package/dist/draco/draco-format.cjs.map +7 -0
- package/dist/draco/draco-format.d.ts +15 -0
- package/dist/draco/draco-format.d.ts.map +1 -0
- package/dist/draco/draco-format.js +18 -0
- package/dist/draco/draco-format.js.map +1 -0
- package/dist/draco/draco-javascript-loader-with-parser.cjs +44 -0
- package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
- package/dist/draco/draco-javascript-loader-with-parser.d.ts +34 -0
- package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
- package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
- package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
- package/dist/draco/draco-libraries.cjs +61 -0
- package/dist/draco/draco-libraries.cjs.map +7 -0
- package/dist/draco/draco-libraries.d.ts +28 -0
- package/dist/draco/draco-libraries.d.ts.map +1 -0
- package/dist/draco/draco-libraries.js +33 -0
- package/dist/draco/draco-libraries.js.map +1 -0
- package/dist/draco/draco-library-options.cjs +80 -0
- package/dist/draco/draco-library-options.cjs.map +7 -0
- package/dist/draco/draco-library-options.d.ts +16 -0
- package/dist/draco/draco-library-options.d.ts.map +1 -0
- package/dist/draco/draco-library-options.js +52 -0
- package/dist/draco/draco-library-options.js.map +1 -0
- package/dist/draco/draco-loader-options.cjs +37 -0
- package/dist/draco/draco-loader-options.cjs.map +7 -0
- package/dist/draco/draco-loader-options.d.ts +27 -0
- package/dist/draco/draco-loader-options.d.ts.map +1 -0
- package/dist/draco/draco-loader-options.js +12 -0
- package/dist/draco/draco-loader-options.js.map +1 -0
- package/dist/draco/draco-loader-types.cjs +88 -0
- package/dist/draco/draco-loader-types.cjs.map +7 -0
- package/dist/draco/draco-loader-types.d.ts +69 -0
- package/dist/draco/draco-loader-types.d.ts.map +1 -0
- package/dist/draco/draco-loader-types.js +54 -0
- package/dist/draco/draco-loader-types.js.map +1 -0
- package/dist/draco/draco-loader.cjs +51 -0
- package/dist/draco/draco-loader.cjs.map +7 -0
- package/dist/draco/draco-loader.d.ts +39 -0
- package/dist/draco/draco-loader.d.ts.map +1 -0
- package/dist/draco/draco-loader.js +22 -0
- package/dist/draco/draco-loader.js.map +1 -0
- package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
- package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
- package/dist/draco/draco-wasm-loader-with-parser.d.ts +34 -0
- package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
- package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
- package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
- package/dist/draco/draco-writer.cjs +183 -0
- package/dist/draco/draco-writer.cjs.map +7 -0
- package/dist/draco/draco-writer.d.ts +97 -0
- package/dist/draco/draco-writer.d.ts.map +1 -0
- package/dist/draco/draco-writer.js +166 -0
- package/dist/draco/draco-writer.js.map +1 -0
- package/dist/draco/draco3d/draco3d-types.cjs +76 -0
- package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
- package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
- package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
- package/dist/draco/draco3d/draco3d-types.js +47 -0
- package/dist/draco/draco3d/draco3d-types.js.map +1 -0
- package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
- package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
- package/dist/draco/draco3d-loader-with-parser.d.ts +34 -0
- package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
- package/dist/draco/draco3d-loader-with-parser.js +21 -0
- package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
- package/dist/draco/index.cjs +54 -0
- package/dist/draco/index.cjs.map +7 -0
- package/dist/draco/index.d.ts +13 -0
- package/dist/draco/index.d.ts.map +1 -0
- package/dist/draco/index.js +13 -0
- package/dist/draco/index.js.map +1 -0
- package/dist/draco/lib/draco-builder.cjs +660 -0
- package/dist/draco/lib/draco-builder.cjs.map +7 -0
- package/dist/draco/lib/draco-builder.d.ts +175 -0
- package/dist/draco/lib/draco-builder.d.ts.map +1 -0
- package/dist/draco/lib/draco-builder.js +612 -0
- package/dist/draco/lib/draco-builder.js.map +1 -0
- package/dist/draco/lib/draco-library-loader.cjs +47 -0
- package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
- package/dist/draco/lib/draco-library-loader.d.ts +5 -0
- package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
- package/dist/draco/lib/draco-library-loader.js +23 -0
- package/dist/draco/lib/draco-library-loader.js.map +1 -0
- package/dist/draco/lib/draco-module-loader.cjs +281 -0
- package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
- package/dist/draco/lib/draco-module-loader.d.ts +25 -0
- package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
- package/dist/draco/lib/draco-module-loader.js +220 -0
- package/dist/draco/lib/draco-module-loader.js.map +1 -0
- package/dist/draco/lib/draco-parser.cjs +598 -0
- package/dist/draco/lib/draco-parser.cjs.map +7 -0
- package/dist/draco/lib/draco-parser.d.ts +142 -0
- package/dist/draco/lib/draco-parser.d.ts.map +1 -0
- package/dist/draco/lib/draco-parser.js +595 -0
- package/dist/draco/lib/draco-parser.js.map +1 -0
- package/dist/draco/lib/draco-types.cjs +19 -0
- package/dist/draco/lib/draco-types.cjs.map +7 -0
- package/dist/draco/lib/draco-types.d.ts +59 -0
- package/dist/draco/lib/draco-types.d.ts.map +1 -0
- package/dist/draco/lib/draco-types.js +5 -0
- package/dist/draco/lib/draco-types.js.map +1 -0
- package/dist/draco/lib/parse-draco.cjs +59 -0
- package/dist/draco/lib/parse-draco.cjs.map +7 -0
- package/dist/draco/lib/parse-draco.d.ts +22 -0
- package/dist/draco/lib/parse-draco.d.ts.map +1 -0
- package/dist/draco/lib/parse-draco.js +32 -0
- package/dist/draco/lib/parse-draco.js.map +1 -0
- package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
- package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
- package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
- package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
- package/dist/draco/lib/utils/get-draco-schema.js +45 -0
- package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
- package/dist/draco/lib/utils/version.cjs +31 -0
- package/dist/draco/lib/utils/version.cjs.map +7 -0
- package/dist/draco/lib/utils/version.d.ts +2 -0
- package/dist/draco/lib/utils/version.d.ts.map +1 -0
- package/dist/draco/lib/utils/version.js +8 -0
- package/dist/draco/lib/utils/version.js.map +1 -0
- package/dist/draco/unbundled.cjs +33 -0
- package/dist/draco/unbundled.cjs.map +7 -0
- package/dist/draco/unbundled.d.ts +3 -0
- package/dist/draco/unbundled.d.ts.map +1 -0
- package/dist/draco/unbundled.js +5 -0
- package/dist/draco/unbundled.js.map +1 -0
- package/dist/draco/workers/draco-worker-node.cjs +8 -0
- package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
- package/dist/draco/workers/draco-worker-node.d.ts +2 -0
- package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
- package/dist/draco/workers/draco-worker-node.js +9 -0
- package/dist/draco/workers/draco-worker-node.js.map +1 -0
- package/dist/draco/workers/draco-worker.cjs +7 -0
- package/dist/draco/workers/draco-worker.cjs.map +7 -0
- package/dist/draco/workers/draco-worker.d.ts +2 -0
- package/dist/draco/workers/draco-worker.d.ts.map +1 -0
- package/dist/draco/workers/draco-worker.js +7 -0
- package/dist/draco/workers/draco-worker.js.map +1 -0
- package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
- package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
- package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
- package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
- package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
- package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
- package/dist/draco/workers/draco-writer-worker-node.js +9 -0
- package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
- package/dist/draco/workers/draco-writer-worker.cjs +10 -0
- package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
- package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
- package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
- package/dist/draco/workers/draco-writer-worker.js +7 -0
- package/dist/draco/workers/draco-writer-worker.js.map +1 -0
- package/dist/draco-javascript-loader.cjs +25 -0
- package/dist/draco-javascript-loader.cjs.map +7 -0
- package/dist/draco-javascript-loader.d.ts +2 -0
- package/dist/draco-javascript-loader.d.ts.map +1 -0
- package/dist/draco-javascript-loader.js +3 -0
- package/dist/draco-javascript-loader.js.map +1 -0
- package/dist/draco-library-options.cjs +36 -0
- package/dist/draco-library-options.cjs.map +7 -0
- package/dist/draco-library-options.d.ts +3 -0
- package/dist/draco-library-options.d.ts.map +1 -0
- package/dist/draco-library-options.js +4 -0
- package/dist/draco-library-options.js.map +1 -0
- package/dist/draco-loader-types.cjs +25 -0
- package/dist/draco-loader-types.cjs.map +7 -0
- package/dist/draco-loader-types.d.ts +2 -0
- package/dist/draco-loader-types.d.ts.map +1 -0
- package/dist/draco-loader-types.js +3 -0
- package/dist/draco-loader-types.js.map +1 -0
- package/dist/draco-loader.cjs +25 -0
- package/dist/draco-loader.cjs.map +7 -0
- package/dist/draco-loader.d.ts +2 -0
- package/dist/draco-loader.d.ts.map +1 -0
- package/dist/draco-loader.js +3 -0
- package/dist/draco-loader.js.map +1 -0
- package/dist/draco-wasm-loader.cjs +25 -0
- package/dist/draco-wasm-loader.cjs.map +7 -0
- package/dist/draco-wasm-loader.d.ts +2 -0
- package/dist/draco-wasm-loader.d.ts.map +1 -0
- package/dist/draco-wasm-loader.js +3 -0
- package/dist/draco-wasm-loader.js.map +1 -0
- package/dist/draco-worker-node.js +28640 -0
- package/dist/draco-worker-node.js.map +7 -0
- package/dist/draco-worker.js +18481 -0
- package/dist/draco-worker.js.map +7 -0
- package/dist/draco-writer-worker-node.cjs +28855 -0
- package/dist/draco-writer-worker-node.cjs.map +7 -0
- package/dist/draco-writer-worker.js +18617 -0
- package/dist/draco-writer-worker.js.map +7 -0
- package/dist/draco-writer.cjs +25 -0
- package/dist/draco-writer.cjs.map +7 -0
- package/dist/draco-writer.d.ts +2 -0
- package/dist/draco-writer.d.ts.map +1 -0
- package/dist/draco-writer.js +3 -0
- package/dist/draco-writer.js.map +1 -0
- package/dist/draco3d-loader.cjs +25 -0
- package/dist/draco3d-loader.cjs.map +7 -0
- package/dist/draco3d-loader.d.ts +2 -0
- package/dist/draco3d-loader.d.ts.map +1 -0
- package/dist/draco3d-loader.js +3 -0
- package/dist/draco3d-loader.js.map +1 -0
- package/dist/glb-loader-types.cjs +61 -0
- package/dist/glb-loader-types.cjs.map +7 -0
- package/dist/glb-loader-types.d.ts +2 -0
- package/dist/glb-loader-types.d.ts.map +1 -0
- package/dist/glb-loader-types.js +2 -0
- package/dist/glb-loader-types.js.map +1 -0
- package/dist/glb-loader.cjs +48 -0
- package/dist/glb-loader.cjs.map +7 -0
- package/dist/glb-loader.d.ts +2 -0
- package/dist/glb-loader.d.ts.map +1 -0
- package/dist/glb-loader.js +2 -0
- package/dist/glb-loader.js.map +1 -0
- package/dist/glb-writer.cjs +53 -0
- package/dist/glb-writer.cjs.map +7 -0
- package/dist/glb-writer.d.ts +2 -0
- package/dist/glb-writer.d.ts.map +1 -0
- package/dist/glb-writer.js +2 -0
- package/dist/glb-writer.js.map +1 -0
- package/dist/gltf/glb-loader-types.cjs +1 -1
- package/dist/gltf/glb-loader-types.cjs.map +2 -2
- package/dist/gltf/glb-loader-types.d.ts +2 -2
- package/dist/gltf/glb-loader-types.js +1 -1
- package/dist/gltf/glb-loader-types.js.map +1 -1
- package/dist/gltf/gltf-loader-types.cjs +1 -1
- package/dist/gltf/gltf-loader-types.cjs.map +2 -2
- package/dist/gltf/gltf-loader-types.d.ts +11 -5
- package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
- package/dist/gltf/gltf-loader-types.js +1 -1
- package/dist/gltf/gltf-loader-types.js.map +1 -1
- package/dist/gltf/gltf-loader.cjs.map +1 -1
- package/dist/gltf/gltf-loader.d.ts +4 -4
- package/dist/gltf/gltf-loader.d.ts.map +1 -1
- package/dist/gltf/index.cjs +2 -0
- package/dist/gltf/index.cjs.map +2 -2
- package/dist/gltf/index.d.ts +2 -2
- package/dist/gltf/index.d.ts.map +1 -1
- package/dist/gltf/index.js +1 -1
- package/dist/gltf/index.js.map +1 -1
- package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
- package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
- package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
- package/dist/gltf/lib/api/gltf-extensions.js +7 -5
- package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
- package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
- package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
- package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
- package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
- package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
- package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +12 -3
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +9 -3
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
- package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
- package/dist/gltf/lib/parsers/parse-gltf.cjs +27 -2
- package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
- package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
- package/dist/gltf/lib/parsers/parse-gltf.js +23 -5
- package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
- package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
- package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
- package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
- package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
- package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-zod-schema.cjs +3 -0
- package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
- package/dist/gltf/lib/types/gltf-zod-schema.d.ts +6 -1
- package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-zod-schema.js +4 -0
- package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
- package/dist/gltf/lib/utils/version.cjs +1 -1
- package/dist/gltf/lib/utils/version.js +1 -1
- package/dist/gltf/schema.cjs +3 -0
- package/dist/gltf/schema.cjs.map +2 -2
- package/dist/gltf/schema.d.ts +1 -0
- package/dist/gltf/schema.d.ts.map +1 -1
- package/dist/gltf/schema.js +1 -0
- package/dist/gltf/schema.js.map +1 -1
- package/dist/gltf-loader-types.cjs +73 -0
- package/dist/gltf-loader-types.cjs.map +7 -0
- package/dist/gltf-loader-types.d.ts +2 -0
- package/dist/gltf-loader-types.d.ts.map +1 -0
- package/dist/gltf-loader-types.js +2 -0
- package/dist/gltf-loader-types.js.map +1 -0
- package/dist/gltf-loader.cjs +48 -0
- package/dist/gltf-loader.cjs.map +7 -0
- package/dist/gltf-loader.d.ts +2 -0
- package/dist/gltf-loader.d.ts.map +1 -0
- package/dist/gltf-loader.js +2 -0
- package/dist/gltf-loader.js.map +1 -0
- package/dist/gltf-source.cjs +238 -0
- package/dist/gltf-source.cjs.map +7 -0
- package/dist/gltf-source.d.ts +2 -0
- package/dist/gltf-source.d.ts.map +1 -0
- package/dist/gltf-source.js +2 -0
- package/dist/gltf-source.js.map +1 -0
- package/dist/gltf-writer.cjs +69 -0
- package/dist/gltf-writer.cjs.map +7 -0
- package/dist/gltf-writer.d.ts +2 -0
- package/dist/gltf-writer.d.ts.map +1 -0
- package/dist/gltf-writer.js +2 -0
- package/dist/gltf-writer.js.map +1 -0
- package/dist/index.cjs +16 -0
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/libs/DRACO-LICENSE +252 -0
- package/dist/libs/README.md +20 -0
- package/dist/libs/draco_decoder.js +34 -0
- package/dist/libs/draco_decoder.mjs +37 -0
- package/dist/libs/draco_decoder.wasm +0 -0
- package/dist/libs/draco_decoder_gltf.wasm +0 -0
- package/dist/libs/draco_encoder.js +98 -0
- package/dist/libs/draco_encoder.mjs +101 -0
- package/dist/libs/draco_encoder.wasm +0 -0
- package/dist/libs/draco_wasm_wrapper.js +117 -0
- package/dist/libs/draco_wasm_wrapper.mjs +120 -0
- package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
- package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
- package/dist/materialx/parse-materialx.cjs +61 -0
- package/dist/materialx/parse-materialx.cjs.map +7 -0
- package/dist/materialx/parse-materialx.d.ts +23 -0
- package/dist/materialx/parse-materialx.d.ts.map +1 -0
- package/dist/materialx/parse-materialx.js +39 -0
- package/dist/materialx/parse-materialx.js.map +1 -0
- package/dist/materialx/procedural-graph.cjs +77 -0
- package/dist/materialx/procedural-graph.cjs.map +7 -0
- package/dist/materialx/procedural-graph.d.ts +40 -0
- package/dist/materialx/procedural-graph.d.ts.map +1 -0
- package/dist/materialx/procedural-graph.js +59 -0
- package/dist/materialx/procedural-graph.js.map +1 -0
- package/dist/materialx-loader-types.cjs +57 -0
- package/dist/materialx-loader-types.cjs.map +7 -0
- package/dist/materialx-loader-types.d.ts +34 -0
- package/dist/materialx-loader-types.d.ts.map +1 -0
- package/dist/materialx-loader-types.js +20 -0
- package/dist/materialx-loader-types.js.map +1 -0
- package/dist/materialx-loader.cjs +40 -0
- package/dist/materialx-loader.cjs.map +7 -0
- package/dist/materialx-loader.d.ts +19 -0
- package/dist/materialx-loader.d.ts.map +1 -0
- package/dist/materialx-loader.js +14 -0
- package/dist/materialx-loader.js.map +1 -0
- package/dist/mtl-loader-types.cjs +64 -0
- package/dist/mtl-loader-types.cjs.map +7 -0
- package/dist/mtl-loader-types.d.ts +2 -0
- package/dist/mtl-loader-types.d.ts.map +1 -0
- package/dist/mtl-loader-types.js +2 -0
- package/dist/mtl-loader-types.js.map +1 -0
- package/dist/mtl-loader.cjs +47 -0
- package/dist/mtl-loader.cjs.map +7 -0
- package/dist/mtl-loader.d.ts +2 -0
- package/dist/mtl-loader.d.ts.map +1 -0
- package/dist/mtl-loader.js +2 -0
- package/dist/mtl-loader.js.map +1 -0
- package/dist/obj/mtl-loader-types.cjs +2 -2
- package/dist/obj/mtl-loader-types.cjs.map +2 -2
- package/dist/obj/mtl-loader-types.d.ts +2 -2
- package/dist/obj/mtl-loader-types.js +2 -2
- package/dist/obj/mtl-loader-types.js.map +1 -1
- package/dist/obj/mtl-loader.cjs +1 -1
- package/dist/obj/mtl-loader.cjs.map +2 -2
- package/dist/obj/mtl-loader.js +1 -1
- package/dist/obj/mtl-loader.js.map +1 -1
- package/dist/obj/obj-loader-types.cjs +2 -2
- package/dist/obj/obj-loader-types.cjs.map +2 -2
- package/dist/obj/obj-loader-types.js +2 -2
- package/dist/obj/obj-loader-types.js.map +1 -1
- package/dist/obj/obj-writer.cjs +1 -1
- package/dist/obj/obj-writer.js +1 -1
- package/dist/obj-loader-types.cjs +71 -0
- package/dist/obj-loader-types.cjs.map +7 -0
- package/dist/obj-loader-types.d.ts +2 -0
- package/dist/obj-loader-types.d.ts.map +1 -0
- package/dist/obj-loader-types.js +2 -0
- package/dist/obj-loader-types.js.map +1 -0
- package/dist/obj-loader.cjs +163 -0
- package/dist/obj-loader.cjs.map +7 -0
- package/dist/obj-loader.d.ts +2 -0
- package/dist/obj-loader.d.ts.map +1 -0
- package/dist/obj-loader.js +2 -0
- package/dist/obj-loader.js.map +1 -0
- package/dist/obj-worker.js +586 -117
- package/dist/obj-writer.cjs +167 -0
- package/dist/obj-writer.cjs.map +7 -0
- package/dist/obj-writer.d.ts +2 -0
- package/dist/obj-writer.d.ts.map +1 -0
- package/dist/obj-writer.js +2 -0
- package/dist/obj-writer.js.map +1 -0
- package/dist/usd/usd-loader-types.cjs +2 -2
- package/dist/usd/usd-loader-types.cjs.map +2 -2
- package/dist/usd/usd-loader-types.js +2 -2
- package/dist/usd/usd-loader-types.js.map +1 -1
- package/dist/usd-loader-types.cjs +69 -0
- package/dist/usd-loader-types.cjs.map +7 -0
- package/dist/usd-loader-types.d.ts +2 -0
- package/dist/usd-loader-types.d.ts.map +1 -0
- package/dist/usd-loader-types.js +2 -0
- package/dist/usd-loader-types.js.map +1 -0
- package/dist/usd-loader.cjs +43 -0
- package/dist/usd-loader.cjs.map +7 -0
- package/dist/usd-loader.d.ts +2 -0
- package/dist/usd-loader.d.ts.map +1 -0
- package/dist/usd-loader.js +2 -0
- package/dist/usd-loader.js.map +1 -0
- package/package.json +136 -71
- package/src/draco/bundled.ts +10 -0
- package/src/draco/draco-format.ts +20 -0
- package/src/draco/draco-javascript-loader-with-parser.ts +26 -0
- package/src/draco/draco-libraries.ts +35 -0
- package/src/draco/draco-library-options.ts +76 -0
- package/src/draco/draco-loader-options.ts +33 -0
- package/src/draco/draco-loader-types.ts +78 -0
- package/src/draco/draco-loader.ts +45 -0
- package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
- package/src/draco/draco-writer.ts +252 -0
- package/src/draco/draco3d/draco3d-types.ts +498 -0
- package/src/draco/draco3d-loader-with-parser.ts +34 -0
- package/src/draco/index.ts +46 -0
- package/src/draco/lib/draco-builder.ts +935 -0
- package/src/draco/lib/draco-library-loader.ts +38 -0
- package/src/draco/lib/draco-module-loader.ts +370 -0
- package/src/draco/lib/draco-parser.ts +776 -0
- package/src/draco/lib/draco-types.ts +72 -0
- package/src/draco/lib/parse-draco.ts +51 -0
- package/src/draco/lib/utils/get-draco-schema.ts +65 -0
- package/src/draco/lib/utils/version.ts +8 -0
- package/src/draco/libs/DRACO-LICENSE +252 -0
- package/src/draco/libs/README.md +20 -0
- package/src/draco/libs/draco_decoder.js +34 -0
- package/src/draco/libs/draco_decoder.wasm +0 -0
- package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
- package/src/draco/libs/draco_encoder.js +98 -0
- package/src/draco/libs/draco_encoder.wasm +0 -0
- package/src/draco/libs/draco_wasm_wrapper.js +117 -0
- package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
- package/src/draco/unbundled.ts +6 -0
- package/src/draco/workers/draco-worker-node.ts +10 -0
- package/src/draco/workers/draco-worker.ts +8 -0
- package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
- package/src/draco/workers/draco-writer-worker-node.ts +13 -0
- package/src/draco/workers/draco-writer-worker.ts +11 -0
- package/src/draco-javascript-loader.ts +2 -0
- package/src/draco-library-options.ts +6 -0
- package/src/draco-loader-types.ts +2 -0
- package/src/draco-loader.ts +2 -0
- package/src/draco-wasm-loader.ts +2 -0
- package/src/draco-writer.ts +2 -0
- package/src/draco3d-loader.ts +2 -0
- package/src/glb-loader-types.ts +1 -0
- package/src/glb-loader.ts +1 -0
- package/src/glb-writer.ts +1 -0
- package/src/gltf/glb-loader-types.ts +1 -1
- package/src/gltf/gltf-loader-types.ts +11 -5
- package/src/gltf/gltf-loader.ts +4 -4
- package/src/gltf/index.ts +4 -1
- package/src/gltf/lib/api/gltf-extensions.ts +7 -2
- package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
- package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
- package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
- package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
- package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +17 -3
- package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
- package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
- package/src/gltf/lib/parsers/parse-gltf.ts +34 -5
- package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
- package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
- package/src/gltf/lib/types/gltf-types.ts +8 -0
- package/src/gltf/lib/types/gltf-zod-schema.ts +5 -0
- package/src/gltf/schema.ts +1 -0
- package/src/gltf-loader-types.ts +1 -0
- package/src/gltf-loader.ts +1 -0
- package/src/gltf-source.ts +1 -0
- package/src/gltf-writer.ts +1 -0
- package/src/index.ts +8 -0
- package/src/materialx/README.md +5 -0
- package/src/materialx/parse-materialx.ts +70 -0
- package/src/materialx/procedural-graph.ts +94 -0
- package/src/materialx-loader-types.ts +24 -0
- package/src/materialx-loader.ts +15 -0
- package/src/mtl-loader-types.ts +1 -0
- package/src/mtl-loader.ts +1 -0
- package/src/obj/mtl-loader-types.ts +1 -1
- package/src/obj/mtl-loader.ts +1 -1
- package/src/obj/obj-loader-types.ts +1 -1
- package/src/obj-loader-types.ts +1 -0
- package/src/obj-loader.ts +1 -0
- package/src/obj-writer.ts +1 -0
- package/src/usd/usd-loader-types.ts +1 -1
- package/src/usd-loader-types.ts +1 -0
- package/src/usd-loader.ts +1 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {GLTFLoaderOptions} from '../../gltf-loader-types';
|
|
6
|
+
import type {GLTFWithBuffers} from '../types/gltf-types';
|
|
7
|
+
import type {GLTF_MSFT_texture_dds} from '../types/gltf-json-schema';
|
|
8
|
+
import type {Loader, LoaderContext} from '@loaders.gl/core/loader-utils';
|
|
9
|
+
import {GLTFIterator} from '../api/gltf-iterator';
|
|
10
|
+
|
|
11
|
+
/** Name of the Microsoft DDS texture extension. */
|
|
12
|
+
export const name = 'MSFT_texture_dds';
|
|
13
|
+
|
|
14
|
+
/** Finds a DDS-capable loader supplied through the parent loader context. */
|
|
15
|
+
export function getDDSLoader(context?: LoaderContext): Loader | undefined {
|
|
16
|
+
return context?.loaders?.find(
|
|
17
|
+
loader => loader.extensions?.includes('dds') || loader.mimeTypes?.includes('image/vnd-ms.dds')
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Select DDS sources only when an application supplies a compatible loader. */
|
|
22
|
+
export function preprocess(
|
|
23
|
+
gltf: GLTFWithBuffers,
|
|
24
|
+
_options: GLTFLoaderOptions,
|
|
25
|
+
context?: LoaderContext
|
|
26
|
+
): void {
|
|
27
|
+
const iterator = new GLTFIterator(gltf);
|
|
28
|
+
if (!iterator.hasExtension(name)) return;
|
|
29
|
+
if (!getDDSLoader(context)) {
|
|
30
|
+
if (iterator.isExtensionRequired(name)) {
|
|
31
|
+
throw new Error('gltf: Required extension MSFT_texture_dds needs a DDS parser');
|
|
32
|
+
}
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const texture of iterator.textures) {
|
|
36
|
+
const extension = iterator.getExtension<GLTF_MSFT_texture_dds>(texture, name);
|
|
37
|
+
if (extension) texture.source = extension.source;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Remove DDS declarations only after image loading can identify the selected sources. */
|
|
42
|
+
export async function decode(
|
|
43
|
+
gltf: GLTFWithBuffers,
|
|
44
|
+
options: GLTFLoaderOptions,
|
|
45
|
+
context?: LoaderContext
|
|
46
|
+
): Promise<void> {
|
|
47
|
+
if (!getDDSLoader(context) || options.gltf?.loadImages === false) return;
|
|
48
|
+
const iterator = new GLTFIterator(gltf);
|
|
49
|
+
if (!iterator.hasExtension(name)) return;
|
|
50
|
+
for (const texture of iterator.textures) iterator.removeExtension(texture, name);
|
|
51
|
+
iterator.removeExtension(name);
|
|
52
|
+
}
|
|
@@ -197,7 +197,11 @@ export function getPrimitiveTextureData(
|
|
|
197
197
|
const mimeType = json.images?.[imageIndex]?.mimeType;
|
|
198
198
|
const parsedImage = scenegraph.gltf.images?.[imageIndex];
|
|
199
199
|
// Checking for width is to prevent handling Un-processed images (e.g. [analyze] stage, where loadImages option is set to false)
|
|
200
|
-
if (
|
|
200
|
+
if (
|
|
201
|
+
parsedImage &&
|
|
202
|
+
typeof parsedImage.width !== 'undefined' &&
|
|
203
|
+
!('compressed' in parsedImage && parsedImage.compressed)
|
|
204
|
+
) {
|
|
201
205
|
const textureData: number[] = [];
|
|
202
206
|
for (let index = 0; index < textureCoordinates.length; index += 2) {
|
|
203
207
|
const value = getImageValueByCoordinates(
|
|
@@ -12,8 +12,8 @@ import type {ParseGLBOptions} from './parse-glb';
|
|
|
12
12
|
|
|
13
13
|
import type {ImageType, TextureLevel} from '@loaders.gl/core/schema';
|
|
14
14
|
import {parseJSON, sliceArrayBuffer, parseFromContext} from '@loaders.gl/core/loader-utils';
|
|
15
|
-
import {
|
|
16
|
-
import {BasisLoader} from '@loaders.gl/
|
|
15
|
+
import {ImageLoader} from '@loaders.gl/images';
|
|
16
|
+
import {BasisLoader} from '@loaders.gl/images';
|
|
17
17
|
|
|
18
18
|
import {assert} from '../utils/assert';
|
|
19
19
|
import {isGLB, parseGLBSync} from './parse-glb';
|
|
@@ -21,6 +21,7 @@ import {canonicalizeUrl, resolveUrl} from '../gltf-utils/resolve-url';
|
|
|
21
21
|
import {findGLTFFileIndex, resolveGLTFFile} from '../gltf-utils/resolve-gltf-file';
|
|
22
22
|
import {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';
|
|
23
23
|
import {preprocessExtensions, decodeExtensions} from '../api/gltf-extensions';
|
|
24
|
+
import {getDDSLoader} from '../extensions/MSFT_texture_dds';
|
|
24
25
|
import {normalizeGLTFV1WithDeferredBuffers} from '../api/normalize-gltf-v1';
|
|
25
26
|
|
|
26
27
|
/** */
|
|
@@ -542,10 +543,38 @@ async function loadImage(
|
|
|
542
543
|
|
|
543
544
|
const gltfOptions = getGLTFImageOptions(options, image.mimeType);
|
|
544
545
|
|
|
546
|
+
const ddsLoader = getDDSLoader(context);
|
|
547
|
+
const ddsSelected = Boolean(
|
|
548
|
+
ddsLoader &&
|
|
549
|
+
!options.gltf?.excludeExtensions?.includes('MSFT_texture_dds') &&
|
|
550
|
+
gltf.json.textures?.some(
|
|
551
|
+
texture =>
|
|
552
|
+
texture.source === index && texture.extensions?.MSFT_texture_dds?.source === index
|
|
553
|
+
)
|
|
554
|
+
);
|
|
555
|
+
if (ddsSelected) {
|
|
556
|
+
const levels = (await parseFromContext(
|
|
557
|
+
arrayBuffer,
|
|
558
|
+
ddsLoader!,
|
|
559
|
+
options,
|
|
560
|
+
context
|
|
561
|
+
)) as TextureLevel[];
|
|
562
|
+
assert(levels.length > 0, 'MSFT_texture_dds parser returned no texture levels');
|
|
563
|
+
gltf.images = gltf.images || [];
|
|
564
|
+
gltf.images[index] = {
|
|
565
|
+
compressed: true,
|
|
566
|
+
mipmaps: true,
|
|
567
|
+
width: levels[0].width,
|
|
568
|
+
height: levels[0].height,
|
|
569
|
+
data: levels
|
|
570
|
+
};
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
|
|
545
574
|
// Call `parse`
|
|
546
575
|
let parsedImage = (await parseFromContext(
|
|
547
576
|
arrayBuffer,
|
|
548
|
-
[
|
|
577
|
+
[ImageLoader, BasisLoader],
|
|
549
578
|
gltfOptions,
|
|
550
579
|
context
|
|
551
580
|
)) as ImageType | TextureLevel[][];
|
|
@@ -560,8 +589,8 @@ async function loadImage(
|
|
|
560
589
|
data: parsedImage[0]
|
|
561
590
|
};
|
|
562
591
|
}
|
|
563
|
-
// TODO making sure
|
|
564
|
-
// const parsedImage = await parse(arrayBuffer, [
|
|
592
|
+
// TODO making sure ImageLoader is overridable by using array of loaders
|
|
593
|
+
// const parsedImage = await parse(arrayBuffer, [ImageLoader]);
|
|
565
594
|
|
|
566
595
|
// Store the loaded image
|
|
567
596
|
gltf.images = gltf.images || [];
|
|
@@ -41,6 +41,6 @@ export type GLTFGaussianSplatPrimitive = {
|
|
|
41
41
|
compressedBufferView?: number;
|
|
42
42
|
/** Preserved compressed SPZ2 bytes for native or GPU decoders. */
|
|
43
43
|
compressedBytes?: Uint8Array;
|
|
44
|
-
/** Result returned by an injected
|
|
44
|
+
/** Result returned by an injected SPZ loader or legacy decoder, when supplied. */
|
|
45
45
|
decoded?: unknown;
|
|
46
46
|
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright vis.gl contributors
|
|
4
|
+
|
|
5
|
+
/** Serialized value types in the experimental procedural graph proposal. */
|
|
6
|
+
export type GLTFProceduralValueType =
|
|
7
|
+
| 'boolean'
|
|
8
|
+
| 'float'
|
|
9
|
+
| 'integer'
|
|
10
|
+
| 'color3'
|
|
11
|
+
| 'color4'
|
|
12
|
+
| 'vector2'
|
|
13
|
+
| 'vector3'
|
|
14
|
+
| 'vector4'
|
|
15
|
+
| 'integer2'
|
|
16
|
+
| 'integer3'
|
|
17
|
+
| 'integer4'
|
|
18
|
+
| 'matrix3x3'
|
|
19
|
+
| 'matrix4x4'
|
|
20
|
+
| 'string'
|
|
21
|
+
| 'filename';
|
|
22
|
+
|
|
23
|
+
/** Named graph port, retaining serialized connections without evaluating them. */
|
|
24
|
+
export interface GLTFProceduralPort {
|
|
25
|
+
/** Port category. */
|
|
26
|
+
nodetype: 'input' | 'output';
|
|
27
|
+
/** Declared value type. */
|
|
28
|
+
type: GLTFProceduralValueType;
|
|
29
|
+
/** Authored constant; scalar numeric arrays are retained as authored. */
|
|
30
|
+
value?: boolean | string | number | number[];
|
|
31
|
+
/** Upstream processing node index. */
|
|
32
|
+
node?: number;
|
|
33
|
+
/** Name of a graph interface input. */
|
|
34
|
+
input?: string;
|
|
35
|
+
/** Name of the selected upstream output. */
|
|
36
|
+
output?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Processing node in a procedural graph. */
|
|
40
|
+
export interface GLTFProceduralNode {
|
|
41
|
+
/** Optional display name. */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** MaterialX or custom node category; unknown categories are retained. */
|
|
44
|
+
nodetype: string;
|
|
45
|
+
/** Single output type, or multiple named outputs. */
|
|
46
|
+
type: GLTFProceduralValueType | 'multioutput';
|
|
47
|
+
/** Named input ports. */
|
|
48
|
+
inputs?: Record<string, GLTFProceduralPort>;
|
|
49
|
+
/** Named output ports. */
|
|
50
|
+
outputs: Record<string, GLTFProceduralPort>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Flat procedural graph using the draft's named-port representation. */
|
|
54
|
+
export interface GLTFProceduralGraph extends GLTFProceduralNode {
|
|
55
|
+
/** Graph category. */
|
|
56
|
+
nodetype: 'nodegraph';
|
|
57
|
+
/** Processing nodes addressed by index. */
|
|
58
|
+
nodes: GLTFProceduralNode[];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Procedural output attached to a material texture-info object. */
|
|
62
|
+
export interface GLTFProceduralBinding {
|
|
63
|
+
/** Index into the root extension's procedurals array. */
|
|
64
|
+
index: number;
|
|
65
|
+
/** Selected output name; required for graphs with multiple outputs. */
|
|
66
|
+
output?: string;
|
|
67
|
+
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/* eslint-disable camelcase */
|
|
6
6
|
|
|
7
7
|
import {ImageType} from '@loaders.gl/images';
|
|
8
|
+
import type {TextureLevel} from '@loaders.gl/core/schema';
|
|
8
9
|
import type {GLTF} from './gltf-json-schema';
|
|
9
10
|
import type {GLTFGaussianSplatPrimitive} from './gltf-ext-gaussian-splatting-schema';
|
|
10
11
|
import type {GLTFSpatialAudio} from './gltf-mpeg-audio-spatial-schema';
|
|
@@ -50,6 +51,13 @@ export type GLTFExternalFile = GLTFExternalBuffer & {
|
|
|
50
51
|
|
|
51
52
|
type GLTFExternalImage =
|
|
52
53
|
| ImageType
|
|
54
|
+
| {
|
|
55
|
+
compressed: true;
|
|
56
|
+
mipmaps: true;
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
data: TextureLevel[];
|
|
60
|
+
}
|
|
53
61
|
| {
|
|
54
62
|
compressed: true;
|
|
55
63
|
mipmaps: false;
|
|
@@ -539,6 +539,11 @@ export const GLTFEXTTextureWebpSchema = z
|
|
|
539
539
|
.object({source: GLTFIdSchema, extras: z.unknown().optional()})
|
|
540
540
|
.catchall(z.unknown());
|
|
541
541
|
|
|
542
|
+
/** Zod schema for the EXT_texture_avif texture source extension. */
|
|
543
|
+
export const GLTFEXTTextureAvifSchema = z
|
|
544
|
+
.object({source: GLTFIdSchema, extras: z.unknown().optional()})
|
|
545
|
+
.catchall(z.unknown());
|
|
546
|
+
|
|
542
547
|
/** Zod schema for the MSFT_texture_dds extension. */
|
|
543
548
|
export const GLTFMSFTTextureDdsSchema = z
|
|
544
549
|
.object({source: GLTFIdSchema, extras: z.unknown().optional()})
|
package/src/gltf/schema.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './gltf/gltf-loader-types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './gltf/gltf-loader.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './gltf/gltf-source.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './gltf/gltf-writer.js';
|
package/src/index.ts
CHANGED
|
@@ -15,3 +15,11 @@ export {GLTFWriter} from './gltf/gltf-writer';
|
|
|
15
15
|
export {GLBLoader} from './gltf/glb-loader-types';
|
|
16
16
|
export {GLBWriter} from './gltf/glb-writer';
|
|
17
17
|
export {GLTFFormat, GLBFormat} from './gltf/gltf-format';
|
|
18
|
+
|
|
19
|
+
export {DracoLoader, DracoWorkerLoader} from './draco/draco-loader-types';
|
|
20
|
+
export {DracoFormat} from './draco/draco-format';
|
|
21
|
+
export type * from './draco/index';
|
|
22
|
+
export {DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS} from './draco/draco-libraries';
|
|
23
|
+
|
|
24
|
+
export {MaterialXLoader} from './materialx-loader-types';
|
|
25
|
+
export type {MaterialXDocument, MaterialXElement} from './materialx/parse-materialx';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# MaterialX parser
|
|
2
|
+
|
|
3
|
+
Native XML parsing implementation for browsers and Node.js. `parseMaterialX` returns an ordered element tree retaining string attributes, named connections, custom node categories and unresolved includes. It rejects malformed XML, document types, and missing or unsupported major versions.
|
|
4
|
+
|
|
5
|
+
This implementation does not resolve libraries, validate MaterialX node signatures, evaluate graphs, or generate shaders. The scene package exports MaterialXLoader with a materialx-loader implementation subpath.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {parseXMLSync} from '@loaders.gl/documents/xml-parser';
|
|
2
|
+
// loaders.gl
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
// Copyright vis.gl contributors
|
|
5
|
+
|
|
6
|
+
/** Authored MaterialX element, including extension categories and connection attributes. */
|
|
7
|
+
export interface MaterialXElement {
|
|
8
|
+
/** XML element category, for example nodegraph, input, or multiply. */
|
|
9
|
+
category: string;
|
|
10
|
+
/** Authored string attributes; values are not coerced or evaluated. */
|
|
11
|
+
attributes: Record<string, string>;
|
|
12
|
+
/** Child elements in document order. */
|
|
13
|
+
children: MaterialXElement[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Parsed MaterialX document. External includes remain unresolved. */
|
|
17
|
+
export interface MaterialXDocument {
|
|
18
|
+
/** Authored MaterialX version. */
|
|
19
|
+
version: string;
|
|
20
|
+
/** MaterialX root element. */
|
|
21
|
+
root: MaterialXElement;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Parses a MaterialX XML document using the native documents XML parser.
|
|
26
|
+
* Preserves unknown categories, connection references and value strings.
|
|
27
|
+
* Does not load includes, resolve node definitions, or evaluate shader graphs.
|
|
28
|
+
*/
|
|
29
|
+
export function parseMaterialX(text: string): MaterialXDocument {
|
|
30
|
+
if (/<!DOCTYPE|<!ENTITY/i.test(text)) {
|
|
31
|
+
throw new Error('MaterialX: document types and entity declarations are unsupported.');
|
|
32
|
+
}
|
|
33
|
+
let element: OrderedXMLElement;
|
|
34
|
+
try {
|
|
35
|
+
element = parseXMLSync(text, {
|
|
36
|
+
preserveOrder: true,
|
|
37
|
+
parseAttributeValue: false,
|
|
38
|
+
trimValues: false
|
|
39
|
+
});
|
|
40
|
+
} catch (error) {
|
|
41
|
+
throw new Error('MaterialX: malformed XML.', {cause: error});
|
|
42
|
+
}
|
|
43
|
+
if (element.name !== 'materialx') {
|
|
44
|
+
throw new Error('MaterialX: expected a materialx root element.');
|
|
45
|
+
}
|
|
46
|
+
const version = element.attributes.version;
|
|
47
|
+
if (!version || !/^1\.\d+$/.test(version)) {
|
|
48
|
+
throw new Error('MaterialX: expected a MaterialX 1.x version.');
|
|
49
|
+
}
|
|
50
|
+
return {version, root: parseElement(element, 0)};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Ordered element representation returned by the XML parser. */
|
|
54
|
+
interface OrderedXMLElement {
|
|
55
|
+
/** XML element name. */
|
|
56
|
+
name: string;
|
|
57
|
+
/** Authored string attributes. */
|
|
58
|
+
attributes: Record<string, string>;
|
|
59
|
+
/** Ordered child elements. */
|
|
60
|
+
children: OrderedXMLElement[];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Converts the native XML tree to MaterialX categories. */
|
|
64
|
+
function parseElement(element: OrderedXMLElement, depth: number): MaterialXElement {
|
|
65
|
+
return {
|
|
66
|
+
category: element.name,
|
|
67
|
+
attributes: element.attributes,
|
|
68
|
+
children: element.children.map(child => parseElement(child, depth + 1))
|
|
69
|
+
};
|
|
70
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
/** Typed connection to one node output. */
|
|
5
|
+
export interface ProceduralConnection {
|
|
6
|
+
/** Stable identifier of the upstream node. */
|
|
7
|
+
node: string;
|
|
8
|
+
/** Name of its output port. */
|
|
9
|
+
output: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Input supplied by a constant or another node. */
|
|
13
|
+
export interface ProceduralInput {
|
|
14
|
+
/** Declared value type. */
|
|
15
|
+
type: string;
|
|
16
|
+
/** Constant value, retained without implicit conversion. */
|
|
17
|
+
value?: unknown;
|
|
18
|
+
/** Optional upstream connection. */
|
|
19
|
+
connection?: ProceduralConnection;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Renderer-independent operation with explicitly declared ports. */
|
|
23
|
+
export interface ProceduralNode {
|
|
24
|
+
/** Stable node identifier, unique within the graph. */
|
|
25
|
+
id: string;
|
|
26
|
+
/** Operation identifier for a downstream implementation registry. */
|
|
27
|
+
operation: string;
|
|
28
|
+
/** Named inputs. */
|
|
29
|
+
inputs: Record<string, ProceduralInput>;
|
|
30
|
+
/** Named output value types. */
|
|
31
|
+
outputs: Record<string, string>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Graph contract independent of GPU resources or shader languages. */
|
|
35
|
+
export interface ProceduralGraph {
|
|
36
|
+
/** Nodes in authored order. */
|
|
37
|
+
nodes: ProceduralNode[];
|
|
38
|
+
/** Named graph outputs and their upstream connections. */
|
|
39
|
+
outputs: Record<string, ProceduralConnection>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Validates explicit references and exact port types, returning dependency-first nodes.
|
|
44
|
+
* Does not infer conversions, resolve MaterialX definitions, or evaluate operations.
|
|
45
|
+
*/
|
|
46
|
+
export function orderProceduralGraph(graph: ProceduralGraph): ProceduralNode[] {
|
|
47
|
+
const nodes = new Map<string, ProceduralNode>();
|
|
48
|
+
for (const node of graph.nodes) {
|
|
49
|
+
if (!node.id || nodes.has(node.id))
|
|
50
|
+
throw new Error('Procedural graph: duplicate or empty node ID.');
|
|
51
|
+
nodes.set(node.id, node);
|
|
52
|
+
}
|
|
53
|
+
const dependencies = new Map<string, Set<string>>();
|
|
54
|
+
const dependents = new Map<string, string[]>();
|
|
55
|
+
for (const node of graph.nodes) {
|
|
56
|
+
const upstream = new Set<string>();
|
|
57
|
+
for (const input of Object.values(node.inputs)) {
|
|
58
|
+
if (!input.connection) continue;
|
|
59
|
+
if (Object.hasOwn(input, 'value'))
|
|
60
|
+
throw new Error('Procedural graph: connected input also has a value.');
|
|
61
|
+
const source = resolveOutput(input.connection);
|
|
62
|
+
if (source.outputs[input.connection.output] !== input.type) {
|
|
63
|
+
throw new Error('Procedural graph: incompatible connection types.');
|
|
64
|
+
}
|
|
65
|
+
upstream.add(source.id);
|
|
66
|
+
}
|
|
67
|
+
dependencies.set(node.id, upstream);
|
|
68
|
+
for (const identifier of upstream) {
|
|
69
|
+
const downstream = dependents.get(identifier) || [];
|
|
70
|
+
downstream.push(node.id);
|
|
71
|
+
dependents.set(identifier, downstream);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
for (const output of Object.values(graph.outputs)) resolveOutput(output);
|
|
75
|
+
const ordered = graph.nodes.filter(node => dependencies.get(node.id)!.size === 0);
|
|
76
|
+
for (let index = 0; index < ordered.length; index++) {
|
|
77
|
+
for (const identifier of dependents.get(ordered[index].id) || []) {
|
|
78
|
+
const upstream = dependencies.get(identifier)!;
|
|
79
|
+
upstream.delete(ordered[index].id);
|
|
80
|
+
if (!upstream.size) ordered.push(nodes.get(identifier)!);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (ordered.length !== graph.nodes.length) throw new Error('Procedural graph: cycle detected.');
|
|
84
|
+
return ordered;
|
|
85
|
+
|
|
86
|
+
/** Resolves an explicitly named output without accepting inherited properties. */
|
|
87
|
+
function resolveOutput(connection: ProceduralConnection): ProceduralNode {
|
|
88
|
+
const node = nodes.get(connection.node);
|
|
89
|
+
if (!node || !Object.hasOwn(node.outputs, connection.output)) {
|
|
90
|
+
throw new Error('Procedural graph: missing node or output.');
|
|
91
|
+
}
|
|
92
|
+
return node;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
import type {MaterialXDocument} from './materialx/parse-materialx';
|
|
4
|
+
|
|
5
|
+
/** Loads the parser-bearing MaterialX implementation. */
|
|
6
|
+
async function preload() {
|
|
7
|
+
const {MaterialXLoaderWithParser} = await import('@loaders.gl/scene/materialx-loader');
|
|
8
|
+
return MaterialXLoaderWithParser;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Metadata-only loader for MaterialX XML documents. */
|
|
12
|
+
export const MaterialXLoader = {
|
|
13
|
+
name: 'MaterialX',
|
|
14
|
+
id: 'materialx',
|
|
15
|
+
module: 'scene',
|
|
16
|
+
version: 'latest',
|
|
17
|
+
extensions: ['mtlx'],
|
|
18
|
+
mimeTypes: ['application/xml'],
|
|
19
|
+
text: true,
|
|
20
|
+
dataType: null as unknown as MaterialXDocument,
|
|
21
|
+
batchType: null as never,
|
|
22
|
+
options: {},
|
|
23
|
+
preload
|
|
24
|
+
} as const;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
import {MaterialXLoader} from './materialx-loader-types';
|
|
4
|
+
import {parseMaterialX} from './materialx/parse-materialx';
|
|
5
|
+
|
|
6
|
+
const {preload: _preload, ...metadata} = MaterialXLoader;
|
|
7
|
+
|
|
8
|
+
/** Parser-bearing loader for MaterialX XML, using the native XML parser. */
|
|
9
|
+
export const MaterialXLoaderWithParser = {
|
|
10
|
+
...metadata,
|
|
11
|
+
parse: async (data: ArrayBuffer) => parseMaterialX(new TextDecoder().decode(data)),
|
|
12
|
+
parseSync: (data: ArrayBuffer) => parseMaterialX(new TextDecoder().decode(data)),
|
|
13
|
+
parseText: async (text: string) => parseMaterialX(text),
|
|
14
|
+
parseTextSync: parseMaterialX
|
|
15
|
+
} as const;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './obj/mtl-loader-types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './obj/mtl-loader.js';
|
|
@@ -18,7 +18,7 @@ export type MTLLoaderOptions = LoaderOptions & {
|
|
|
18
18
|
* Preloads the parser-bearing MTL loader implementation.
|
|
19
19
|
*/
|
|
20
20
|
async function preload() {
|
|
21
|
-
const {MTLLoaderWithParser} = await import('@loaders.gl/scene/
|
|
21
|
+
const {MTLLoaderWithParser} = await import('@loaders.gl/scene/mtl-loader');
|
|
22
22
|
return MTLLoaderWithParser;
|
|
23
23
|
}
|
|
24
24
|
|
package/src/obj/mtl-loader.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/core/loader-utils';
|
|
6
6
|
import type {MTLMaterial, ParseMTLOptions} from './lib/parse-mtl';
|
|
7
7
|
import {parseMTL} from './lib/parse-mtl';
|
|
8
|
-
import {
|
|
8
|
+
import {MTLLoader as MTLWorkerLoaderMetadata} from './mtl-loader-types';
|
|
9
9
|
import {MTLLoader as MTLLoaderMetadata} from './mtl-loader-types';
|
|
10
10
|
|
|
11
11
|
const {preload: _MTLWorkerLoaderPreload, ...MTLWorkerLoaderMetadataWithoutPreload} =
|
|
@@ -41,7 +41,7 @@ export type OBJParsedBatch = OBJMeshBatch | ArrowTableBatch;
|
|
|
41
41
|
* Preloads the parser-bearing OBJ loader implementation.
|
|
42
42
|
*/
|
|
43
43
|
async function preload() {
|
|
44
|
-
const {OBJLoaderWithParser} = await import('@loaders.gl/scene/obj
|
|
44
|
+
const {OBJLoaderWithParser} = await import('@loaders.gl/scene/obj-loader');
|
|
45
45
|
return OBJLoaderWithParser;
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './obj/obj-loader-types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './obj/obj-loader.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './obj/obj-writer.js';
|
|
@@ -11,7 +11,7 @@ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
|
11
11
|
|
|
12
12
|
/** Loads the parser-bearing USD loader implementation. */
|
|
13
13
|
async function preload() {
|
|
14
|
-
const {USDLoaderWithParser} = await import('@loaders.gl/scene/usd
|
|
14
|
+
const {USDLoaderWithParser} = await import('@loaders.gl/scene/usd-loader');
|
|
15
15
|
return USDLoaderWithParser;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usd/usd-loader-types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usd/usd-loader.js';
|