@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":"helpers.js","sources":["../../../../../src/formats/gif/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"gif\",\n source: \"\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsGifFormat\")\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n const allowed = new Set([ \"emit\", \"inputType\", \"source\" ]);\n for (const key of Object.keys(options))\n {\n if (!allowed.has(key)) throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...options };\n if (![ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON, \"gifJson\" ].includes(values.emit))\n {\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(values.emit)}`);\n }\n return values;\n}\n\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"GIF input must be Uint8Array, ArrayBuffer, or a view\");\n}\n\nexport function isGIF(bytes)\n{\n return bytes.byteLength >= 13 && (ascii(bytes, 0, 6) === \"GIF87a\" || ascii(bytes, 0, 6) === \"GIF89a\");\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"gif\")\n{\n const bytes = toBytes(input);\n if (!isGIF(bytes)) throw new TypeError(\"CjsGifFormat: input is not a GIF87a/GIF89a image\");\n const metadata = inspectGif(bytes);\n if (expectedType && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsGifFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return { ...metadata, byteLength: bytes.byteLength, source: values.source || \"buffer\" };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const decoded = metadata.frameCount > 0 && metadata.lzwSupported;\n return {\n format: \"gif\",\n source: values.source || \"buffer\",\n supported: decoded ? \"full\" : \"partial\",\n confidence: 1,\n preferred: decoded ? \"rgba8unorm\" : \"raw\",\n reason: decoded ? \"GIF frame RGBA decode and compositing are available.\" : \"GIF metadata/raw input is recognized but no decodable image frame was found.\",\n metadata,\n variants: [\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: decoded, reason: decoded ? \"\" : \"GIF LZW frame decode is unavailable.\", containerOnly: false, isDecoded: decoded, rgbaDecodeSupported: decoded },\n { kind: \"raw\", payloadType: \"raw\", codec: \"gif\", mimeType: \"image/gif\", supported: true, containerOnly: true, isDecoded: false, rgbaDecodeSupported: decoded }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"gif\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: \"gif\",\n mimeType: \"image/gif\",\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.frameCount > 0 && metadata.lzwSupported,\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === \"gifJson\") return metadata;\n if (values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE)\n {\n return decodeFrames(bytes, metadata);\n }\n const error = new Error(`gif: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n throw error;\n}\n\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction inspectGif(bytes)\n{\n const width = readU16LE(bytes, 6);\n const height = readU16LE(bytes, 8);\n const packed = bytes[10];\n const hasGlobalPalette = !!(packed & 0x80);\n const globalPaletteCount = hasGlobalPalette ? 1 << ((packed & 7) + 1) : 0;\n if (hasGlobalPalette) readPalette(bytes, 13, globalPaletteCount);\n let offset = 13 + globalPaletteCount * 3;\n let frameCount = 0;\n const frames = [];\n let firstFrame = null;\n let graphicsControl = null;\n let loopCount = null;\n while (offset < bytes.length)\n {\n const marker = bytes[offset++];\n if (marker === 0x3b) break;\n if (marker === 0x21)\n {\n const label = bytes[offset++];\n if (label === 0xf9)\n {\n if (bytes[offset++] !== 4) throw new Error(\"gif: invalid graphics control extension\");\n const control = bytes[offset++];\n graphicsControl = {\n disposalMethod: (control >>> 2) & 7,\n userInput: !!(control & 2),\n transparent: !!(control & 1),\n delayCentiseconds: readU16LE(bytes, offset)\n };\n offset += 2;\n graphicsControl.transparentIndex = bytes[offset++];\n if (bytes[offset++] !== 0) throw new Error(\"gif: unterminated graphics control extension\");\n }\n else if (label === 0xff)\n {\n const size = bytes[offset++];\n const application = ascii(bytes, offset, size);\n offset += size;\n const data = readSubBlocks(bytes, offset);\n offset = data.offset;\n if (application === \"NETSCAPE2.0\" || application === \"ANIMEXTS1.0\")\n {\n if (data.bytes.length >= 3 && data.bytes[0] === 1) loopCount = readU16LE(data.bytes, 1);\n }\n }\n else\n {\n offset = skipSubBlocks(bytes, offset);\n }\n }\n else if (marker === 0x2c)\n {\n if (offset + 9 > bytes.length) throw new Error(\"gif: truncated image descriptor\");\n const frame = {\n left: readU16LE(bytes, offset),\n top: readU16LE(bytes, offset + 2),\n width: readU16LE(bytes, offset + 4),\n height: readU16LE(bytes, offset + 6),\n packed: bytes[offset + 8],\n graphicsControl\n };\n offset += 9;\n const localPaletteCount = frame.packed & 0x80 ? 1 << ((frame.packed & 7) + 1) : 0;\n frame.localPalette = localPaletteCount ? readPalette(bytes, offset, localPaletteCount) : null;\n offset += localPaletteCount * 3;\n frame.lzwMinCodeSize = bytes[offset++];\n const data = readSubBlocks(bytes, offset);\n frame.compressed = data.bytes;\n offset = data.offset;\n frame.interlaced = !!(frame.packed & 0x40);\n frameCount++;\n frames.push(frame);\n if (!firstFrame) firstFrame = frame;\n graphicsControl = null;\n }\n else if (marker === 0x00)\n {\n throw new Error(\"gif: unexpected data before image descriptor\");\n }\n else\n {\n throw new Error(`gif: unsupported block marker 0x${marker.toString(16)}`);\n }\n }\n return {\n payloadType: \"image\",\n mediaTypes: [ \"image\" ],\n sourceFormat: \"gif\",\n version: ascii(bytes, 0, 6),\n width,\n height,\n frameCount,\n animated: frameCount > 1,\n loopCount,\n hasGlobalPalette,\n backgroundColorIndex: bytes[11],\n colorResolution: ((packed >>> 4) & 7) + 1,\n lzwSupported: frames.length > 0 && frames.every((frame) => frame.lzwMinCodeSize >= 2 && frame.lzwMinCodeSize <= 8),\n firstFrame,\n frames\n };\n}\n\nfunction decodeFrames(bytes, metadata)\n{\n if (!metadata.firstFrame || !metadata.lzwSupported) throw new Error(\"gif: no supported LZW image frame found\");\n const globalPalette = readPalette(bytes, 13, metadata.hasGlobalPalette ? 1 << ((bytes[10] & 7) + 1) : 0);\n const canvas = new Uint8Array(metadata.width * metadata.height * 4);\n const frames = [];\n\n for (const frame of metadata.frames)\n {\n const restore = frame.graphicsControl?.disposalMethod === 3 ? canvas.slice() : null;\n const palette = frame.localPalette || globalPalette;\n const indices = decodeLzw(frame.compressed, frame.lzwMinCodeSize, frame.width * frame.height);\n const rows = frame.interlaced ? interlacedRows(frame.height) : Array.from({ length: frame.height }, (_, row) => row);\n for (let sourceRow = 0; sourceRow < frame.height; sourceRow++)\n {\n const targetRow = rows[sourceRow];\n for (let x = 0; x < frame.width; x++)\n {\n const index = indices[sourceRow * frame.width + x];\n const targetX = frame.left + x;\n const targetY = frame.top + targetRow;\n if (targetX >= metadata.width || targetY >= metadata.height) continue;\n if (frame.graphicsControl?.transparent && index === frame.graphicsControl.transparentIndex) continue;\n const target = (targetY * metadata.width + targetX) * 4;\n const color = palette[index] || [ 0, 0, 0 ];\n canvas[target] = color[0];\n canvas[target + 1] = color[1];\n canvas[target + 2] = color[2];\n canvas[target + 3] = 255;\n }\n }\n\n frames.push({\n index: frames.length,\n delayCentiseconds: frame.graphicsControl?.delayCentiseconds || 0,\n disposalMethod: frame.graphicsControl?.disposalMethod || 0,\n data: canvas.slice()\n });\n const disposal = frame.graphicsControl?.disposalMethod || 0;\n if (disposal === 2) canvas.fill(0);\n else if (disposal === 3 && restore) canvas.set(restore);\n }\n\n const data = frames[0].data;\n return {\n payloadType: \"rgba\",\n sourceFormat: \"gif\",\n mimeType: \"image/gif\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: metadata.width,\n height: metadata.height,\n pixelFormat: \"rgba8unorm\",\n data,\n frames,\n strideBytes: metadata.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: \"straight\",\n metadata\n };\n}\n\nfunction decodeLzw(bytes, minimumCodeSize, expectedLength)\n{\n const clear = 1 << minimumCodeSize;\n const end = clear + 1;\n let codeSize = minimumCodeSize + 1;\n let dictionary = Array.from({ length: clear }, (_, index) => [ index ]);\n let bitOffset = 0;\n let previous = null;\n const output = [];\n while (bitOffset + codeSize <= bytes.length * 8)\n {\n let code = 0;\n for (let bit = 0; bit < codeSize; bit++)\n {\n code |= (((bytes[bitOffset >>> 3] >>> (bitOffset & 7)) & 1) << bit);\n bitOffset++;\n }\n if (code === clear)\n {\n dictionary = Array.from({ length: clear }, (_, index) => [ index ]);\n codeSize = minimumCodeSize + 1;\n previous = null;\n continue;\n }\n if (code === end) break;\n let entry;\n if (code < dictionary.length) entry = dictionary[code];\n else if (code === dictionary.length && previous) entry = previous.concat(previous[0]);\n else throw new Error(\"gif: invalid LZW code\");\n output.push(...entry);\n if (previous)\n {\n dictionary.push(previous.concat(entry[0]));\n if (dictionary.length === (1 << codeSize) && codeSize < 12) codeSize++;\n }\n previous = entry;\n if (output.length >= expectedLength) break;\n }\n if (output.length < expectedLength) throw new Error(\"gif: LZW stream ended before the frame was filled\");\n return output.slice(0, expectedLength);\n}\n\nfunction readSubBlocks(bytes, offset)\n{\n const output = [];\n while (offset < bytes.length)\n {\n if (offset >= bytes.length) throw new Error(\"gif: truncated sub-block sequence\");\n const length = bytes[offset++];\n if (!length) return { bytes: Uint8Array.from(output), offset };\n if (offset + length > bytes.length) throw new Error(\"gif: truncated sub-block payload\");\n output.push(...bytes.subarray(offset, offset + length));\n offset += length;\n }\n throw new Error(\"gif: truncated sub-block sequence\");\n}\n\nfunction skipSubBlocks(bytes, offset)\n{\n return readSubBlocks(bytes, offset).offset;\n}\n\nfunction readPalette(bytes, offset, count)\n{\n const palette = [];\n for (let i = 0; i < count; i++)\n {\n if (offset + 3 > bytes.length) throw new Error(\"gif: truncated color table\");\n palette.push([ bytes[offset], bytes[offset + 1], bytes[offset + 2] ]);\n offset += 3;\n }\n return palette;\n}\n\nfunction interlacedRows(height)\n{\n const rows = [];\n for (const [ start, step ] of [ [ 0, 8 ], [ 4, 8 ], [ 2, 4 ], [ 1, 2 ] ])\n {\n for (let row = start; row < height; row += step) rows.push(row);\n }\n return rows;\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","normalizeValues","base","options","readerName","Array","isArray","TypeError","allowed","Set","key","keys","has","JSON","stringify","values","includes","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","isGIF","bytes","ascii","inspectWithValues","expectedType","metadata","inspectGif","sourceFormat","isSupportedWithValues","decoded","frameCount","lzwSupported","format","supported","confidence","preferred","reason","variants","kind","payloadType","codec","containerOnly","isDecoded","rgbaDecodeSupported","mimeType","warnings","errors","error","message","readWithValues","decodeFrames","Error","code","toJsonValue","value","map","output","entry","entries","width","readU16LE","height","packed","hasGlobalPalette","globalPaletteCount","readPalette","offset","frames","firstFrame","graphicsControl","loopCount","length","marker","label","control","disposalMethod","userInput","transparent","delayCentiseconds","transparentIndex","size","application","data","readSubBlocks","skipSubBlocks","frame","left","top","localPaletteCount","localPalette","lzwMinCodeSize","compressed","interlaced","push","toString","mediaTypes","version","animated","backgroundColorIndex","colorResolution","every","globalPalette","canvas","restore","slice","palette","indices","decodeLzw","rows","interlacedRows","from","_","row","sourceRow","targetRow","x","index","targetX","targetY","target","color","disposal","fill","set","pixelFormat","strideBytes","origin","colorSpace","alphaMode","minimumCodeSize","expectedLength","clear","end","codeSize","dictionary","bitOffset","previous","bit","concat","subarray","count","i","start","step","String","fromCharCode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/gif/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"gif\",\n source: \"\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the GIF format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsGifFormat\")\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n const allowed = new Set([ \"emit\", \"inputType\", \"source\" ]);\n for (const key of Object.keys(options))\n {\n if (!allowed.has(key)) throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...options };\n if (![ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON, \"gifJson\" ].includes(values.emit))\n {\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(values.emit)}`);\n }\n return values;\n}\n\n/** Returns a byte view over the supplied binary input for the GIF format reader. */\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"GIF input must be Uint8Array, ArrayBuffer, or a view\");\n}\n\n/** Reports whether the current GIF format reader satisfies GIF. */\nexport function isGIF(bytes)\n{\n return bytes.byteLength >= 13 && (ascii(bytes, 0, 6) === \"GIF87a\" || ascii(bytes, 0, 6) === \"GIF89a\");\n}\n\n/** Inspects input using normalized format options for the GIF format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"gif\")\n{\n const bytes = toBytes(input);\n if (!isGIF(bytes)) throw new TypeError(\"CjsGifFormat: input is not a GIF87a/GIF89a image\");\n const metadata = inspectGif(bytes);\n if (expectedType && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsGifFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return { ...metadata, byteLength: bytes.byteLength, source: values.source || \"buffer\" };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the GIF\n * format reader.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const decoded = metadata.frameCount > 0 && metadata.lzwSupported;\n return {\n format: \"gif\",\n source: values.source || \"buffer\",\n supported: decoded ? \"full\" : \"partial\",\n confidence: 1,\n preferred: decoded ? \"rgba8unorm\" : \"raw\",\n reason: decoded ? \"GIF frame RGBA decode and compositing are available.\" : \"GIF metadata/raw input is recognized but no decodable image frame was found.\",\n metadata,\n variants: [\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: decoded, reason: decoded ? \"\" : \"GIF LZW frame decode is unavailable.\", containerOnly: false, isDecoded: decoded, rgbaDecodeSupported: decoded },\n { kind: \"raw\", payloadType: \"raw\", codec: \"gif\", mimeType: \"image/gif\", supported: true, containerOnly: true, isDecoded: false, rgbaDecodeSupported: decoded }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"gif\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the GIF format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: \"gif\",\n mimeType: \"image/gif\",\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.frameCount > 0 && metadata.lzwSupported,\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === \"gifJson\") return metadata;\n if (values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE)\n {\n return decodeFrames(bytes, metadata);\n }\n const error = new Error(`gif: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n throw error;\n}\n\n/** Converts a parsed payload into a JSON-safe value for the GIF format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction inspectGif(bytes)\n{\n const width = readU16LE(bytes, 6);\n const height = readU16LE(bytes, 8);\n const packed = bytes[10];\n const hasGlobalPalette = !!(packed & 0x80);\n const globalPaletteCount = hasGlobalPalette ? 1 << ((packed & 7) + 1) : 0;\n if (hasGlobalPalette) readPalette(bytes, 13, globalPaletteCount);\n let offset = 13 + globalPaletteCount * 3;\n let frameCount = 0;\n const frames = [];\n let firstFrame = null;\n let graphicsControl = null;\n let loopCount = null;\n while (offset < bytes.length)\n {\n const marker = bytes[offset++];\n if (marker === 0x3b) break;\n if (marker === 0x21)\n {\n const label = bytes[offset++];\n if (label === 0xf9)\n {\n if (bytes[offset++] !== 4) throw new Error(\"gif: invalid graphics control extension\");\n const control = bytes[offset++];\n graphicsControl = {\n disposalMethod: (control >>> 2) & 7,\n userInput: !!(control & 2),\n transparent: !!(control & 1),\n delayCentiseconds: readU16LE(bytes, offset)\n };\n offset += 2;\n graphicsControl.transparentIndex = bytes[offset++];\n if (bytes[offset++] !== 0) throw new Error(\"gif: unterminated graphics control extension\");\n }\n else if (label === 0xff)\n {\n const size = bytes[offset++];\n const application = ascii(bytes, offset, size);\n offset += size;\n const data = readSubBlocks(bytes, offset);\n offset = data.offset;\n if (application === \"NETSCAPE2.0\" || application === \"ANIMEXTS1.0\")\n {\n if (data.bytes.length >= 3 && data.bytes[0] === 1) loopCount = readU16LE(data.bytes, 1);\n }\n }\n else\n {\n offset = skipSubBlocks(bytes, offset);\n }\n }\n else if (marker === 0x2c)\n {\n if (offset + 9 > bytes.length) throw new Error(\"gif: truncated image descriptor\");\n const frame = {\n left: readU16LE(bytes, offset),\n top: readU16LE(bytes, offset + 2),\n width: readU16LE(bytes, offset + 4),\n height: readU16LE(bytes, offset + 6),\n packed: bytes[offset + 8],\n graphicsControl\n };\n offset += 9;\n const localPaletteCount = frame.packed & 0x80 ? 1 << ((frame.packed & 7) + 1) : 0;\n frame.localPalette = localPaletteCount ? readPalette(bytes, offset, localPaletteCount) : null;\n offset += localPaletteCount * 3;\n frame.lzwMinCodeSize = bytes[offset++];\n const data = readSubBlocks(bytes, offset);\n frame.compressed = data.bytes;\n offset = data.offset;\n frame.interlaced = !!(frame.packed & 0x40);\n frameCount++;\n frames.push(frame);\n if (!firstFrame) firstFrame = frame;\n graphicsControl = null;\n }\n else if (marker === 0x00)\n {\n throw new Error(\"gif: unexpected data before image descriptor\");\n }\n else\n {\n throw new Error(`gif: unsupported block marker 0x${marker.toString(16)}`);\n }\n }\n return {\n payloadType: \"image\",\n mediaTypes: [ \"image\" ],\n sourceFormat: \"gif\",\n version: ascii(bytes, 0, 6),\n width,\n height,\n frameCount,\n animated: frameCount > 1,\n loopCount,\n hasGlobalPalette,\n backgroundColorIndex: bytes[11],\n colorResolution: ((packed >>> 4) & 7) + 1,\n lzwSupported: frames.length > 0 && frames.every((frame) => frame.lzwMinCodeSize >= 2 && frame.lzwMinCodeSize <= 8),\n firstFrame,\n frames\n };\n}\n\nfunction decodeFrames(bytes, metadata)\n{\n if (!metadata.firstFrame || !metadata.lzwSupported) throw new Error(\"gif: no supported LZW image frame found\");\n const globalPalette = readPalette(bytes, 13, metadata.hasGlobalPalette ? 1 << ((bytes[10] & 7) + 1) : 0);\n const canvas = new Uint8Array(metadata.width * metadata.height * 4);\n const frames = [];\n\n for (const frame of metadata.frames)\n {\n const restore = frame.graphicsControl?.disposalMethod === 3 ? canvas.slice() : null;\n const palette = frame.localPalette || globalPalette;\n const indices = decodeLzw(frame.compressed, frame.lzwMinCodeSize, frame.width * frame.height);\n const rows = frame.interlaced ? interlacedRows(frame.height) : Array.from({ length: frame.height }, (_, row) => row);\n for (let sourceRow = 0; sourceRow < frame.height; sourceRow++)\n {\n const targetRow = rows[sourceRow];\n for (let x = 0; x < frame.width; x++)\n {\n const index = indices[sourceRow * frame.width + x];\n const targetX = frame.left + x;\n const targetY = frame.top + targetRow;\n if (targetX >= metadata.width || targetY >= metadata.height) continue;\n if (frame.graphicsControl?.transparent && index === frame.graphicsControl.transparentIndex) continue;\n const target = (targetY * metadata.width + targetX) * 4;\n const color = palette[index] || [ 0, 0, 0 ];\n canvas[target] = color[0];\n canvas[target + 1] = color[1];\n canvas[target + 2] = color[2];\n canvas[target + 3] = 255;\n }\n }\n\n frames.push({\n index: frames.length,\n delayCentiseconds: frame.graphicsControl?.delayCentiseconds || 0,\n disposalMethod: frame.graphicsControl?.disposalMethod || 0,\n data: canvas.slice()\n });\n const disposal = frame.graphicsControl?.disposalMethod || 0;\n if (disposal === 2) canvas.fill(0);\n else if (disposal === 3 && restore) canvas.set(restore);\n }\n\n const data = frames[0].data;\n return {\n payloadType: \"rgba\",\n sourceFormat: \"gif\",\n mimeType: \"image/gif\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: metadata.width,\n height: metadata.height,\n pixelFormat: \"rgba8unorm\",\n data,\n frames,\n strideBytes: metadata.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: \"straight\",\n metadata\n };\n}\n\nfunction decodeLzw(bytes, minimumCodeSize, expectedLength)\n{\n const clear = 1 << minimumCodeSize;\n const end = clear + 1;\n let codeSize = minimumCodeSize + 1;\n let dictionary = Array.from({ length: clear }, (_, index) => [ index ]);\n let bitOffset = 0;\n let previous = null;\n const output = [];\n while (bitOffset + codeSize <= bytes.length * 8)\n {\n let code = 0;\n for (let bit = 0; bit < codeSize; bit++)\n {\n code |= (((bytes[bitOffset >>> 3] >>> (bitOffset & 7)) & 1) << bit);\n bitOffset++;\n }\n if (code === clear)\n {\n dictionary = Array.from({ length: clear }, (_, index) => [ index ]);\n codeSize = minimumCodeSize + 1;\n previous = null;\n continue;\n }\n if (code === end) break;\n let entry;\n if (code < dictionary.length) entry = dictionary[code];\n else if (code === dictionary.length && previous) entry = previous.concat(previous[0]);\n else throw new Error(\"gif: invalid LZW code\");\n output.push(...entry);\n if (previous)\n {\n dictionary.push(previous.concat(entry[0]));\n if (dictionary.length === (1 << codeSize) && codeSize < 12) codeSize++;\n }\n previous = entry;\n if (output.length >= expectedLength) break;\n }\n if (output.length < expectedLength) throw new Error(\"gif: LZW stream ended before the frame was filled\");\n return output.slice(0, expectedLength);\n}\n\nfunction readSubBlocks(bytes, offset)\n{\n const output = [];\n while (offset < bytes.length)\n {\n if (offset >= bytes.length) throw new Error(\"gif: truncated sub-block sequence\");\n const length = bytes[offset++];\n if (!length) return { bytes: Uint8Array.from(output), offset };\n if (offset + length > bytes.length) throw new Error(\"gif: truncated sub-block payload\");\n output.push(...bytes.subarray(offset, offset + length));\n offset += length;\n }\n throw new Error(\"gif: truncated sub-block sequence\");\n}\n\nfunction skipSubBlocks(bytes, offset)\n{\n return readSubBlocks(bytes, offset).offset;\n}\n\nfunction readPalette(bytes, offset, count)\n{\n const palette = [];\n for (let i = 0; i < count; i++)\n {\n if (offset + 3 > bytes.length) throw new Error(\"gif: truncated color table\");\n palette.push([ bytes[offset], bytes[offset + 1], bytes[offset + 2] ]);\n offset += 3;\n }\n return palette;\n}\n\nfunction interlacedRows(height)\n{\n const rows = [];\n for (const [ start, step ] of [ [ 0, 8 ], [ 4, 8 ], [ 2, 4 ], [ 1, 2 ] ])\n {\n for (let row = start; row < height; row += step) rows.push(row);\n }\n return rows;\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","normalizeValues","base","options","readerName","Array","isArray","TypeError","allowed","Set","key","keys","has","JSON","stringify","values","includes","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","isGIF","bytes","ascii","inspectWithValues","expectedType","metadata","inspectGif","sourceFormat","isSupportedWithValues","decoded","frameCount","lzwSupported","format","supported","confidence","preferred","reason","variants","kind","payloadType","codec","containerOnly","isDecoded","rgbaDecodeSupported","mimeType","warnings","errors","error","message","readWithValues","decodeFrames","Error","code","toJsonValue","value","map","output","entry","entries","width","readU16LE","height","packed","hasGlobalPalette","globalPaletteCount","readPalette","offset","frames","firstFrame","graphicsControl","loopCount","length","marker","label","control","disposalMethod","userInput","transparent","delayCentiseconds","transparentIndex","size","application","data","readSubBlocks","skipSubBlocks","frame","left","top","localPaletteCount","localPalette","lzwMinCodeSize","compressed","interlaced","push","toString","mediaTypes","version","animated","backgroundColorIndex","colorResolution","every","globalPalette","canvas","restore","slice","palette","indices","decodeLzw","rows","interlacedRows","from","_","row","sourceRow","targetRow","x","index","targetX","targetY","target","color","disposal","fill","set","pixelFormat","strideBytes","origin","colorSpace","alphaMode","minimumCodeSize","expectedLength","clear","end","codeSize","dictionary","bitOffset","previous","bit","concat","subarray","count","i","start","step","String","fromCharCode"],"mappings":"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"}
|
|
@@ -28,11 +28,15 @@ const DEFAULT_VALUES = Object.freeze({
|
|
|
28
28
|
classes: Object.freeze({})
|
|
29
29
|
});
|
|
30
30
|
const OPTION_KEYS = new Set(["emit", "source", "buffers", "packTangents", "uvHandedness", "rebuildMissingNormals", "rebuildMissingTangents", "rebuildMissingBiNormals", "classes"]);
|
|
31
|
+
|
|
32
|
+
/** Validates a requested runtime class key for the glTF format reader. */
|
|
31
33
|
function validateClassKey(key, readerName = "CjsGltfFormat") {
|
|
32
34
|
if (!CLASS_KEYS.includes(key)) {
|
|
33
35
|
throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(", ")}`);
|
|
34
36
|
}
|
|
35
37
|
}
|
|
38
|
+
|
|
39
|
+
/** Validates a resolved runtime class constructor for the glTF format reader. */
|
|
36
40
|
function validateClass(key, Class, readerName = "CjsGltfFormat") {
|
|
37
41
|
validateClassKey(key, readerName);
|
|
38
42
|
if (typeof Class !== "function") {
|
|
@@ -66,6 +70,11 @@ function normalizeUvHandedness(value, readerName) {
|
|
|
66
70
|
if (value === "left" || value === -1 || value === "negative") return "left";
|
|
67
71
|
throw new TypeError(`${readerName}: uvHandedness must be "right" or "left"`);
|
|
68
72
|
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Normalizes reader options against their supported defaults for the glTF format
|
|
76
|
+
* reader.
|
|
77
|
+
*/
|
|
69
78
|
function normalizeValues(base, options = {}, readerName = "CjsGltfFormat") {
|
|
70
79
|
if (!options || typeof options !== "object") {
|
|
71
80
|
throw new TypeError(`${readerName}: options must be an object`);
|
|
@@ -229,6 +238,8 @@ function rebuildMissingMeshData(format, json, values) {
|
|
|
229
238
|
}
|
|
230
239
|
}
|
|
231
240
|
}
|
|
241
|
+
|
|
242
|
+
/** Reads input using normalized format options for the glTF format reader. */
|
|
232
243
|
function readWithValues(format, input, values) {
|
|
233
244
|
const parsed = parseInput(input);
|
|
234
245
|
const json = parseGltfToJson(parsed.gltf, {
|
|
@@ -245,6 +256,8 @@ function readWithValues(format, input, values) {
|
|
|
245
256
|
source: values.source
|
|
246
257
|
});
|
|
247
258
|
}
|
|
259
|
+
|
|
260
|
+
/** Inspects input using normalized format options for the glTF format reader. */
|
|
248
261
|
function inspectWithValues(input, values) {
|
|
249
262
|
const parsed = parseInput(input);
|
|
250
263
|
return inspectGltf(parsed.gltf, {
|
|
@@ -252,6 +265,8 @@ function inspectWithValues(input, values) {
|
|
|
252
265
|
source: values.source
|
|
253
266
|
});
|
|
254
267
|
}
|
|
268
|
+
|
|
269
|
+
/** Converts a parsed payload into a JSON-safe value for the glTF format reader. */
|
|
255
270
|
function toJsonValue(value) {
|
|
256
271
|
if (value === null || value === undefined) return value;
|
|
257
272
|
if (typeof value !== "object") return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/gltf/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsGltfFormat.\n */\n\nimport { CLASS_KEYS as GR2_CLASS_KEYS, hydrateJson } from \"./json.js\";\nimport { buildCmfFromShared, CMF_CLASS_KEYS, hydrateCmf } from \"./targets.js\";\nimport { inspectGltf, isGlb, parseGltfToJson, parseInput, toBytes } from \"./parser.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"@carbonenginejs/runtime-utils/mesh\";\nimport {\n packTangentFrames\n} from \"@carbonenginejs/runtime-utils/tangent\";\nimport {\n cross,\n normalize\n} from \"@carbonenginejs/runtime-utils/vec3\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport { isGlb, toBytes };\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GLTF_JSON = \"gltfJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_GLTF_JSON,\n source: \"memory\",\n buffers: null,\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"buffers\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\nexport function validateClassKey(key, readerName = \"CjsGltfFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n}\n\nexport function validateClass(key, Class, readerName = \"CjsGltfFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);\n }\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\nexport function normalizeValues(base, options = {}, readerName = \"CjsGltfFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n buffers: values.buffers || null,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null || emit === OUTPUT_JSON || emit === OUTPUT_GLTF_JSON || emit === OUTPUT_SHARED)\n {\n return OUTPUT_GLTF_JSON;\n }\n if (emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_GLTF_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGltfFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\nfunction vertexCount(mesh)\n{\n return mesh.vertex.position.length / 3;\n}\n\nfunction tangentXyz(mesh)\n{\n const\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"tangent conversion\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3) return tangent.slice();\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n out[o] = tangent[i];\n out[o + 1] = tangent[i + 1];\n out[o + 2] = tangent[i + 2];\n }\n return out;\n}\n\nfunction generatedBiNormalsForMesh(mesh, values)\n{\n const\n normals = requireVertexChannel(mesh, 0, \"normal\", \"binormal generation\"),\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"binormal generation\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3)\n {\n return generateBiNormals(normals, tangent, { uvHandedness: values.uvHandedness });\n }\n\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n const b = normalize(\n [ 0, 0, 0 ],\n cross(\n [ 0, 0, 0 ],\n [ normals[o], normals[o + 1], normals[o + 2] ],\n [ tangent[i], tangent[i + 1], tangent[i + 2] ]\n )\n );\n const sign = tangent[i + 3] < 0 ? -1 : 1;\n out[o] = b[0] * sign;\n out[o + 1] = b[1] * sign;\n out[o + 2] = b[2] * sign;\n }\n return out;\n}\n\nfunction rebuildMissingMeshData(format, json, values)\n{\n for (let meshIndex = 0; meshIndex < json.meshes.length; meshIndex++)\n {\n const\n mesh = json.meshes[meshIndex],\n common = { options: values, raw: null, json, mesh, meshIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }) || shouldPackTangents))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }) || shouldPackTangents))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }) || shouldPackTangents))\n {\n mesh.vertex.binormal = generatedBiNormalsForMesh(mesh, values);\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n tangentXyz(mesh),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n }\n}\n\nexport function readWithValues(format, input, values)\n{\n const parsed = parseInput(input);\n const json = parseGltfToJson(parsed.gltf, {\n binaryChunk: parsed.binaryChunk,\n source: values.source,\n buffers: values.buffers\n });\n rebuildMissingMeshData(format, json, values);\n if (values.emit === OUTPUT_CMF) return hydrateCmf(buildCmfFromShared(json), values.classes, { source: values.source });\n return hydrateJson(json, { classes: values.classes, source: values.source });\n}\n\nexport function inspectWithValues(input, values)\n{\n const parsed = parseInput(input);\n return inspectGltf(parsed.gltf, { format: parsed.format, source: values.source });\n}\n\nexport function toJsonValue(value)\n{\n if (value === null || value === undefined) return value;\n if (typeof value !== \"object\") return value;\n\n if (typeof value.toJSON === \"function\")\n {\n const next = value.toJSON();\n if (next !== value) return toJsonValue(next);\n }\n\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (ArrayBuffer.isView(value) && !(value instanceof DataView)) return Array.from(value);\n\n const out = {};\n for (const key of Object.keys(value))\n {\n out[key] = toJsonValue(value[key]);\n }\n return out;\n}\n\n/**\n * Imports a Node built-in module without exposing the specifier to any\n * bundler's static import graph.\n *\n * `await import(\"node:fs/promises\")` written as a literal is resolved\n * eagerly by webpack/Rollup/esbuild alike when they walk the module\n * graph, breaking browser builds even though this path only ever runs\n * under Node (readFile is a Node-only convenience). Building the\n * specifier inside a `Function` body hides it from every bundler's\n * static analysis - it only exists at runtime, in the Node process that\n * actually calls readFile.\n *\n * @param {string} specifier Node built-in module specifier, e.g. \"node:fs/promises\".\n * @returns {Promise<any>} The imported module namespace.\n */\nexport function importNodeModule(specifier)\n{\n // eslint-disable-next-line no-new-func\n return new Function(\"s\", \"return import(s)\")(specifier);\n}\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GLTF_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClassKey","key","readerName","includes","Error","JSON","stringify","join","validateClass","Class","TypeError","mergeClasses","base","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","vertexCount","position","tangentXyz","tangent","count","width","slice","out","i","o","generatedBiNormalsForMesh","normals","generateBiNormals","b","normalize","cross","sign","rebuildMissingMeshData","json","meshes","common","raw","shouldPackTangents","normal","generateNormals","generateTangents","binormal","packTangentFrames","readWithValues","input","parsed","parseInput","parseGltfToJson","gltf","binaryChunk","hydrateCmf","buildCmfFromShared","hydrateJson","inspectWithValues","inspectGltf","toJsonValue","toJSON","isArray","map","ArrayBuffer","isView","DataView","importNodeModule","specifier","Function"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/gltf/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsGltfFormat.\n */\n\nimport { CLASS_KEYS as GR2_CLASS_KEYS, hydrateJson } from \"./json.js\";\nimport { buildCmfFromShared, CMF_CLASS_KEYS, hydrateCmf } from \"./targets.js\";\nimport { inspectGltf, isGlb, parseGltfToJson, parseInput, toBytes } from \"./parser.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"@carbonenginejs/runtime-utils/mesh\";\nimport {\n packTangentFrames\n} from \"@carbonenginejs/runtime-utils/tangent\";\nimport {\n cross,\n normalize\n} from \"@carbonenginejs/runtime-utils/vec3\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport { isGlb, toBytes };\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GLTF_JSON = \"gltfJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_GLTF_JSON,\n source: \"memory\",\n buffers: null,\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"buffers\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/** Validates a requested runtime class key for the glTF format reader. */\nexport function validateClassKey(key, readerName = \"CjsGltfFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n}\n\n/** Validates a resolved runtime class constructor for the glTF format reader. */\nexport function validateClass(key, Class, readerName = \"CjsGltfFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);\n }\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Normalizes reader options against their supported defaults for the glTF format\n * reader.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsGltfFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n buffers: values.buffers || null,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null || emit === OUTPUT_JSON || emit === OUTPUT_GLTF_JSON || emit === OUTPUT_SHARED)\n {\n return OUTPUT_GLTF_JSON;\n }\n if (emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_GLTF_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGltfFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\nfunction vertexCount(mesh)\n{\n return mesh.vertex.position.length / 3;\n}\n\nfunction tangentXyz(mesh)\n{\n const\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"tangent conversion\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3) return tangent.slice();\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n out[o] = tangent[i];\n out[o + 1] = tangent[i + 1];\n out[o + 2] = tangent[i + 2];\n }\n return out;\n}\n\nfunction generatedBiNormalsForMesh(mesh, values)\n{\n const\n normals = requireVertexChannel(mesh, 0, \"normal\", \"binormal generation\"),\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"binormal generation\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3)\n {\n return generateBiNormals(normals, tangent, { uvHandedness: values.uvHandedness });\n }\n\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n const b = normalize(\n [ 0, 0, 0 ],\n cross(\n [ 0, 0, 0 ],\n [ normals[o], normals[o + 1], normals[o + 2] ],\n [ tangent[i], tangent[i + 1], tangent[i + 2] ]\n )\n );\n const sign = tangent[i + 3] < 0 ? -1 : 1;\n out[o] = b[0] * sign;\n out[o + 1] = b[1] * sign;\n out[o + 2] = b[2] * sign;\n }\n return out;\n}\n\nfunction rebuildMissingMeshData(format, json, values)\n{\n for (let meshIndex = 0; meshIndex < json.meshes.length; meshIndex++)\n {\n const\n mesh = json.meshes[meshIndex],\n common = { options: values, raw: null, json, mesh, meshIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }) || shouldPackTangents))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }) || shouldPackTangents))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }) || shouldPackTangents))\n {\n mesh.vertex.binormal = generatedBiNormalsForMesh(mesh, values);\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n tangentXyz(mesh),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n }\n}\n\n/** Reads input using normalized format options for the glTF format reader. */\nexport function readWithValues(format, input, values)\n{\n const parsed = parseInput(input);\n const json = parseGltfToJson(parsed.gltf, {\n binaryChunk: parsed.binaryChunk,\n source: values.source,\n buffers: values.buffers\n });\n rebuildMissingMeshData(format, json, values);\n if (values.emit === OUTPUT_CMF) return hydrateCmf(buildCmfFromShared(json), values.classes, { source: values.source });\n return hydrateJson(json, { classes: values.classes, source: values.source });\n}\n\n/** Inspects input using normalized format options for the glTF format reader. */\nexport function inspectWithValues(input, values)\n{\n const parsed = parseInput(input);\n return inspectGltf(parsed.gltf, { format: parsed.format, source: values.source });\n}\n\n/** Converts a parsed payload into a JSON-safe value for the glTF format reader. */\nexport function toJsonValue(value)\n{\n if (value === null || value === undefined) return value;\n if (typeof value !== \"object\") return value;\n\n if (typeof value.toJSON === \"function\")\n {\n const next = value.toJSON();\n if (next !== value) return toJsonValue(next);\n }\n\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (ArrayBuffer.isView(value) && !(value instanceof DataView)) return Array.from(value);\n\n const out = {};\n for (const key of Object.keys(value))\n {\n out[key] = toJsonValue(value[key]);\n }\n return out;\n}\n\n/**\n * Imports a Node built-in module without exposing the specifier to any\n * bundler's static import graph.\n *\n * `await import(\"node:fs/promises\")` written as a literal is resolved\n * eagerly by webpack/Rollup/esbuild alike when they walk the module\n * graph, breaking browser builds even though this path only ever runs\n * under Node (readFile is a Node-only convenience). Building the\n * specifier inside a `Function` body hides it from every bundler's\n * static analysis - it only exists at runtime, in the Node process that\n * actually calls readFile.\n *\n * @param {string} specifier Node built-in module specifier, e.g. \"node:fs/promises\".\n * @returns {Promise<any>} The imported module namespace.\n */\nexport function importNodeModule(specifier)\n{\n // eslint-disable-next-line no-new-func\n return new Function(\"s\", \"return import(s)\")(specifier);\n}\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GLTF_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClassKey","key","readerName","includes","Error","JSON","stringify","join","validateClass","Class","TypeError","mergeClasses","base","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","vertexCount","position","tangentXyz","tangent","count","width","slice","out","i","o","generatedBiNormalsForMesh","normals","generateBiNormals","b","normalize","cross","sign","rebuildMissingMeshData","json","meshes","common","raw","shouldPackTangents","normal","generateNormals","generateTangents","binormal","packTangentFrames","readWithValues","input","parsed","parseInput","parseGltfToJson","gltf","binaryChunk","hydrateCmf","buildCmfFromShared","hydrateJson","inspectWithValues","inspectGltf","toJsonValue","toJSON","isArray","map","ArrayBuffer","isView","DataView","importNodeModule","specifier","Function"],"mappings":"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"}
|
|
@@ -42,6 +42,8 @@ function createVertexChannels() {
|
|
|
42
42
|
}
|
|
43
43
|
return channels;
|
|
44
44
|
}
|
|
45
|
+
|
|
46
|
+
/** Returns a byte view over the supplied binary input for the glTF format reader. */
|
|
45
47
|
function toBytes(input) {
|
|
46
48
|
if (input instanceof Uint8Array) return input;
|
|
47
49
|
if (typeof ArrayBuffer !== "undefined" && input instanceof ArrayBuffer) return new Uint8Array(input);
|
|
@@ -56,6 +58,8 @@ function toUtf8(bytes) {
|
|
|
56
58
|
function isGlbBytes(bytes) {
|
|
57
59
|
return bytes.length >= 12 && new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(0, true) === GLB_MAGIC;
|
|
58
60
|
}
|
|
61
|
+
|
|
62
|
+
/** Reports whether the current glTF format reader satisfies glb. */
|
|
59
63
|
function isGlb(input) {
|
|
60
64
|
try {
|
|
61
65
|
return isGlbBytes(toBytes(input));
|
|
@@ -70,6 +74,8 @@ function parseJsonText(text) {
|
|
|
70
74
|
}
|
|
71
75
|
return json;
|
|
72
76
|
}
|
|
77
|
+
|
|
78
|
+
/** Parses input from the current glTF format reader. */
|
|
73
79
|
function parseInput(input) {
|
|
74
80
|
if (input && typeof input === "object" && !(input instanceof ArrayBuffer) && !ArrayBuffer.isView(input)) {
|
|
75
81
|
if (!input.asset) throw new Error("CjsGltfFormat: object input is not a glTF asset");
|
|
@@ -589,6 +595,11 @@ function registerModelTargets(modelTargets, model) {
|
|
|
589
595
|
modelTargets.set(nodeIndex, targets);
|
|
590
596
|
}
|
|
591
597
|
}
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Parses glTF or GLB input into its normalized JSON document for the glTF format
|
|
601
|
+
* reader.
|
|
602
|
+
*/
|
|
592
603
|
function parseGltfToJson(gltf, {
|
|
593
604
|
binaryChunk = null,
|
|
594
605
|
source = "memory",
|
|
@@ -636,6 +647,8 @@ function parseGltfToJson(gltf, {
|
|
|
636
647
|
root.animations = buildAnimations(gltf, buffers, modelTargets);
|
|
637
648
|
return root;
|
|
638
649
|
}
|
|
650
|
+
|
|
651
|
+
/** Inspects glTF without materializing the full glTF format reader payload. */
|
|
639
652
|
function inspectGltf(gltf, {
|
|
640
653
|
format = "gltf",
|
|
641
654
|
source = "memory"
|