@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
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { HlslReader } from '../../HlslReader.js';
|
|
2
|
+
import { asUint8Array } from '@carbonenginejs/runtime-utils/bytes';
|
|
3
|
+
import { HlslEffectStateManager } from '../../HlslEffectStateManager.js';
|
|
4
|
+
import { HlslShader } from '../shader/HlslShader.js';
|
|
5
|
+
import { HlslShaderOption } from '../shader/HlslShaderOption.js';
|
|
6
|
+
import { HlslShaderPermutation } from './HlslShaderPermutation.js';
|
|
7
|
+
|
|
8
|
+
const MIN_SUPPORTED_EFFECT_VERSION = 8;
|
|
9
|
+
const MAX_SUPPORTED_EFFECT_VERSION = 15;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Carbon/Trinity effect resource reader for compiled shader metadata.
|
|
13
|
+
*/
|
|
14
|
+
class HlslEffectRes {
|
|
15
|
+
static globalEffectOptions = [];
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates an empty effect resource ready to load a compiled `.sm_*` payload.
|
|
19
|
+
*/
|
|
20
|
+
constructor() {
|
|
21
|
+
this.m_data = new Uint8Array(0);
|
|
22
|
+
this.m_version = 0;
|
|
23
|
+
this.m_stringTable = new Uint8Array(0);
|
|
24
|
+
this.m_stringTableSize = 0;
|
|
25
|
+
this.m_offsets = [];
|
|
26
|
+
this.m_offsetCount = 0;
|
|
27
|
+
this.m_permutations = [];
|
|
28
|
+
this.m_shaders = new Map();
|
|
29
|
+
this.m_compilerVersion = null;
|
|
30
|
+
this.m_hash = new Uint8Array(0);
|
|
31
|
+
this.sourcePath = "";
|
|
32
|
+
this.loadError = null;
|
|
33
|
+
this.effectStateManager = new HlslEffectStateManager();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Reads the effect header, string table, permutation axes, and body offsets.
|
|
38
|
+
*
|
|
39
|
+
* @param {ArrayBuffer|ArrayBufferView|Uint8Array} source Compiled effect bytes.
|
|
40
|
+
* @param {object} [options] Load metadata and dependency overrides.
|
|
41
|
+
* @param {string} [options.sourcePath] Source path used in reports.
|
|
42
|
+
* @param {string} [options.source] Alternate source label.
|
|
43
|
+
* @param {HlslEffectStateManager} [options.effectStateManager] Registry to receive decoded state.
|
|
44
|
+
* @returns {boolean} True when the header was decoded successfully.
|
|
45
|
+
*/
|
|
46
|
+
DoLoad(source, options = {}) {
|
|
47
|
+
this._reset();
|
|
48
|
+
this.sourcePath = options.sourcePath || options.source || "";
|
|
49
|
+
this.effectStateManager = options.effectStateManager || new HlslEffectStateManager();
|
|
50
|
+
try {
|
|
51
|
+
// Carbon owns a memcpy of the loaded resource. Keep the JS graph
|
|
52
|
+
// equally isolated from later caller mutation.
|
|
53
|
+
this.m_data = Uint8Array.from(asUint8Array(source));
|
|
54
|
+
const stream = new HlslReader(this.m_data, {
|
|
55
|
+
source: this.sourcePath || "HlslEffectRes"
|
|
56
|
+
});
|
|
57
|
+
this.m_version = stream.readUint32();
|
|
58
|
+
if (this.m_version < MIN_SUPPORTED_EFFECT_VERSION || this.m_version > MAX_SUPPORTED_EFFECT_VERSION) {
|
|
59
|
+
throw new Error(`Unsupported HlslEffectRes version ${this.m_version}; expected ${MIN_SUPPORTED_EFFECT_VERSION}..${MAX_SUPPORTED_EFFECT_VERSION}`);
|
|
60
|
+
}
|
|
61
|
+
if (this.m_version >= 15) {
|
|
62
|
+
this.m_compilerVersion = stream.readUint32();
|
|
63
|
+
this.m_hash = stream.readRaw(32);
|
|
64
|
+
}
|
|
65
|
+
this.m_stringTableSize = stream.readUint32();
|
|
66
|
+
if (this.m_stringTableSize > this.m_data.length || stream.offset + this.m_stringTableSize > this.m_data.length) {
|
|
67
|
+
throw new Error("Invalid effect string table size");
|
|
68
|
+
}
|
|
69
|
+
this.m_stringTable = this.m_data.subarray(stream.offset, stream.offset + this.m_stringTableSize);
|
|
70
|
+
stream.skip(this.m_stringTableSize);
|
|
71
|
+
stream.setStringTable(this.m_stringTable, this.m_stringTableSize);
|
|
72
|
+
const permutationCount = stream.readUint8();
|
|
73
|
+
for (let index = 0; index < permutationCount; index += 1) {
|
|
74
|
+
const permutation = new HlslShaderPermutation();
|
|
75
|
+
permutation.name = stream.readString();
|
|
76
|
+
permutation.defaultOption = stream.readUint8();
|
|
77
|
+
permutation.description = stream.readString();
|
|
78
|
+
permutation.type = this.m_version > 5 ? stream.readUint8() : 0;
|
|
79
|
+
const optionCount = stream.readUint8();
|
|
80
|
+
for (let optionIndex = 0; optionIndex < optionCount; optionIndex += 1) {
|
|
81
|
+
permutation.options.push(stream.readString());
|
|
82
|
+
}
|
|
83
|
+
this.m_permutations.push(permutation);
|
|
84
|
+
}
|
|
85
|
+
const headerSize = stream.readUint32();
|
|
86
|
+
if (headerSize === 0) {
|
|
87
|
+
throw new Error("Effect contains no compiled shader bodies");
|
|
88
|
+
}
|
|
89
|
+
this.m_offsetCount = headerSize;
|
|
90
|
+
for (let index = 0; index < headerSize; index += 1) {
|
|
91
|
+
const record = {
|
|
92
|
+
index: stream.readUint32(),
|
|
93
|
+
offset: stream.readUint32(),
|
|
94
|
+
size: stream.readUint32()
|
|
95
|
+
};
|
|
96
|
+
record.end = record.offset + record.size;
|
|
97
|
+
if (record.end > this.m_data.length) {
|
|
98
|
+
throw new Error(`Invalid effect body record ${index}`);
|
|
99
|
+
}
|
|
100
|
+
this.m_offsets.push(record);
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
} catch (error) {
|
|
104
|
+
this.loadError = error;
|
|
105
|
+
this.m_shaders.clear();
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Mirrors Carbon's prepare hook by clearing cached shader bodies.
|
|
112
|
+
*
|
|
113
|
+
* @returns {boolean} True when preparation completed.
|
|
114
|
+
*/
|
|
115
|
+
DoPrepare() {
|
|
116
|
+
this.m_shaders.clear();
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Resolves a permutation option set to a decoded `HlslShader`.
|
|
122
|
+
*
|
|
123
|
+
* @param {Array<HlslShaderOption|object>|Map<string, string>} [options] Local option choices.
|
|
124
|
+
* @param {number|null} [count] Number of local option entries to consider.
|
|
125
|
+
* @returns {HlslShader|null} Decoded shader or null when no matching body exists.
|
|
126
|
+
*/
|
|
127
|
+
GetShader(options = [], count = null) {
|
|
128
|
+
if (!this.IsGood()) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
const normalizedOptions = normalizeShaderOptions(options);
|
|
132
|
+
const optionCount = Number.isInteger(count) ? Math.min(count, normalizedOptions.length) : normalizedOptions.length;
|
|
133
|
+
let multiplier = 1;
|
|
134
|
+
let index = 0;
|
|
135
|
+
for (const permutation of this.m_permutations) {
|
|
136
|
+
let value = permutation.defaultOption;
|
|
137
|
+
const globalOption = HlslEffectRes.globalEffectOptions.find(entry => entry.name === permutation.name);
|
|
138
|
+
const localOption = normalizedOptions.slice(0, optionCount).find(entry => entry.name === permutation.name);
|
|
139
|
+
const selected = globalOption || localOption;
|
|
140
|
+
if (selected) {
|
|
141
|
+
const selectedIndex = permutation.options.findIndex(option => option === selected.value);
|
|
142
|
+
if (selectedIndex >= 0) {
|
|
143
|
+
value = selectedIndex;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
index += value * multiplier;
|
|
147
|
+
multiplier *= permutation.options.length || 1;
|
|
148
|
+
}
|
|
149
|
+
return this.GetShaderByIndex(index);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Decodes the body at an exact permutation-table index without applying
|
|
154
|
+
* global or local option overrides.
|
|
155
|
+
*
|
|
156
|
+
* @param {number} index Exact zero-based permutation-table index.
|
|
157
|
+
* @returns {HlslShader|null} Decoded shader or null when the index/body is unavailable.
|
|
158
|
+
*/
|
|
159
|
+
GetShaderByIndex(index) {
|
|
160
|
+
if (!Number.isSafeInteger(index) || index < 0) {
|
|
161
|
+
throw new TypeError("HlslEffectRes body index must be a non-negative safe integer");
|
|
162
|
+
}
|
|
163
|
+
if (!this.IsGood()) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
if (this.m_shaders.has(index)) {
|
|
167
|
+
return this.m_shaders.get(index);
|
|
168
|
+
}
|
|
169
|
+
const offset = this.m_offsets[index];
|
|
170
|
+
if (!offset) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
const shader = new HlslShader();
|
|
174
|
+
const buffer = this.m_data.subarray(offset.offset, offset.end);
|
|
175
|
+
const ok = shader.GetEffect().Read(buffer, offset.size, this.m_version, this.m_stringTable, this.m_stringTableSize, this.sourcePath, {
|
|
176
|
+
effectStateManager: this.effectStateManager
|
|
177
|
+
});
|
|
178
|
+
if (!ok) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
shader.ProcessEffect();
|
|
182
|
+
this.m_shaders.set(index, shader);
|
|
183
|
+
return shader;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Reports whether the effect header has been loaded without error.
|
|
188
|
+
*
|
|
189
|
+
* @returns {boolean} True when this resource has usable effect data.
|
|
190
|
+
*/
|
|
191
|
+
IsGood() {
|
|
192
|
+
return !this.loadError && this.m_data.length > 0 && this.m_version >= MIN_SUPPORTED_EFFECT_VERSION;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Reports whether byte memory usage is known for this resource.
|
|
197
|
+
*
|
|
198
|
+
* @returns {boolean} Always true for byte-backed JavaScript resources.
|
|
199
|
+
*/
|
|
200
|
+
IsMemoryUsageKnown() {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Returns the byte size of the loaded effect payload.
|
|
206
|
+
*
|
|
207
|
+
* @returns {number} Loaded byte count.
|
|
208
|
+
*/
|
|
209
|
+
GetMemoryUsage() {
|
|
210
|
+
return this.m_data.length;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Clears decoded shader body caches while keeping the loaded header data.
|
|
215
|
+
*/
|
|
216
|
+
ReleaseResources() {
|
|
217
|
+
this.m_shaders.clear();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Returns JSON-safe permutation metadata for tooling and reports.
|
|
222
|
+
*
|
|
223
|
+
* @returns {object[]} Permutation descriptions.
|
|
224
|
+
*/
|
|
225
|
+
GetPermutationDescription() {
|
|
226
|
+
return this.m_permutations.map(permutation => permutation.toJSON());
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Returns a JSON-safe summary of the loaded effect resource.
|
|
231
|
+
*
|
|
232
|
+
* @returns {object} Serializable effect resource summary.
|
|
233
|
+
*/
|
|
234
|
+
toJSON() {
|
|
235
|
+
return {
|
|
236
|
+
version: this.m_version,
|
|
237
|
+
compilerVersion: this.m_compilerVersion,
|
|
238
|
+
sourcePath: this.sourcePath,
|
|
239
|
+
stringTableSize: this.m_stringTableSize,
|
|
240
|
+
offsetCount: this.m_offsetCount,
|
|
241
|
+
permutations: this.m_permutations.map(entry => entry.toJSON()),
|
|
242
|
+
offsets: this.m_offsets.map(entry => ({
|
|
243
|
+
...entry
|
|
244
|
+
})),
|
|
245
|
+
loadError: this.loadError ? {
|
|
246
|
+
name: this.loadError.name,
|
|
247
|
+
message: this.loadError.message
|
|
248
|
+
} : null
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Resets loaded state before a new `DoLoad` attempt.
|
|
254
|
+
*
|
|
255
|
+
* @private
|
|
256
|
+
*/
|
|
257
|
+
_reset() {
|
|
258
|
+
this.m_data = new Uint8Array(0);
|
|
259
|
+
this.m_version = 0;
|
|
260
|
+
this.m_stringTable = new Uint8Array(0);
|
|
261
|
+
this.m_stringTableSize = 0;
|
|
262
|
+
this.m_offsets = [];
|
|
263
|
+
this.m_offsetCount = 0;
|
|
264
|
+
this.m_permutations = [];
|
|
265
|
+
this.m_shaders = new Map();
|
|
266
|
+
this.m_compilerVersion = null;
|
|
267
|
+
this.m_hash = new Uint8Array(0);
|
|
268
|
+
this.loadError = null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Converts supported option input shapes to `HlslShaderOption` instances.
|
|
274
|
+
*
|
|
275
|
+
* @param {Array<HlslShaderOption|object>|Map<string, string>} options Option input.
|
|
276
|
+
* @returns {HlslShaderOption[]} Normalized option list.
|
|
277
|
+
*/
|
|
278
|
+
function normalizeShaderOptions(options) {
|
|
279
|
+
if (options instanceof Map) {
|
|
280
|
+
return Array.from(options.entries()).map(([name, value]) => new HlslShaderOption(name, value));
|
|
281
|
+
}
|
|
282
|
+
if (!Array.isArray(options)) {
|
|
283
|
+
return [];
|
|
284
|
+
}
|
|
285
|
+
return options.map(entry => {
|
|
286
|
+
if (entry instanceof HlslShaderOption) {
|
|
287
|
+
return entry;
|
|
288
|
+
}
|
|
289
|
+
return new HlslShaderOption(entry?.name || "", entry?.value || "");
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export { HlslEffectRes };
|
|
294
|
+
//# sourceMappingURL=HlslEffectRes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HlslEffectRes.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/resources/HlslEffectRes.js"],"sourcesContent":["import { HlslReader } from \"../../HlslReader.js\";\nimport { asUint8Array } from \"@carbonenginejs/runtime-utils/bytes\";\nimport { HlslEffectStateManager } from \"../../HlslEffectStateManager.js\";\nimport { HlslShader } from \"../shader/HlslShader.js\";\nimport { HlslShaderOption } from \"../shader/HlslShaderOption.js\";\nimport { HlslShaderPermutation } from \"./HlslShaderPermutation.js\";\n\nconst MIN_SUPPORTED_EFFECT_VERSION = 8;\nconst MAX_SUPPORTED_EFFECT_VERSION = 15;\n\n/**\n * Carbon/Trinity effect resource reader for compiled shader metadata.\n */\nexport class HlslEffectRes\n{\n static globalEffectOptions = [];\n\n /**\n * Creates an empty effect resource ready to load a compiled `.sm_*` payload.\n */\n constructor()\n {\n this.m_data = new Uint8Array(0);\n this.m_version = 0;\n this.m_stringTable = new Uint8Array(0);\n this.m_stringTableSize = 0;\n this.m_offsets = [];\n this.m_offsetCount = 0;\n this.m_permutations = [];\n this.m_shaders = new Map();\n this.m_compilerVersion = null;\n this.m_hash = new Uint8Array(0);\n this.sourcePath = \"\";\n this.loadError = null;\n this.effectStateManager = new HlslEffectStateManager();\n }\n\n /**\n * Reads the effect header, string table, permutation axes, and body offsets.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} source Compiled effect bytes.\n * @param {object} [options] Load metadata and dependency overrides.\n * @param {string} [options.sourcePath] Source path used in reports.\n * @param {string} [options.source] Alternate source label.\n * @param {HlslEffectStateManager} [options.effectStateManager] Registry to receive decoded state.\n * @returns {boolean} True when the header was decoded successfully.\n */\n DoLoad(source, options = {})\n {\n this._reset();\n this.sourcePath = options.sourcePath || options.source || \"\";\n this.effectStateManager = options.effectStateManager || new HlslEffectStateManager();\n\n try\n {\n // Carbon owns a memcpy of the loaded resource. Keep the JS graph\n // equally isolated from later caller mutation.\n this.m_data = Uint8Array.from(asUint8Array(source));\n const stream = new HlslReader(this.m_data, { source: this.sourcePath || \"HlslEffectRes\" });\n this.m_version = stream.readUint32();\n\n if (this.m_version < MIN_SUPPORTED_EFFECT_VERSION || this.m_version > MAX_SUPPORTED_EFFECT_VERSION)\n {\n throw new Error(`Unsupported HlslEffectRes version ${this.m_version}; expected ${MIN_SUPPORTED_EFFECT_VERSION}..${MAX_SUPPORTED_EFFECT_VERSION}`);\n }\n\n if (this.m_version >= 15)\n {\n this.m_compilerVersion = stream.readUint32();\n this.m_hash = stream.readRaw(32);\n }\n\n this.m_stringTableSize = stream.readUint32();\n if (this.m_stringTableSize > this.m_data.length || stream.offset + this.m_stringTableSize > this.m_data.length)\n {\n throw new Error(\"Invalid effect string table size\");\n }\n this.m_stringTable = this.m_data.subarray(stream.offset, stream.offset + this.m_stringTableSize);\n stream.skip(this.m_stringTableSize);\n stream.setStringTable(this.m_stringTable, this.m_stringTableSize);\n\n const permutationCount = stream.readUint8();\n for (let index = 0; index < permutationCount; index += 1)\n {\n const permutation = new HlslShaderPermutation();\n permutation.name = stream.readString();\n permutation.defaultOption = stream.readUint8();\n permutation.description = stream.readString();\n permutation.type = this.m_version > 5 ? stream.readUint8() : 0;\n\n const optionCount = stream.readUint8();\n for (let optionIndex = 0; optionIndex < optionCount; optionIndex += 1)\n {\n permutation.options.push(stream.readString());\n }\n this.m_permutations.push(permutation);\n }\n\n const headerSize = stream.readUint32();\n if (headerSize === 0)\n {\n throw new Error(\"Effect contains no compiled shader bodies\");\n }\n\n this.m_offsetCount = headerSize;\n for (let index = 0; index < headerSize; index += 1)\n {\n const record = {\n index: stream.readUint32(),\n offset: stream.readUint32(),\n size: stream.readUint32()\n };\n record.end = record.offset + record.size;\n if (record.end > this.m_data.length)\n {\n throw new Error(`Invalid effect body record ${index}`);\n }\n this.m_offsets.push(record);\n }\n\n return true;\n }\n catch (error)\n {\n this.loadError = error;\n this.m_shaders.clear();\n return false;\n }\n }\n\n /**\n * Mirrors Carbon's prepare hook by clearing cached shader bodies.\n *\n * @returns {boolean} True when preparation completed.\n */\n DoPrepare()\n {\n this.m_shaders.clear();\n return true;\n }\n\n /**\n * Resolves a permutation option set to a decoded `HlslShader`.\n *\n * @param {Array<HlslShaderOption|object>|Map<string, string>} [options] Local option choices.\n * @param {number|null} [count] Number of local option entries to consider.\n * @returns {HlslShader|null} Decoded shader or null when no matching body exists.\n */\n GetShader(options = [], count = null)\n {\n if (!this.IsGood())\n {\n return null;\n }\n\n const normalizedOptions = normalizeShaderOptions(options);\n const optionCount = Number.isInteger(count) ? Math.min(count, normalizedOptions.length) : normalizedOptions.length;\n let multiplier = 1;\n let index = 0;\n\n for (const permutation of this.m_permutations)\n {\n let value = permutation.defaultOption;\n const globalOption = HlslEffectRes.globalEffectOptions.find((entry) => entry.name === permutation.name);\n const localOption = normalizedOptions.slice(0, optionCount).find((entry) => entry.name === permutation.name);\n const selected = globalOption || localOption;\n\n if (selected)\n {\n const selectedIndex = permutation.options.findIndex((option) => option === selected.value);\n if (selectedIndex >= 0)\n {\n value = selectedIndex;\n }\n }\n\n index += value * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return this.GetShaderByIndex(index);\n }\n\n /**\n * Decodes the body at an exact permutation-table index without applying\n * global or local option overrides.\n *\n * @param {number} index Exact zero-based permutation-table index.\n * @returns {HlslShader|null} Decoded shader or null when the index/body is unavailable.\n */\n GetShaderByIndex(index)\n {\n if (!Number.isSafeInteger(index) || index < 0)\n {\n throw new TypeError(\"HlslEffectRes body index must be a non-negative safe integer\");\n }\n if (!this.IsGood())\n {\n return null;\n }\n if (this.m_shaders.has(index))\n {\n return this.m_shaders.get(index);\n }\n\n const offset = this.m_offsets[index];\n if (!offset)\n {\n return null;\n }\n\n const shader = new HlslShader();\n const buffer = this.m_data.subarray(offset.offset, offset.end);\n const ok = shader.GetEffect().Read(\n buffer,\n offset.size,\n this.m_version,\n this.m_stringTable,\n this.m_stringTableSize,\n this.sourcePath,\n { effectStateManager: this.effectStateManager }\n );\n if (!ok)\n {\n return null;\n }\n\n shader.ProcessEffect();\n this.m_shaders.set(index, shader);\n return shader;\n }\n\n /**\n * Reports whether the effect header has been loaded without error.\n *\n * @returns {boolean} True when this resource has usable effect data.\n */\n IsGood()\n {\n return !this.loadError && this.m_data.length > 0 && this.m_version >= MIN_SUPPORTED_EFFECT_VERSION;\n }\n\n /**\n * Reports whether byte memory usage is known for this resource.\n *\n * @returns {boolean} Always true for byte-backed JavaScript resources.\n */\n IsMemoryUsageKnown()\n {\n return true;\n }\n\n /**\n * Returns the byte size of the loaded effect payload.\n *\n * @returns {number} Loaded byte count.\n */\n GetMemoryUsage()\n {\n return this.m_data.length;\n }\n\n /**\n * Clears decoded shader body caches while keeping the loaded header data.\n */\n ReleaseResources()\n {\n this.m_shaders.clear();\n }\n\n /**\n * Returns JSON-safe permutation metadata for tooling and reports.\n *\n * @returns {object[]} Permutation descriptions.\n */\n GetPermutationDescription()\n {\n return this.m_permutations.map((permutation) => permutation.toJSON());\n }\n\n /**\n * Returns a JSON-safe summary of the loaded effect resource.\n *\n * @returns {object} Serializable effect resource summary.\n */\n toJSON()\n {\n return {\n version: this.m_version,\n compilerVersion: this.m_compilerVersion,\n sourcePath: this.sourcePath,\n stringTableSize: this.m_stringTableSize,\n offsetCount: this.m_offsetCount,\n permutations: this.m_permutations.map((entry) => entry.toJSON()),\n offsets: this.m_offsets.map((entry) => ({ ...entry })),\n loadError: this.loadError ? {\n name: this.loadError.name,\n message: this.loadError.message\n } : null\n };\n }\n\n /**\n * Resets loaded state before a new `DoLoad` attempt.\n *\n * @private\n */\n _reset()\n {\n this.m_data = new Uint8Array(0);\n this.m_version = 0;\n this.m_stringTable = new Uint8Array(0);\n this.m_stringTableSize = 0;\n this.m_offsets = [];\n this.m_offsetCount = 0;\n this.m_permutations = [];\n this.m_shaders = new Map();\n this.m_compilerVersion = null;\n this.m_hash = new Uint8Array(0);\n this.loadError = null;\n }\n}\n\n/**\n * Applies global shader option overrides used during permutation lookup.\n *\n * @param {Array<HlslShaderOption|object>|Map<string, string>} [changes] Option changes to merge.\n */\nexport function ModifyGlobalEffectOptions(changes = [])\n{\n for (const change of normalizeShaderOptions(changes))\n {\n const index = HlslEffectRes.globalEffectOptions.findIndex((entry) => entry.name === change.name);\n if (!change.value)\n {\n if (index >= 0) HlslEffectRes.globalEffectOptions.splice(index, 1);\n }\n else if (index >= 0)\n {\n HlslEffectRes.globalEffectOptions[index] = change;\n }\n else\n {\n HlslEffectRes.globalEffectOptions.push(change);\n }\n }\n}\n\n/**\n * Returns the current global shader option overrides.\n *\n * @returns {HlslShaderOption[]} Copy of global shader option overrides.\n */\nexport function GetGlobalEffectOptions()\n{\n return HlslEffectRes.globalEffectOptions.slice();\n}\n\n/**\n * Converts supported option input shapes to `HlslShaderOption` instances.\n *\n * @param {Array<HlslShaderOption|object>|Map<string, string>} options Option input.\n * @returns {HlslShaderOption[]} Normalized option list.\n */\nfunction normalizeShaderOptions(options)\n{\n if (options instanceof Map)\n {\n return Array.from(options.entries()).map(([ name, value ]) => new HlslShaderOption(name, value));\n }\n if (!Array.isArray(options))\n {\n return [];\n }\n return options.map((entry) =>\n {\n if (entry instanceof HlslShaderOption)\n {\n return entry;\n }\n return new HlslShaderOption(entry?.name || \"\", entry?.value || \"\");\n });\n}\n"],"names":["MIN_SUPPORTED_EFFECT_VERSION","MAX_SUPPORTED_EFFECT_VERSION","HlslEffectRes","globalEffectOptions","constructor","m_data","Uint8Array","m_version","m_stringTable","m_stringTableSize","m_offsets","m_offsetCount","m_permutations","m_shaders","Map","m_compilerVersion","m_hash","sourcePath","loadError","effectStateManager","HlslEffectStateManager","DoLoad","source","options","_reset","from","asUint8Array","stream","HlslReader","readUint32","Error","readRaw","length","offset","subarray","skip","setStringTable","permutationCount","readUint8","index","permutation","HlslShaderPermutation","name","readString","defaultOption","description","type","optionCount","optionIndex","push","headerSize","record","size","end","error","clear","DoPrepare","GetShader","count","IsGood","normalizedOptions","normalizeShaderOptions","Number","isInteger","Math","min","multiplier","value","globalOption","find","entry","localOption","slice","selected","selectedIndex","findIndex","option","GetShaderByIndex","isSafeInteger","TypeError","has","get","shader","HlslShader","buffer","ok","GetEffect","Read","ProcessEffect","set","IsMemoryUsageKnown","GetMemoryUsage","ReleaseResources","GetPermutationDescription","map","toJSON","version","compilerVersion","stringTableSize","offsetCount","permutations","offsets","message","Array","entries","HlslShaderOption","isArray"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trinity shader permutation axis and option metadata.
|
|
3
|
+
*/
|
|
4
|
+
class HlslShaderPermutation {
|
|
5
|
+
/**
|
|
6
|
+
* Creates an empty permutation description as stored in an effect header.
|
|
7
|
+
*/
|
|
8
|
+
constructor() {
|
|
9
|
+
this.name = "";
|
|
10
|
+
this.options = [];
|
|
11
|
+
this.defaultOption = 0;
|
|
12
|
+
this.description = "";
|
|
13
|
+
this.type = 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Returns the permutation metadata in report-friendly form.
|
|
18
|
+
*
|
|
19
|
+
* @returns {object} Serializable permutation description.
|
|
20
|
+
*/
|
|
21
|
+
toJSON() {
|
|
22
|
+
return {
|
|
23
|
+
name: this.name,
|
|
24
|
+
options: this.options.slice(),
|
|
25
|
+
defaultOption: this.defaultOption,
|
|
26
|
+
description: this.description,
|
|
27
|
+
type: this.type
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { HlslShaderPermutation };
|
|
33
|
+
//# sourceMappingURL=HlslShaderPermutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HlslShaderPermutation.js","sources":["../../../../../../../src/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js"],"sourcesContent":["/**\n * Trinity shader permutation axis and option metadata.\n */\nexport class HlslShaderPermutation\n{\n /**\n * Creates an empty permutation description as stored in an effect header.\n */\n constructor()\n {\n this.name = \"\";\n this.options = [];\n this.defaultOption = 0;\n this.description = \"\";\n this.type = 0;\n }\n\n /**\n * Returns the permutation metadata in report-friendly form.\n *\n * @returns {object} Serializable permutation description.\n */\n toJSON()\n {\n return {\n name: this.name,\n options: this.options.slice(),\n defaultOption: this.defaultOption,\n description: this.description,\n type: this.type\n };\n }\n}\n"],"names":["HlslShaderPermutation","constructor","name","options","defaultOption","description","type","toJSON","slice"],"mappings":"AAAA;AACA;AACA;AACO,MAAMA,qBAAqB,CAClC;AACI;AACJ;AACA;AACIC,EAAAA,WAAWA,GACX;IACI,IAAI,CAACC,IAAI,GAAG,EAAE;IACd,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACC,WAAW,GAAG,EAAE;IACrB,IAAI,CAACC,IAAI,GAAG,CAAC;AACjB,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACIC,EAAAA,MAAMA,GACN;IACI,OAAO;MACHL,IAAI,EAAE,IAAI,CAACA,IAAI;AACfC,MAAAA,OAAO,EAAE,IAAI,CAACA,OAAO,CAACK,KAAK,EAAE;MAC7BJ,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BC,IAAI,EAAE,IAAI,CAACA;KACd;AACL,EAAA;AACJ;;;;"}
|