@aura3d/assets 1.0.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/README.md +17 -0
- package/dist/AdvancedAssetCorpus.d.ts +124 -0
- package/dist/AdvancedAssetCorpus.d.ts.map +1 -0
- package/dist/AdvancedAssetCorpus.js +266 -0
- package/dist/AdvancedAssetCorpus.js.map +1 -0
- package/dist/AssetBundleCacheFixtures.d.ts +62 -0
- package/dist/AssetBundleCacheFixtures.d.ts.map +1 -0
- package/dist/AssetBundleCacheFixtures.js +222 -0
- package/dist/AssetBundleCacheFixtures.js.map +1 -0
- package/dist/AssetCache.d.ts +21 -0
- package/dist/AssetCache.d.ts.map +1 -0
- package/dist/AssetCache.js +54 -0
- package/dist/AssetCache.js.map +1 -0
- package/dist/AssetCompatibility.d.ts +54 -0
- package/dist/AssetCompatibility.d.ts.map +1 -0
- package/dist/AssetCompatibility.js +122 -0
- package/dist/AssetCompatibility.js.map +1 -0
- package/dist/AssetCorpus.d.ts +88 -0
- package/dist/AssetCorpus.d.ts.map +1 -0
- package/dist/AssetCorpus.js +215 -0
- package/dist/AssetCorpus.js.map +1 -0
- package/dist/AssetDependencyGraph.d.ts +12 -0
- package/dist/AssetDependencyGraph.d.ts.map +1 -0
- package/dist/AssetDependencyGraph.js +66 -0
- package/dist/AssetDependencyGraph.js.map +1 -0
- package/dist/AssetHandle.d.ts +26 -0
- package/dist/AssetHandle.d.ts.map +1 -0
- package/dist/AssetHandle.js +53 -0
- package/dist/AssetHandle.js.map +1 -0
- package/dist/AssetImportPreflight.d.ts +43 -0
- package/dist/AssetImportPreflight.d.ts.map +1 -0
- package/dist/AssetImportPreflight.js +117 -0
- package/dist/AssetImportPreflight.js.map +1 -0
- package/dist/AssetInspection.d.ts +183 -0
- package/dist/AssetInspection.d.ts.map +1 -0
- package/dist/AssetInspection.js +397 -0
- package/dist/AssetInspection.js.map +1 -0
- package/dist/AssetLoader.d.ts +26 -0
- package/dist/AssetLoader.d.ts.map +1 -0
- package/dist/AssetLoader.js +12 -0
- package/dist/AssetLoader.js.map +1 -0
- package/dist/AssetManager.d.ts +37 -0
- package/dist/AssetManager.d.ts.map +1 -0
- package/dist/AssetManager.js +161 -0
- package/dist/AssetManager.js.map +1 -0
- package/dist/AssetRegistry.d.ts +10 -0
- package/dist/AssetRegistry.d.ts.map +1 -0
- package/dist/AssetRegistry.js +34 -0
- package/dist/AssetRegistry.js.map +1 -0
- package/dist/AssetRenderDefaults.d.ts +13 -0
- package/dist/AssetRenderDefaults.d.ts.map +1 -0
- package/dist/AssetRenderDefaults.js +23 -0
- package/dist/AssetRenderDefaults.js.map +1 -0
- package/dist/AudioLoader.d.ts +17 -0
- package/dist/AudioLoader.d.ts.map +1 -0
- package/dist/AudioLoader.js +23 -0
- package/dist/AudioLoader.js.map +1 -0
- package/dist/BlenderExportValidation.d.ts +64 -0
- package/dist/BlenderExportValidation.d.ts.map +1 -0
- package/dist/BlenderExportValidation.js +143 -0
- package/dist/BlenderExportValidation.js.map +1 -0
- package/dist/CarConceptMaterialStability.d.ts +28 -0
- package/dist/CarConceptMaterialStability.d.ts.map +1 -0
- package/dist/CarConceptMaterialStability.js +1308 -0
- package/dist/CarConceptMaterialStability.js.map +1 -0
- package/dist/EXRLoader.d.ts +2 -0
- package/dist/EXRLoader.d.ts.map +1 -0
- package/dist/EXRLoader.js +2 -0
- package/dist/EXRLoader.js.map +1 -0
- package/dist/ExternalParityGLTFCorpus.d.ts +39 -0
- package/dist/ExternalParityGLTFCorpus.d.ts.map +1 -0
- package/dist/ExternalParityGLTFCorpus.js +32 -0
- package/dist/ExternalParityGLTFCorpus.js.map +1 -0
- package/dist/GLTFAnimationRuntime.d.ts +243 -0
- package/dist/GLTFAnimationRuntime.d.ts.map +1 -0
- package/dist/GLTFAnimationRuntime.js +954 -0
- package/dist/GLTFAnimationRuntime.js.map +1 -0
- package/dist/GLTFCompressionDecoders.d.ts +42 -0
- package/dist/GLTFCompressionDecoders.d.ts.map +1 -0
- package/dist/GLTFCompressionDecoders.js +99 -0
- package/dist/GLTFCompressionDecoders.js.map +1 -0
- package/dist/GLTFExtensionSupport.d.ts +33 -0
- package/dist/GLTFExtensionSupport.d.ts.map +1 -0
- package/dist/GLTFExtensionSupport.js +85 -0
- package/dist/GLTFExtensionSupport.js.map +1 -0
- package/dist/GLTFLoader.d.ts +361 -0
- package/dist/GLTFLoader.d.ts.map +1 -0
- package/dist/GLTFLoader.js +2735 -0
- package/dist/GLTFLoader.js.map +1 -0
- package/dist/GLTFRenderResources.d.ts +162 -0
- package/dist/GLTFRenderResources.d.ts.map +1 -0
- package/dist/GLTFRenderResources.js +1684 -0
- package/dist/GLTFRenderResources.js.map +1 -0
- package/dist/HDRLoader.d.ts +2 -0
- package/dist/HDRLoader.d.ts.map +1 -0
- package/dist/HDRLoader.js +2 -0
- package/dist/HDRLoader.js.map +1 -0
- package/dist/ImageLoader.d.ts +15 -0
- package/dist/ImageLoader.d.ts.map +1 -0
- package/dist/ImageLoader.js +36 -0
- package/dist/ImageLoader.js.map +1 -0
- package/dist/ImportPipeline.d.ts +39 -0
- package/dist/ImportPipeline.d.ts.map +1 -0
- package/dist/ImportPipeline.js +105 -0
- package/dist/ImportPipeline.js.map +1 -0
- package/dist/KTX2BasisTextureTranscoder.d.ts +9 -0
- package/dist/KTX2BasisTextureTranscoder.d.ts.map +1 -0
- package/dist/KTX2BasisTextureTranscoder.js +178 -0
- package/dist/KTX2BasisTextureTranscoder.js.map +1 -0
- package/dist/LoadContext.d.ts +20 -0
- package/dist/LoadContext.d.ts.map +1 -0
- package/dist/LoadContext.js +42 -0
- package/dist/LoadContext.js.map +1 -0
- package/dist/MaterialLoader.d.ts +17 -0
- package/dist/MaterialLoader.d.ts.map +1 -0
- package/dist/MaterialLoader.js +138 -0
- package/dist/MaterialLoader.js.map +1 -0
- package/dist/MeshOptimization.d.ts +20 -0
- package/dist/MeshOptimization.d.ts.map +1 -0
- package/dist/MeshOptimization.js +65 -0
- package/dist/MeshOptimization.js.map +1 -0
- package/dist/OBJLoader.d.ts +13 -0
- package/dist/OBJLoader.d.ts.map +1 -0
- package/dist/OBJLoader.js +492 -0
- package/dist/OBJLoader.js.map +1 -0
- package/dist/SceneAnalysisFixtures.d.ts +100 -0
- package/dist/SceneAnalysisFixtures.d.ts.map +1 -0
- package/dist/SceneAnalysisFixtures.js +331 -0
- package/dist/SceneAnalysisFixtures.js.map +1 -0
- package/dist/SceneLoader.d.ts +27 -0
- package/dist/SceneLoader.d.ts.map +1 -0
- package/dist/SceneLoader.js +40 -0
- package/dist/SceneLoader.js.map +1 -0
- package/dist/ShaderLoader.d.ts +12 -0
- package/dist/ShaderLoader.d.ts.map +1 -0
- package/dist/ShaderLoader.js +18 -0
- package/dist/ShaderLoader.js.map +1 -0
- package/dist/TextureLoader.d.ts +16 -0
- package/dist/TextureLoader.d.ts.map +1 -0
- package/dist/TextureLoader.js +17 -0
- package/dist/TextureLoader.js.map +1 -0
- package/dist/TexturePipeline.d.ts +24 -0
- package/dist/TexturePipeline.d.ts.map +1 -0
- package/dist/TexturePipeline.js +64 -0
- package/dist/TexturePipeline.js.map +1 -0
- package/dist/TextureStreaming.d.ts +10 -0
- package/dist/TextureStreaming.d.ts.map +1 -0
- package/dist/TextureStreaming.js +11 -0
- package/dist/TextureStreaming.js.map +1 -0
- package/dist/WorkerAssetJobs.d.ts +18 -0
- package/dist/WorkerAssetJobs.d.ts.map +1 -0
- package/dist/WorkerAssetJobs.js +37 -0
- package/dist/WorkerAssetJobs.js.map +1 -0
- package/dist/advanced-gallery/index.d.ts +3 -0
- package/dist/advanced-gallery/index.d.ts.map +1 -0
- package/dist/advanced-gallery/index.js +2 -0
- package/dist/advanced-gallery/index.js.map +1 -0
- package/dist/asset-corpus/GLTFSceneLoader.d.ts +3 -0
- package/dist/asset-corpus/GLTFSceneLoader.d.ts.map +1 -0
- package/dist/asset-corpus/GLTFSceneLoader.js +2 -0
- package/dist/asset-corpus/GLTFSceneLoader.js.map +1 -0
- package/dist/asset-corpus/ProductionAssetCorpus.d.ts +89 -0
- package/dist/asset-corpus/ProductionAssetCorpus.d.ts.map +1 -0
- package/dist/asset-corpus/ProductionAssetCorpus.js +116 -0
- package/dist/asset-corpus/ProductionAssetCorpus.js.map +1 -0
- package/dist/asset-corpus/ProductionAssetPipeline.d.ts +3 -0
- package/dist/asset-corpus/ProductionAssetPipeline.d.ts.map +1 -0
- package/dist/asset-corpus/ProductionAssetPipeline.js +3 -0
- package/dist/asset-corpus/ProductionAssetPipeline.js.map +1 -0
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts +65 -0
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -0
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.js +110 -0
- package/dist/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -0
- package/dist/asset-corpus/ProductionHDRTextureLoader.d.ts +8 -0
- package/dist/asset-corpus/ProductionHDRTextureLoader.d.ts.map +1 -0
- package/dist/asset-corpus/ProductionHDRTextureLoader.js +2 -0
- package/dist/asset-corpus/ProductionHDRTextureLoader.js.map +1 -0
- package/dist/asset-corpus/ProductionKTX2TextureLoader.d.ts +7 -0
- package/dist/asset-corpus/ProductionKTX2TextureLoader.d.ts.map +1 -0
- package/dist/asset-corpus/ProductionKTX2TextureLoader.js +2 -0
- package/dist/asset-corpus/ProductionKTX2TextureLoader.js.map +1 -0
- package/dist/asset-corpus/ProductionTextureLoader.d.ts +7 -0
- package/dist/asset-corpus/ProductionTextureLoader.d.ts.map +1 -0
- package/dist/asset-corpus/ProductionTextureLoader.js +2 -0
- package/dist/asset-corpus/ProductionTextureLoader.js.map +1 -0
- package/dist/asset-corpus/index.d.ts +10 -0
- package/dist/asset-corpus/index.d.ts.map +1 -0
- package/dist/asset-corpus/index.js +8 -0
- package/dist/asset-corpus/index.js.map +1 -0
- package/dist/browser-index.d.ts +48 -0
- package/dist/browser-index.d.ts.map +1 -0
- package/dist/browser-index.js +26 -0
- package/dist/browser-index.js.map +1 -0
- package/dist/createRenderableScene.d.ts +23 -0
- package/dist/createRenderableScene.d.ts.map +1 -0
- package/dist/createRenderableScene.js +94 -0
- package/dist/createRenderableScene.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/loadRenderableAsset.d.ts +16 -0
- package/dist/loadRenderableAsset.d.ts.map +1 -0
- package/dist/loadRenderableAsset.js +50 -0
- package/dist/loadRenderableAsset.js.map +1 -0
- package/dist/loaders/CubeTextureLoader.d.ts +4 -0
- package/dist/loaders/CubeTextureLoader.d.ts.map +1 -0
- package/dist/loaders/CubeTextureLoader.js +9 -0
- package/dist/loaders/CubeTextureLoader.js.map +1 -0
- package/dist/loaders/EXRLoader.d.ts +4 -0
- package/dist/loaders/EXRLoader.d.ts.map +1 -0
- package/dist/loaders/EXRLoader.js +10 -0
- package/dist/loaders/EXRLoader.js.map +1 -0
- package/dist/loaders/HDRLoader.d.ts +4 -0
- package/dist/loaders/HDRLoader.d.ts.map +1 -0
- package/dist/loaders/HDRLoader.js +7 -0
- package/dist/loaders/HDRLoader.js.map +1 -0
- package/dist/loaders/KTX2Loader.d.ts +4 -0
- package/dist/loaders/KTX2Loader.d.ts.map +1 -0
- package/dist/loaders/KTX2Loader.js +7 -0
- package/dist/loaders/KTX2Loader.js.map +1 -0
- package/dist/loaders/LoaderDiagnostics.d.ts +18 -0
- package/dist/loaders/LoaderDiagnostics.d.ts.map +1 -0
- package/dist/loaders/LoaderDiagnostics.js +18 -0
- package/dist/loaders/LoaderDiagnostics.js.map +1 -0
- package/dist/loaders/MTLLoader.d.ts +10 -0
- package/dist/loaders/MTLLoader.d.ts.map +1 -0
- package/dist/loaders/MTLLoader.js +14 -0
- package/dist/loaders/MTLLoader.js.map +1 -0
- package/dist/loaders/OBJLoader.d.ts +12 -0
- package/dist/loaders/OBJLoader.d.ts.map +1 -0
- package/dist/loaders/OBJLoader.js +16 -0
- package/dist/loaders/OBJLoader.js.map +1 -0
- package/dist/loaders/TextureLoader.d.ts +6 -0
- package/dist/loaders/TextureLoader.d.ts.map +1 -0
- package/dist/loaders/TextureLoader.js +11 -0
- package/dist/loaders/TextureLoader.js.map +1 -0
- package/dist/loaders/ThreeCompatGLTFLoader.d.ts +10 -0
- package/dist/loaders/ThreeCompatGLTFLoader.d.ts.map +1 -0
- package/dist/loaders/ThreeCompatGLTFLoader.js +13 -0
- package/dist/loaders/ThreeCompatGLTFLoader.js.map +1 -0
- package/dist/loaders/index.d.ts +15 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +10 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/threejs-compatibility/ThreeCompatAssetProvenance.d.ts +34 -0
- package/dist/threejs-compatibility/ThreeCompatAssetProvenance.d.ts.map +1 -0
- package/dist/threejs-compatibility/ThreeCompatAssetProvenance.js +16 -0
- package/dist/threejs-compatibility/ThreeCompatAssetProvenance.js.map +1 -0
- package/dist/threejs-compatibility/ThreeCompatAssetRegistry.d.ts +29 -0
- package/dist/threejs-compatibility/ThreeCompatAssetRegistry.d.ts.map +1 -0
- package/dist/threejs-compatibility/ThreeCompatAssetRegistry.js +33 -0
- package/dist/threejs-compatibility/ThreeCompatAssetRegistry.js.map +1 -0
- package/dist/threejs-example-parity/index.d.ts +20 -0
- package/dist/threejs-example-parity/index.d.ts.map +1 -0
- package/dist/threejs-example-parity/index.js +218 -0
- package/dist/threejs-example-parity/index.js.map +1 -0
- package/package.json +23 -0
- package/src/AdvancedAssetCorpus.ts +454 -0
- package/src/AssetBundleCacheFixtures.ts +290 -0
- package/src/AssetCache.ts +76 -0
- package/src/AssetCompatibility.ts +224 -0
- package/src/AssetCorpus.ts +329 -0
- package/src/AssetDependencyGraph.ts +83 -0
- package/src/AssetHandle.ts +74 -0
- package/src/AssetImportPreflight.ts +179 -0
- package/src/AssetInspection.ts +706 -0
- package/src/AssetLoader.ts +36 -0
- package/src/AssetManager.ts +211 -0
- package/src/AssetRegistry.ts +44 -0
- package/src/AssetRenderDefaults.ts +36 -0
- package/src/AudioLoader.ts +41 -0
- package/src/BlenderExportValidation.ts +227 -0
- package/src/CarConceptMaterialStability.ts +1405 -0
- package/src/EXRLoader.ts +1 -0
- package/src/ExternalParityGLTFCorpus.ts +65 -0
- package/src/GLTFAnimationRuntime.ts +1221 -0
- package/src/GLTFCompressionDecoders.ts +190 -0
- package/src/GLTFExtensionSupport.ts +138 -0
- package/src/GLTFLoader.ts +4001 -0
- package/src/GLTFRenderResources.ts +2105 -0
- package/src/HDRLoader.ts +1 -0
- package/src/ImageLoader.ts +52 -0
- package/src/ImportPipeline.ts +148 -0
- package/src/KTX2BasisTextureTranscoder.ts +224 -0
- package/src/LoadContext.ts +60 -0
- package/src/MaterialLoader.ts +166 -0
- package/src/MeshOptimization.ts +93 -0
- package/src/OBJLoader.ts +551 -0
- package/src/SceneAnalysisFixtures.ts +438 -0
- package/src/SceneLoader.ts +62 -0
- package/src/ShaderLoader.ts +30 -0
- package/src/TextureLoader.ts +30 -0
- package/src/TexturePipeline.ts +96 -0
- package/src/TextureStreaming.ts +20 -0
- package/src/WorkerAssetJobs.ts +56 -0
- package/src/advanced-gallery/index.ts +18 -0
- package/src/asset-corpus/GLTFSceneLoader.ts +9 -0
- package/src/asset-corpus/ProductionAssetCorpus.ts +230 -0
- package/src/asset-corpus/ProductionAssetPipeline.ts +5 -0
- package/src/asset-corpus/ProductionGLTFRenderPipeline.ts +182 -0
- package/src/asset-corpus/ProductionHDRTextureLoader.ts +2 -0
- package/src/asset-corpus/ProductionKTX2TextureLoader.ts +2 -0
- package/src/asset-corpus/ProductionTextureLoader.ts +2 -0
- package/src/asset-corpus/index.ts +29 -0
- package/src/browser-index.ts +224 -0
- package/src/createRenderableScene.ts +128 -0
- package/src/index.ts +317 -0
- package/src/loadRenderableAsset.ts +67 -0
- package/src/loaders/CubeTextureLoader.ts +8 -0
- package/src/loaders/EXRLoader.ts +10 -0
- package/src/loaders/HDRLoader.ts +7 -0
- package/src/loaders/KTX2Loader.ts +7 -0
- package/src/loaders/LoaderDiagnostics.ts +36 -0
- package/src/loaders/MTLLoader.ts +20 -0
- package/src/loaders/OBJLoader.ts +24 -0
- package/src/loaders/TextureLoader.ts +14 -0
- package/src/loaders/ThreeCompatGLTFLoader.ts +19 -0
- package/src/loaders/index.ts +14 -0
- package/src/threejs-compatibility/ThreeCompatAssetProvenance.ts +51 -0
- package/src/threejs-compatibility/ThreeCompatAssetRegistry.ts +61 -0
- package/src/threejs-example-parity/index.ts +262 -0
- package/tests/assets.test.ts +311 -0
- package/tsconfig.json +7 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KTX2BasisTextureTranscoder.js","sourceRoot":"","sources":["../../../../packages/assets/src/KTX2BasisTextureTranscoder.ts"],"names":[],"mappings":"AAqBA,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAC5D,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAoC,EACpC,UAA6C,EAAE;IAE/C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC;IAC/D,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/F,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS,CAAC,IAAI;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,KAAK,KAAK;QACtD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,gBAAgB,CAAC,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAE7C,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,UAAU,EAAE,QAAQ;QACpB,MAAM;QACN,SAAS,EAAE,gBAAgB;QAC3B,iBAAiB,EAAE,cAAc;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA4C;IACpE,MAAM,WAAW,GAAgC,EAAE,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM;QACpE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,MAAmB,EACnB,YAAmC,EACnC,aAAkD;IAElD,MAAM,6BAA6B,EAAE,CAAC;IACtC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;QACvD,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,mBAAmB,EAAE;QAC1B,OAAO,EAAE,uBAAuB,EAAE;QAClC,GAAG,aAAa;QAChB,GAAG,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ;YACrE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,uBAAuB,EAAE,EAAE,GAAI,aAAa,CAAC,OAAmC,EAAE,EAAE;YACtG,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,EAAE;YACL,GAAG,YAAY,CAAC,aAAa,CAAC;YAC9B,eAAe,EAAE,MAAM;YACvB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC;SAC3C;KACF,CAA2B,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC7D,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,2BAA2B,CAAC;IAC9D,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IAChF,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,8CAA8C,CAAC;IACxF,OAAO;QACL,kBAAkB,EAAE,GAAG,OAAO,mBAAmB;QACjD,oBAAoB,EAAE,GAAG,OAAO,qBAAqB;QACrD,qBAAqB,EAAE,GAAG,OAAO,sBAAsB;QACvD,uBAAuB,EAAE,GAAG,OAAO,wBAAwB;KAC5D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzC,MAAM,CAAC,kBAAkB,CAAC;YAC1B,MAAM,CAAC,sBAAsB,CAAC;SAC/B,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uDAAuD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,aAAkD;IACtE,MAAM,KAAK,GAAG,aAAa,EAAE,KAAK,CAAC;IACnC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA6B;IACzD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,iBAAiB;YACpB,OAAO,MAAM,CAAC;QAChB,KAAK,gBAAgB;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,qBAAqB;YACxB,OAAO,UAAU,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAA6B;IACpD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,iBAAiB,CAAC;QACvB,KAAK,gBAAgB,CAAC;QACtB,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAoC;IACzD,IAAI,KAAK,YAAY,WAAW;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,6BAA6B;IAC1C,IAAI,kBAAkB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO;IAC5F,MAAM,QAAQ,GAAI,UAKhB,CAAC,OAAO,IAAI,EAAE,CAAC;IACjB,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAC/D,kBAAkB,GAAG,IAAI,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjF,gBAAgB,CAAoC,kBAAkB,CAAC;QACvE,gBAAgB,CAA6B,WAAW,CAAC;QACzD,gBAAgB,CAA+B,aAAa,CAAC;QAC7D,gBAAgB,CAA2B,SAAS,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAU,EAAE;QACzD,IAAI,WAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAED,UAAgE,CAAC,OAAO,GAAG;QAC1E,GAAG,QAAQ;QACX,KAAK,CAAC,eAAe,CAAC,WAAmB;YACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,EAAa,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,eAAe,CAChC,0DAA0D,IAAI,MAAM,EACpE,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,CAC0B,CAAC;YAC1H,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YACtE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,qBAAqB,CAAC,WAAmB;YAC7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACvF,CAAC;KACF,CAAC;IACF,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAI,SAAiB;IAClD,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAe,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AssetHandle } from "./AssetHandle";
|
|
2
|
+
import type { AssetManager } from "./AssetManager";
|
|
3
|
+
export interface LoadContextOptions {
|
|
4
|
+
readonly baseUrl?: string;
|
|
5
|
+
readonly signal?: AbortSignal;
|
|
6
|
+
readonly dependencyChain?: readonly string[];
|
|
7
|
+
readonly manager?: AssetManager;
|
|
8
|
+
}
|
|
9
|
+
export declare class LoadContext {
|
|
10
|
+
readonly baseUrl: string;
|
|
11
|
+
readonly signal?: AbortSignal;
|
|
12
|
+
readonly dependencyChain: readonly string[];
|
|
13
|
+
private readonly manager?;
|
|
14
|
+
constructor(options?: LoadContextOptions);
|
|
15
|
+
resolve(url: string): string;
|
|
16
|
+
throwIfAborted(url: string): void;
|
|
17
|
+
child(url: string): LoadContext;
|
|
18
|
+
loadDependency<T = unknown>(url: string, type?: string): Promise<AssetHandle<T>>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=LoadContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadContext.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/LoadContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAe;gBAE5B,OAAO,GAAE,kBAAuB;IAO5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAY5B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMjC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IASzB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAOvF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AssetLoadError } from "./AssetLoader.js";
|
|
2
|
+
export class LoadContext {
|
|
3
|
+
baseUrl;
|
|
4
|
+
signal;
|
|
5
|
+
dependencyChain;
|
|
6
|
+
manager;
|
|
7
|
+
constructor(options = {}) {
|
|
8
|
+
this.baseUrl = options.baseUrl ?? "";
|
|
9
|
+
this.signal = options.signal;
|
|
10
|
+
this.dependencyChain = options.dependencyChain ?? [];
|
|
11
|
+
this.manager = options.manager;
|
|
12
|
+
}
|
|
13
|
+
resolve(url) {
|
|
14
|
+
if (/^(?:[a-z]+:)?\/\//i.test(url) || url.startsWith("data:") || url.startsWith("blob:")) {
|
|
15
|
+
return url;
|
|
16
|
+
}
|
|
17
|
+
if (this.baseUrl.length === 0) {
|
|
18
|
+
return url;
|
|
19
|
+
}
|
|
20
|
+
return new URL(url, this.baseUrl.endsWith("/") ? this.baseUrl : `${this.baseUrl}/`).toString();
|
|
21
|
+
}
|
|
22
|
+
throwIfAborted(url) {
|
|
23
|
+
if (this.signal?.aborted) {
|
|
24
|
+
throw new AssetLoadError("Asset load aborted", url, this.dependencyChain, this.signal.reason);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
child(url) {
|
|
28
|
+
return new LoadContext({
|
|
29
|
+
baseUrl: this.baseUrl,
|
|
30
|
+
signal: this.signal,
|
|
31
|
+
manager: this.manager,
|
|
32
|
+
dependencyChain: [...this.dependencyChain, url]
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async loadDependency(url, type) {
|
|
36
|
+
if (!this.manager) {
|
|
37
|
+
throw new AssetLoadError("Cannot load dependency without an AssetManager", url, this.dependencyChain);
|
|
38
|
+
}
|
|
39
|
+
return this.manager.load(url, { type, signal: this.signal, dependencyChain: this.dependencyChain });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=LoadContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadContext.js","sourceRoot":"","sources":["../../../../packages/assets/src/LoadContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW/C,MAAM,OAAO,WAAW;IACb,OAAO,CAAS;IAChB,MAAM,CAAe;IACrB,eAAe,CAAoB;IAE3B,OAAO,CAAgB;IAExC,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzF,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjG,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,IAAI,WAAW,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAc,GAAW,EAAE,IAAa;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,gDAAgD,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACxG,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACzG,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AssetLoadRequest, AssetLoader } from "./AssetLoader";
|
|
2
|
+
import type { LoadContext } from "./LoadContext";
|
|
3
|
+
import { Material } from "@aura3d/rendering";
|
|
4
|
+
export interface MaterialDescriptorAsset {
|
|
5
|
+
readonly url: string;
|
|
6
|
+
readonly name?: string;
|
|
7
|
+
readonly model: "unlit" | "pbr";
|
|
8
|
+
readonly properties: Readonly<Record<string, unknown>>;
|
|
9
|
+
createMaterial(): Material;
|
|
10
|
+
}
|
|
11
|
+
export declare class MaterialLoader implements AssetLoader<MaterialDescriptorAsset> {
|
|
12
|
+
readonly type = "material";
|
|
13
|
+
canLoad(request: AssetLoadRequest): boolean;
|
|
14
|
+
load(request: AssetLoadRequest, context: LoadContext): Promise<MaterialDescriptorAsset>;
|
|
15
|
+
}
|
|
16
|
+
export declare function createMaterialFromDescriptor(descriptor: Pick<MaterialDescriptorAsset, "name" | "model" | "properties">): Material;
|
|
17
|
+
//# sourceMappingURL=MaterialLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialLoader.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/MaterialLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,QAAQ,EAMT,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,cAAc,IAAI,QAAQ,CAAC;CAC5B;AAED,qBAAa,cAAe,YAAW,WAAW,CAAC,uBAAuB,CAAC;IACzE,QAAQ,CAAC,IAAI,cAAc;IAE3B,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAIrC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA4B9F;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC,GAAG,QAAQ,CAKjI"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Material, PBRMaterial, UnlitMaterial } from "@aura3d/rendering";
|
|
2
|
+
export class MaterialLoader {
|
|
3
|
+
type = "material";
|
|
4
|
+
canLoad(request) {
|
|
5
|
+
return /\.(?:mat|material)\.json(?:\?.*)?$/i.test(request.url);
|
|
6
|
+
}
|
|
7
|
+
async load(request, context) {
|
|
8
|
+
context.throwIfAborted(request.url);
|
|
9
|
+
if (typeof fetch !== "function") {
|
|
10
|
+
throw new Error("MaterialLoader requires fetch");
|
|
11
|
+
}
|
|
12
|
+
const response = await fetch(request.url, { signal: request.signal });
|
|
13
|
+
if (!response.ok) {
|
|
14
|
+
throw new Error(`Material request failed with ${response.status}`);
|
|
15
|
+
}
|
|
16
|
+
const parsed = (await response.json());
|
|
17
|
+
if (parsed.model !== "unlit" && parsed.model !== "pbr") {
|
|
18
|
+
throw new Error(`Unsupported material model for ${request.url}`);
|
|
19
|
+
}
|
|
20
|
+
const descriptor = {
|
|
21
|
+
url: request.url,
|
|
22
|
+
name: parsed.name,
|
|
23
|
+
model: parsed.model,
|
|
24
|
+
properties: parseProperties(parsed.properties, request.url)
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
...descriptor,
|
|
28
|
+
createMaterial: () => createMaterialFromDescriptor(descriptor)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function createMaterialFromDescriptor(descriptor) {
|
|
33
|
+
if (descriptor.model === "unlit") {
|
|
34
|
+
return new UnlitMaterial(toUnlitOptions(descriptor));
|
|
35
|
+
}
|
|
36
|
+
return new PBRMaterial(toPBRMaterialOptions(descriptor));
|
|
37
|
+
}
|
|
38
|
+
function toUnlitOptions(descriptor) {
|
|
39
|
+
const color = readVec4(descriptor.properties, ["color", "baseColor", "baseColorFactor"]);
|
|
40
|
+
return {
|
|
41
|
+
name: descriptor.name,
|
|
42
|
+
color: color ?? undefined,
|
|
43
|
+
renderState: readRenderState(descriptor.properties)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function toPBRMaterialOptions(descriptor) {
|
|
47
|
+
const properties = descriptor.properties;
|
|
48
|
+
return {
|
|
49
|
+
name: descriptor.name,
|
|
50
|
+
baseColor: readVec4(properties, ["baseColor", "baseColorFactor"]) ?? undefined,
|
|
51
|
+
metallic: readNumber(properties, ["metallic", "metallicFactor"]),
|
|
52
|
+
roughness: readNumber(properties, ["roughness", "roughnessFactor"]),
|
|
53
|
+
emissiveColor: readVec3(properties, ["emissiveColor", "emissiveFactor"]) ?? undefined,
|
|
54
|
+
emissiveStrength: readNumber(properties, ["emissiveStrength"]),
|
|
55
|
+
clearcoatFactor: readNumber(properties, ["clearcoatFactor"]),
|
|
56
|
+
clearcoatRoughnessFactor: readNumber(properties, ["clearcoatRoughnessFactor"]),
|
|
57
|
+
transmissionFactor: readNumber(properties, ["transmissionFactor"]),
|
|
58
|
+
diffuseTransmissionFactor: readNumber(properties, ["diffuseTransmissionFactor"]),
|
|
59
|
+
diffuseTransmissionColorFactor: readVec3(properties, ["diffuseTransmissionColorFactor"]) ?? undefined,
|
|
60
|
+
volumeThicknessFactor: readNumber(properties, ["volumeThicknessFactor"]),
|
|
61
|
+
volumeAttenuationDistance: readNumber(properties, ["volumeAttenuationDistance"]),
|
|
62
|
+
volumeAttenuationColor: readVec3(properties, ["volumeAttenuationColor"]) ?? undefined,
|
|
63
|
+
ior: readNumber(properties, ["ior"]),
|
|
64
|
+
specularFactor: readNumber(properties, ["specularFactor"]),
|
|
65
|
+
specularColorFactor: readVec3(properties, ["specularColorFactor"]) ?? undefined,
|
|
66
|
+
sheenColorFactor: readVec3(properties, ["sheenColorFactor"]) ?? undefined,
|
|
67
|
+
sheenRoughnessFactor: readNumber(properties, ["sheenRoughnessFactor"]),
|
|
68
|
+
anisotropyStrength: readNumber(properties, ["anisotropyStrength"]),
|
|
69
|
+
anisotropyRotation: readNumber(properties, ["anisotropyRotation"]),
|
|
70
|
+
iridescenceFactor: readNumber(properties, ["iridescenceFactor"]),
|
|
71
|
+
iridescenceIor: readNumber(properties, ["iridescenceIor"]),
|
|
72
|
+
iridescenceThicknessMinimum: readNumber(properties, ["iridescenceThicknessMinimum"]),
|
|
73
|
+
iridescenceThicknessMaximum: readNumber(properties, ["iridescenceThicknessMaximum"]),
|
|
74
|
+
dispersion: readNumber(properties, ["dispersion"]),
|
|
75
|
+
renderState: readRenderState(properties)
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function parseProperties(value, url) {
|
|
79
|
+
if (value === undefined)
|
|
80
|
+
return {};
|
|
81
|
+
if (!isRecord(value) || Array.isArray(value)) {
|
|
82
|
+
throw new Error(`Material properties for ${url} must be an object`);
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
function readNumber(properties, keys) {
|
|
87
|
+
const value = readFirst(properties, keys);
|
|
88
|
+
if (value === undefined)
|
|
89
|
+
return undefined;
|
|
90
|
+
if (typeof value !== "number") {
|
|
91
|
+
throw new Error(`Material property ${keys[0]} must be a number`);
|
|
92
|
+
}
|
|
93
|
+
return value;
|
|
94
|
+
}
|
|
95
|
+
function readVec3(properties, keys) {
|
|
96
|
+
const value = readFirst(properties, keys);
|
|
97
|
+
if (value === undefined)
|
|
98
|
+
return undefined;
|
|
99
|
+
if (!Array.isArray(value) || value.length !== 3) {
|
|
100
|
+
throw new Error(`Material property ${keys[0]} must be a vec3`);
|
|
101
|
+
}
|
|
102
|
+
return [readFinite(value[0], keys[0]), readFinite(value[1], keys[0]), readFinite(value[2], keys[0])];
|
|
103
|
+
}
|
|
104
|
+
function readVec4(properties, keys) {
|
|
105
|
+
const value = readFirst(properties, keys);
|
|
106
|
+
if (value === undefined)
|
|
107
|
+
return undefined;
|
|
108
|
+
if (!Array.isArray(value) || value.length !== 4) {
|
|
109
|
+
throw new Error(`Material property ${keys[0]} must be a vec4`);
|
|
110
|
+
}
|
|
111
|
+
return [readFinite(value[0], keys[0]), readFinite(value[1], keys[0]), readFinite(value[2], keys[0]), readFinite(value[3], keys[0])];
|
|
112
|
+
}
|
|
113
|
+
function readRenderState(properties) {
|
|
114
|
+
const value = properties.renderState;
|
|
115
|
+
if (value === undefined)
|
|
116
|
+
return undefined;
|
|
117
|
+
if (!isRecord(value) || Array.isArray(value)) {
|
|
118
|
+
throw new Error("Material property renderState must be an object");
|
|
119
|
+
}
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
function readFirst(properties, keys) {
|
|
123
|
+
for (const key of keys) {
|
|
124
|
+
if (Object.hasOwn(properties, key))
|
|
125
|
+
return properties[key];
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
function readFinite(value, label) {
|
|
130
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
131
|
+
throw new Error(`Material property ${label} must contain finite numbers`);
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
function isRecord(value) {
|
|
136
|
+
return typeof value === "object" && value !== null;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=MaterialLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialLoader.js","sourceRoot":"","sources":["../../../../packages/assets/src/MaterialLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EAId,MAAM,mBAAmB,CAAC;AAU3B,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,UAAU,CAAC;IAE3B,OAAO,CAAC,OAAyB;QAC/B,OAAO,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAyB,EAAE,OAAoB;QACxD,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqC,CAAC;QAC3E,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,UAAU,GAAG;YACjB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC;SAC5D,CAAC;QACF,OAAO;YACL,GAAG,UAAU;YACb,cAAc,EAAE,GAAG,EAAE,CAAC,4BAA4B,CAAC,UAAU,CAAC;SAC/D,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAAC,UAA0E;IACrH,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,UAAgE;IACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzF,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,WAAW,EAAE,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAgE;IAC5F,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,IAAI,SAAS;QAC9E,QAAQ,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAChE,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACnE,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,IAAI,SAAS;QACrF,gBAAgB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC9D,eAAe,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC5D,wBAAwB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAC9E,kBAAkB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAClE,yBAAyB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,2BAA2B,CAAC,CAAC;QAChF,8BAA8B,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,gCAAgC,CAAC,CAAC,IAAI,SAAS;QACrG,qBAAqB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,uBAAuB,CAAC,CAAC;QACxE,yBAAyB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,2BAA2B,CAAC,CAAC;QAChF,sBAAsB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,wBAAwB,CAAC,CAAC,IAAI,SAAS;QACrF,GAAG,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;QACpC,cAAc,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAC1D,mBAAmB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,qBAAqB,CAAC,CAAC,IAAI,SAAS;QAC/E,gBAAgB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,SAAS;QACzE,oBAAoB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACtE,kBAAkB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAClE,kBAAkB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAClE,iBAAiB,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAChE,cAAc,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAC1D,2BAA2B,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,6BAA6B,CAAC,CAAC;QACpF,2BAA2B,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,6BAA6B,CAAC,CAAC;QACpF,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC;QAClD,WAAW,EAAE,eAAe,CAAC,UAAU,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,GAAW;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,oBAAoB,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,UAA6C,EAAE,IAAuB;IACxF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,UAA6C,EAAE,IAAuB;IACtF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,QAAQ,CAAC,UAA6C,EAAE,IAAuB;IACtF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtI,CAAC;AAED,SAAS,eAAe,CAAC,UAA6C;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAA6B,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,UAA6C,EAAE,IAAuB;IACvF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,KAAa;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,8BAA8B,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ImportStage } from "./ImportPipeline";
|
|
2
|
+
export type MeshAttributeValue = number | readonly number[];
|
|
3
|
+
export interface MeshOptimizationInput {
|
|
4
|
+
readonly vertexCount: number;
|
|
5
|
+
readonly indices: readonly number[];
|
|
6
|
+
readonly attributes?: Readonly<Record<string, readonly MeshAttributeValue[]>>;
|
|
7
|
+
}
|
|
8
|
+
export interface MeshOptimizationResult {
|
|
9
|
+
readonly vertexCount: number;
|
|
10
|
+
readonly indices: readonly number[];
|
|
11
|
+
readonly attributes: Readonly<Record<string, readonly MeshAttributeValue[]>>;
|
|
12
|
+
readonly remap: readonly number[];
|
|
13
|
+
readonly removedVertices: number;
|
|
14
|
+
}
|
|
15
|
+
export interface MeshOptimizationStageOptions {
|
|
16
|
+
readonly name?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function optimizeIndexedMesh(input: MeshOptimizationInput): MeshOptimizationResult;
|
|
19
|
+
export declare function createMeshOptimizationStage(options?: MeshOptimizationStageOptions): ImportStage<MeshOptimizationInput, MeshOptimizationResult>;
|
|
20
|
+
//# sourceMappingURL=MeshOptimization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeshOptimization.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/MeshOptimization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CA2BxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,4BAAiC,GAAG,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAKlJ"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export function optimizeIndexedMesh(input) {
|
|
2
|
+
validateMeshOptimizationInput(input);
|
|
3
|
+
const remap = new Array(input.vertexCount).fill(-1);
|
|
4
|
+
const usedVertices = [];
|
|
5
|
+
const optimizedIndices = input.indices.map((index) => {
|
|
6
|
+
let nextIndex = remap[index];
|
|
7
|
+
if (nextIndex === -1) {
|
|
8
|
+
nextIndex = usedVertices.length;
|
|
9
|
+
remap[index] = nextIndex;
|
|
10
|
+
usedVertices.push(index);
|
|
11
|
+
}
|
|
12
|
+
return nextIndex;
|
|
13
|
+
});
|
|
14
|
+
const attributes = {};
|
|
15
|
+
for (const [semantic, values] of Object.entries(input.attributes ?? {})) {
|
|
16
|
+
attributes[semantic] = usedVertices.map((sourceIndex) => cloneAttributeValue(values[sourceIndex]));
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
vertexCount: usedVertices.length,
|
|
20
|
+
indices: optimizedIndices,
|
|
21
|
+
attributes,
|
|
22
|
+
remap,
|
|
23
|
+
removedVertices: input.vertexCount - usedVertices.length
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function createMeshOptimizationStage(options = {}) {
|
|
27
|
+
return {
|
|
28
|
+
name: options.name ?? "mesh-optimization",
|
|
29
|
+
run: (input) => optimizeIndexedMesh(input)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function validateMeshOptimizationInput(input) {
|
|
33
|
+
if (!Number.isInteger(input.vertexCount) || input.vertexCount < 0) {
|
|
34
|
+
throw new Error("Mesh optimization vertexCount must be a non-negative integer");
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(input.indices) || input.indices.length === 0) {
|
|
37
|
+
throw new Error("Mesh optimization requires one or more indices");
|
|
38
|
+
}
|
|
39
|
+
input.indices.forEach((index, offset) => {
|
|
40
|
+
if (!Number.isInteger(index) || index < 0 || index >= input.vertexCount) {
|
|
41
|
+
throw new Error(`Mesh optimization index ${offset} references invalid vertex ${index}`);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
for (const [semantic, values] of Object.entries(input.attributes ?? {})) {
|
|
45
|
+
if (!Array.isArray(values) || values.length !== input.vertexCount) {
|
|
46
|
+
throw new Error(`Mesh optimization attribute ${semantic} must contain exactly ${input.vertexCount} values`);
|
|
47
|
+
}
|
|
48
|
+
values.forEach((value, index) => validateAttributeValue(value, semantic, index));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function validateAttributeValue(value, semantic, index) {
|
|
52
|
+
if (typeof value === "number") {
|
|
53
|
+
if (!Number.isFinite(value)) {
|
|
54
|
+
throw new Error(`Mesh optimization attribute ${semantic}[${index}] must be finite`);
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!Array.isArray(value) || value.length === 0 || value.some((component) => !Number.isFinite(component))) {
|
|
59
|
+
throw new Error(`Mesh optimization attribute ${semantic}[${index}] must be a finite scalar or numeric tuple`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function cloneAttributeValue(value) {
|
|
63
|
+
return Array.isArray(value) ? [...value] : value;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=MeshOptimization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeshOptimization.js","sourceRoot":"","sources":["../../../../packages/assets/src/MeshOptimization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AssetLoadRequest, AssetLoader } from "./AssetLoader";
|
|
2
|
+
import { GLTFLoader, type GLTFAsset } from "./GLTFLoader";
|
|
3
|
+
import type { LoadContext } from "./LoadContext";
|
|
4
|
+
export declare class OBJLoader implements AssetLoader<GLTFAsset> {
|
|
5
|
+
readonly type = "obj";
|
|
6
|
+
private readonly gltfLoader;
|
|
7
|
+
private readonly innerAssets;
|
|
8
|
+
constructor(gltfLoader?: GLTFLoader);
|
|
9
|
+
canLoad(request: AssetLoadRequest): boolean;
|
|
10
|
+
load(request: AssetLoadRequest, context: LoadContext): Promise<GLTFAsset>;
|
|
11
|
+
dispose(asset: GLTFAsset): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=OBJLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OBJLoader.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/OBJLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAA8B,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiDjD,qBAAa,SAAU,YAAW,WAAW,CAAC,SAAS,CAAC;IACtD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;gBAEvD,UAAU,aAAmB;IAIzC,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAIrC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAa/E,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAGhC"}
|