@carbonenginejs/runtime-resource 0.9.2 → 0.11.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/NOTICE +3 -2
- package/README.md +47 -6
- package/dist/CjsMotherLode.js +88 -88
- package/dist/CjsMotherLode.js.map +1 -1
- package/dist/CjsResMan.js +717 -228
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResManFetchProvider.js +94 -0
- package/dist/CjsResManFetchProvider.js.map +1 -0
- package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
- package/dist/CjsResManWorkQueue.js.map +1 -0
- package/dist/format/CjsBlueReader.js +89 -0
- package/dist/format/CjsBlueReader.js.map +1 -1
- package/dist/format/CjsFormat.js +42 -16
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsReader.js +4 -0
- package/dist/format/CjsReader.js.map +1 -1
- package/dist/format/CjsResourceProbe.js +2 -0
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/format/effect/effectPermutationGraph.js +257 -0
- package/dist/format/effect/effectPermutationGraph.js.map +1 -0
- package/dist/format/effect/effectReflectionPackage.js +636 -0
- package/dist/format/effect/effectReflectionPackage.js.map +1 -0
- package/dist/format/effect/sha256.js +114 -0
- package/dist/format/effect/sha256.js.map +1 -0
- package/dist/format/payloadContract.js +20 -0
- package/dist/format/payloadContract.js.map +1 -1
- package/dist/formats/black/CjsBlackFormat.js +15 -1
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
- package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
- package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
- package/dist/formats/black/core/CjsBlackReader.js +125 -0
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
- package/dist/formats/black/core/helpers.js +17 -0
- package/dist/formats/black/core/helpers.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +8 -0
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +20 -0
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +40 -3
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/cmf/core/binary.js +71 -0
- package/dist/formats/cmf/core/binary.js.map +1 -1
- package/dist/formats/cmf/core/buffers.js +4 -0
- package/dist/formats/cmf/core/buffers.js.map +1 -1
- package/dist/formats/cmf/core/helpers.js +31 -0
- package/dist/formats/cmf/core/helpers.js.map +1 -1
- package/dist/formats/cmf/core/schema.js +10 -0
- package/dist/formats/cmf/core/schema.js.map +1 -1
- package/dist/formats/cmf/core/shared.js +9 -0
- package/dist/formats/cmf/core/shared.js.map +1 -1
- package/dist/formats/cmf/core/writer.js +54 -0
- package/dist/formats/cmf/core/writer.js.map +1 -1
- package/dist/formats/dds/core/bc6h.js +10 -0
- package/dist/formats/dds/core/bc6h.js.map +1 -1
- package/dist/formats/dds/core/bc7.js +16 -0
- package/dist/formats/dds/core/bc7.js.map +1 -1
- package/dist/formats/dds/core/helpers.js +47 -0
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
- package/dist/formats/dxbc/core/DxbcReader.js +266 -0
- package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
- package/dist/formats/dxbc/core/container.js +169 -0
- package/dist/formats/dxbc/core/container.js.map +1 -0
- package/dist/formats/dxbc/core/decoder.js +789 -0
- package/dist/formats/dxbc/core/decoder.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -0
- package/dist/formats/dxbc/core/errors.js.map +1 -0
- package/dist/formats/dxbc/core/helpers.js +220 -0
- package/dist/formats/dxbc/core/helpers.js.map +1 -0
- package/dist/formats/dxbc/core/opcodes.js +45 -0
- package/dist/formats/dxbc/core/opcodes.js.map +1 -0
- package/dist/formats/dxbc/core/program.js +91 -0
- package/dist/formats/dxbc/core/program.js.map +1 -0
- package/dist/formats/dxbc/core/signature.js +172 -0
- package/dist/formats/dxbc/core/signature.js.map +1 -0
- package/dist/formats/dxbc/index.js +2 -0
- package/dist/formats/dxbc/index.js.map +1 -0
- package/dist/formats/fbx/core/helpers.js +21 -0
- package/dist/formats/fbx/core/helpers.js.map +1 -1
- package/dist/formats/flac/CjsFlacFormat.js +49 -0
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/formats/flac/core/helpers.js +20 -0
- package/dist/formats/flac/core/helpers.js.map +1 -1
- package/dist/formats/gif/CjsGifFormat.js +49 -0
- package/dist/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/formats/gif/core/helpers.js +20 -0
- package/dist/formats/gif/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +15 -0
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/parser.js +13 -0
- package/dist/formats/gltf/core/parser.js.map +1 -1
- package/dist/formats/gltf/core/targets.js +10 -0
- package/dist/formats/gltf/core/targets.js.map +1 -1
- package/dist/formats/gr2/core/bitknit2.js +2 -0
- package/dist/formats/gr2/core/bitknit2.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +20 -0
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +10 -0
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
- package/dist/formats/hlsl/core/HlslReader.js +266 -0
- package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
- package/dist/formats/hlsl/core/analysis.js +51 -0
- package/dist/formats/hlsl/core/analysis.js.map +1 -0
- package/dist/formats/hlsl/core/helpers.js +270 -0
- package/dist/formats/hlsl/core/helpers.js.map +1 -0
- package/dist/formats/hlsl/core/json.js +284 -0
- package/dist/formats/hlsl/core/json.js.map +1 -0
- package/dist/formats/hlsl/core/metadata.js +327 -0
- package/dist/formats/hlsl/core/metadata.js.map +1 -0
- package/dist/formats/hlsl/core/portableReflection.js +848 -0
- package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
- package/dist/formats/hlsl/core/render-states.js +280 -0
- package/dist/formats/hlsl/core/render-states.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
- package/dist/formats/hlsl/index.js +2 -0
- package/dist/formats/hlsl/index.js.map +1 -0
- package/dist/formats/hlsl/portable.js +2 -0
- package/dist/formats/hlsl/portable.js.map +1 -0
- package/dist/formats/index.js +4 -0
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/jpeg/core/helpers.js +52 -0
- package/dist/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/formats/jpeg/core/jpeg.js +93 -0
- package/dist/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/formats/mp3/core/helpers.js +37 -0
- package/dist/formats/mp3/core/helpers.js.map +1 -1
- package/dist/formats/mp4/core/helpers.js +35 -0
- package/dist/formats/mp4/core/helpers.js.map +1 -1
- package/dist/formats/ogg/CjsOggFormat.js +49 -0
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/formats/ogg/core/helpers.js +23 -0
- package/dist/formats/ogg/core/helpers.js.map +1 -1
- package/dist/formats/ogg/core/vorbis.js +13 -0
- package/dist/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/formats/png/core/helpers.js +52 -0
- package/dist/formats/png/core/helpers.js.map +1 -1
- package/dist/formats/red/CjsRedFormat.js +2 -0
- package/dist/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/formats/red/core/CjsRedReader.js +52 -0
- package/dist/formats/red/core/CjsRedReader.js.map +1 -1
- package/dist/formats/red/core/helpers.js +19 -0
- package/dist/formats/red/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/stl.js +8 -0
- package/dist/formats/stl/core/stl.js.map +1 -1
- package/dist/formats/stl/core/targets.js +10 -0
- package/dist/formats/stl/core/targets.js.map +1 -1
- package/dist/formats/tga/core/helpers.js +47 -0
- package/dist/formats/tga/core/helpers.js.map +1 -1
- package/dist/formats/wav/core/helpers.js +37 -0
- package/dist/formats/wav/core/helpers.js.map +1 -1
- package/dist/formats/webgl/CjsWebglFormat.js +221 -0
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
- package/dist/formats/webgl/core/cewg/binary.js +101 -0
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
- package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
- package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +789 -0
- package/dist/formats/webgl/core/effectPackage.js.map +1 -0
- package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
- package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgl/core/errors.js +27 -0
- package/dist/formats/webgl/core/errors.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +306 -0
- package/dist/formats/webgl/core/helpers.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -0
- package/dist/formats/webgl/index.js.map +1 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
- package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgpu/core/errors.js +20 -0
- package/dist/formats/webgpu/core/errors.js.map +1 -0
- package/dist/formats/webgpu/core/helpers.js +448 -0
- package/dist/formats/webgpu/core/helpers.js.map +1 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffect.js +300 -0
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
- package/dist/formats/webgpu/core/packageMetadata.js +8 -0
- package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
- package/dist/formats/webgpu/core/schema.js +4 -0
- package/dist/formats/webgpu/core/schema.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
- package/dist/formats/webgpu/index.js +2 -0
- package/dist/formats/webgpu/index.js.map +1 -0
- package/dist/formats/webm/core/helpers.js +35 -0
- package/dist/formats/webm/core/helpers.js.map +1 -1
- package/dist/formats/webp/CjsWebpFormat.js +49 -0
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/formats/webp/core/helpers.js +23 -0
- package/dist/formats/webp/core/helpers.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +8 -0
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/bitStream.js +2 -0
- package/dist/formats/wem/core/bitStream.js.map +1 -1
- package/dist/formats/wem/core/helpers.js +20 -0
- package/dist/formats/wem/core/helpers.js.map +1 -1
- package/dist/formats/yaml/CjsYamlFormat.js +45 -0
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +10 -0
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/index.js +56 -43
- package/dist/index.js.map +1 -1
- package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
- package/dist/resource/CjsResource.js.map +1 -0
- package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
- package/dist/resource/Tr2LightProfileRes.js.map +1 -0
- package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
- package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
- package/dist/resource/audio/CjsAudioRes.js +213 -0
- package/dist/resource/audio/CjsAudioRes.js.map +1 -0
- package/dist/resource/audio/index.js +4 -0
- package/dist/resource/audio/index.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
- package/dist/resource/geometry/MeshDecalData.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
- package/dist/resource/geometry/TriGeometryRes.js +656 -0
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
- package/dist/resource/geometry/TriJointBinding.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
- package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
- package/dist/resource/geometry/granny/enums.js.map +1 -0
- package/dist/resource/geometry/granny/index.js +6 -0
- package/dist/resource/geometry/granny/index.js.map +1 -0
- package/dist/resource/geometry/index.js +17 -0
- package/dist/resource/geometry/index.js.map +1 -0
- package/dist/resource/index.js +52 -0
- package/dist/resource/index.js.map +1 -0
- package/dist/resource/resourceBoundary.js +64 -0
- package/dist/resource/resourceBoundary.js.map +1 -0
- package/dist/resource/shader/Tr2EffectRes.js +429 -0
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
- package/dist/resource/shader/Tr2MaterialArea.js +34 -0
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
- package/dist/resource/shader/Tr2MaterialMesh.js +30 -0
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
- package/dist/resource/shader/Tr2MaterialRes.js +35 -0
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
- package/dist/resource/shader/Tr2Shader.js +256 -0
- package/dist/resource/shader/Tr2Shader.js.map +1 -0
- package/dist/resource/shader/Tr2ShaderPermutation.js +47 -0
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
- package/dist/resource/shader/index.js +17 -0
- package/dist/resource/shader/index.js.map +1 -0
- package/dist/resource/shader/portable.js +33 -0
- package/dist/resource/shader/portable.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +135 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +28 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +107 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +145 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +103 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js +84 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +239 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +66 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2Pass.js +109 -0
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +75 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
- package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
- package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
- package/dist/resource/texture/TriTextureRes.js.map +1 -0
- package/dist/resource/texture/index.js +15 -0
- package/dist/resource/texture/index.js.map +1 -0
- package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
- package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
- package/dist/worker/CjsResManMainThreadLoader.js +87 -0
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
- package/dist/worker/CjsResManWorker.js +217 -0
- package/dist/worker/CjsResManWorker.js.map +1 -0
- package/dist/worker/CjsResManWorkerLoader.js +434 -0
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
- package/dist/worker/protocol.js +12 -0
- package/dist/worker/protocol.js.map +1 -0
- package/docs/README.md +16 -3
- package/docs/architecture.md +39 -16
- package/docs/concepts/resource-lifecycle.md +2 -1
- package/docs/formats/README.md +8 -0
- package/docs/formats/provenance.md +11 -3
- package/docs/reference/classes/README.md +6 -4
- package/docs/reference/classes/audio.md +30 -0
- package/docs/reference/classes/core.md +31 -11
- package/docs/reference/classes/formats.md +440 -0
- package/docs/reference/classes/resources.md +151 -41
- package/docs/reference/classes/texture.md +7 -7
- package/docs/reference/motherlode-cache.md +17 -0
- package/docs/reference/queues.md +9 -1
- package/docs/reference/workers.md +135 -0
- package/docs/roadmap.md +27 -1
- package/format-notices/dxbc/LICENSE +21 -0
- package/format-notices/dxbc/NOTICE +20 -0
- package/format-notices/hlsl/LICENSE +21 -0
- package/format-notices/hlsl/NOTICE +25 -0
- package/format-notices/webgl/LICENSE +21 -0
- package/format-notices/webgl/NOTICE +35 -0
- package/format-notices/webgpu/LICENSE +21 -0
- package/format-notices/webgpu/NOTICE +31 -0
- package/package.json +13 -1
- package/dist/CjsResManQueue.js.map +0 -1
- package/dist/CjsResource.js.map +0 -1
- package/dist/CjsResourceSource.js +0 -68
- package/dist/CjsResourceSource.js.map +0 -1
- package/dist/resourcePath.js +0 -18
- package/dist/resourcePath.js.map +0 -1
- package/dist/resourceStates.js +0 -9
- package/dist/resourceStates.js.map +0 -1
- package/dist/resources/AudioGeometryResData.js.map +0 -1
- package/dist/resources/GStateBindingCallbackData.js.map +0 -1
- package/dist/resources/MeshDecalData.js.map +0 -1
- package/dist/resources/MeshDecalLodData.js.map +0 -1
- package/dist/resources/Tr2EffectRes.js +0 -71
- package/dist/resources/Tr2EffectRes.js.map +0 -1
- package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
- package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
- package/dist/resources/Tr2ImageRes.js.map +0 -1
- package/dist/resources/Tr2LightProfileRes.js.map +0 -1
- package/dist/resources/Tr2MaterialArea.js +0 -34
- package/dist/resources/Tr2MaterialArea.js.map +0 -1
- package/dist/resources/Tr2MaterialMesh.js +0 -31
- package/dist/resources/Tr2MaterialMesh.js.map +0 -1
- package/dist/resources/Tr2MaterialRes.js +0 -34
- package/dist/resources/Tr2MaterialRes.js.map +0 -1
- package/dist/resources/Tr2ShaderPermutation.js +0 -43
- package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
- package/dist/resources/Tr2TextureLodManager.js.map +0 -1
- package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
- package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
- package/dist/resources/Tr2TexturePipeline.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
- package/dist/resources/TriGeometryRes.js +0 -239
- package/dist/resources/TriGeometryRes.js.map +0 -1
- package/dist/resources/TriGeometryResAreaData.js.map +0 -1
- package/dist/resources/TriGeometryResJointData.js.map +0 -1
- package/dist/resources/TriGeometryResLodData.js.map +0 -1
- package/dist/resources/TriGeometryResMeshData.js.map +0 -1
- package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
- package/dist/resources/TriGrannyRes.js.map +0 -1
- package/dist/resources/TriJointBinding.js.map +0 -1
- package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
- package/dist/resources/TriRtGeometryConstants.js.map +0 -1
- package/dist/resources/TriTextureRes.js.map +0 -1
- package/dist/resources/enums.js.map +0 -1
- package/dist/resources/resourceBoundary.js +0 -47
- package/dist/resources/resourceBoundary.js.map +0 -1
- package/dist/resources/texturePipelineBehavior.js.map +0 -1
- package/dist/texture/CjsTextureArrayRes.js.map +0 -1
- package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sources":["../../../../../src/formats/cmf/core/schema.js"],"sourcesContent":["import {\n AnimationChannelTargetType,\n ElementType,\n FILE_SIGNATURE,\n FILE_VERSION,\n Interpolation,\n MeshTopology,\n SectionCompression,\n SectionType,\n STRUCT_SIZE,\n Usage\n} from \"./constants.js\";\nimport {\n BinaryReader,\n crc32,\n enumName,\n readBounds,\n readMatrix,\n readQuaternion,\n readVector3\n} from \"./binary.js\";\nimport { decodeGeometryAsync, decodeGeometrySync } from \"./buffers.js\";\n\nexport function readCmf(input, options = {})\n{\n const reader = new BinaryReader(input);\n const header = readHeader(reader);\n validateHeader(reader, header, options);\n\n const dataSection = header.sections[0];\n const root = readData(reader, dataSection.offset);\n const metadataSection = header.sections.find((section) => section.type === \"Metadata\");\n const metadata = metadataSection ? readMetadata(reader, metadataSection.offset) : null;\n\n const result = {\n signature: header.signature,\n version: header.version,\n headerSize: header.headerSize,\n crc32: header.crc32,\n sections: header.sections,\n metadata,\n meshes: root.meshes,\n skeletons: root.skeletons,\n animations: root.animations\n };\n\n return options.decodeBuffers ? decodeGeometrySync(result, reader.bytes) : result;\n}\n\nexport async function readCmfAsync(input, options = {})\n{\n const reader = new BinaryReader(input);\n const header = readHeader(reader);\n validateHeader(reader, header, options);\n\n const dataSection = header.sections[0];\n const root = readData(reader, dataSection.offset);\n const metadataSection = header.sections.find((section) => section.type === \"Metadata\");\n const metadata = metadataSection ? readMetadata(reader, metadataSection.offset) : null;\n\n const result = {\n signature: header.signature,\n version: header.version,\n headerSize: header.headerSize,\n crc32: header.crc32,\n sections: header.sections,\n metadata,\n meshes: root.meshes,\n skeletons: root.skeletons,\n animations: root.animations\n };\n\n return options.decodeBuffers ? await decodeGeometryAsync(result, reader.bytes) : result;\n}\n\nexport function readHeader(reader)\n{\n const signature = reader.u32(0);\n const version = reader.u32(4);\n const headerSize = reader.u32(8);\n const fileCrc32 = reader.u32(12);\n const sectionsSpan = readSpan(reader, 16, STRUCT_SIZE.Section);\n const sections = readArray(reader, sectionsSpan, readSection);\n\n return {\n signature,\n signatureText: \"cmff\",\n version,\n headerSize,\n crc32: fileCrc32,\n sections\n };\n}\n\nexport function inspectCmf(result)\n{\n return {\n signature: result.signature,\n version: result.version,\n headerSize: result.headerSize,\n crc32: result.crc32,\n sections: result.sections.map((section, index) => ({\n index,\n type: section.type,\n compression: section.compression,\n compressedSize: section.compressedSize,\n uncompressedSize: section.uncompressedSize,\n gpuAlignment: section.gpuAlignment\n })),\n metadataEntries: result.metadata?.entries.length ?? 0,\n meshes: result.meshes.map((mesh) => ({\n name: mesh.name,\n topology: mesh.topology,\n lods: mesh.lods.length,\n areas: mesh.areas.length,\n vertexElements: mesh.decl.length,\n morphTargets: mesh.morphTargets.targets.length,\n skeleton: mesh.skeleton\n })),\n skeletons: result.skeletons.map((skeleton) => ({\n name: skeleton.name,\n bones: skeleton.bones.length,\n boneMasks: skeleton.boneMasks.length\n })),\n animations: result.animations.map((animation) => ({\n name: animation.name,\n duration: animation.duration,\n channels: animation.channels.length,\n curves: animation.curves.length\n }))\n };\n}\n\nfunction validateHeader(reader, header, options)\n{\n if (header.signature !== FILE_SIGNATURE)\n {\n throw new Error(`Invalid CMF signature 0x${header.signature.toString(16)}`);\n }\n\n if (header.version !== FILE_VERSION)\n {\n throw new Error(`Unsupported CMF version ${header.version}`);\n }\n\n if (header.headerSize > reader.bytes.byteLength)\n {\n throw new Error(\"CMF headerSize exceeds file size\");\n }\n\n if (header.sections.length === 0)\n {\n throw new Error(\"CMF header contains no sections\");\n }\n\n if (header.sections[0].type !== \"Data\")\n {\n throw new Error(\"CMF first section must be Data\");\n }\n\n for (let i = 0; i < header.sections.length; i++)\n {\n const section = header.sections[i];\n if (section.offset + section.compressedSize > reader.bytes.byteLength)\n {\n throw new Error(`CMF section ${i} exceeds file bounds`);\n }\n\n if (section.type === \"Metadata\" && i !== header.sections.length - 1)\n {\n throw new Error(\"CMF Metadata section must be last\");\n }\n }\n\n if (options.validateCrc !== false && header.crc32 !== 0)\n {\n const actual = crc32(reader.bytes, 16, reader.bytes.byteLength);\n if (actual !== header.crc32)\n {\n throw new Error(`CMF CRC mismatch: expected 0x${header.crc32.toString(16)}, got 0x${actual.toString(16)}`);\n }\n }\n}\n\nfunction readSection(reader, offset)\n{\n return {\n offset: reader.u32(offset),\n compressedSize: reader.u32(offset + 4),\n uncompressedSize: reader.u32(offset + 8),\n gpuAlignment: reader.u16(offset + 12),\n type: enumName(SectionType, reader.u8(offset + 14)),\n compression: enumName(SectionCompression, reader.u8(offset + 15))\n };\n}\n\nfunction readData(reader, offset)\n{\n return {\n meshes: readArray(reader, readSpan(reader, offset, STRUCT_SIZE.Mesh), readMesh),\n skeletons: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.Skeleton), readSkeleton),\n animations: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.Animation), readAnimation)\n };\n}\n\nfunction readMetadata(reader, offset)\n{\n return {\n entries: readArray(reader, readSpan(reader, offset, STRUCT_SIZE.MetadataEntry), readMetadataEntry)\n };\n}\n\nfunction readMetadataEntry(reader, offset)\n{\n return {\n key: readString(reader, offset),\n value: readString(reader, offset + 16)\n };\n}\n\nfunction readMesh(reader, offset)\n{\n return {\n name: readString(reader, offset),\n decl: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.VertexElement), readVertexElement),\n lods: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.MeshLod), readMeshLod),\n areas: readArray(reader, readSpan(reader, offset + 48, STRUCT_SIZE.MeshArea), readMeshArea),\n boneBindings: readArray(reader, readSpan(reader, offset + 64, STRUCT_SIZE.BoneBinding), readBoneBinding),\n morphTargets: readMorphTargets(reader, offset + 80),\n uvDensities: readFloatArray(reader, readSpan(reader, offset + 112, 4)),\n bounds: readBounds(reader, offset + 128),\n audioOcclusionMesh: readAudioOcclusionMesh(reader, offset + 152),\n topology: enumName(MeshTopology, reader.u8(offset + 208)),\n skeleton: readSkeletonIndex(reader.u8(offset + 209))\n };\n}\n\nfunction readVertexElement(reader, offset)\n{\n return {\n usage: enumName(Usage, reader.u8(offset)),\n usageIndex: reader.u8(offset + 1),\n type: enumName(ElementType, reader.u8(offset + 2)),\n elementCount: reader.u8(offset + 3),\n offset: reader.u32(offset + 4)\n };\n}\n\nfunction readMeshArea(reader, offset)\n{\n return {\n name: readString(reader, offset),\n bounds: readBounds(reader, offset + 16),\n bones: readUint16Array(reader, readSpan(reader, offset + 40, 2)),\n affectedByBones: !!reader.u8(offset + 56),\n affectedByMorphTargets: !!reader.u8(offset + 57)\n };\n}\n\nfunction readLodMeshArea(reader, offset)\n{\n return {\n firstElement: reader.u32(offset),\n elementCount: reader.u32(offset + 4)\n };\n}\n\nfunction readBoneBinding(reader, offset)\n{\n return {\n name: readString(reader, offset),\n bounds: readBounds(reader, offset + 16)\n };\n}\n\nfunction readMorphTargets(reader, offset)\n{\n return {\n decl: readArray(reader, readSpan(reader, offset, STRUCT_SIZE.VertexElement), readVertexElement),\n targets: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.MorphTarget), readMorphTarget)\n };\n}\n\nfunction readMorphTarget(reader, offset)\n{\n return {\n name: readString(reader, offset),\n maxDisplacement: reader.f32(offset + 16)\n };\n}\n\nfunction readMeshLod(reader, offset)\n{\n return {\n vb: readBufferView(reader, offset),\n ib: readBufferView(reader, offset + 16),\n areas: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.LodMeshArea), readLodMeshArea),\n morphTargets: readArray(reader, readSpan(reader, offset + 48, STRUCT_SIZE.LodMorphTarget), readLodMorphTarget),\n threshold: reader.u32(offset + 64)\n };\n}\n\nfunction readLodMorphTarget(reader, offset)\n{\n return {\n vb: readBufferView(reader, offset)\n };\n}\n\nfunction readAudioOcclusionMesh(reader, offset)\n{\n const verticesSpan = readSpan(reader, offset, 12);\n return {\n vertices: readArray(reader, verticesSpan, readVector3),\n indices: readUint16Array(reader, readSpan(reader, offset + 16, 2)),\n bounds: readBounds(reader, offset + 32)\n };\n}\n\nfunction readSkeleton(reader, offset)\n{\n return {\n name: readString(reader, offset),\n bones: readArray(reader, readSpan(reader, offset + 16, 16), readString),\n parents: readUint32Array(reader, readSpan(reader, offset + 32, 4)),\n restTransforms: readArray(reader, readSpan(reader, offset + 48, STRUCT_SIZE.Transform), readTransform),\n invBindTransforms: readArray(reader, readSpan(reader, offset + 64, 64), readMatrix),\n boneMasks: readArray(reader, readSpan(reader, offset + 80, STRUCT_SIZE.BoneMask), readBoneMask)\n };\n}\n\nfunction readTransform(reader, offset)\n{\n return {\n position: readVector3(reader, offset),\n rotation: readQuaternion(reader, offset + 12),\n scale: readVector3(reader, offset + 28)\n };\n}\n\nfunction readBoneMask(reader, offset)\n{\n return {\n name: readString(reader, offset),\n weights: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.BoneWeight), readBoneWeight)\n };\n}\n\nfunction readBoneWeight(reader, offset)\n{\n return {\n index: reader.u32(offset),\n weight: reader.f32(offset + 4)\n };\n}\n\nfunction readAnimation(reader, offset)\n{\n return {\n name: readString(reader, offset),\n channels: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.AnimationChannel), readAnimationChannel),\n curves: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.AnimationCurve), readAnimationCurve),\n duration: reader.f32(offset + 48)\n };\n}\n\nfunction readAnimationChannel(reader, offset)\n{\n return {\n target: readString(reader, offset),\n targetType: enumName(AnimationChannelTargetType, reader.u8(offset + 16)),\n curveIndex: reader.u32(offset + 20)\n };\n}\n\nfunction readAnimationCurve(reader, offset)\n{\n return {\n valueDimension: reader.u8(offset),\n interpolation: enumName(Interpolation, reader.u8(offset + 1)),\n knotType: enumName(ElementType, reader.u8(offset + 2)),\n valueType: enumName(ElementType, reader.u8(offset + 3)),\n knotCount: reader.u32(offset + 4),\n knots: readByteArray(reader, readSpan(reader, offset + 8, 1)),\n values: readByteArray(reader, readSpan(reader, offset + 24, 1))\n };\n}\n\nfunction readBufferView(reader, offset)\n{\n return {\n index: reader.u32(offset),\n offset: reader.u32(offset + 4),\n size: reader.u32(offset + 8),\n stride: reader.u32(offset + 12)\n };\n}\n\nfunction readSpan(reader, offset, elementSize)\n{\n const rawOffset = reader.i64(offset);\n const byteSize = reader.u64(offset + 8);\n const isOffset = (rawOffset & 1) !== 0;\n const dataOffset = byteSize === 0 ? null : isOffset ? offset + (rawOffset & ~1) : rawOffset;\n\n if (byteSize % elementSize !== 0)\n {\n throw new Error(`CMF span byteSize ${byteSize} is not a multiple of element size ${elementSize}`);\n }\n\n if (dataOffset !== null)\n {\n reader.require(dataOffset, byteSize, \"span\");\n }\n\n return {\n offset: dataOffset,\n byteSize,\n count: byteSize / elementSize,\n elementSize,\n addressMode: isOffset ? \"offset\" : \"pointer\"\n };\n}\n\nfunction readArray(reader, span, readElement)\n{\n const values = [];\n if (span.count === 0)\n {\n return values;\n }\n\n for (let i = 0; i < span.count; i++)\n {\n values.push(readElement(reader, span.offset + i * span.elementSize));\n }\n return values;\n}\n\nfunction readString(reader, offset)\n{\n const span = readSpan(reader, offset, 1);\n return span.offset === null ? \"\" : reader.string(span.offset, span.byteSize);\n}\n\nfunction readByteArray(reader, span)\n{\n return span.offset === null ? [] : Array.from(reader.bytesAt(span.offset, span.byteSize));\n}\n\nfunction readUint16Array(reader, span)\n{\n const values = [];\n for (let i = 0; i < span.count; i++)\n {\n values.push(reader.u16(span.offset + i * 2));\n }\n return values;\n}\n\nfunction readUint32Array(reader, span)\n{\n const values = [];\n for (let i = 0; i < span.count; i++)\n {\n values.push(reader.u32(span.offset + i * 4));\n }\n return values;\n}\n\nfunction readFloatArray(reader, span)\n{\n const values = [];\n for (let i = 0; i < span.count; i++)\n {\n values.push(reader.f32(span.offset + i * 4));\n }\n return values;\n}\n\nfunction readSkeletonIndex(value)\n{\n return value === 0xff ? null : value;\n}\n"],"names":["readCmf","input","options","reader","BinaryReader","header","readHeader","validateHeader","dataSection","sections","root","readData","offset","metadataSection","find","section","type","metadata","readMetadata","result","signature","version","headerSize","crc32","meshes","skeletons","animations","decodeBuffers","decodeGeometrySync","bytes","readCmfAsync","decodeGeometryAsync","u32","fileCrc32","sectionsSpan","readSpan","STRUCT_SIZE","Section","readArray","readSection","signatureText","inspectCmf","map","index","compression","compressedSize","uncompressedSize","gpuAlignment","metadataEntries","entries","length","mesh","name","topology","lods","areas","vertexElements","decl","morphTargets","targets","skeleton","bones","boneMasks","animation","duration","channels","curves","FILE_SIGNATURE","Error","toString","FILE_VERSION","byteLength","i","validateCrc","actual","u16","enumName","SectionType","u8","SectionCompression","Mesh","readMesh","Skeleton","readSkeleton","Animation","readAnimation","MetadataEntry","readMetadataEntry","key","readString","value","VertexElement","readVertexElement","MeshLod","readMeshLod","MeshArea","readMeshArea","boneBindings","BoneBinding","readBoneBinding","readMorphTargets","uvDensities","readFloatArray","bounds","readBounds","audioOcclusionMesh","readAudioOcclusionMesh","MeshTopology","readSkeletonIndex","usage","Usage","usageIndex","ElementType","elementCount","readUint16Array","affectedByBones","affectedByMorphTargets","readLodMeshArea","firstElement","MorphTarget","readMorphTarget","maxDisplacement","f32","vb","readBufferView","ib","LodMeshArea","LodMorphTarget","readLodMorphTarget","threshold","verticesSpan","vertices","readVector3","indices","parents","readUint32Array","restTransforms","Transform","readTransform","invBindTransforms","readMatrix","BoneMask","readBoneMask","position","rotation","readQuaternion","scale","weights","BoneWeight","readBoneWeight","weight","AnimationChannel","readAnimationChannel","AnimationCurve","readAnimationCurve","target","targetType","AnimationChannelTargetType","curveIndex","valueDimension","interpolation","Interpolation","knotType","valueType","knotCount","knots","readByteArray","values","size","stride","elementSize","rawOffset","i64","byteSize","u64","isOffset","dataOffset","require","count","addressMode","span","readElement","push","string","Array","from","bytesAt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sources":["../../../../../src/formats/cmf/core/schema.js"],"sourcesContent":["import {\n AnimationChannelTargetType,\n ElementType,\n FILE_SIGNATURE,\n FILE_VERSION,\n Interpolation,\n MeshTopology,\n SectionCompression,\n SectionType,\n STRUCT_SIZE,\n Usage\n} from \"./constants.js\";\nimport {\n BinaryReader,\n crc32,\n enumName,\n readBounds,\n readMatrix,\n readQuaternion,\n readVector3\n} from \"./binary.js\";\nimport { decodeGeometryAsync, decodeGeometrySync } from \"./buffers.js\";\n\n/** Reads and validates a CMF document synchronously for the CMF format reader. */\nexport function readCmf(input, options = {})\n{\n const reader = new BinaryReader(input);\n const header = readHeader(reader);\n validateHeader(reader, header, options);\n\n const dataSection = header.sections[0];\n const root = readData(reader, dataSection.offset);\n const metadataSection = header.sections.find((section) => section.type === \"Metadata\");\n const metadata = metadataSection ? readMetadata(reader, metadataSection.offset) : null;\n\n const result = {\n signature: header.signature,\n version: header.version,\n headerSize: header.headerSize,\n crc32: header.crc32,\n sections: header.sections,\n metadata,\n meshes: root.meshes,\n skeletons: root.skeletons,\n animations: root.animations\n };\n\n return options.decodeBuffers ? decodeGeometrySync(result, reader.bytes) : result;\n}\n\n/** Reads and validates a CMF document asynchronously for the CMF format reader. */\nexport async function readCmfAsync(input, options = {})\n{\n const reader = new BinaryReader(input);\n const header = readHeader(reader);\n validateHeader(reader, header, options);\n\n const dataSection = header.sections[0];\n const root = readData(reader, dataSection.offset);\n const metadataSection = header.sections.find((section) => section.type === \"Metadata\");\n const metadata = metadataSection ? readMetadata(reader, metadataSection.offset) : null;\n\n const result = {\n signature: header.signature,\n version: header.version,\n headerSize: header.headerSize,\n crc32: header.crc32,\n sections: header.sections,\n metadata,\n meshes: root.meshes,\n skeletons: root.skeletons,\n animations: root.animations\n };\n\n return options.decodeBuffers ? await decodeGeometryAsync(result, reader.bytes) : result;\n}\n\n/** Reads header from the current CMF format reader. */\nexport function readHeader(reader)\n{\n const signature = reader.u32(0);\n const version = reader.u32(4);\n const headerSize = reader.u32(8);\n const fileCrc32 = reader.u32(12);\n const sectionsSpan = readSpan(reader, 16, STRUCT_SIZE.Section);\n const sections = readArray(reader, sectionsSpan, readSection);\n\n return {\n signature,\n signatureText: \"cmff\",\n version,\n headerSize,\n crc32: fileCrc32,\n sections\n };\n}\n\n/**\n * Returns CMF header and section metadata without decoding geometry for the CMF\n * format reader.\n */\nexport function inspectCmf(result)\n{\n return {\n signature: result.signature,\n version: result.version,\n headerSize: result.headerSize,\n crc32: result.crc32,\n sections: result.sections.map((section, index) => ({\n index,\n type: section.type,\n compression: section.compression,\n compressedSize: section.compressedSize,\n uncompressedSize: section.uncompressedSize,\n gpuAlignment: section.gpuAlignment\n })),\n metadataEntries: result.metadata?.entries.length ?? 0,\n meshes: result.meshes.map((mesh) => ({\n name: mesh.name,\n topology: mesh.topology,\n lods: mesh.lods.length,\n areas: mesh.areas.length,\n vertexElements: mesh.decl.length,\n morphTargets: mesh.morphTargets.targets.length,\n skeleton: mesh.skeleton\n })),\n skeletons: result.skeletons.map((skeleton) => ({\n name: skeleton.name,\n bones: skeleton.bones.length,\n boneMasks: skeleton.boneMasks.length\n })),\n animations: result.animations.map((animation) => ({\n name: animation.name,\n duration: animation.duration,\n channels: animation.channels.length,\n curves: animation.curves.length\n }))\n };\n}\n\nfunction validateHeader(reader, header, options)\n{\n if (header.signature !== FILE_SIGNATURE)\n {\n throw new Error(`Invalid CMF signature 0x${header.signature.toString(16)}`);\n }\n\n if (header.version !== FILE_VERSION)\n {\n throw new Error(`Unsupported CMF version ${header.version}`);\n }\n\n if (header.headerSize > reader.bytes.byteLength)\n {\n throw new Error(\"CMF headerSize exceeds file size\");\n }\n\n if (header.sections.length === 0)\n {\n throw new Error(\"CMF header contains no sections\");\n }\n\n if (header.sections[0].type !== \"Data\")\n {\n throw new Error(\"CMF first section must be Data\");\n }\n\n for (let i = 0; i < header.sections.length; i++)\n {\n const section = header.sections[i];\n if (section.offset + section.compressedSize > reader.bytes.byteLength)\n {\n throw new Error(`CMF section ${i} exceeds file bounds`);\n }\n\n if (section.type === \"Metadata\" && i !== header.sections.length - 1)\n {\n throw new Error(\"CMF Metadata section must be last\");\n }\n }\n\n if (options.validateCrc !== false && header.crc32 !== 0)\n {\n const actual = crc32(reader.bytes, 16, reader.bytes.byteLength);\n if (actual !== header.crc32)\n {\n throw new Error(`CMF CRC mismatch: expected 0x${header.crc32.toString(16)}, got 0x${actual.toString(16)}`);\n }\n }\n}\n\nfunction readSection(reader, offset)\n{\n return {\n offset: reader.u32(offset),\n compressedSize: reader.u32(offset + 4),\n uncompressedSize: reader.u32(offset + 8),\n gpuAlignment: reader.u16(offset + 12),\n type: enumName(SectionType, reader.u8(offset + 14)),\n compression: enumName(SectionCompression, reader.u8(offset + 15))\n };\n}\n\nfunction readData(reader, offset)\n{\n return {\n meshes: readArray(reader, readSpan(reader, offset, STRUCT_SIZE.Mesh), readMesh),\n skeletons: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.Skeleton), readSkeleton),\n animations: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.Animation), readAnimation)\n };\n}\n\nfunction readMetadata(reader, offset)\n{\n return {\n entries: readArray(reader, readSpan(reader, offset, STRUCT_SIZE.MetadataEntry), readMetadataEntry)\n };\n}\n\nfunction readMetadataEntry(reader, offset)\n{\n return {\n key: readString(reader, offset),\n value: readString(reader, offset + 16)\n };\n}\n\nfunction readMesh(reader, offset)\n{\n return {\n name: readString(reader, offset),\n decl: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.VertexElement), readVertexElement),\n lods: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.MeshLod), readMeshLod),\n areas: readArray(reader, readSpan(reader, offset + 48, STRUCT_SIZE.MeshArea), readMeshArea),\n boneBindings: readArray(reader, readSpan(reader, offset + 64, STRUCT_SIZE.BoneBinding), readBoneBinding),\n morphTargets: readMorphTargets(reader, offset + 80),\n uvDensities: readFloatArray(reader, readSpan(reader, offset + 112, 4)),\n bounds: readBounds(reader, offset + 128),\n audioOcclusionMesh: readAudioOcclusionMesh(reader, offset + 152),\n topology: enumName(MeshTopology, reader.u8(offset + 208)),\n skeleton: readSkeletonIndex(reader.u8(offset + 209))\n };\n}\n\nfunction readVertexElement(reader, offset)\n{\n return {\n usage: enumName(Usage, reader.u8(offset)),\n usageIndex: reader.u8(offset + 1),\n type: enumName(ElementType, reader.u8(offset + 2)),\n elementCount: reader.u8(offset + 3),\n offset: reader.u32(offset + 4)\n };\n}\n\nfunction readMeshArea(reader, offset)\n{\n return {\n name: readString(reader, offset),\n bounds: readBounds(reader, offset + 16),\n bones: readUint16Array(reader, readSpan(reader, offset + 40, 2)),\n affectedByBones: !!reader.u8(offset + 56),\n affectedByMorphTargets: !!reader.u8(offset + 57)\n };\n}\n\nfunction readLodMeshArea(reader, offset)\n{\n return {\n firstElement: reader.u32(offset),\n elementCount: reader.u32(offset + 4)\n };\n}\n\nfunction readBoneBinding(reader, offset)\n{\n return {\n name: readString(reader, offset),\n bounds: readBounds(reader, offset + 16)\n };\n}\n\nfunction readMorphTargets(reader, offset)\n{\n return {\n decl: readArray(reader, readSpan(reader, offset, STRUCT_SIZE.VertexElement), readVertexElement),\n targets: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.MorphTarget), readMorphTarget)\n };\n}\n\nfunction readMorphTarget(reader, offset)\n{\n return {\n name: readString(reader, offset),\n maxDisplacement: reader.f32(offset + 16)\n };\n}\n\nfunction readMeshLod(reader, offset)\n{\n return {\n vb: readBufferView(reader, offset),\n ib: readBufferView(reader, offset + 16),\n areas: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.LodMeshArea), readLodMeshArea),\n morphTargets: readArray(reader, readSpan(reader, offset + 48, STRUCT_SIZE.LodMorphTarget), readLodMorphTarget),\n threshold: reader.u32(offset + 64)\n };\n}\n\nfunction readLodMorphTarget(reader, offset)\n{\n return {\n vb: readBufferView(reader, offset)\n };\n}\n\nfunction readAudioOcclusionMesh(reader, offset)\n{\n const verticesSpan = readSpan(reader, offset, 12);\n return {\n vertices: readArray(reader, verticesSpan, readVector3),\n indices: readUint16Array(reader, readSpan(reader, offset + 16, 2)),\n bounds: readBounds(reader, offset + 32)\n };\n}\n\nfunction readSkeleton(reader, offset)\n{\n return {\n name: readString(reader, offset),\n bones: readArray(reader, readSpan(reader, offset + 16, 16), readString),\n parents: readUint32Array(reader, readSpan(reader, offset + 32, 4)),\n restTransforms: readArray(reader, readSpan(reader, offset + 48, STRUCT_SIZE.Transform), readTransform),\n invBindTransforms: readArray(reader, readSpan(reader, offset + 64, 64), readMatrix),\n boneMasks: readArray(reader, readSpan(reader, offset + 80, STRUCT_SIZE.BoneMask), readBoneMask)\n };\n}\n\nfunction readTransform(reader, offset)\n{\n return {\n position: readVector3(reader, offset),\n rotation: readQuaternion(reader, offset + 12),\n scale: readVector3(reader, offset + 28)\n };\n}\n\nfunction readBoneMask(reader, offset)\n{\n return {\n name: readString(reader, offset),\n weights: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.BoneWeight), readBoneWeight)\n };\n}\n\nfunction readBoneWeight(reader, offset)\n{\n return {\n index: reader.u32(offset),\n weight: reader.f32(offset + 4)\n };\n}\n\nfunction readAnimation(reader, offset)\n{\n return {\n name: readString(reader, offset),\n channels: readArray(reader, readSpan(reader, offset + 16, STRUCT_SIZE.AnimationChannel), readAnimationChannel),\n curves: readArray(reader, readSpan(reader, offset + 32, STRUCT_SIZE.AnimationCurve), readAnimationCurve),\n duration: reader.f32(offset + 48)\n };\n}\n\nfunction readAnimationChannel(reader, offset)\n{\n return {\n target: readString(reader, offset),\n targetType: enumName(AnimationChannelTargetType, reader.u8(offset + 16)),\n curveIndex: reader.u32(offset + 20)\n };\n}\n\nfunction readAnimationCurve(reader, offset)\n{\n return {\n valueDimension: reader.u8(offset),\n interpolation: enumName(Interpolation, reader.u8(offset + 1)),\n knotType: enumName(ElementType, reader.u8(offset + 2)),\n valueType: enumName(ElementType, reader.u8(offset + 3)),\n knotCount: reader.u32(offset + 4),\n knots: readByteArray(reader, readSpan(reader, offset + 8, 1)),\n values: readByteArray(reader, readSpan(reader, offset + 24, 1))\n };\n}\n\nfunction readBufferView(reader, offset)\n{\n return {\n index: reader.u32(offset),\n offset: reader.u32(offset + 4),\n size: reader.u32(offset + 8),\n stride: reader.u32(offset + 12)\n };\n}\n\nfunction readSpan(reader, offset, elementSize)\n{\n const rawOffset = reader.i64(offset);\n const byteSize = reader.u64(offset + 8);\n const isOffset = (rawOffset & 1) !== 0;\n const dataOffset = byteSize === 0 ? null : isOffset ? offset + (rawOffset & ~1) : rawOffset;\n\n if (byteSize % elementSize !== 0)\n {\n throw new Error(`CMF span byteSize ${byteSize} is not a multiple of element size ${elementSize}`);\n }\n\n if (dataOffset !== null)\n {\n reader.require(dataOffset, byteSize, \"span\");\n }\n\n return {\n offset: dataOffset,\n byteSize,\n count: byteSize / elementSize,\n elementSize,\n addressMode: isOffset ? \"offset\" : \"pointer\"\n };\n}\n\nfunction readArray(reader, span, readElement)\n{\n const values = [];\n if (span.count === 0)\n {\n return values;\n }\n\n for (let i = 0; i < span.count; i++)\n {\n values.push(readElement(reader, span.offset + i * span.elementSize));\n }\n return values;\n}\n\nfunction readString(reader, offset)\n{\n const span = readSpan(reader, offset, 1);\n return span.offset === null ? \"\" : reader.string(span.offset, span.byteSize);\n}\n\nfunction readByteArray(reader, span)\n{\n return span.offset === null ? [] : Array.from(reader.bytesAt(span.offset, span.byteSize));\n}\n\nfunction readUint16Array(reader, span)\n{\n const values = [];\n for (let i = 0; i < span.count; i++)\n {\n values.push(reader.u16(span.offset + i * 2));\n }\n return values;\n}\n\nfunction readUint32Array(reader, span)\n{\n const values = [];\n for (let i = 0; i < span.count; i++)\n {\n values.push(reader.u32(span.offset + i * 4));\n }\n return values;\n}\n\nfunction readFloatArray(reader, span)\n{\n const values = [];\n for (let i = 0; i < span.count; i++)\n {\n values.push(reader.f32(span.offset + i * 4));\n }\n return values;\n}\n\nfunction readSkeletonIndex(value)\n{\n return value === 0xff ? null : value;\n}\n"],"names":["readCmf","input","options","reader","BinaryReader","header","readHeader","validateHeader","dataSection","sections","root","readData","offset","metadataSection","find","section","type","metadata","readMetadata","result","signature","version","headerSize","crc32","meshes","skeletons","animations","decodeBuffers","decodeGeometrySync","bytes","readCmfAsync","decodeGeometryAsync","u32","fileCrc32","sectionsSpan","readSpan","STRUCT_SIZE","Section","readArray","readSection","signatureText","inspectCmf","map","index","compression","compressedSize","uncompressedSize","gpuAlignment","metadataEntries","entries","length","mesh","name","topology","lods","areas","vertexElements","decl","morphTargets","targets","skeleton","bones","boneMasks","animation","duration","channels","curves","FILE_SIGNATURE","Error","toString","FILE_VERSION","byteLength","i","validateCrc","actual","u16","enumName","SectionType","u8","SectionCompression","Mesh","readMesh","Skeleton","readSkeleton","Animation","readAnimation","MetadataEntry","readMetadataEntry","key","readString","value","VertexElement","readVertexElement","MeshLod","readMeshLod","MeshArea","readMeshArea","boneBindings","BoneBinding","readBoneBinding","readMorphTargets","uvDensities","readFloatArray","bounds","readBounds","audioOcclusionMesh","readAudioOcclusionMesh","MeshTopology","readSkeletonIndex","usage","Usage","usageIndex","ElementType","elementCount","readUint16Array","affectedByBones","affectedByMorphTargets","readLodMeshArea","firstElement","MorphTarget","readMorphTarget","maxDisplacement","f32","vb","readBufferView","ib","LodMeshArea","LodMorphTarget","readLodMorphTarget","threshold","verticesSpan","vertices","readVector3","indices","parents","readUint32Array","restTransforms","Transform","readTransform","invBindTransforms","readMatrix","BoneMask","readBoneMask","position","rotation","readQuaternion","scale","weights","BoneWeight","readBoneWeight","weight","AnimationChannel","readAnimationChannel","AnimationCurve","readAnimationCurve","target","targetType","AnimationChannelTargetType","curveIndex","valueDimension","interpolation","Interpolation","knotType","valueType","knotCount","knots","readByteArray","values","size","stride","elementSize","rawOffset","i64","byteSize","u64","isOffset","dataOffset","require","count","addressMode","span","readElement","push","string","Array","from","bytesAt"],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a CMF document from normalized shared geometry for the CMF format
|
|
3
|
+
* reader.
|
|
4
|
+
*/
|
|
1
5
|
function buildCmfFromShared(input) {
|
|
2
6
|
const root = input && input.meshes ? input : {
|
|
3
7
|
meshes: [input]
|
|
@@ -10,6 +14,11 @@ function buildCmfFromShared(input) {
|
|
|
10
14
|
animations: root.animations ?? []
|
|
11
15
|
};
|
|
12
16
|
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Builds normalized shared geometry from a CMF document for the CMF format
|
|
20
|
+
* reader.
|
|
21
|
+
*/
|
|
13
22
|
function buildSharedFromCmf(raw, classes, hydrationOptions = {}) {
|
|
14
23
|
const hydrationClasses = createHydrationClasses(classes, hydrationOptions);
|
|
15
24
|
return hydrate("Root", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sources":["../../../../../src/formats/cmf/core/shared.js"],"sourcesContent":["export function buildCmfFromShared(input)\n{\n const root = input && input.meshes ? input : { meshes: [ input ] };\n return {\n version: 1,\n metadata: normalizeMetadata(root.metadata),\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: root.skeletons ?? [],\n animations: root.animations ?? []\n };\n}\n\nexport function buildSharedFromCmf(raw, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n cmfVersion: raw.version,\n metadata: raw.metadata ? hydrateMetadata(raw.metadata, hydrationClasses) : null,\n meshes: raw.meshes.map((mesh) => hydrateSharedMesh(mesh, hydrationClasses)),\n skeletons: raw.skeletons.map((skeleton) => hydrateSkeleton(skeleton, hydrationClasses)),\n animations: raw.animations.map((animation) => hydrateAnimation(animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n position = vertex.position ?? [],\n boneBindings = (mesh.boneBindings ?? []).map((binding) => buildBoneBinding(binding)),\n affectedByBones = boneBindings.length > 0,\n morphTargets = buildMorphTargets(mesh),\n affectedByMorphTargets = morphTargets.targets.length > 0,\n stride = estimateVertexStride(vertex),\n vertexCount = stride === 0 ? 0 : Math.floor(position.length / 3);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: {\n index: 1,\n offset: 0,\n size: vertexCount * stride,\n stride\n },\n ib: {\n index: 2,\n offset: 0,\n size: totalIndexCount(mesh.indices) * bytesPerIndex(mesh.indices),\n stride: bytesPerIndex(mesh.indices)\n },\n areas: (mesh.indices ?? []).map((group, index) => ({\n firstElement: firstTriangle(mesh.indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices: mesh.indices ?? []\n } ],\n areas: (mesh.indices ?? []).map((group) => ({\n name: group.name ?? \"\",\n bounds: boundsFromShared(mesh),\n bones: [],\n affectedByBones,\n affectedByMorphTargets\n })),\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: boundsFromShared(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: mesh.skeleton ?? null,\n vertex,\n indices: mesh.indices ?? []\n };\n}\n\nfunction buildMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n firstVertex = targets.find((target) => target.vertex)?.vertex ?? {},\n decl = buildDecl(firstVertex),\n stride = estimateStrideFromDecl(decl);\n\n return {\n decl,\n targets: targets.map((target) => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? maxDisplacement(mesh.vertex?.position ?? [], target.vertex?.position ?? [])\n })),\n lods: targets.map((target) =>\n {\n const\n morphVertex = target.vertex ?? {},\n vertexCount = Math.floor((morphVertex.position ?? []).length / 3);\n\n return {\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex: morphVertex\n };\n })\n };\n}\n\nfunction buildBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildDecl(vertex)\n{\n const decl = [];\n let offset = 0;\n for (const channel of [\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt16\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ],\n [ \"packedTangent\", \"PackedTangent\", 4, 0, \"Int16Norm\" ],\n [ \"packedTangentLegacy\", \"PackedTangentLegacy\", 4, 0, \"UInt16Norm\" ]\n ])\n {\n const [ name, usage, count, usageIndex = 0, type = \"Float32\" ] = channel;\n if (!Array.isArray(vertex[name]) || vertex[name].length === 0)\n {\n continue;\n }\n\n decl.push({ usage, usageIndex, type, elementCount: count, offset });\n offset += count * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction estimateVertexStride(vertex)\n{\n return estimateStrideFromDecl(buildDecl(vertex));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices = [])\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices = [])\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices = [], areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++)\n {\n first += Math.floor((indices[i].faces ?? []).length / 3);\n }\n return first;\n}\n\nfunction boundsFromShared(mesh)\n{\n return {\n min: mesh.minBounds ?? mesh.bounds?.min ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? mesh.bounds?.max ?? [ 0, 0, 0 ]\n };\n}\n\nfunction maxDisplacement(basePositions, targetPositions)\n{\n let max = 0;\n for (let i = 0; i < Math.min(basePositions.length, targetPositions.length); i += 3)\n {\n max = Math.max(max, Math.hypot(\n targetPositions[i] - basePositions[i],\n targetPositions[i + 1] - basePositions[i + 1],\n targetPositions[i + 2] - basePositions[i + 2]\n ));\n }\n return max;\n}\n\nfunction normalizeMetadata(metadata)\n{\n if (!metadata) return null;\n if (Array.isArray(metadata.entries)) return metadata;\n return {\n entries: Object.entries(metadata).map(([ key, value ]) => ({\n key,\n value: String(value)\n }))\n };\n}\n\nfunction hydrateSharedMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n name: mesh.name,\n morphTargets: mesh.morphTargets.targets.map((target, index) => hydrate(\"MorphTarget\", {\n ...target,\n vertex: mesh.lods[0]?.morphTargets[index]?.vertex ?? null\n }, classes)),\n minBounds: mesh.bounds.min,\n maxBounds: mesh.bounds.max,\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", {\n name: binding.name,\n minBounds: binding.bounds.min,\n maxBounds: binding.bounds.max\n }, classes)),\n vertex: mesh.vertex ?? emptyVertex(),\n indices: (mesh.indices ?? []).map((group) => hydrate(\"IndexGroup\", {\n name: group.name,\n bytesPerIndex: group.bytesPerIndex,\n faces: group.faces\n }, classes)),\n lods: mesh.lods,\n topology: mesh.topology,\n skeleton: mesh.skeleton\n }, classes);\n}\n\nfunction hydrateMetadata(metadata, classes)\n{\n return hydrate(\"Metadata\", {\n entries: metadata.entries.map((entry) => hydrate(\"MetadataEntry\", entry, classes))\n }, classes);\n}\n\nfunction hydrateSkeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", skeleton, classes);\n}\n\nfunction hydrateAnimation(animation, classes)\n{\n return hydrate(\"Animation\", animation, classes);\n}\n\nfunction emptyVertex()\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 hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsCmfFormat shared class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["buildCmfFromShared","input","root","meshes","version","metadata","normalizeMetadata","map","mesh","buildMesh","skeletons","animations","buildSharedFromCmf","raw","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","cmfVersion","hydrateMetadata","hydrateSharedMesh","skeleton","hydrateSkeleton","animation","hydrateAnimation","vertex","position","boneBindings","binding","buildBoneBinding","affectedByBones","length","morphTargets","buildMorphTargets","affectedByMorphTargets","targets","stride","estimateVertexStride","vertexCount","Math","floor","name","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","indices","bytesPerIndex","areas","group","firstElement","firstTriangle","elementCount","faces","threshold","bounds","boundsFromShared","bones","uvDensities","audioOcclusionMesh","vertices","min","max","topology","firstVertex","find","target","estimateStrideFromDecl","maxDisplacement","morphVertex","minBounds","maxBounds","channel","usage","count","usageIndex","type","Array","isArray","push","elementTypeSize","reduce","element","includes","total","some","areaIndex","first","i","basePositions","targetPositions","hypot","entries","Object","key","value","String","emptyVertex","entry","normal","tangent","binormal","texcoord0","texcoord1","color0","blendIndice","blendWeight","packedTangent","packedTangentLegacy","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","enumerable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sources":["../../../../../src/formats/cmf/core/shared.js"],"sourcesContent":["/**\n * Builds a CMF document from normalized shared geometry for the CMF format\n * reader.\n */\nexport function buildCmfFromShared(input)\n{\n const root = input && input.meshes ? input : { meshes: [ input ] };\n return {\n version: 1,\n metadata: normalizeMetadata(root.metadata),\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: root.skeletons ?? [],\n animations: root.animations ?? []\n };\n}\n\n/**\n * Builds normalized shared geometry from a CMF document for the CMF format\n * reader.\n */\nexport function buildSharedFromCmf(raw, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n cmfVersion: raw.version,\n metadata: raw.metadata ? hydrateMetadata(raw.metadata, hydrationClasses) : null,\n meshes: raw.meshes.map((mesh) => hydrateSharedMesh(mesh, hydrationClasses)),\n skeletons: raw.skeletons.map((skeleton) => hydrateSkeleton(skeleton, hydrationClasses)),\n animations: raw.animations.map((animation) => hydrateAnimation(animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n position = vertex.position ?? [],\n boneBindings = (mesh.boneBindings ?? []).map((binding) => buildBoneBinding(binding)),\n affectedByBones = boneBindings.length > 0,\n morphTargets = buildMorphTargets(mesh),\n affectedByMorphTargets = morphTargets.targets.length > 0,\n stride = estimateVertexStride(vertex),\n vertexCount = stride === 0 ? 0 : Math.floor(position.length / 3);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: {\n index: 1,\n offset: 0,\n size: vertexCount * stride,\n stride\n },\n ib: {\n index: 2,\n offset: 0,\n size: totalIndexCount(mesh.indices) * bytesPerIndex(mesh.indices),\n stride: bytesPerIndex(mesh.indices)\n },\n areas: (mesh.indices ?? []).map((group, index) => ({\n firstElement: firstTriangle(mesh.indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices: mesh.indices ?? []\n } ],\n areas: (mesh.indices ?? []).map((group) => ({\n name: group.name ?? \"\",\n bounds: boundsFromShared(mesh),\n bones: [],\n affectedByBones,\n affectedByMorphTargets\n })),\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: boundsFromShared(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: mesh.skeleton ?? null,\n vertex,\n indices: mesh.indices ?? []\n };\n}\n\nfunction buildMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n firstVertex = targets.find((target) => target.vertex)?.vertex ?? {},\n decl = buildDecl(firstVertex),\n stride = estimateStrideFromDecl(decl);\n\n return {\n decl,\n targets: targets.map((target) => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? maxDisplacement(mesh.vertex?.position ?? [], target.vertex?.position ?? [])\n })),\n lods: targets.map((target) =>\n {\n const\n morphVertex = target.vertex ?? {},\n vertexCount = Math.floor((morphVertex.position ?? []).length / 3);\n\n return {\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex: morphVertex\n };\n })\n };\n}\n\nfunction buildBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildDecl(vertex)\n{\n const decl = [];\n let offset = 0;\n for (const channel of [\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt16\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ],\n [ \"packedTangent\", \"PackedTangent\", 4, 0, \"Int16Norm\" ],\n [ \"packedTangentLegacy\", \"PackedTangentLegacy\", 4, 0, \"UInt16Norm\" ]\n ])\n {\n const [ name, usage, count, usageIndex = 0, type = \"Float32\" ] = channel;\n if (!Array.isArray(vertex[name]) || vertex[name].length === 0)\n {\n continue;\n }\n\n decl.push({ usage, usageIndex, type, elementCount: count, offset });\n offset += count * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction estimateVertexStride(vertex)\n{\n return estimateStrideFromDecl(buildDecl(vertex));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices = [])\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices = [])\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices = [], areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++)\n {\n first += Math.floor((indices[i].faces ?? []).length / 3);\n }\n return first;\n}\n\nfunction boundsFromShared(mesh)\n{\n return {\n min: mesh.minBounds ?? mesh.bounds?.min ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? mesh.bounds?.max ?? [ 0, 0, 0 ]\n };\n}\n\nfunction maxDisplacement(basePositions, targetPositions)\n{\n let max = 0;\n for (let i = 0; i < Math.min(basePositions.length, targetPositions.length); i += 3)\n {\n max = Math.max(max, Math.hypot(\n targetPositions[i] - basePositions[i],\n targetPositions[i + 1] - basePositions[i + 1],\n targetPositions[i + 2] - basePositions[i + 2]\n ));\n }\n return max;\n}\n\nfunction normalizeMetadata(metadata)\n{\n if (!metadata) return null;\n if (Array.isArray(metadata.entries)) return metadata;\n return {\n entries: Object.entries(metadata).map(([ key, value ]) => ({\n key,\n value: String(value)\n }))\n };\n}\n\nfunction hydrateSharedMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n name: mesh.name,\n morphTargets: mesh.morphTargets.targets.map((target, index) => hydrate(\"MorphTarget\", {\n ...target,\n vertex: mesh.lods[0]?.morphTargets[index]?.vertex ?? null\n }, classes)),\n minBounds: mesh.bounds.min,\n maxBounds: mesh.bounds.max,\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", {\n name: binding.name,\n minBounds: binding.bounds.min,\n maxBounds: binding.bounds.max\n }, classes)),\n vertex: mesh.vertex ?? emptyVertex(),\n indices: (mesh.indices ?? []).map((group) => hydrate(\"IndexGroup\", {\n name: group.name,\n bytesPerIndex: group.bytesPerIndex,\n faces: group.faces\n }, classes)),\n lods: mesh.lods,\n topology: mesh.topology,\n skeleton: mesh.skeleton\n }, classes);\n}\n\nfunction hydrateMetadata(metadata, classes)\n{\n return hydrate(\"Metadata\", {\n entries: metadata.entries.map((entry) => hydrate(\"MetadataEntry\", entry, classes))\n }, classes);\n}\n\nfunction hydrateSkeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", skeleton, classes);\n}\n\nfunction hydrateAnimation(animation, classes)\n{\n return hydrate(\"Animation\", animation, classes);\n}\n\nfunction emptyVertex()\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 hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsCmfFormat shared class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["buildCmfFromShared","input","root","meshes","version","metadata","normalizeMetadata","map","mesh","buildMesh","skeletons","animations","buildSharedFromCmf","raw","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","cmfVersion","hydrateMetadata","hydrateSharedMesh","skeleton","hydrateSkeleton","animation","hydrateAnimation","vertex","position","boneBindings","binding","buildBoneBinding","affectedByBones","length","morphTargets","buildMorphTargets","affectedByMorphTargets","targets","stride","estimateVertexStride","vertexCount","Math","floor","name","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","indices","bytesPerIndex","areas","group","firstElement","firstTriangle","elementCount","faces","threshold","bounds","boundsFromShared","bones","uvDensities","audioOcclusionMesh","vertices","min","max","topology","firstVertex","find","target","estimateStrideFromDecl","maxDisplacement","morphVertex","minBounds","maxBounds","channel","usage","count","usageIndex","type","Array","isArray","push","elementTypeSize","reduce","element","includes","total","some","areaIndex","first","i","basePositions","targetPositions","hypot","entries","Object","key","value","String","emptyVertex","entry","normal","tangent","binormal","texcoord0","texcoord1","color0","blendIndice","blendWeight","packedTangent","packedTangentLegacy","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","enumerable"],"mappings":"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"}
|
|
@@ -41,6 +41,11 @@ class Flattener {
|
|
|
41
41
|
#view = new DataView(this.#bytes.buffer);
|
|
42
42
|
#chunkCache = new Map();
|
|
43
43
|
size = 0;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Grows the output buffer when the requested write would exceed capacity for
|
|
47
|
+
* the CMF binary writer.
|
|
48
|
+
*/
|
|
44
49
|
#ensure(capacity) {
|
|
45
50
|
if (capacity <= this.#bytes.length) return;
|
|
46
51
|
let next = this.#bytes.length * 2;
|
|
@@ -50,6 +55,8 @@ class Flattener {
|
|
|
50
55
|
this.#bytes = grown;
|
|
51
56
|
this.#view = new DataView(grown.buffer);
|
|
52
57
|
}
|
|
58
|
+
|
|
59
|
+
/** Reserves output storage in the current CMF binary writer. */
|
|
53
60
|
reserve(byteLength) {
|
|
54
61
|
const offset = this.size;
|
|
55
62
|
this.#ensure(offset + byteLength);
|
|
@@ -57,6 +64,8 @@ class Flattener {
|
|
|
57
64
|
this.size = offset + byteLength;
|
|
58
65
|
return offset;
|
|
59
66
|
}
|
|
67
|
+
|
|
68
|
+
/** Reserves aligned in the current CMF binary writer. */
|
|
60
69
|
reserveAligned(byteLength, alignment = 8) {
|
|
61
70
|
const padded = Math.ceil(this.size / alignment) * alignment;
|
|
62
71
|
this.#ensure(padded);
|
|
@@ -64,24 +73,59 @@ class Flattener {
|
|
|
64
73
|
this.size = padded;
|
|
65
74
|
return this.reserve(byteLength);
|
|
66
75
|
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Writes an unsigned 8-bit integer into the output buffer for the CMF binary
|
|
79
|
+
* writer.
|
|
80
|
+
*/
|
|
67
81
|
u8(offset, value) {
|
|
68
82
|
this.#view.setUint8(offset, value);
|
|
69
83
|
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Writes an unsigned 16-bit little-endian integer into the output buffer for
|
|
87
|
+
* the CMF binary writer.
|
|
88
|
+
*/
|
|
70
89
|
u16(offset, value) {
|
|
71
90
|
this.#view.setUint16(offset, value, true);
|
|
72
91
|
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Writes an unsigned 32-bit little-endian integer into the output buffer for
|
|
95
|
+
* the CMF binary writer.
|
|
96
|
+
*/
|
|
73
97
|
u32(offset, value) {
|
|
74
98
|
this.#view.setUint32(offset, value >>> 0, true);
|
|
75
99
|
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Writes a 32-bit little-endian float into the output buffer for the CMF
|
|
103
|
+
* binary writer.
|
|
104
|
+
*/
|
|
76
105
|
f32(offset, value) {
|
|
77
106
|
this.#view.setFloat32(offset, value || 0, true);
|
|
78
107
|
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Writes a signed 64-bit little-endian integer into the output buffer for
|
|
111
|
+
* the CMF binary writer.
|
|
112
|
+
*/
|
|
79
113
|
i64(offset, value) {
|
|
80
114
|
this.#view.setBigInt64(offset, BigInt(value), true);
|
|
81
115
|
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Writes an unsigned 64-bit little-endian integer into the output buffer for
|
|
119
|
+
* the CMF binary writer.
|
|
120
|
+
*/
|
|
82
121
|
u64(offset, value) {
|
|
83
122
|
this.#view.setBigUint64(offset, BigInt(value), true);
|
|
84
123
|
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Copies bytes into a previously reserved output range for the CMF binary
|
|
127
|
+
* writer.
|
|
128
|
+
*/
|
|
85
129
|
setBytes(offset, bytes) {
|
|
86
130
|
this.#bytes.set(bytes, offset);
|
|
87
131
|
}
|
|
@@ -128,12 +172,22 @@ class Flattener {
|
|
|
128
172
|
this.u64(fieldOffset + 8, byteSize);
|
|
129
173
|
for (let i = 0; i < count; i++) writeElement(this, chunkOffset + i * elementSize, elements[i]);
|
|
130
174
|
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Writes a length-prefixed UTF-8 string into the output buffer for the CMF
|
|
178
|
+
* binary writer.
|
|
179
|
+
*/
|
|
131
180
|
string(fieldOffset, value) {
|
|
132
181
|
const encoded = textEncoder.encode(value || "");
|
|
133
182
|
this.span(fieldOffset, encoded, 1, (buffer, offset, byte) => buffer.u8(offset, byte), {
|
|
134
183
|
dedup: true
|
|
135
184
|
});
|
|
136
185
|
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Writes a length-prefixed byte block into the output buffer for the CMF
|
|
189
|
+
* binary writer.
|
|
190
|
+
*/
|
|
137
191
|
bytes() {
|
|
138
192
|
return this.#bytes.slice(0, this.size);
|
|
139
193
|
}
|