@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
package/dist/worker/protocol.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const Operation = Object.freeze({
|
|
2
|
-
FETCH: "source.fetch",
|
|
3
|
-
FORMAT_READ: "format.read"
|
|
4
|
-
});
|
|
5
|
-
const Message = Object.freeze({
|
|
6
|
-
CANCEL: "cancel",
|
|
7
|
-
EXECUTE: "execute",
|
|
8
|
-
RESULT: "result"
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
export { Message, Operation };
|
|
12
|
-
//# sourceMappingURL=protocol.js.map
|
|
1
|
+
const Operation = Object.freeze({
|
|
2
|
+
FETCH: "source.fetch",
|
|
3
|
+
FORMAT_READ: "format.read"
|
|
4
|
+
});
|
|
5
|
+
const Message = Object.freeze({
|
|
6
|
+
CANCEL: "cancel",
|
|
7
|
+
EXECUTE: "execute",
|
|
8
|
+
RESULT: "result"
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { Message, Operation };
|
|
12
|
+
//# sourceMappingURL=protocol.js.map
|
package/docs/README.md
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
# Package documentation
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
-
Audience: Users and integrators
|
|
6
|
-
Summary: Documentation home for the GPU-free resource lifecycle, cache, format, and object-loading package.
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
`@carbonenginejs/runtime-resource` owns the GPU-free resource layer of
|
|
11
|
-
CarbonEngineJS: resource identity and state, the MotherLode cache, semantic
|
|
12
|
-
resource classes, registered format readers, fetch providers, and the queued
|
|
13
|
-
CPU load/publication pipeline. It stops at a published CPU payload; engine
|
|
14
|
-
packages realize that payload into backend objects. It also owns the canonical
|
|
15
|
-
device-free `Tr2EffectRes`/`Tr2Shader` reflection graph, built by reading the
|
|
16
|
-
compiled Carbon container directly.
|
|
17
|
-
|
|
18
|
-
## Use this package when
|
|
19
|
-
|
|
20
|
-
- you need Carbon-shaped resource loading (`res:/` paths, requirement/emit
|
|
21
|
-
selection, `Ready()`/`GetObject()`) without choosing a GPU backend;
|
|
22
|
-
- you need one of the non-shader format readers as a tree-shakeable subpath
|
|
23
|
-
(`@carbonenginejs/runtime-resource/formats/<name>`);
|
|
24
|
-
- you need canonical effect permutation selection or immutable shader
|
|
25
|
-
reflection records from `@carbonenginejs/runtime-resource/resource/shader`;
|
|
26
|
-
- you need canonical raw audio resources for complete files or byte windows
|
|
27
|
-
over shared physical sources;
|
|
28
|
-
- you are writing an engine adapter that consumes published CPU payloads and
|
|
29
|
-
needs the documented retention, reload, and texture-array contracts.
|
|
30
|
-
|
|
31
|
-
## Where it fits
|
|
32
|
-
|
|
33
|
-
- Foundations consumed: `@carbonenginejs/runtime-utils` (event emitter, model
|
|
34
|
-
contracts) and `@carbonenginejs/runtime-utils` where formats need math values.
|
|
35
|
-
- Normal consumers: `runtime-core` (configures and exposes a `CjsResMan`),
|
|
36
|
-
`runtime-trinity` and `runtime-sof` (request GPU-free objects), and engine
|
|
37
|
-
packages (`engine-webgpu`, future WebGL engines) that realize prepared
|
|
38
|
-
resources.
|
|
39
|
-
- Owned responsibility: resource identity, cache, CPU payload lifecycle,
|
|
40
|
-
format selection and conversion, load/publication queues, and canonical
|
|
41
|
-
device-free effect/shader reflection hydration and selection.
|
|
42
|
-
- Owned elsewhere: WebGL/WebGPU realization, device budgets, and device-loss
|
|
43
|
-
recovery belong to engine packages; shader formats belong to the dedicated
|
|
44
|
-
shader format packages.
|
|
45
|
-
|
|
46
|
-
## Start here
|
|
47
|
-
|
|
48
|
-
- [Architecture and boundaries](architecture.md)
|
|
49
|
-
- [Resource lifecycle concepts](concepts/resource-lifecycle.md)
|
|
50
|
-
- [Shader resource model](concepts/shader-resource-model.md)
|
|
51
|
-
- [Format subpaths](formats/README.md)
|
|
52
|
-
- [Carbon compiled-effect container](formats/carbon-effect-container.md)
|
|
53
|
-
|
|
54
|
-
## Documentation map
|
|
55
|
-
|
|
56
|
-
- [architecture.md](architecture.md): package boundary, relationships, and the
|
|
57
|
-
GPU-free split.
|
|
58
|
-
- [concepts/resource-lifecycle.md](concepts/resource-lifecycle.md): states,
|
|
59
|
-
the load/prepare split, and the request workflow.
|
|
60
|
-
- [concepts/shader-resource-model.md](concepts/shader-resource-model.md): how
|
|
61
|
-
`Tr2EffectRes`, `Tr2Shader` and `Tr2Effect` relate, verified against Carbon —
|
|
62
|
-
one file, many permutations, many effects sharing them.
|
|
63
|
-
- [concepts/writing-an-engine-adapter.md](concepts/writing-an-engine-adapter.md):
|
|
64
|
-
the coupling rules and the reflection/topology seam for engine packages —
|
|
65
|
-
read before writing a second engine.
|
|
66
|
-
- [reference/motherlode-cache.md](reference/motherlode-cache.md): canonical
|
|
67
|
-
identity, byte-budget cache, payload retention, and purge contracts.
|
|
68
|
-
- [reference/reload.md](reference/reload.md): the candidate-first atomic
|
|
69
|
-
reload contract.
|
|
70
|
-
- [reference/queues.md](reference/queues.md): queued CPU load, publication,
|
|
71
|
-
registration, and the `Wait()` fence.
|
|
72
|
-
- [reference/workers.md](reference/workers.md): browser-worker source and
|
|
73
|
-
declared worker-safe format execution.
|
|
74
|
-
- [reference/classes/audio.md](reference/classes/audio.md): complete/shared
|
|
75
|
-
audio byte owners and individually addressable audio resource views.
|
|
76
|
-
- [reference/classes/resources.md](reference/classes/resources.md): canonical
|
|
77
|
-
resource records, effect selection, and shader-reflection classes.
|
|
78
|
-
- [reference/texture-arrays.md](reference/texture-arrays.md): texture-array
|
|
79
|
-
proxies, update generations, and adapter commits.
|
|
80
|
-
- [reference/texture-pipeline.md](reference/texture-pipeline.md):
|
|
81
|
-
`Tr2TexturePipeline` CPU steps and `Tr2TextureLodManager` membership.
|
|
82
|
-
- [reference/events.md](reference/events.md): the `CjsEventEmitter` contract
|
|
83
|
-
and event memory rules.
|
|
84
|
-
- [reference/classes/README.md](reference/classes/README.md): the searchable
|
|
85
|
-
one-sentence class-purpose catalog.
|
|
86
|
-
- [formats/README.md](formats/README.md): format import map and per-format
|
|
87
|
-
output notes.
|
|
88
|
-
- [formats/carbon-effect-container.md](formats/carbon-effect-container.md): the
|
|
89
|
-
public v15 compiled-effect binary layout, extension rules, shared byte reader
|
|
90
|
-
and writer, and arena offset policy a byte-exact re-emit depends on.
|
|
91
|
-
- [formats/gr2.md](formats/gr2.md): Granny GR2/GSF reading, output modes,
|
|
92
|
-
conversions, graph shape, and class hydration.
|
|
93
|
-
- [formats/wwise.md](formats/wwise.md): Wwise soundbank and media readers.
|
|
94
|
-
- [formats/stl.md](formats/stl.md): STL geometry export.
|
|
95
|
-
- [formats/provenance.md](formats/provenance.md): format ownership, fork
|
|
96
|
-
provenance, and retained snapshots.
|
|
97
|
-
- [roadmap.md](roadmap.md): approved future direction with explicit current
|
|
98
|
-
boundary context where needed to interpret the plan.
|
|
1
|
+
# Package documentation
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
+
Audience: Users and integrators
|
|
6
|
+
Summary: Documentation home for the GPU-free resource lifecycle, cache, format, and object-loading package.
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
`@carbonenginejs/runtime-resource` owns the GPU-free resource layer of
|
|
11
|
+
CarbonEngineJS: resource identity and state, the MotherLode cache, semantic
|
|
12
|
+
resource classes, registered format readers, fetch providers, and the queued
|
|
13
|
+
CPU load/publication pipeline. It stops at a published CPU payload; engine
|
|
14
|
+
packages realize that payload into backend objects. It also owns the canonical
|
|
15
|
+
device-free `Tr2EffectRes`/`Tr2Shader` reflection graph, built by reading the
|
|
16
|
+
compiled Carbon container directly.
|
|
17
|
+
|
|
18
|
+
## Use this package when
|
|
19
|
+
|
|
20
|
+
- you need Carbon-shaped resource loading (`res:/` paths, requirement/emit
|
|
21
|
+
selection, `Ready()`/`GetObject()`) without choosing a GPU backend;
|
|
22
|
+
- you need one of the non-shader format readers as a tree-shakeable subpath
|
|
23
|
+
(`@carbonenginejs/runtime-resource/formats/<name>`);
|
|
24
|
+
- you need canonical effect permutation selection or immutable shader
|
|
25
|
+
reflection records from `@carbonenginejs/runtime-resource/resource/shader`;
|
|
26
|
+
- you need canonical raw audio resources for complete files or byte windows
|
|
27
|
+
over shared physical sources;
|
|
28
|
+
- you are writing an engine adapter that consumes published CPU payloads and
|
|
29
|
+
needs the documented retention, reload, and texture-array contracts.
|
|
30
|
+
|
|
31
|
+
## Where it fits
|
|
32
|
+
|
|
33
|
+
- Foundations consumed: `@carbonenginejs/runtime-utils` (event emitter, model
|
|
34
|
+
contracts) and `@carbonenginejs/runtime-utils` where formats need math values.
|
|
35
|
+
- Normal consumers: `runtime-core` (configures and exposes a `CjsResMan`),
|
|
36
|
+
`runtime-trinity` and `runtime-sof` (request GPU-free objects), and engine
|
|
37
|
+
packages (`engine-webgpu`, future WebGL engines) that realize prepared
|
|
38
|
+
resources.
|
|
39
|
+
- Owned responsibility: resource identity, cache, CPU payload lifecycle,
|
|
40
|
+
format selection and conversion, load/publication queues, and canonical
|
|
41
|
+
device-free effect/shader reflection hydration and selection.
|
|
42
|
+
- Owned elsewhere: WebGL/WebGPU realization, device budgets, and device-loss
|
|
43
|
+
recovery belong to engine packages; shader formats belong to the dedicated
|
|
44
|
+
shader format packages.
|
|
45
|
+
|
|
46
|
+
## Start here
|
|
47
|
+
|
|
48
|
+
- [Architecture and boundaries](architecture.md)
|
|
49
|
+
- [Resource lifecycle concepts](concepts/resource-lifecycle.md)
|
|
50
|
+
- [Shader resource model](concepts/shader-resource-model.md)
|
|
51
|
+
- [Format subpaths](formats/README.md)
|
|
52
|
+
- [Carbon compiled-effect container](formats/carbon-effect-container.md)
|
|
53
|
+
|
|
54
|
+
## Documentation map
|
|
55
|
+
|
|
56
|
+
- [architecture.md](architecture.md): package boundary, relationships, and the
|
|
57
|
+
GPU-free split.
|
|
58
|
+
- [concepts/resource-lifecycle.md](concepts/resource-lifecycle.md): states,
|
|
59
|
+
the load/prepare split, and the request workflow.
|
|
60
|
+
- [concepts/shader-resource-model.md](concepts/shader-resource-model.md): how
|
|
61
|
+
`Tr2EffectRes`, `Tr2Shader` and `Tr2Effect` relate, verified against Carbon —
|
|
62
|
+
one file, many permutations, many effects sharing them.
|
|
63
|
+
- [concepts/writing-an-engine-adapter.md](concepts/writing-an-engine-adapter.md):
|
|
64
|
+
the coupling rules and the reflection/topology seam for engine packages —
|
|
65
|
+
read before writing a second engine.
|
|
66
|
+
- [reference/motherlode-cache.md](reference/motherlode-cache.md): canonical
|
|
67
|
+
identity, byte-budget cache, payload retention, and purge contracts.
|
|
68
|
+
- [reference/reload.md](reference/reload.md): the candidate-first atomic
|
|
69
|
+
reload contract.
|
|
70
|
+
- [reference/queues.md](reference/queues.md): queued CPU load, publication,
|
|
71
|
+
registration, and the `Wait()` fence.
|
|
72
|
+
- [reference/workers.md](reference/workers.md): browser-worker source and
|
|
73
|
+
declared worker-safe format execution.
|
|
74
|
+
- [reference/classes/audio.md](reference/classes/audio.md): complete/shared
|
|
75
|
+
audio byte owners and individually addressable audio resource views.
|
|
76
|
+
- [reference/classes/resources.md](reference/classes/resources.md): canonical
|
|
77
|
+
resource records, effect selection, and shader-reflection classes.
|
|
78
|
+
- [reference/texture-arrays.md](reference/texture-arrays.md): texture-array
|
|
79
|
+
proxies, update generations, and adapter commits.
|
|
80
|
+
- [reference/texture-pipeline.md](reference/texture-pipeline.md):
|
|
81
|
+
`Tr2TexturePipeline` CPU steps and `Tr2TextureLodManager` membership.
|
|
82
|
+
- [reference/events.md](reference/events.md): the `CjsEventEmitter` contract
|
|
83
|
+
and event memory rules.
|
|
84
|
+
- [reference/classes/README.md](reference/classes/README.md): the searchable
|
|
85
|
+
one-sentence class-purpose catalog.
|
|
86
|
+
- [formats/README.md](formats/README.md): format import map and per-format
|
|
87
|
+
output notes.
|
|
88
|
+
- [formats/carbon-effect-container.md](formats/carbon-effect-container.md): the
|
|
89
|
+
public v15 compiled-effect binary layout, extension rules, shared byte reader
|
|
90
|
+
and writer, and arena offset policy a byte-exact re-emit depends on.
|
|
91
|
+
- [formats/gr2.md](formats/gr2.md): Granny GR2/GSF reading, output modes,
|
|
92
|
+
conversions, graph shape, and class hydration.
|
|
93
|
+
- [formats/wwise.md](formats/wwise.md): Wwise soundbank and media readers.
|
|
94
|
+
- [formats/stl.md](formats/stl.md): STL geometry export.
|
|
95
|
+
- [formats/provenance.md](formats/provenance.md): format ownership, fork
|
|
96
|
+
provenance, and retained snapshots.
|
|
97
|
+
- [roadmap.md](roadmap.md): approved future direction with explicit current
|
|
98
|
+
boundary context where needed to interpret the plan.
|
package/docs/architecture.md
CHANGED
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
# Architecture and boundaries
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
-
Audience: Users and integrators
|
|
6
|
-
Summary: Defines the GPU-free boundary this package owns and how engine and runtime packages relate to it.
|
|
7
|
-
|
|
8
|
-
## The GPU-free split
|
|
9
|
-
|
|
10
|
-
`runtime-resource` owns the GPU-free half of the Carbon resource lifecycle:
|
|
11
|
-
|
|
12
|
-
```text
|
|
13
|
-
EMPTY -> REQUESTED/LOADING -> LOADED
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Engine adapters own device realization:
|
|
17
|
-
|
|
18
|
-
```text
|
|
19
|
-
LOADED -> PREPARING -> PREPARED
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
The package selects and runs registered readers, hydrates or returns the
|
|
23
|
-
promised CPU outcome, and stores lifecycle state, cache entries, and loaded
|
|
24
|
-
payloads. For compiled effects it independently validates complete permutation
|
|
25
|
-
topology and the Carbon v15 container records it read itself, selects a
|
|
26
|
-
permutation, and hydrates a canonical device-free `Tr2Shader` graph. It never
|
|
27
|
-
creates WebGL/WebGPU textures, buffers, shader modules, pipelines, or bind
|
|
28
|
-
groups, and it never inspects backend capability.
|
|
29
|
-
A realization failure destroys its candidate and returns the resource to
|
|
30
|
-
`LOADED` without discarding the valid CPU payload.
|
|
31
|
-
|
|
32
|
-
This deliberately differs from Carbon and ccpwgl, whose resource classes live
|
|
33
|
-
inside an engine that can prepare GPU objects directly. Keeping the
|
|
34
|
-
format/resource layer reusable means stopping before GPU work; see
|
|
35
|
-
[resource lifecycle concepts](concepts/resource-lifecycle.md) for the
|
|
36
|
-
historical mapping.
|
|
37
|
-
|
|
38
|
-
## What the package owns
|
|
39
|
-
|
|
40
|
-
- `CjsResource` state and Carbon-style resource methods.
|
|
41
|
-
- `CjsMotherLode` canonical identity, explicit replacement results, activity
|
|
42
|
-
and lock metadata, deterministic payload/adapter cleanup, and cache stats.
|
|
43
|
-
- `CjsResMan` extension-selected resource/object handlers, semantic resource
|
|
44
|
-
overrides, ordered and legacy registered-format selection,
|
|
45
|
-
concurrency-limited source loading, staged prepare queues, layered
|
|
46
|
-
source/read/resource deduplication, object loader dispatch, and prefetch.
|
|
47
|
-
- Main-thread and browser-worker resource execution strategies, including
|
|
48
|
-
transferable fetch results and declared worker-safe CPU readers.
|
|
49
|
-
- `CjsTextureArrayRes` and `CjsTextureArrayResParameterProxy` for material-facing,
|
|
50
|
-
frame-coalesced texture-array inputs.
|
|
51
|
-
- `CjsAudioBufferRes` for physical audio-byte ownership and `CjsAudioRes` for
|
|
52
|
-
complete or windowed individually addressable audio files.
|
|
53
|
-
- Raw `CjsEventEmitter` (from `runtime-utils/model`) for manager/runtime events
|
|
54
|
-
without requiring `CjsModel` inheritance.
|
|
55
|
-
- Resource-path normalization and URL resolution, including prefix bases and
|
|
56
|
-
an injectable complete resolver, with fetch execution delegated to a
|
|
57
|
-
URL-only provider.
|
|
58
|
-
- Resource-specific geometry traversal and payload adaptation, composed with
|
|
59
|
-
shared vector, matrix, bounds, sphere, ray, and mesh math from
|
|
60
|
-
`runtime-utils` rather than maintaining another math implementation here.
|
|
61
|
-
- Plain reader/converter payload objects with focused shared validators.
|
|
62
|
-
- Canonical Carbon resource classes that validate and hold CPU payloads
|
|
63
|
-
privately: `TriTextureRes`, `TriGeometryRes`, `Tr2EffectRes`, `Tr2ImageRes`,
|
|
64
|
-
`TriGrannyRes`, `Tr2GrannyStateRes`, and `Tr2LightProfileRes`.
|
|
65
|
-
- Canonical device-free shader/reflection classes: `Tr2Shader`, its effect,
|
|
66
|
-
technique, pass, stage, constant, resource, sampler, annotation, and library
|
|
67
|
-
records; Carbon-binary hydration; permutation selection; and per-index caching.
|
|
68
|
-
- `Tr2TexturePipeline` CPU-only texture steps and `Tr2TextureLodManager`
|
|
69
|
-
membership.
|
|
70
|
-
- Opaque engine-owned subobject slots for backend adapters.
|
|
71
|
-
- Format implementations as explicit tree-shakeable subpaths under
|
|
72
|
-
`@carbonenginejs/runtime-resource/formats/<name>`.
|
|
73
|
-
|
|
74
|
-
## What the package does not own
|
|
75
|
-
|
|
76
|
-
- WebGL/WebGPU realization, allocations, upload accounting, device budgets,
|
|
77
|
-
capability limits, and device-loss recovery (engine packages).
|
|
78
|
-
- Shader binary decoding, backend translation, and package serialization live
|
|
79
|
-
in the explicit `runtime-resource/formats/{hlsl,dxbc,webgl,webgpu}` subpaths.
|
|
80
|
-
Backend shader objects remain in engine packages.
|
|
81
|
-
- AudioBuffer construction, playback, or audio manager behavior.
|
|
82
|
-
- Audio-library document construction, enrichment, media-ID interpretation,
|
|
83
|
-
and delivery-route selection.
|
|
84
|
-
|
|
85
|
-
## Package relationships
|
|
86
|
-
|
|
87
|
-
- `runtime-core` may configure and expose a `CjsResMan`, but does not own its
|
|
88
|
-
implementation.
|
|
89
|
-
- `runtime-trinity` and `runtime-sof` may request GPU-free objects and
|
|
90
|
-
resources without selecting an engine. Trinity owns the mutable
|
|
91
|
-
`Tr2Effect`/`Tr2Material` facade, parameters, options, and sampler overrides;
|
|
92
|
-
it consumes the resource-owned shader graph.
|
|
93
|
-
- `engine-webgpu` and future WebGL engines consume loaded resources and own
|
|
94
|
-
all backend allocations, preparation, replacement, and destruction.
|
|
95
|
-
|
|
96
|
-
Concrete formats are not imported or registered by the package root; see
|
|
97
|
-
[formats/README.md](formats/README.md) for the import rule and map.
|
|
98
|
-
Worker-safe formats provide their own exact module declaration and remain
|
|
99
|
-
explicit registrations; see [browser worker execution](reference/workers.md).
|
|
100
|
-
|
|
101
|
-
Extension routes are manager-local configuration. They bind an extension to a
|
|
102
|
-
handler plus one format or an ordered format chain. The handler's
|
|
103
|
-
`ResourceHandlerMode` declaration determines whether path-only `Fetch()`
|
|
104
|
-
returns the stable resource or the constructed object. The route snapshot is
|
|
105
|
-
captured by the canonical handle, so later registration changes affect only a
|
|
106
|
-
new identity after explicit deletion or clearing. Target construction and
|
|
107
|
-
dynamic identification run after any worker decode on the main thread.
|
|
108
|
-
|
|
109
|
-
## Source layout
|
|
110
|
-
|
|
111
|
-
Authoring source is decorated JavaScript; published output is built ESM in
|
|
112
|
-
`npm/dist`. Resource owners and their direct Carbon data records live under
|
|
113
|
-
`src/resource`, grouped as `audio`, `geometry`, `geometry/granny`, `shader`,
|
|
114
|
-
and `texture`; worker execution and its message protocol live under `src/worker`;
|
|
115
|
-
`src/generated` is reserved for unresolved active ports and is currently
|
|
116
|
-
absent. Native shapes that JavaScript replaces or does not use are retained
|
|
117
|
-
only under `src/dropped`, with their disposition documented there, and are
|
|
118
|
-
never exported or bundled.
|
|
1
|
+
# Architecture and boundaries
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
+
Audience: Users and integrators
|
|
6
|
+
Summary: Defines the GPU-free boundary this package owns and how engine and runtime packages relate to it.
|
|
7
|
+
|
|
8
|
+
## The GPU-free split
|
|
9
|
+
|
|
10
|
+
`runtime-resource` owns the GPU-free half of the Carbon resource lifecycle:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
EMPTY -> REQUESTED/LOADING -> LOADED
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Engine adapters own device realization:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
LOADED -> PREPARING -> PREPARED
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The package selects and runs registered readers, hydrates or returns the
|
|
23
|
+
promised CPU outcome, and stores lifecycle state, cache entries, and loaded
|
|
24
|
+
payloads. For compiled effects it independently validates complete permutation
|
|
25
|
+
topology and the Carbon v15 container records it read itself, selects a
|
|
26
|
+
permutation, and hydrates a canonical device-free `Tr2Shader` graph. It never
|
|
27
|
+
creates WebGL/WebGPU textures, buffers, shader modules, pipelines, or bind
|
|
28
|
+
groups, and it never inspects backend capability.
|
|
29
|
+
A realization failure destroys its candidate and returns the resource to
|
|
30
|
+
`LOADED` without discarding the valid CPU payload.
|
|
31
|
+
|
|
32
|
+
This deliberately differs from Carbon and ccpwgl, whose resource classes live
|
|
33
|
+
inside an engine that can prepare GPU objects directly. Keeping the
|
|
34
|
+
format/resource layer reusable means stopping before GPU work; see
|
|
35
|
+
[resource lifecycle concepts](concepts/resource-lifecycle.md) for the
|
|
36
|
+
historical mapping.
|
|
37
|
+
|
|
38
|
+
## What the package owns
|
|
39
|
+
|
|
40
|
+
- `CjsResource` state and Carbon-style resource methods.
|
|
41
|
+
- `CjsMotherLode` canonical identity, explicit replacement results, activity
|
|
42
|
+
and lock metadata, deterministic payload/adapter cleanup, and cache stats.
|
|
43
|
+
- `CjsResMan` extension-selected resource/object handlers, semantic resource
|
|
44
|
+
overrides, ordered and legacy registered-format selection,
|
|
45
|
+
concurrency-limited source loading, staged prepare queues, layered
|
|
46
|
+
source/read/resource deduplication, object loader dispatch, and prefetch.
|
|
47
|
+
- Main-thread and browser-worker resource execution strategies, including
|
|
48
|
+
transferable fetch results and declared worker-safe CPU readers.
|
|
49
|
+
- `CjsTextureArrayRes` and `CjsTextureArrayResParameterProxy` for material-facing,
|
|
50
|
+
frame-coalesced texture-array inputs.
|
|
51
|
+
- `CjsAudioBufferRes` for physical audio-byte ownership and `CjsAudioRes` for
|
|
52
|
+
complete or windowed individually addressable audio files.
|
|
53
|
+
- Raw `CjsEventEmitter` (from `runtime-utils/model`) for manager/runtime events
|
|
54
|
+
without requiring `CjsModel` inheritance.
|
|
55
|
+
- Resource-path normalization and URL resolution, including prefix bases and
|
|
56
|
+
an injectable complete resolver, with fetch execution delegated to a
|
|
57
|
+
URL-only provider.
|
|
58
|
+
- Resource-specific geometry traversal and payload adaptation, composed with
|
|
59
|
+
shared vector, matrix, bounds, sphere, ray, and mesh math from
|
|
60
|
+
`runtime-utils` rather than maintaining another math implementation here.
|
|
61
|
+
- Plain reader/converter payload objects with focused shared validators.
|
|
62
|
+
- Canonical Carbon resource classes that validate and hold CPU payloads
|
|
63
|
+
privately: `TriTextureRes`, `TriGeometryRes`, `Tr2EffectRes`, `Tr2ImageRes`,
|
|
64
|
+
`TriGrannyRes`, `Tr2GrannyStateRes`, and `Tr2LightProfileRes`.
|
|
65
|
+
- Canonical device-free shader/reflection classes: `Tr2Shader`, its effect,
|
|
66
|
+
technique, pass, stage, constant, resource, sampler, annotation, and library
|
|
67
|
+
records; Carbon-binary hydration; permutation selection; and per-index caching.
|
|
68
|
+
- `Tr2TexturePipeline` CPU-only texture steps and `Tr2TextureLodManager`
|
|
69
|
+
membership.
|
|
70
|
+
- Opaque engine-owned subobject slots for backend adapters.
|
|
71
|
+
- Format implementations as explicit tree-shakeable subpaths under
|
|
72
|
+
`@carbonenginejs/runtime-resource/formats/<name>`.
|
|
73
|
+
|
|
74
|
+
## What the package does not own
|
|
75
|
+
|
|
76
|
+
- WebGL/WebGPU realization, allocations, upload accounting, device budgets,
|
|
77
|
+
capability limits, and device-loss recovery (engine packages).
|
|
78
|
+
- Shader binary decoding, backend translation, and package serialization live
|
|
79
|
+
in the explicit `runtime-resource/formats/{hlsl,dxbc,webgl,webgpu}` subpaths.
|
|
80
|
+
Backend shader objects remain in engine packages.
|
|
81
|
+
- AudioBuffer construction, playback, or audio manager behavior.
|
|
82
|
+
- Audio-library document construction, enrichment, media-ID interpretation,
|
|
83
|
+
and delivery-route selection.
|
|
84
|
+
|
|
85
|
+
## Package relationships
|
|
86
|
+
|
|
87
|
+
- `runtime-core` may configure and expose a `CjsResMan`, but does not own its
|
|
88
|
+
implementation.
|
|
89
|
+
- `runtime-trinity` and `runtime-sof` may request GPU-free objects and
|
|
90
|
+
resources without selecting an engine. Trinity owns the mutable
|
|
91
|
+
`Tr2Effect`/`Tr2Material` facade, parameters, options, and sampler overrides;
|
|
92
|
+
it consumes the resource-owned shader graph.
|
|
93
|
+
- `engine-webgpu` and future WebGL engines consume loaded resources and own
|
|
94
|
+
all backend allocations, preparation, replacement, and destruction.
|
|
95
|
+
|
|
96
|
+
Concrete formats are not imported or registered by the package root; see
|
|
97
|
+
[formats/README.md](formats/README.md) for the import rule and map.
|
|
98
|
+
Worker-safe formats provide their own exact module declaration and remain
|
|
99
|
+
explicit registrations; see [browser worker execution](reference/workers.md).
|
|
100
|
+
|
|
101
|
+
Extension routes are manager-local configuration. They bind an extension to a
|
|
102
|
+
handler plus one format or an ordered format chain. The handler's
|
|
103
|
+
`ResourceHandlerMode` declaration determines whether path-only `Fetch()`
|
|
104
|
+
returns the stable resource or the constructed object. The route snapshot is
|
|
105
|
+
captured by the canonical handle, so later registration changes affect only a
|
|
106
|
+
new identity after explicit deletion or clearing. Target construction and
|
|
107
|
+
dynamic identification run after any worker decode on the main thread.
|
|
108
|
+
|
|
109
|
+
## Source layout
|
|
110
|
+
|
|
111
|
+
Authoring source is decorated JavaScript; published output is built ESM in
|
|
112
|
+
`npm/dist`. Resource owners and their direct Carbon data records live under
|
|
113
|
+
`src/resource`, grouped as `audio`, `geometry`, `geometry/granny`, `shader`,
|
|
114
|
+
and `texture`; worker execution and its message protocol live under `src/worker`;
|
|
115
|
+
`src/generated` is reserved for unresolved active ports and is currently
|
|
116
|
+
absent. Native shapes that JavaScript replaces or does not use are retained
|
|
117
|
+
only under `src/dropped`, with their disposition documented there, and are
|
|
118
|
+
never exported or bundled.
|