@carbonenginejs/runtime-resource 0.1.0
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/FORMAT-PROVENANCE.md +135 -0
- package/LICENSE +21 -0
- package/NOTICE +29 -0
- package/README.md +241 -0
- package/dist/CjsMotherLode.js +56 -0
- package/dist/CjsMotherLode.js.map +1 -0
- package/dist/CjsResMan.js +740 -0
- package/dist/CjsResMan.js.map +1 -0
- package/dist/CjsResManQueue.js +214 -0
- package/dist/CjsResManQueue.js.map +1 -0
- package/dist/CjsResource.js +366 -0
- package/dist/CjsResource.js.map +1 -0
- package/dist/CjsResourceSource.js +59 -0
- package/dist/CjsResourceSource.js.map +1 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/dist/format/CjsFormat.js +178 -0
- package/dist/format/CjsFormat.js.map +1 -0
- package/dist/format/CjsResourceProbe.js +269 -0
- package/dist/format/CjsResourceProbe.js.map +1 -0
- package/dist/format/payloadContract.js +173 -0
- package/dist/format/payloadContract.js.map +1 -0
- package/dist/formats/black/CjsBlackFormat.js +272 -0
- package/dist/formats/black/CjsBlackFormat.js.map +1 -0
- package/dist/formats/black/core/CjsBlackBinaryReader.js +153 -0
- package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -0
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +382 -0
- package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -0
- package/dist/formats/black/core/CjsBlackReader.js +760 -0
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -0
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +433 -0
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -0
- package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +4 -0
- package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js.map +1 -0
- package/dist/formats/black/core/blackConstants.js +7 -0
- package/dist/formats/black/core/blackConstants.js.map +1 -0
- package/dist/formats/black/core/blackDefinitions.js +10 -0
- package/dist/formats/black/core/blackDefinitions.js.map +1 -0
- package/dist/formats/black/core/blackEnums.js +6 -0
- package/dist/formats/black/core/blackEnums.js.map +1 -0
- package/dist/formats/black/core/blackSchema.js +3 -0
- package/dist/formats/black/core/blackSchema.js.map +1 -0
- package/dist/formats/black/core/blackVersion.js +22 -0
- package/dist/formats/black/core/blackVersion.js.map +1 -0
- package/dist/formats/black/core/helpers.js +182 -0
- package/dist/formats/black/core/helpers.js.map +1 -0
- package/dist/formats/black/core/schema.js +4 -0
- package/dist/formats/black/core/schema.js.map +1 -0
- package/dist/formats/black/index.js +2 -0
- package/dist/formats/black/index.js.map +1 -0
- package/dist/formats/bnk/CjsBnkFormat.js +245 -0
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -0
- package/dist/formats/bnk/core/helpers.js +354 -0
- package/dist/formats/bnk/core/helpers.js.map +1 -0
- package/dist/formats/bnk/core/soundbanksInfo.js +246 -0
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -0
- package/dist/formats/bnk/index.js +3 -0
- package/dist/formats/bnk/index.js.map +1 -0
- package/dist/formats/cmf/CjsCmfFormat.js +491 -0
- package/dist/formats/cmf/CjsCmfFormat.js.map +1 -0
- package/dist/formats/cmf/core/binary.js +118 -0
- package/dist/formats/cmf/core/binary.js.map +1 -0
- package/dist/formats/cmf/core/buffers.js +233 -0
- package/dist/formats/cmf/core/buffers.js.map +1 -0
- package/dist/formats/cmf/core/constants.js +47 -0
- package/dist/formats/cmf/core/constants.js.map +1 -0
- package/dist/formats/cmf/core/gr2Anim.js +453 -0
- package/dist/formats/cmf/core/gr2Anim.js.map +1 -0
- package/dist/formats/cmf/core/helpers.js +287 -0
- package/dist/formats/cmf/core/helpers.js.map +1 -0
- package/dist/formats/cmf/core/pack.js +276 -0
- package/dist/formats/cmf/core/pack.js.map +1 -0
- package/dist/formats/cmf/core/schema.js +364 -0
- package/dist/formats/cmf/core/schema.js.map +1 -0
- package/dist/formats/cmf/core/shared.js +268 -0
- package/dist/formats/cmf/core/shared.js.map +1 -0
- package/dist/formats/cmf/core/writer.js +517 -0
- package/dist/formats/cmf/core/writer.js.map +1 -0
- package/dist/formats/cmf/index.js +2 -0
- package/dist/formats/cmf/index.js.map +1 -0
- package/dist/formats/dds/CjsDdsFormat.js +187 -0
- package/dist/formats/dds/CjsDdsFormat.js.map +1 -0
- package/dist/formats/dds/core/helpers.js +812 -0
- package/dist/formats/dds/core/helpers.js.map +1 -0
- package/dist/formats/dds/index.js +2 -0
- package/dist/formats/dds/index.js.map +1 -0
- package/dist/formats/fbx/CjsFbxFormat.js +260 -0
- package/dist/formats/fbx/CjsFbxFormat.js.map +1 -0
- package/dist/formats/fbx/core/helpers.js +3901 -0
- package/dist/formats/fbx/core/helpers.js.map +1 -0
- package/dist/formats/fbx/index.js +2 -0
- package/dist/formats/fbx/index.js.map +1 -0
- package/dist/formats/flac/CjsFlacFormat.js +81 -0
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -0
- package/dist/formats/flac/core/helpers.js +295 -0
- package/dist/formats/flac/core/helpers.js.map +1 -0
- package/dist/formats/flac/index.js +2 -0
- package/dist/formats/flac/index.js.map +1 -0
- package/dist/formats/gif/CjsGifFormat.js +81 -0
- package/dist/formats/gif/CjsGifFormat.js.map +1 -0
- package/dist/formats/gif/core/helpers.js +360 -0
- package/dist/formats/gif/core/helpers.js.map +1 -0
- package/dist/formats/gif/index.js +2 -0
- package/dist/formats/gif/index.js.map +1 -0
- package/dist/formats/gltf/CjsGltfFormat.js +284 -0
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -0
- package/dist/formats/gltf/core/helpers.js +292 -0
- package/dist/formats/gltf/core/helpers.js.map +1 -0
- package/dist/formats/gltf/core/json.js +79 -0
- package/dist/formats/gltf/core/json.js.map +1 -0
- package/dist/formats/gltf/core/parser.js +666 -0
- package/dist/formats/gltf/core/parser.js.map +1 -0
- package/dist/formats/gltf/core/targets.js +163 -0
- package/dist/formats/gltf/core/targets.js.map +1 -0
- package/dist/formats/gltf/index.js +2 -0
- package/dist/formats/gltf/index.js.map +1 -0
- package/dist/formats/index.js +23 -0
- package/dist/formats/index.js.map +1 -0
- package/dist/formats/jpeg/CjsJpegFormat.js +200 -0
- package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -0
- package/dist/formats/jpeg/core/helpers.js +350 -0
- package/dist/formats/jpeg/core/helpers.js.map +1 -0
- package/dist/formats/jpeg/core/jpeg.js +377 -0
- package/dist/formats/jpeg/core/jpeg.js.map +1 -0
- package/dist/formats/jpeg/index.js +2 -0
- package/dist/formats/jpeg/index.js.map +1 -0
- package/dist/formats/mp3/CjsMp3Format.js +186 -0
- package/dist/formats/mp3/CjsMp3Format.js.map +1 -0
- package/dist/formats/mp3/core/helpers.js +338 -0
- package/dist/formats/mp3/core/helpers.js.map +1 -0
- package/dist/formats/mp3/index.js +2 -0
- package/dist/formats/mp3/index.js.map +1 -0
- package/dist/formats/mp4/CjsMp4Format.js +185 -0
- package/dist/formats/mp4/CjsMp4Format.js.map +1 -0
- package/dist/formats/mp4/core/helpers.js +449 -0
- package/dist/formats/mp4/core/helpers.js.map +1 -0
- package/dist/formats/mp4/index.js +2 -0
- package/dist/formats/mp4/index.js.map +1 -0
- package/dist/formats/obj/CjsObjFormat.js +247 -0
- package/dist/formats/obj/CjsObjFormat.js.map +1 -0
- package/dist/formats/obj/core/helpers.js +573 -0
- package/dist/formats/obj/core/helpers.js.map +1 -0
- package/dist/formats/obj/core/json.js +64 -0
- package/dist/formats/obj/core/json.js.map +1 -0
- package/dist/formats/obj/core/parser.js +321 -0
- package/dist/formats/obj/core/parser.js.map +1 -0
- package/dist/formats/obj/index.js +2 -0
- package/dist/formats/obj/index.js.map +1 -0
- package/dist/formats/ogg/CjsOggFormat.js +82 -0
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -0
- package/dist/formats/ogg/core/helpers.js +387 -0
- package/dist/formats/ogg/core/helpers.js.map +1 -0
- package/dist/formats/ogg/core/imdct.js +178 -0
- package/dist/formats/ogg/core/imdct.js.map +1 -0
- package/dist/formats/ogg/core/vorbis.js +999 -0
- package/dist/formats/ogg/core/vorbis.js.map +1 -0
- package/dist/formats/ogg/index.js +2 -0
- package/dist/formats/ogg/index.js.map +1 -0
- package/dist/formats/png/CjsPngFormat.js +189 -0
- package/dist/formats/png/CjsPngFormat.js.map +1 -0
- package/dist/formats/png/core/helpers.js +583 -0
- package/dist/formats/png/core/helpers.js.map +1 -0
- package/dist/formats/png/index.js +2 -0
- package/dist/formats/png/index.js.map +1 -0
- package/dist/formats/red/CjsRedFormat.js +247 -0
- package/dist/formats/red/CjsRedFormat.js.map +1 -0
- package/dist/formats/red/core/CjsRedReader.js +201 -0
- package/dist/formats/red/core/CjsRedReader.js.map +1 -0
- package/dist/formats/red/core/blackDefinitions.js +3 -0
- package/dist/formats/red/core/blackDefinitions.js.map +1 -0
- package/dist/formats/red/core/helpers.js +136 -0
- package/dist/formats/red/core/helpers.js.map +1 -0
- package/dist/formats/red/core/redGraph.js +68 -0
- package/dist/formats/red/core/redGraph.js.map +1 -0
- package/dist/formats/red/core/schema.js +4 -0
- package/dist/formats/red/core/schema.js.map +1 -0
- package/dist/formats/red/index.js +2 -0
- package/dist/formats/red/index.js.map +1 -0
- package/dist/formats/stl/CjsStlFormat.js +304 -0
- package/dist/formats/stl/CjsStlFormat.js.map +1 -0
- package/dist/formats/stl/core/helpers.js +257 -0
- package/dist/formats/stl/core/helpers.js.map +1 -0
- package/dist/formats/stl/core/json.js +51 -0
- package/dist/formats/stl/core/json.js.map +1 -0
- package/dist/formats/stl/core/stl.js +544 -0
- package/dist/formats/stl/core/stl.js.map +1 -0
- package/dist/formats/stl/core/targets.js +163 -0
- package/dist/formats/stl/core/targets.js.map +1 -0
- package/dist/formats/stl/index.js +2 -0
- package/dist/formats/stl/index.js.map +1 -0
- package/dist/formats/tga/CjsTgaFormat.js +186 -0
- package/dist/formats/tga/CjsTgaFormat.js.map +1 -0
- package/dist/formats/tga/core/helpers.js +446 -0
- package/dist/formats/tga/core/helpers.js.map +1 -0
- package/dist/formats/tga/index.js +2 -0
- package/dist/formats/tga/index.js.map +1 -0
- package/dist/formats/wav/CjsWavFormat.js +186 -0
- package/dist/formats/wav/CjsWavFormat.js.map +1 -0
- package/dist/formats/wav/core/helpers.js +328 -0
- package/dist/formats/wav/core/helpers.js.map +1 -0
- package/dist/formats/wav/index.js +2 -0
- package/dist/formats/wav/index.js.map +1 -0
- package/dist/formats/webm/CjsWebmFormat.js +185 -0
- package/dist/formats/webm/CjsWebmFormat.js.map +1 -0
- package/dist/formats/webm/core/helpers.js +537 -0
- package/dist/formats/webm/core/helpers.js.map +1 -0
- package/dist/formats/webm/index.js +2 -0
- package/dist/formats/webm/index.js.map +1 -0
- package/dist/formats/webp/CjsWebpFormat.js +80 -0
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -0
- package/dist/formats/webp/core/helpers.js +214 -0
- package/dist/formats/webp/core/helpers.js.map +1 -0
- package/dist/formats/webp/index.js +2 -0
- package/dist/formats/webp/index.js.map +1 -0
- package/dist/formats/wem/CjsWemFormat.js +197 -0
- package/dist/formats/wem/CjsWemFormat.js.map +1 -0
- package/dist/formats/wem/core/bitStream.js +259 -0
- package/dist/formats/wem/core/bitStream.js.map +1 -0
- package/dist/formats/wem/core/codebookLibrary.js +164 -0
- package/dist/formats/wem/core/codebookLibrary.js.map +1 -0
- package/dist/formats/wem/core/helpers.js +336 -0
- package/dist/formats/wem/core/helpers.js.map +1 -0
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -0
- package/dist/formats/wem/core/packedCodebooksAotuv603.js.map +1 -0
- package/dist/formats/wem/core/wemToOgg.js +485 -0
- package/dist/formats/wem/core/wemToOgg.js.map +1 -0
- package/dist/formats/wem/index.js +2 -0
- package/dist/formats/wem/index.js.map +1 -0
- package/dist/formats/yaml/CjsYamlFormat.js +77 -0
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -0
- package/dist/formats/yaml/core/CjsYamlReader.js +304 -0
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -0
- package/dist/formats/yaml/core/helpers.js +160 -0
- package/dist/formats/yaml/core/helpers.js.map +1 -0
- package/dist/formats/yaml/index.js +2 -0
- package/dist/formats/yaml/index.js.map +1 -0
- package/dist/generated/resources/AudioGeometryResData.js +47 -0
- package/dist/generated/resources/AudioGeometryResData.js.map +1 -0
- package/dist/generated/resources/CmfVertexReader.js +46 -0
- package/dist/generated/resources/CmfVertexReader.js.map +1 -0
- package/dist/generated/resources/GStateBindingCallbackData.js +31 -0
- package/dist/generated/resources/GStateBindingCallbackData.js.map +1 -0
- package/dist/generated/resources/MeshDecalData.js +37 -0
- package/dist/generated/resources/MeshDecalData.js.map +1 -0
- package/dist/generated/resources/MeshDecalLodData.js +34 -0
- package/dist/generated/resources/MeshDecalLodData.js.map +1 -0
- package/dist/generated/resources/Tr2AsyncSave.js +46 -0
- package/dist/generated/resources/Tr2AsyncSave.js.map +1 -0
- package/dist/generated/resources/Tr2CmfContents.js +37 -0
- package/dist/generated/resources/Tr2CmfContents.js.map +1 -0
- package/dist/generated/resources/Tr2GrannyIntersectionResult.js +58 -0
- package/dist/generated/resources/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/generated/resources/Tr2LoadPrepareFence.js +37 -0
- package/dist/generated/resources/Tr2LoadPrepareFence.js.map +1 -0
- package/dist/generated/resources/Tr2MaterialArea.js +34 -0
- package/dist/generated/resources/Tr2MaterialArea.js.map +1 -0
- package/dist/generated/resources/Tr2MaterialMesh.js +31 -0
- package/dist/generated/resources/Tr2MaterialMesh.js.map +1 -0
- package/dist/generated/resources/Tr2MaterialRes.js +34 -0
- package/dist/generated/resources/Tr2MaterialRes.js.map +1 -0
- package/dist/generated/resources/Tr2ShaderPermutation.js +43 -0
- package/dist/generated/resources/Tr2ShaderPermutation.js.map +1 -0
- package/dist/generated/resources/Tr2TextureLodManager.js +60 -0
- package/dist/generated/resources/Tr2TextureLodManager.js.map +1 -0
- package/dist/generated/resources/Tr2TextureLodUpdateRequest.js +37 -0
- package/dist/generated/resources/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePackChannel.js +37 -0
- package/dist/generated/resources/Tr2TexturePackChannel.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePipeline.js +44 -0
- package/dist/generated/resources/Tr2TexturePipeline.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePipelineParams.js +34 -0
- package/dist/generated/resources/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePipelineStepCompress.js +40 -0
- package/dist/generated/resources/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js +34 -0
- package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePipelineStepLoad.js +31 -0
- package/dist/generated/resources/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/generated/resources/Tr2TexturePipelineStepPack.js +43 -0
- package/dist/generated/resources/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/generated/resources/TriGeometryResAreaData.js +59 -0
- package/dist/generated/resources/TriGeometryResAreaData.js.map +1 -0
- package/dist/generated/resources/TriGeometryResJointData.js +38 -0
- package/dist/generated/resources/TriGeometryResJointData.js.map +1 -0
- package/dist/generated/resources/TriGeometryResLodData.js +88 -0
- package/dist/generated/resources/TriGeometryResLodData.js.map +1 -0
- package/dist/generated/resources/TriGeometryResMeshData.js +63 -0
- package/dist/generated/resources/TriGeometryResMeshData.js.map +1 -0
- package/dist/generated/resources/TriGeometryResSkeletonData.js +34 -0
- package/dist/generated/resources/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/generated/resources/TriJointBinding.js +38 -0
- package/dist/generated/resources/TriJointBinding.js.map +1 -0
- package/dist/generated/resources/TriMorphTargetGeometryConstants.js +46 -0
- package/dist/generated/resources/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/generated/resources/TriRtGeometryConstants.js +88 -0
- package/dist/generated/resources/TriRtGeometryConstants.js.map +1 -0
- package/dist/generated/resources/enums.js +18 -0
- package/dist/generated/resources/enums.js.map +1 -0
- package/dist/generated/resources/index.js +32 -0
- package/dist/generated/resources/index.js.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/resourcePath.js +18 -0
- package/dist/resourcePath.js.map +1 -0
- package/dist/resourceStates.js +9 -0
- package/dist/resourceStates.js.map +1 -0
- package/dist/resources/Tr2EffectRes.js +71 -0
- package/dist/resources/Tr2EffectRes.js.map +1 -0
- package/dist/resources/Tr2GrannyStateRes.js +44 -0
- package/dist/resources/Tr2GrannyStateRes.js.map +1 -0
- package/dist/resources/Tr2ImageRes.js +114 -0
- package/dist/resources/Tr2ImageRes.js.map +1 -0
- package/dist/resources/Tr2LightProfileRes.js +40 -0
- package/dist/resources/Tr2LightProfileRes.js.map +1 -0
- package/dist/resources/TriGeometryRes.js +216 -0
- package/dist/resources/TriGeometryRes.js.map +1 -0
- package/dist/resources/TriGrannyRes.js +43 -0
- package/dist/resources/TriGrannyRes.js.map +1 -0
- package/dist/resources/TriTextureRes.js +304 -0
- package/dist/resources/TriTextureRes.js.map +1 -0
- package/dist/resources/resourceBoundary.js +47 -0
- package/dist/resources/resourceBoundary.js.map +1 -0
- package/dist/texture/CjsTextureArrayRes.js +406 -0
- package/dist/texture/CjsTextureArrayRes.js.map +1 -0
- package/dist/texture/CjsTextureParameterProxy.js +133 -0
- package/dist/texture/CjsTextureParameterProxy.js.map +1 -0
- package/format-notices/black/LICENSE +21 -0
- package/format-notices/black/NOTICE +47 -0
- package/format-notices/bnk/LICENSE +21 -0
- package/format-notices/bnk/NOTICE +17 -0
- package/format-notices/cmf/LICENSE +21 -0
- package/format-notices/cmf/NOTICE +36 -0
- package/format-notices/dds/LICENSE +21 -0
- package/format-notices/dds/NOTICE +14 -0
- package/format-notices/fbx/LICENSE +21 -0
- package/format-notices/fbx/NOTICE +14 -0
- package/format-notices/flac/LICENSE +21 -0
- package/format-notices/flac/NOTICE +14 -0
- package/format-notices/gif/LICENSE +21 -0
- package/format-notices/gif/NOTICE +14 -0
- package/format-notices/gltf/LICENSE +21 -0
- package/format-notices/gltf/NOTICE +27 -0
- package/format-notices/jpeg/LICENSE +21 -0
- package/format-notices/jpeg/NOTICE +14 -0
- package/format-notices/mp3/LICENSE +21 -0
- package/format-notices/mp3/NOTICE +14 -0
- package/format-notices/mp4/LICENSE +21 -0
- package/format-notices/mp4/NOTICE +14 -0
- package/format-notices/obj/LICENSE +21 -0
- package/format-notices/obj/NOTICE +26 -0
- package/format-notices/ogg/LICENSE +21 -0
- package/format-notices/ogg/NOTICE +28 -0
- package/format-notices/png/LICENSE +21 -0
- package/format-notices/png/NOTICE +14 -0
- package/format-notices/red/LICENSE +21 -0
- package/format-notices/red/NOTICE +31 -0
- package/format-notices/stl/LICENSE +21 -0
- package/format-notices/stl/NOTICE +21 -0
- package/format-notices/tga/LICENSE +21 -0
- package/format-notices/tga/NOTICE +14 -0
- package/format-notices/wav/LICENSE +21 -0
- package/format-notices/wav/NOTICE +14 -0
- package/format-notices/webm/LICENSE +21 -0
- package/format-notices/webm/NOTICE +14 -0
- package/format-notices/webp/LICENSE +21 -0
- package/format-notices/webp/NOTICE +14 -0
- package/format-notices/wem/LICENSE +57 -0
- package/format-notices/wem/NOTICE +33 -0
- package/format-notices/yaml/LICENSE +21 -0
- package/format-notices/yaml/NOTICE +44 -0
- package/package.json +51 -0
- package/resource-lifecycle.md +487 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
const textDecoder = new TextDecoder();
|
|
2
|
+
function asUint8Array(input) {
|
|
3
|
+
if (input instanceof Uint8Array) {
|
|
4
|
+
return input;
|
|
5
|
+
}
|
|
6
|
+
if (input instanceof ArrayBuffer) {
|
|
7
|
+
return new Uint8Array(input);
|
|
8
|
+
}
|
|
9
|
+
if (ArrayBuffer.isView(input)) {
|
|
10
|
+
return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
|
|
11
|
+
}
|
|
12
|
+
throw new TypeError("CMF input must be a Uint8Array, Buffer, ArrayBuffer, or typed-array view");
|
|
13
|
+
}
|
|
14
|
+
class BinaryReader {
|
|
15
|
+
constructor(bytes) {
|
|
16
|
+
this.bytes = asUint8Array(bytes);
|
|
17
|
+
this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);
|
|
18
|
+
}
|
|
19
|
+
require(offset, size, label = "read") {
|
|
20
|
+
if (!Number.isInteger(offset) || offset < 0 || offset + size > this.bytes.byteLength) {
|
|
21
|
+
throw new RangeError(`CMF ${label} is outside file bounds`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
u8(offset) {
|
|
25
|
+
this.require(offset, 1);
|
|
26
|
+
return this.view.getUint8(offset);
|
|
27
|
+
}
|
|
28
|
+
u16(offset) {
|
|
29
|
+
this.require(offset, 2);
|
|
30
|
+
return this.view.getUint16(offset, true);
|
|
31
|
+
}
|
|
32
|
+
u32(offset) {
|
|
33
|
+
this.require(offset, 4);
|
|
34
|
+
return this.view.getUint32(offset, true);
|
|
35
|
+
}
|
|
36
|
+
i32(offset) {
|
|
37
|
+
this.require(offset, 4);
|
|
38
|
+
return this.view.getInt32(offset, true);
|
|
39
|
+
}
|
|
40
|
+
f32(offset) {
|
|
41
|
+
this.require(offset, 4);
|
|
42
|
+
return this.view.getFloat32(offset, true);
|
|
43
|
+
}
|
|
44
|
+
u64(offset) {
|
|
45
|
+
this.require(offset, 8);
|
|
46
|
+
const value = this.view.getBigUint64(offset, true);
|
|
47
|
+
if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
48
|
+
throw new RangeError("CMF integer is larger than Number.MAX_SAFE_INTEGER");
|
|
49
|
+
}
|
|
50
|
+
return Number(value);
|
|
51
|
+
}
|
|
52
|
+
i64(offset) {
|
|
53
|
+
this.require(offset, 8);
|
|
54
|
+
const value = this.view.getBigInt64(offset, true);
|
|
55
|
+
if (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(Number.MIN_SAFE_INTEGER)) {
|
|
56
|
+
throw new RangeError("CMF integer is outside the safe JavaScript number range");
|
|
57
|
+
}
|
|
58
|
+
return Number(value);
|
|
59
|
+
}
|
|
60
|
+
bytesAt(offset, size) {
|
|
61
|
+
this.require(offset, size, "byte slice");
|
|
62
|
+
return this.bytes.subarray(offset, offset + size);
|
|
63
|
+
}
|
|
64
|
+
string(offset, byteSize) {
|
|
65
|
+
if (byteSize === 0) {
|
|
66
|
+
return "";
|
|
67
|
+
}
|
|
68
|
+
return textDecoder.decode(this.bytesAt(offset, byteSize));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function enumName(names, value) {
|
|
72
|
+
return names[value] ?? `Unknown(${value})`;
|
|
73
|
+
}
|
|
74
|
+
function readVector3(reader, offset) {
|
|
75
|
+
return [reader.f32(offset), reader.f32(offset + 4), reader.f32(offset + 8)];
|
|
76
|
+
}
|
|
77
|
+
function readQuaternion(reader, offset) {
|
|
78
|
+
return [reader.f32(offset), reader.f32(offset + 4), reader.f32(offset + 8), reader.f32(offset + 12)];
|
|
79
|
+
}
|
|
80
|
+
function readMatrix(reader, offset) {
|
|
81
|
+
const values = [];
|
|
82
|
+
for (let i = 0; i < 16; i++) {
|
|
83
|
+
values.push(reader.f32(offset + i * 4));
|
|
84
|
+
}
|
|
85
|
+
return values;
|
|
86
|
+
}
|
|
87
|
+
function readBounds(reader, offset) {
|
|
88
|
+
return {
|
|
89
|
+
min: readVector3(reader, offset),
|
|
90
|
+
max: readVector3(reader, offset + 12)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function crc32(bytes, start = 0, end = bytes.byteLength) {
|
|
94
|
+
let crc = 0xffffffff;
|
|
95
|
+
const table = crc32Table();
|
|
96
|
+
for (let i = start; i < end; i++) {
|
|
97
|
+
crc = crc >>> 8 ^ table[(crc ^ bytes[i]) & 0xff];
|
|
98
|
+
}
|
|
99
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
100
|
+
}
|
|
101
|
+
let cachedCrc32Table = null;
|
|
102
|
+
function crc32Table() {
|
|
103
|
+
if (cachedCrc32Table) {
|
|
104
|
+
return cachedCrc32Table;
|
|
105
|
+
}
|
|
106
|
+
cachedCrc32Table = new Uint32Array(256);
|
|
107
|
+
for (let i = 0; i < 256; i++) {
|
|
108
|
+
let c = i;
|
|
109
|
+
for (let k = 0; k < 8; k++) {
|
|
110
|
+
c = c & 1 ? 0xedb88320 ^ c >>> 1 : c >>> 1;
|
|
111
|
+
}
|
|
112
|
+
cachedCrc32Table[i] = c >>> 0;
|
|
113
|
+
}
|
|
114
|
+
return cachedCrc32Table;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export { BinaryReader, asUint8Array, crc32, enumName, readBounds, readMatrix, readQuaternion, readVector3 };
|
|
118
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sources":["../../../../../src/formats/cmf/core/binary.js"],"sourcesContent":["const textDecoder = new TextDecoder();\n\nexport function asUint8Array(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n throw new TypeError(\"CMF input must be a Uint8Array, Buffer, ArrayBuffer, or typed-array view\");\n}\n\nexport class BinaryReader\n{\n constructor(bytes)\n {\n this.bytes = asUint8Array(bytes);\n this.view = new DataView(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength);\n }\n\n require(offset, size, label = \"read\")\n {\n if (!Number.isInteger(offset) || offset < 0 || offset + size > this.bytes.byteLength)\n {\n throw new RangeError(`CMF ${label} is outside file bounds`);\n }\n }\n\n u8(offset)\n {\n this.require(offset, 1);\n return this.view.getUint8(offset);\n }\n\n u16(offset)\n {\n this.require(offset, 2);\n return this.view.getUint16(offset, true);\n }\n\n u32(offset)\n {\n this.require(offset, 4);\n return this.view.getUint32(offset, true);\n }\n\n i32(offset)\n {\n this.require(offset, 4);\n return this.view.getInt32(offset, true);\n }\n\n f32(offset)\n {\n this.require(offset, 4);\n return this.view.getFloat32(offset, true);\n }\n\n u64(offset)\n {\n this.require(offset, 8);\n const value = this.view.getBigUint64(offset, true);\n if (value > BigInt(Number.MAX_SAFE_INTEGER))\n {\n throw new RangeError(\"CMF integer is larger than Number.MAX_SAFE_INTEGER\");\n }\n return Number(value);\n }\n\n i64(offset)\n {\n this.require(offset, 8);\n const value = this.view.getBigInt64(offset, true);\n if (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(Number.MIN_SAFE_INTEGER))\n {\n throw new RangeError(\"CMF integer is outside the safe JavaScript number range\");\n }\n return Number(value);\n }\n\n bytesAt(offset, size)\n {\n this.require(offset, size, \"byte slice\");\n return this.bytes.subarray(offset, offset + size);\n }\n\n string(offset, byteSize)\n {\n if (byteSize === 0)\n {\n return \"\";\n }\n\n return textDecoder.decode(this.bytesAt(offset, byteSize));\n }\n}\n\nexport function enumName(names, value)\n{\n return names[value] ?? `Unknown(${value})`;\n}\n\nexport function readVector3(reader, offset)\n{\n return [\n reader.f32(offset),\n reader.f32(offset + 4),\n reader.f32(offset + 8)\n ];\n}\n\nexport function readQuaternion(reader, offset)\n{\n return [\n reader.f32(offset),\n reader.f32(offset + 4),\n reader.f32(offset + 8),\n reader.f32(offset + 12)\n ];\n}\n\nexport function readMatrix(reader, offset)\n{\n const values = [];\n for (let i = 0; i < 16; i++)\n {\n values.push(reader.f32(offset + i * 4));\n }\n return values;\n}\n\nexport function readBounds(reader, offset)\n{\n return {\n min: readVector3(reader, offset),\n max: readVector3(reader, offset + 12)\n };\n}\n\nexport function crc32(bytes, start = 0, end = bytes.byteLength)\n{\n let crc = 0xffffffff;\n const table = crc32Table();\n for (let i = start; i < end; i++)\n {\n crc = (crc >>> 8) ^ table[(crc ^ bytes[i]) & 0xff];\n }\n return (crc ^ 0xffffffff) >>> 0;\n}\n\nlet cachedCrc32Table = null;\n\nfunction crc32Table()\n{\n if (cachedCrc32Table)\n {\n return cachedCrc32Table;\n }\n\n cachedCrc32Table = new Uint32Array(256);\n for (let i = 0; i < 256; i++)\n {\n let c = i;\n for (let k = 0; k < 8; k++)\n {\n c = (c & 1) ? (0xedb88320 ^ (c >>> 1)) : (c >>> 1);\n }\n cachedCrc32Table[i] = c >>> 0;\n }\n return cachedCrc32Table;\n}\n"],"names":["textDecoder","TextDecoder","asUint8Array","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","TypeError","BinaryReader","constructor","bytes","view","DataView","require","offset","size","label","Number","isInteger","RangeError","u8","getUint8","u16","getUint16","u32","getUint32","i32","getInt32","f32","getFloat32","u64","value","getBigUint64","BigInt","MAX_SAFE_INTEGER","i64","getBigInt64","MIN_SAFE_INTEGER","bytesAt","subarray","string","byteSize","decode","enumName","names","readVector3","reader","readQuaternion","readMatrix","values","i","push","readBounds","min","max","crc32","start","end","crc","table","crc32Table","cachedCrc32Table","Uint32Array","c","k"],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { MeshoptDecoder } from 'meshoptimizer/decoder';
|
|
2
|
+
|
|
3
|
+
const CHANNEL_NAMES = Object.freeze({
|
|
4
|
+
Position: "position",
|
|
5
|
+
Normal: "normal",
|
|
6
|
+
Tangent: "tangent",
|
|
7
|
+
Binormal: "binormal",
|
|
8
|
+
TexCoord: "texcoord",
|
|
9
|
+
Color: "color",
|
|
10
|
+
BoneIndices: "blendIndice",
|
|
11
|
+
BoneWeights: "blendWeight",
|
|
12
|
+
PackedTangent: "packedTangent",
|
|
13
|
+
PackedTangentLegacy: "packedTangentLegacy"
|
|
14
|
+
});
|
|
15
|
+
function decodeGeometrySync(result, sourceBytes) {
|
|
16
|
+
const sections = result.sections.map((section, index) => decodeSectionSync(section, index, sourceBytes));
|
|
17
|
+
attachGeometry(result, sections);
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
async function decodeGeometryAsync(result, sourceBytes) {
|
|
21
|
+
await MeshoptDecoder.ready;
|
|
22
|
+
const sections = result.sections.map((section, index) => decodeSectionWithMeshopt(section, index, sourceBytes));
|
|
23
|
+
attachGeometry(result, sections);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function decodeSectionSync(section, index, sourceBytes) {
|
|
27
|
+
if (section.compression !== "None") {
|
|
28
|
+
throw new Error("CMF compressed GPU buffers require ReadAsync/readAsync so meshoptimizer can initialize");
|
|
29
|
+
}
|
|
30
|
+
return sectionBytes(section, index, sourceBytes);
|
|
31
|
+
}
|
|
32
|
+
function decodeSectionWithMeshopt(section, index, sourceBytes) {
|
|
33
|
+
const source = sectionBytes(section, index, sourceBytes);
|
|
34
|
+
if (section.compression === "None") {
|
|
35
|
+
return source;
|
|
36
|
+
}
|
|
37
|
+
const target = new Uint8Array(section.uncompressedSize);
|
|
38
|
+
const count = section.gpuAlignment === 0 ? 0 : section.uncompressedSize / section.gpuAlignment;
|
|
39
|
+
if (section.compression === "MeshOptimizerVertexBuffer") {
|
|
40
|
+
MeshoptDecoder.decodeVertexBuffer(target, count, section.gpuAlignment, source);
|
|
41
|
+
return target;
|
|
42
|
+
}
|
|
43
|
+
if (section.compression === "MeshOptimizerIndexBuffer") {
|
|
44
|
+
MeshoptDecoder.decodeIndexBuffer(target, count, section.gpuAlignment, source);
|
|
45
|
+
return target;
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`Unsupported CMF section compression "${section.compression}"`);
|
|
48
|
+
}
|
|
49
|
+
function sectionBytes(section, index, sourceBytes) {
|
|
50
|
+
if (index === 0 || section.type !== "GpuBuffer") {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return sourceBytes.subarray(section.offset, section.offset + section.compressedSize);
|
|
54
|
+
}
|
|
55
|
+
function attachGeometry(result, sectionData) {
|
|
56
|
+
result.buffers = result.sections.map((section, index) => {
|
|
57
|
+
const data = sectionData[index];
|
|
58
|
+
return {
|
|
59
|
+
index,
|
|
60
|
+
type: section.type,
|
|
61
|
+
compression: section.compression,
|
|
62
|
+
byteLength: data?.byteLength ?? 0,
|
|
63
|
+
data
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
for (const mesh of result.meshes) {
|
|
67
|
+
for (const lod of mesh.lods) {
|
|
68
|
+
lod.vertex = readVertexChannels(mesh.decl, lod.vb, sectionData);
|
|
69
|
+
lod.indices = readIndexGroups(mesh, lod, sectionData);
|
|
70
|
+
for (let i = 0; i < lod.morphTargets.length; i++) {
|
|
71
|
+
const target = lod.morphTargets[i];
|
|
72
|
+
target.vertex = readVertexChannels(mesh.morphTargets.decl, target.vb, sectionData);
|
|
73
|
+
target.name = mesh.morphTargets.targets[i]?.name ?? target.name ?? "";
|
|
74
|
+
target.maxDisplacement = mesh.morphTargets.targets[i]?.maxDisplacement ?? target.maxDisplacement ?? 0;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (mesh.lods.length > 0) {
|
|
78
|
+
mesh.vertex = mesh.lods[0].vertex;
|
|
79
|
+
mesh.indices = mesh.lods[0].indices;
|
|
80
|
+
} else {
|
|
81
|
+
mesh.vertex = createVertexChannels();
|
|
82
|
+
mesh.indices = [];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function readVertexChannels(decl, view, sectionData) {
|
|
87
|
+
const channels = createVertexChannels();
|
|
88
|
+
const bytes = viewData(view, sectionData);
|
|
89
|
+
if (!bytes || view.stride === 0) {
|
|
90
|
+
return channels;
|
|
91
|
+
}
|
|
92
|
+
const reader = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
93
|
+
const count = Math.floor(view.size / view.stride);
|
|
94
|
+
for (const element of decl) {
|
|
95
|
+
const channel = channelName(element);
|
|
96
|
+
if (!channels[channel]) channels[channel] = [];
|
|
97
|
+
for (let vertex = 0; vertex < count; vertex++) {
|
|
98
|
+
const base = vertex * view.stride + element.offset;
|
|
99
|
+
for (let component = 0; component < element.elementCount; component++) {
|
|
100
|
+
channels[channel].push(readElementComponent(reader, base, element.type, component));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return channels;
|
|
105
|
+
}
|
|
106
|
+
function readIndexGroups(mesh, lod, sectionData) {
|
|
107
|
+
const bytes = viewData(lod.ib, sectionData);
|
|
108
|
+
if (!bytes || lod.ib.stride === 0) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
const reader = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),
|
|
112
|
+
allFaces = readIndices(reader, lod.ib.size, lod.ib.stride);
|
|
113
|
+
if (lod.areas.length === 0) {
|
|
114
|
+
return [{
|
|
115
|
+
name: "",
|
|
116
|
+
bytesPerIndex: lod.ib.stride,
|
|
117
|
+
faces: allFaces
|
|
118
|
+
}];
|
|
119
|
+
}
|
|
120
|
+
return lod.areas.map((area, areaIndex) => {
|
|
121
|
+
const sourceArea = mesh.areas[areaIndex];
|
|
122
|
+
return {
|
|
123
|
+
name: sourceArea?.name ?? "",
|
|
124
|
+
bytesPerIndex: lod.ib.stride,
|
|
125
|
+
firstElement: area.firstElement,
|
|
126
|
+
elementCount: area.elementCount,
|
|
127
|
+
faces: allFaces.slice(area.firstElement * 3, (area.firstElement + area.elementCount) * 3)
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function readIndices(reader, byteSize, stride) {
|
|
132
|
+
const result = [];
|
|
133
|
+
for (let offset = 0; offset < byteSize; offset += stride) {
|
|
134
|
+
if (stride === 2) result.push(reader.getUint16(offset, true));else if (stride === 4) result.push(reader.getUint32(offset, true));else result.push(reader.getUint8(offset));
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
function viewData(view, sectionData) {
|
|
139
|
+
const section = sectionData[view.index];
|
|
140
|
+
if (!section || view.size === 0) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return section.subarray(view.offset, view.offset + view.size);
|
|
144
|
+
}
|
|
145
|
+
function channelName(element) {
|
|
146
|
+
const base = CHANNEL_NAMES[element.usage] ?? lowerFirst(element.usage);
|
|
147
|
+
if (element.usage === "TexCoord" || element.usage === "Color") {
|
|
148
|
+
return `${base}${element.usageIndex}`;
|
|
149
|
+
}
|
|
150
|
+
if (element.usageIndex > 0) {
|
|
151
|
+
return `${base}${element.usageIndex}`;
|
|
152
|
+
}
|
|
153
|
+
return base;
|
|
154
|
+
}
|
|
155
|
+
function createVertexChannels() {
|
|
156
|
+
return {
|
|
157
|
+
position: [],
|
|
158
|
+
normal: [],
|
|
159
|
+
tangent: [],
|
|
160
|
+
binormal: [],
|
|
161
|
+
texcoord0: [],
|
|
162
|
+
texcoord1: [],
|
|
163
|
+
color0: [],
|
|
164
|
+
blendIndice: [],
|
|
165
|
+
blendWeight: [],
|
|
166
|
+
packedTangent: [],
|
|
167
|
+
packedTangentLegacy: []
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function readElementComponent(reader, base, type, component) {
|
|
171
|
+
const offset = base + component * elementTypeSize(type);
|
|
172
|
+
switch (type) {
|
|
173
|
+
case "Float32":
|
|
174
|
+
return reader.getFloat32(offset, true);
|
|
175
|
+
case "Float16":
|
|
176
|
+
return halfToFloat(reader.getUint16(offset, true));
|
|
177
|
+
case "UInt16Norm":
|
|
178
|
+
return reader.getUint16(offset, true) / 65535;
|
|
179
|
+
case "UInt16":
|
|
180
|
+
return reader.getUint16(offset, true);
|
|
181
|
+
case "Int16Norm":
|
|
182
|
+
return Math.max(reader.getInt16(offset, true) / 32767, -1);
|
|
183
|
+
case "Int16":
|
|
184
|
+
return reader.getInt16(offset, true);
|
|
185
|
+
case "UInt8Norm":
|
|
186
|
+
return reader.getUint8(offset) / 255;
|
|
187
|
+
case "UInt8":
|
|
188
|
+
return reader.getUint8(offset);
|
|
189
|
+
case "Int8Norm":
|
|
190
|
+
return Math.max(reader.getInt8(offset) / 127, -1);
|
|
191
|
+
case "Int8":
|
|
192
|
+
return reader.getInt8(offset);
|
|
193
|
+
default:
|
|
194
|
+
throw new Error(`Unsupported CMF vertex element type "${type}"`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function elementTypeSize(type) {
|
|
198
|
+
switch (type) {
|
|
199
|
+
case "Float32":
|
|
200
|
+
return 4;
|
|
201
|
+
case "Float16":
|
|
202
|
+
case "UInt16Norm":
|
|
203
|
+
case "UInt16":
|
|
204
|
+
case "Int16Norm":
|
|
205
|
+
case "Int16":
|
|
206
|
+
return 2;
|
|
207
|
+
case "UInt8Norm":
|
|
208
|
+
case "UInt8":
|
|
209
|
+
case "Int8Norm":
|
|
210
|
+
case "Int8":
|
|
211
|
+
return 1;
|
|
212
|
+
default:
|
|
213
|
+
throw new Error(`Unsupported CMF vertex element type "${type}"`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function halfToFloat(value) {
|
|
217
|
+
const sign = value & 0x8000 ? -1 : 1,
|
|
218
|
+
exponent = value >> 10 & 0x1f,
|
|
219
|
+
fraction = value & 0x03ff;
|
|
220
|
+
if (exponent === 0) {
|
|
221
|
+
return sign * Math.pow(2, -14) * (fraction / 1024);
|
|
222
|
+
}
|
|
223
|
+
if (exponent === 31) {
|
|
224
|
+
return fraction ? NaN : sign * Infinity;
|
|
225
|
+
}
|
|
226
|
+
return sign * Math.pow(2, exponent - 15) * (1 + fraction / 1024);
|
|
227
|
+
}
|
|
228
|
+
function lowerFirst(value) {
|
|
229
|
+
return value ? value[0].toLowerCase() + value.slice(1) : value;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export { decodeGeometryAsync, decodeGeometrySync };
|
|
233
|
+
//# sourceMappingURL=buffers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffers.js","sources":["../../../../../src/formats/cmf/core/buffers.js"],"sourcesContent":["import { MeshoptDecoder } from \"meshoptimizer/decoder\";\n\nconst CHANNEL_NAMES = Object.freeze({\n Position: \"position\",\n Normal: \"normal\",\n Tangent: \"tangent\",\n Binormal: \"binormal\",\n TexCoord: \"texcoord\",\n Color: \"color\",\n BoneIndices: \"blendIndice\",\n BoneWeights: \"blendWeight\",\n PackedTangent: \"packedTangent\",\n PackedTangentLegacy: \"packedTangentLegacy\"\n});\n\nexport function decodeGeometrySync(result, sourceBytes)\n{\n const sections = result.sections.map((section, index) => decodeSectionSync(section, index, sourceBytes));\n attachGeometry(result, sections);\n return result;\n}\n\nexport async function decodeGeometryAsync(result, sourceBytes)\n{\n await MeshoptDecoder.ready;\n const sections = result.sections.map((section, index) => decodeSectionWithMeshopt(section, index, sourceBytes));\n attachGeometry(result, sections);\n return result;\n}\n\nfunction decodeSectionSync(section, index, sourceBytes)\n{\n if (section.compression !== \"None\")\n {\n throw new Error(\"CMF compressed GPU buffers require ReadAsync/readAsync so meshoptimizer can initialize\");\n }\n\n return sectionBytes(section, index, sourceBytes);\n}\n\nfunction decodeSectionWithMeshopt(section, index, sourceBytes)\n{\n const source = sectionBytes(section, index, sourceBytes);\n if (section.compression === \"None\")\n {\n return source;\n }\n\n const target = new Uint8Array(section.uncompressedSize);\n const count = section.gpuAlignment === 0 ? 0 : section.uncompressedSize / section.gpuAlignment;\n\n if (section.compression === \"MeshOptimizerVertexBuffer\")\n {\n MeshoptDecoder.decodeVertexBuffer(target, count, section.gpuAlignment, source);\n return target;\n }\n\n if (section.compression === \"MeshOptimizerIndexBuffer\")\n {\n MeshoptDecoder.decodeIndexBuffer(target, count, section.gpuAlignment, source);\n return target;\n }\n\n throw new Error(`Unsupported CMF section compression \"${section.compression}\"`);\n}\n\nfunction sectionBytes(section, index, sourceBytes)\n{\n if (index === 0 || section.type !== \"GpuBuffer\")\n {\n return null;\n }\n\n return sourceBytes.subarray(section.offset, section.offset + section.compressedSize);\n}\n\nfunction attachGeometry(result, sectionData)\n{\n result.buffers = result.sections.map((section, index) =>\n {\n const data = sectionData[index];\n return {\n index,\n type: section.type,\n compression: section.compression,\n byteLength: data?.byteLength ?? 0,\n data\n };\n });\n\n for (const mesh of result.meshes)\n {\n for (const lod of mesh.lods)\n {\n lod.vertex = readVertexChannels(mesh.decl, lod.vb, sectionData);\n lod.indices = readIndexGroups(mesh, lod, sectionData);\n\n for (let i = 0; i < lod.morphTargets.length; i++)\n {\n const target = lod.morphTargets[i];\n target.vertex = readVertexChannels(mesh.morphTargets.decl, target.vb, sectionData);\n target.name = mesh.morphTargets.targets[i]?.name ?? target.name ?? \"\";\n target.maxDisplacement = mesh.morphTargets.targets[i]?.maxDisplacement ?? target.maxDisplacement ?? 0;\n }\n }\n\n if (mesh.lods.length > 0)\n {\n mesh.vertex = mesh.lods[0].vertex;\n mesh.indices = mesh.lods[0].indices;\n }\n else\n {\n mesh.vertex = createVertexChannels();\n mesh.indices = [];\n }\n }\n}\n\nfunction readVertexChannels(decl, view, sectionData)\n{\n const channels = createVertexChannels();\n const bytes = viewData(view, sectionData);\n if (!bytes || view.stride === 0)\n {\n return channels;\n }\n\n const reader = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = Math.floor(view.size / view.stride);\n for (const element of decl)\n {\n const channel = channelName(element);\n if (!channels[channel]) channels[channel] = [];\n\n for (let vertex = 0; vertex < count; vertex++)\n {\n const base = vertex * view.stride + element.offset;\n for (let component = 0; component < element.elementCount; component++)\n {\n channels[channel].push(readElementComponent(reader, base, element.type, component));\n }\n }\n }\n\n return channels;\n}\n\nfunction readIndexGroups(mesh, lod, sectionData)\n{\n const bytes = viewData(lod.ib, sectionData);\n if (!bytes || lod.ib.stride === 0)\n {\n return [];\n }\n\n const\n reader = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n allFaces = readIndices(reader, lod.ib.size, lod.ib.stride);\n\n if (lod.areas.length === 0)\n {\n return [ {\n name: \"\",\n bytesPerIndex: lod.ib.stride,\n faces: allFaces\n } ];\n }\n\n return lod.areas.map((area, areaIndex) =>\n {\n const sourceArea = mesh.areas[areaIndex];\n return {\n name: sourceArea?.name ?? \"\",\n bytesPerIndex: lod.ib.stride,\n firstElement: area.firstElement,\n elementCount: area.elementCount,\n faces: allFaces.slice(area.firstElement * 3, (area.firstElement + area.elementCount) * 3)\n };\n });\n}\n\nfunction readIndices(reader, byteSize, stride)\n{\n const result = [];\n for (let offset = 0; offset < byteSize; offset += stride)\n {\n if (stride === 2) result.push(reader.getUint16(offset, true));\n else if (stride === 4) result.push(reader.getUint32(offset, true));\n else result.push(reader.getUint8(offset));\n }\n return result;\n}\n\nfunction viewData(view, sectionData)\n{\n const section = sectionData[view.index];\n if (!section || view.size === 0)\n {\n return null;\n }\n\n return section.subarray(view.offset, view.offset + view.size);\n}\n\nfunction channelName(element)\n{\n const base = CHANNEL_NAMES[element.usage] ?? lowerFirst(element.usage);\n if (element.usage === \"TexCoord\" || element.usage === \"Color\")\n {\n return `${base}${element.usageIndex}`;\n }\n\n if (element.usageIndex > 0)\n {\n return `${base}${element.usageIndex}`;\n }\n\n return base;\n}\n\nfunction createVertexChannels()\n{\n return {\n position: [],\n normal: [],\n tangent: [],\n binormal: [],\n texcoord0: [],\n texcoord1: [],\n color0: [],\n blendIndice: [],\n blendWeight: [],\n packedTangent: [],\n packedTangentLegacy: []\n };\n}\n\nfunction readElementComponent(reader, base, type, component)\n{\n const offset = base + component * elementTypeSize(type);\n switch (type)\n {\n case \"Float32\":\n return reader.getFloat32(offset, true);\n case \"Float16\":\n return halfToFloat(reader.getUint16(offset, true));\n case \"UInt16Norm\":\n return reader.getUint16(offset, true) / 65535;\n case \"UInt16\":\n return reader.getUint16(offset, true);\n case \"Int16Norm\":\n return Math.max(reader.getInt16(offset, true) / 32767, -1);\n case \"Int16\":\n return reader.getInt16(offset, true);\n case \"UInt8Norm\":\n return reader.getUint8(offset) / 255;\n case \"UInt8\":\n return reader.getUint8(offset);\n case \"Int8Norm\":\n return Math.max(reader.getInt8(offset) / 127, -1);\n case \"Int8\":\n return reader.getInt8(offset);\n default:\n throw new Error(`Unsupported CMF vertex element type \"${type}\"`);\n }\n}\n\nfunction elementTypeSize(type)\n{\n switch (type)\n {\n case \"Float32\":\n return 4;\n case \"Float16\":\n case \"UInt16Norm\":\n case \"UInt16\":\n case \"Int16Norm\":\n case \"Int16\":\n return 2;\n case \"UInt8Norm\":\n case \"UInt8\":\n case \"Int8Norm\":\n case \"Int8\":\n return 1;\n default:\n throw new Error(`Unsupported CMF vertex element type \"${type}\"`);\n }\n}\n\nfunction halfToFloat(value)\n{\n const\n sign = (value & 0x8000) ? -1 : 1,\n exponent = (value >> 10) & 0x1f,\n fraction = value & 0x03ff;\n\n if (exponent === 0)\n {\n return sign * Math.pow(2, -14) * (fraction / 1024);\n }\n\n if (exponent === 31)\n {\n return fraction ? NaN : sign * Infinity;\n }\n\n return sign * Math.pow(2, exponent - 15) * (1 + fraction / 1024);\n}\n\nfunction lowerFirst(value)\n{\n return value ? value[0].toLowerCase() + value.slice(1) : value;\n}\n"],"names":["CHANNEL_NAMES","Object","freeze","Position","Normal","Tangent","Binormal","TexCoord","Color","BoneIndices","BoneWeights","PackedTangent","PackedTangentLegacy","decodeGeometrySync","result","sourceBytes","sections","map","section","index","decodeSectionSync","attachGeometry","decodeGeometryAsync","MeshoptDecoder","ready","decodeSectionWithMeshopt","compression","Error","sectionBytes","source","target","Uint8Array","uncompressedSize","count","gpuAlignment","decodeVertexBuffer","decodeIndexBuffer","type","subarray","offset","compressedSize","sectionData","buffers","data","byteLength","mesh","meshes","lod","lods","vertex","readVertexChannels","decl","vb","indices","readIndexGroups","i","morphTargets","length","name","targets","maxDisplacement","createVertexChannels","view","channels","bytes","viewData","stride","reader","DataView","buffer","byteOffset","Math","floor","size","element","channel","channelName","base","component","elementCount","push","readElementComponent","ib","allFaces","readIndices","areas","bytesPerIndex","faces","area","areaIndex","sourceArea","firstElement","slice","byteSize","getUint16","getUint32","getUint8","usage","lowerFirst","usageIndex","position","normal","tangent","binormal","texcoord0","texcoord1","color0","blendIndice","blendWeight","packedTangent","packedTangentLegacy","elementTypeSize","getFloat32","halfToFloat","max","getInt16","getInt8","value","sign","exponent","fraction","pow","NaN","Infinity","toLowerCase"],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const FILE_SIGNATURE = 0x66666D63;
|
|
2
|
+
const FILE_VERSION = 1;
|
|
3
|
+
const OUTPUT_JSON = "json";
|
|
4
|
+
const OUTPUT_CMF = "cmf";
|
|
5
|
+
const OUTPUT_CMF_JSON = "cmfJson";
|
|
6
|
+
const OUTPUT_GR2 = "gr2";
|
|
7
|
+
const OUTPUT_NATIVE = "native";
|
|
8
|
+
const OUTPUT_RAW = "raw";
|
|
9
|
+
const OUTPUT_SHARED = "shared";
|
|
10
|
+
const STRUCT_SIZE = Object.freeze({
|
|
11
|
+
BufferView: 16,
|
|
12
|
+
VertexElement: 8,
|
|
13
|
+
MeshArea: 64,
|
|
14
|
+
LodMeshArea: 8,
|
|
15
|
+
BoneBinding: 40,
|
|
16
|
+
MorphTarget: 24,
|
|
17
|
+
MorphTargets: 32,
|
|
18
|
+
LodMorphTarget: 16,
|
|
19
|
+
MeshLod: 72,
|
|
20
|
+
AudioOcclusionMesh: 56,
|
|
21
|
+
Transform: 40,
|
|
22
|
+
BoneWeight: 8,
|
|
23
|
+
BoneMask: 32,
|
|
24
|
+
Skeleton: 96,
|
|
25
|
+
AnimationChannel: 24,
|
|
26
|
+
AnimationCurve: 40,
|
|
27
|
+
Animation: 56,
|
|
28
|
+
MetadataEntry: 32,
|
|
29
|
+
Metadata: 16,
|
|
30
|
+
Section: 16,
|
|
31
|
+
Header: 32,
|
|
32
|
+
Data: 48,
|
|
33
|
+
Mesh: 216
|
|
34
|
+
});
|
|
35
|
+
const Usage = Object.freeze(["Position", "Normal", "Tangent", "Binormal", "TexCoord", "Color", "BoneIndices", "BoneWeights", "PackedTangent", "PackedTangentLegacy"]);
|
|
36
|
+
const ElementType = Object.freeze(["Float32", "Float16", "UInt16Norm", "UInt16", "Int16Norm", "Int16", "UInt8Norm", "UInt8", "Int8Norm", "Int8"]);
|
|
37
|
+
const MeshTopology = Object.freeze(["TriangleList", "PointList"]);
|
|
38
|
+
const SectionType = Object.freeze(["Data", "GpuBuffer", "Metadata"]);
|
|
39
|
+
const SectionCompression = Object.freeze(["None", "MeshOptimizerVertexBuffer", "MeshOptimizerIndexBuffer"]);
|
|
40
|
+
const AnimationChannelTargetType = Object.freeze(["BonePosition", "BoneRotation", "BoneScale", "MorphTarget", "Other"]);
|
|
41
|
+
const Interpolation = Object.freeze(["Step", "Linear"]);
|
|
42
|
+
const CMF_CLASS_KEYS = Object.freeze(["Root", "Section", "Metadata", "MetadataEntry", "Mesh", "IndexGroup", "VertexElement", "MeshLod", "MeshArea", "LodMeshArea", "BoneBinding", "MorphTargets", "MorphTarget", "LodMorphTarget", "AudioOcclusionMesh", "Skeleton", "BoneMask", "BoneWeight", "Animation", "AnimationChannel", "AnimationCurve"]);
|
|
43
|
+
const GR2_CLASS_KEYS = Object.freeze(["Root", "Mesh", "BoneBinding", "IndexGroup", "MorphTarget", "Model", "Skeleton", "Bone", "Animation", "TrackGroup", "TransformTrack", "Curve"]);
|
|
44
|
+
const CLASS_KEYS = Object.freeze(Array.from(new Set([...CMF_CLASS_KEYS, ...GR2_CLASS_KEYS])));
|
|
45
|
+
|
|
46
|
+
export { AnimationChannelTargetType, CLASS_KEYS, CMF_CLASS_KEYS, ElementType, FILE_SIGNATURE, FILE_VERSION, GR2_CLASS_KEYS, Interpolation, MeshTopology, OUTPUT_CMF, OUTPUT_CMF_JSON, OUTPUT_GR2, OUTPUT_JSON, OUTPUT_NATIVE, OUTPUT_RAW, OUTPUT_SHARED, STRUCT_SIZE, SectionCompression, SectionType, Usage };
|
|
47
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../../src/formats/cmf/core/constants.js"],"sourcesContent":["export const FILE_SIGNATURE = 0x66666D63;\nexport const FILE_VERSION = 1;\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_CMF_JSON = \"cmfJson\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_NATIVE = \"native\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_SHARED = \"shared\";\n\nexport const STRUCT_SIZE = Object.freeze({\n BufferView: 16,\n VertexElement: 8,\n MeshArea: 64,\n LodMeshArea: 8,\n BoneBinding: 40,\n MorphTarget: 24,\n MorphTargets: 32,\n LodMorphTarget: 16,\n MeshLod: 72,\n AudioOcclusionMesh: 56,\n Transform: 40,\n BoneWeight: 8,\n BoneMask: 32,\n Skeleton: 96,\n AnimationChannel: 24,\n AnimationCurve: 40,\n Animation: 56,\n MetadataEntry: 32,\n Metadata: 16,\n Section: 16,\n Header: 32,\n Data: 48,\n Mesh: 216\n});\n\nexport const Usage = Object.freeze([\n \"Position\",\n \"Normal\",\n \"Tangent\",\n \"Binormal\",\n \"TexCoord\",\n \"Color\",\n \"BoneIndices\",\n \"BoneWeights\",\n \"PackedTangent\",\n \"PackedTangentLegacy\"\n]);\n\nexport const ElementType = Object.freeze([\n \"Float32\",\n \"Float16\",\n \"UInt16Norm\",\n \"UInt16\",\n \"Int16Norm\",\n \"Int16\",\n \"UInt8Norm\",\n \"UInt8\",\n \"Int8Norm\",\n \"Int8\"\n]);\n\nexport const MeshTopology = Object.freeze([\n \"TriangleList\",\n \"PointList\"\n]);\n\nexport const SectionType = Object.freeze([\n \"Data\",\n \"GpuBuffer\",\n \"Metadata\"\n]);\n\nexport const SectionCompression = Object.freeze([\n \"None\",\n \"MeshOptimizerVertexBuffer\",\n \"MeshOptimizerIndexBuffer\"\n]);\n\nexport const AnimationChannelTargetType = Object.freeze([\n \"BonePosition\",\n \"BoneRotation\",\n \"BoneScale\",\n \"MorphTarget\",\n \"Other\"\n]);\n\nexport const Interpolation = Object.freeze([\n \"Step\",\n \"Linear\"\n]);\n\nexport const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nexport const GR2_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Mesh\",\n \"BoneBinding\",\n \"IndexGroup\",\n \"MorphTarget\",\n \"Model\",\n \"Skeleton\",\n \"Bone\",\n \"Animation\",\n \"TrackGroup\",\n \"TransformTrack\",\n \"Curve\"\n]);\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...CMF_CLASS_KEYS,\n ...GR2_CLASS_KEYS\n])));\n"],"names":["FILE_SIGNATURE","FILE_VERSION","OUTPUT_JSON","OUTPUT_CMF","OUTPUT_CMF_JSON","OUTPUT_GR2","OUTPUT_NATIVE","OUTPUT_RAW","OUTPUT_SHARED","STRUCT_SIZE","Object","freeze","BufferView","VertexElement","MeshArea","LodMeshArea","BoneBinding","MorphTarget","MorphTargets","LodMorphTarget","MeshLod","AudioOcclusionMesh","Transform","BoneWeight","BoneMask","Skeleton","AnimationChannel","AnimationCurve","Animation","MetadataEntry","Metadata","Section","Header","Data","Mesh","Usage","ElementType","MeshTopology","SectionType","SectionCompression","AnimationChannelTargetType","Interpolation","CMF_CLASS_KEYS","GR2_CLASS_KEYS","CLASS_KEYS","Array","from","Set"],"mappings":"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"}
|