@carbonenginejs/runtime-resource 0.13.0 → 0.15.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/LICENSE +21 -21
- package/NOTICE +32 -32
- package/README.md +129 -129
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3858
- package/dist/CjsResManFetchProvider.js +94 -94
- package/dist/CjsResManWorkQueue.js +301 -301
- package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
- package/dist/format/CjsBlueReader.js +358 -358
- package/dist/format/CjsByteReader.js +310 -310
- package/dist/format/CjsByteWriter.js +242 -242
- package/dist/format/CjsFormat.js +223 -223
- package/dist/format/CjsFormatError.js +41 -41
- package/dist/format/CjsReader.js +22 -22
- package/dist/format/CjsResourceProbe.js +279 -279
- package/dist/format/CjsStringTable.js +268 -268
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +265 -265
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -182
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -321
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -1147
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -197
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -146
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/sha256.js +114 -114
- package/dist/format/index.js +11 -11
- package/dist/format/payloadContract.js +193 -193
- package/dist/formats/black/CjsBlackFormat.js +310 -310
- package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
- package/dist/formats/black/core/CjsBlackReader.js +764 -764
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
- package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +199 -199
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +175 -175
- package/dist/formats/bnk/core/busNodes.js +252 -252
- package/dist/formats/bnk/core/effectNodes.js +147 -147
- package/dist/formats/bnk/core/eventAction.js +416 -416
- package/dist/formats/bnk/core/globalSettings.js +215 -215
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -512
- package/dist/formats/bnk/core/musicNodes.js +540 -540
- package/dist/formats/bnk/core/nodeBase.js +553 -553
- package/dist/formats/bnk/core/sfxNodes.js +632 -632
- package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +194 -194
- package/dist/formats/cmf/core/buffers.js +237 -237
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +318 -318
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +374 -374
- package/dist/formats/cmf/core/shared.js +277 -277
- package/dist/formats/cmf/core/writer.js +571 -571
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +200 -200
- package/dist/formats/dds/core/bc6h.js +298 -298
- package/dist/formats/dds/core/bc7.js +272 -272
- package/dist/formats/dds/core/helpers.js +901 -862
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +187 -142
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/formats/dxbc/core/DxbcReader.js +266 -266
- package/dist/formats/dxbc/core/container.js +169 -169
- package/dist/formats/dxbc/core/decoder.js +789 -789
- package/dist/formats/dxbc/core/disassemble.js +240 -0
- package/dist/formats/dxbc/core/disassemble.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -19
- package/dist/formats/dxbc/core/helpers.js +220 -220
- package/dist/formats/dxbc/core/opcodes.js +45 -45
- package/dist/formats/dxbc/core/program.js +91 -91
- package/dist/formats/dxbc/core/signature.js +172 -172
- package/dist/formats/dxbc/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3932 -3932
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +142 -142
- package/dist/formats/flac/core/helpers.js +315 -315
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +141 -141
- package/dist/formats/gif/core/helpers.js +380 -380
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +252 -290
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +287 -307
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +679 -679
- package/dist/formats/gltf/core/targets.js +173 -173
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +289 -289
- package/dist/formats/gr2/core/bitknit2.js +282 -282
- package/dist/formats/gr2/core/curves.js +1047 -1047
- package/dist/formats/gr2/core/gsf.js +72 -72
- package/dist/formats/gr2/core/helpers.js +352 -352
- package/dist/formats/gr2/core/json.js +622 -622
- package/dist/formats/gr2/core/oodle1.js +388 -388
- package/dist/formats/gr2/core/tangents.js +48 -48
- package/dist/formats/gr2/core/targets.js +361 -361
- package/dist/formats/gr2/index.js +2 -2
- package/dist/formats/hlsl/CjsHlslFormat.js +233 -254
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
- package/dist/formats/hlsl/core/analysis.js +51 -51
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -850
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -128
- package/dist/formats/hlsl/core/helpers.js +270 -270
- package/dist/formats/hlsl/core/json.js +284 -284
- package/dist/formats/hlsl/core/localLightFamily.js +133 -133
- package/dist/formats/hlsl/core/metadata.js +327 -327
- package/dist/formats/hlsl/core/render-states.js +280 -280
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -320
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +423 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -62
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
- package/dist/formats/hlsl/index.js +3 -3
- package/dist/formats/index.js +33 -33
- package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
- package/dist/formats/jpeg/core/helpers.js +402 -402
- package/dist/formats/jpeg/core/jpeg.js +480 -480
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +197 -197
- package/dist/formats/mp3/core/helpers.js +375 -375
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +197 -197
- package/dist/formats/mp4/core/helpers.js +484 -484
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +232 -253
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +553 -573
- package/dist/formats/obj/core/helpers.js.map +1 -1
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +143 -143
- package/dist/formats/ogg/core/helpers.js +410 -410
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +1017 -1017
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/pickle/CjsPickleFormat.js +214 -214
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -551
- package/dist/formats/pickle/index.js +2 -2
- package/dist/formats/png/CjsPngFormat.js +201 -201
- package/dist/formats/png/core/helpers.js +635 -635
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +263 -263
- package/dist/formats/red/core/CjsRedReader.js +246 -246
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +158 -158
- package/dist/formats/red/core/redGraph.js +71 -71
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +320 -365
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +241 -261
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +642 -642
- package/dist/formats/stl/core/targets.js +173 -173
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +197 -197
- package/dist/formats/tga/core/helpers.js +493 -493
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +198 -198
- package/dist/formats/wav/core/helpers.js +365 -365
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webgl/CjsWebglFormat.js +199 -199
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -70
- package/dist/formats/webgl/core/effectPackage.js +900 -900
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2820
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -486
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -98
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -552
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -243
- package/dist/formats/webgl/core/glslEffectCompleteness.js +85 -85
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -1
- package/dist/formats/webgl/core/helpers.js +167 -167
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -122
- package/dist/formats/webgl/core/readGlslEffectContainer.js +202 -256
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -89
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js +354 -354
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +306 -306
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
- package/dist/formats/webgpu/core/packageEffect.js +381 -381
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageMetadata.js +17 -17
- package/dist/formats/webgpu/core/schema.js +4 -4
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +325 -325
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
- package/dist/formats/webgpu/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +197 -197
- package/dist/formats/webm/core/helpers.js +572 -572
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +140 -140
- package/dist/formats/webp/core/helpers.js +237 -237
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +250 -250
- package/dist/formats/wem/core/bitStream.js +261 -261
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +437 -437
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +134 -134
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -400
- package/dist/formats/yaml/core/helpers.js +196 -196
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -64
- package/dist/resource/CjsLoadingObject.js +19 -19
- package/dist/resource/CjsResource.js +801 -801
- package/dist/resource/ResourceHandlerMode.js +14 -14
- package/dist/resource/Tr2LightProfileRes.js +32 -32
- package/dist/resource/audio/AudioGeometryResData.js +47 -47
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
- package/dist/resource/audio/CjsAudioRes.js +213 -213
- package/dist/resource/audio/index.js +4 -4
- package/dist/resource/geometry/MeshDecalData.js +37 -37
- package/dist/resource/geometry/MeshDecalLodData.js +34 -34
- package/dist/resource/geometry/TriGeometryRes.js +570 -467
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
- package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
- package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
- package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
- package/dist/resource/geometry/TriJointBinding.js +38 -38
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
- package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
- package/dist/resource/geometry/granny/enums.js +10 -10
- package/dist/resource/geometry/granny/index.js +6 -6
- package/dist/resource/geometry/index.js +17 -17
- package/dist/resource/index.js +54 -54
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -336
- package/dist/resource/shader/Tr2MaterialArea.js +31 -31
- package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
- package/dist/resource/shader/Tr2MaterialRes.js +31 -31
- package/dist/resource/shader/Tr2Shader.js +283 -283
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -143
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -114
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -168
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -125
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -120
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -372
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -78
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -168
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -159
- package/dist/resource/shader/reflection/shaderStage.js +22 -22
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -135
- package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
- package/dist/resource/texture/Tr2ImageRes.js +120 -120
- package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
- package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
- package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resource/texture/TriTextureRes.js +359 -359
- package/dist/resource/texture/index.js +15 -15
- package/dist/resource/texture/texturePipelineBehavior.js +308 -308
- package/dist/worker/CjsResManMainThreadLoader.js +89 -89
- package/dist/worker/CjsResManWorker.js +218 -218
- package/dist/worker/CjsResManWorkerLoader.js +437 -437
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -118
- package/docs/concepts/resource-lifecycle.md +226 -226
- package/docs/concepts/shader-resource-model.md +111 -111
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -138
- package/docs/formats/carbon-effect-container.md +553 -553
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +105 -77
- package/docs/formats/dxbc/reference/classes/README.md +9 -9
- package/docs/formats/dxbc/reference/decoded-output.md +122 -122
- package/docs/formats/gr2.md +160 -160
- package/docs/formats/hlsl/README.md +54 -54
- package/docs/formats/hlsl/architecture.md +66 -65
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -60
- package/docs/formats/hlsl/guides/reading-effects.md +68 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -61
- package/docs/formats/hlsl/reference/api.md +91 -92
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -97
- package/docs/formats/pickle.md +82 -82
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -115
- package/docs/formats/webgl/architecture.md +69 -69
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
- package/docs/formats/webgl/decl-io.md +1234 -1234
- package/docs/formats/webgl/memory-structured.md +890 -890
- package/docs/formats/webgl/reference/classes/README.md +9 -9
- package/docs/formats/webgl/texture-sample.md +964 -964
- package/docs/formats/webgpu/README.md +84 -84
- package/docs/formats/webgpu/architecture.md +95 -95
- package/docs/formats/webgpu/formats/carbon-webgpu.md +215 -215
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -189
- package/docs/formats/webgpu/reference/api.md +196 -196
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1546
- package/docs/formats/wwise.md +146 -146
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -216
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -944
- package/docs/reference/classes/resources.md +456 -456
- package/docs/reference/classes/texture.md +26 -26
- package/docs/reference/events.md +117 -117
- package/docs/reference/motherlode-cache.md +275 -275
- package/docs/reference/queues.md +194 -194
- package/docs/reference/reload.md +107 -107
- package/docs/reference/texture-arrays.md +113 -113
- package/docs/reference/texture-pipeline.md +53 -53
- package/docs/reference/workers.md +142 -142
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
|
@@ -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\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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"}
|
|
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"],"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"],"mappings":"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"}
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSON hydration helpers for the shared CarbonEngineJS mesh/animation schema.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const CLASS_KEYS = Object.freeze(["Root", "Mesh", "BoneBinding", "IndexGroup", "MorphTarget", "Model", "Skeleton", "Bone", "Animation", "TrackGroup", "TransformTrack", "Curve"]);
|
|
6
|
-
function build(classes, key, props, hydrationOptions = {}) {
|
|
7
|
-
const Ctor = classes[key];
|
|
8
|
-
return Ctor ? populate(new Ctor(), props, hydrationOptions) : props;
|
|
9
|
-
}
|
|
10
|
-
function populate(instance, props, hydrationOptions = {}) {
|
|
11
|
-
if (!instance || typeof instance.SetValues !== "function") {
|
|
12
|
-
throw new TypeError("CjsGltfFormat class population requires classes to implement SetValues(values)");
|
|
13
|
-
}
|
|
14
|
-
instance.SetValues(props, {
|
|
15
|
-
...hydrationOptions,
|
|
16
|
-
skipUpdate: true,
|
|
17
|
-
skipEvents: true
|
|
18
|
-
});
|
|
19
|
-
return instance;
|
|
20
|
-
}
|
|
21
|
-
function hydrateCurve(curve, classes, hydrationOptions) {
|
|
22
|
-
return curve ? build(classes, "Curve", curve, hydrationOptions) : curve;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Hydrate the plain shared JSON schema with caller-supplied classes.
|
|
27
|
-
*
|
|
28
|
-
* @param {object} root Plain JSON graph.
|
|
29
|
-
* @param {object} [options] Hydration options.
|
|
30
|
-
* @param {object} [options.classes] Node constructor map.
|
|
31
|
-
* @returns {object} Hydrated graph.
|
|
32
|
-
*/
|
|
33
|
-
function hydrateJson(root, {
|
|
34
|
-
classes = {},
|
|
35
|
-
...hydrationOptions
|
|
36
|
-
} = {}) {
|
|
37
|
-
return build(classes, "Root", {
|
|
38
|
-
grannyFileFormatRevision: root.grannyFileFormatRevision,
|
|
39
|
-
grannyFileSource: root.grannyFileSource,
|
|
40
|
-
meshes: root.meshes.map(mesh => build(classes, "Mesh", {
|
|
41
|
-
name: mesh.name,
|
|
42
|
-
morphTargets: mesh.morphTargets.map(target => build(classes, "MorphTarget", target, hydrationOptions)),
|
|
43
|
-
minBounds: mesh.minBounds,
|
|
44
|
-
maxBounds: mesh.maxBounds,
|
|
45
|
-
boneBindings: mesh.boneBindings.map(binding => build(classes, "BoneBinding", binding, hydrationOptions)),
|
|
46
|
-
vertex: mesh.vertex,
|
|
47
|
-
indices: mesh.indices.map(group => build(classes, "IndexGroup", group, hydrationOptions))
|
|
48
|
-
}, hydrationOptions)),
|
|
49
|
-
models: root.models.map(model => build(classes, "Model", {
|
|
50
|
-
name: model.name,
|
|
51
|
-
skeleton: build(classes, "Skeleton", {
|
|
52
|
-
name: model.skeleton.name,
|
|
53
|
-
bones: model.skeleton.bones.map(bone => build(classes, "Bone", bone, hydrationOptions))
|
|
54
|
-
}, hydrationOptions),
|
|
55
|
-
meshBindings: model.meshBindings
|
|
56
|
-
}, hydrationOptions)),
|
|
57
|
-
animations: root.animations.map(animation => build(classes, "Animation", {
|
|
58
|
-
name: animation.name,
|
|
59
|
-
duration: animation.duration,
|
|
60
|
-
timeStep: animation.timeStep,
|
|
61
|
-
oversampling: animation.oversampling,
|
|
62
|
-
defaultLoopCount: animation.defaultLoopCount,
|
|
63
|
-
flags: animation.flags,
|
|
64
|
-
trackGroups: animation.trackGroups.map(group => build(classes, "TrackGroup", {
|
|
65
|
-
name: group.name,
|
|
66
|
-
transformTracks: group.transformTracks.map(track => build(classes, "TransformTrack", {
|
|
67
|
-
name: track.name,
|
|
68
|
-
flags: track.flags,
|
|
69
|
-
orientation: hydrateCurve(track.orientation, classes, hydrationOptions),
|
|
70
|
-
position: hydrateCurve(track.position, classes, hydrationOptions),
|
|
71
|
-
scaleShear: hydrateCurve(track.scaleShear, classes, hydrationOptions)
|
|
72
|
-
}, hydrationOptions))
|
|
73
|
-
}, hydrationOptions))
|
|
74
|
-
}, hydrationOptions))
|
|
75
|
-
}, hydrationOptions);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export { CLASS_KEYS, hydrateJson };
|
|
79
|
-
//# sourceMappingURL=json.js.map
|
|
1
|
+
/**
|
|
2
|
+
* JSON hydration helpers for the shared CarbonEngineJS mesh/animation schema.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const CLASS_KEYS = Object.freeze(["Root", "Mesh", "BoneBinding", "IndexGroup", "MorphTarget", "Model", "Skeleton", "Bone", "Animation", "TrackGroup", "TransformTrack", "Curve"]);
|
|
6
|
+
function build(classes, key, props, hydrationOptions = {}) {
|
|
7
|
+
const Ctor = classes[key];
|
|
8
|
+
return Ctor ? populate(new Ctor(), props, hydrationOptions) : props;
|
|
9
|
+
}
|
|
10
|
+
function populate(instance, props, hydrationOptions = {}) {
|
|
11
|
+
if (!instance || typeof instance.SetValues !== "function") {
|
|
12
|
+
throw new TypeError("CjsGltfFormat class population requires classes to implement SetValues(values)");
|
|
13
|
+
}
|
|
14
|
+
instance.SetValues(props, {
|
|
15
|
+
...hydrationOptions,
|
|
16
|
+
skipUpdate: true,
|
|
17
|
+
skipEvents: true
|
|
18
|
+
});
|
|
19
|
+
return instance;
|
|
20
|
+
}
|
|
21
|
+
function hydrateCurve(curve, classes, hydrationOptions) {
|
|
22
|
+
return curve ? build(classes, "Curve", curve, hydrationOptions) : curve;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Hydrate the plain shared JSON schema with caller-supplied classes.
|
|
27
|
+
*
|
|
28
|
+
* @param {object} root Plain JSON graph.
|
|
29
|
+
* @param {object} [options] Hydration options.
|
|
30
|
+
* @param {object} [options.classes] Node constructor map.
|
|
31
|
+
* @returns {object} Hydrated graph.
|
|
32
|
+
*/
|
|
33
|
+
function hydrateJson(root, {
|
|
34
|
+
classes = {},
|
|
35
|
+
...hydrationOptions
|
|
36
|
+
} = {}) {
|
|
37
|
+
return build(classes, "Root", {
|
|
38
|
+
grannyFileFormatRevision: root.grannyFileFormatRevision,
|
|
39
|
+
grannyFileSource: root.grannyFileSource,
|
|
40
|
+
meshes: root.meshes.map(mesh => build(classes, "Mesh", {
|
|
41
|
+
name: mesh.name,
|
|
42
|
+
morphTargets: mesh.morphTargets.map(target => build(classes, "MorphTarget", target, hydrationOptions)),
|
|
43
|
+
minBounds: mesh.minBounds,
|
|
44
|
+
maxBounds: mesh.maxBounds,
|
|
45
|
+
boneBindings: mesh.boneBindings.map(binding => build(classes, "BoneBinding", binding, hydrationOptions)),
|
|
46
|
+
vertex: mesh.vertex,
|
|
47
|
+
indices: mesh.indices.map(group => build(classes, "IndexGroup", group, hydrationOptions))
|
|
48
|
+
}, hydrationOptions)),
|
|
49
|
+
models: root.models.map(model => build(classes, "Model", {
|
|
50
|
+
name: model.name,
|
|
51
|
+
skeleton: build(classes, "Skeleton", {
|
|
52
|
+
name: model.skeleton.name,
|
|
53
|
+
bones: model.skeleton.bones.map(bone => build(classes, "Bone", bone, hydrationOptions))
|
|
54
|
+
}, hydrationOptions),
|
|
55
|
+
meshBindings: model.meshBindings
|
|
56
|
+
}, hydrationOptions)),
|
|
57
|
+
animations: root.animations.map(animation => build(classes, "Animation", {
|
|
58
|
+
name: animation.name,
|
|
59
|
+
duration: animation.duration,
|
|
60
|
+
timeStep: animation.timeStep,
|
|
61
|
+
oversampling: animation.oversampling,
|
|
62
|
+
defaultLoopCount: animation.defaultLoopCount,
|
|
63
|
+
flags: animation.flags,
|
|
64
|
+
trackGroups: animation.trackGroups.map(group => build(classes, "TrackGroup", {
|
|
65
|
+
name: group.name,
|
|
66
|
+
transformTracks: group.transformTracks.map(track => build(classes, "TransformTrack", {
|
|
67
|
+
name: track.name,
|
|
68
|
+
flags: track.flags,
|
|
69
|
+
orientation: hydrateCurve(track.orientation, classes, hydrationOptions),
|
|
70
|
+
position: hydrateCurve(track.position, classes, hydrationOptions),
|
|
71
|
+
scaleShear: hydrateCurve(track.scaleShear, classes, hydrationOptions)
|
|
72
|
+
}, hydrationOptions))
|
|
73
|
+
}, hydrationOptions))
|
|
74
|
+
}, hydrationOptions))
|
|
75
|
+
}, hydrationOptions);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export { CLASS_KEYS, hydrateJson };
|
|
79
|
+
//# sourceMappingURL=json.js.map
|