@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,113 +1,113 @@
|
|
|
1
|
-
# Texture arrays and update generations
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
-
Audience: Users and integrators
|
|
6
|
-
Summary: Defines the texture-array proxy surface, the requested/prepared revision boundary, and the adapter commit contract.
|
|
7
|
-
|
|
8
|
-
## Layer proxies
|
|
9
|
-
|
|
10
|
-
Texture-array resources expose one ordinary-looking proxy per ordered layer:
|
|
11
|
-
|
|
12
|
-
```js
|
|
13
|
-
const textureArray = new CjsTextureArrayRes({
|
|
14
|
-
paths: [
|
|
15
|
-
"res:/detail1.dds",
|
|
16
|
-
"res:/detail2.dds",
|
|
17
|
-
"res:/detail3.dds"
|
|
18
|
-
],
|
|
19
|
-
layerNames: [ "Detail1Map", "Detail2Map", "Detail3Map" ],
|
|
20
|
-
updateScheduler: resource => frameQueue.add(resource)
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const detail2 = textureArray.GetLayerParameter(1);
|
|
24
|
-
detail2.SetValue("res:/replacement.dds");
|
|
25
|
-
|
|
26
|
-
detail2.textureRes === textureArray; // true
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Proxy setters only update their source path and invalidate the parent. The
|
|
30
|
-
parent is scheduled once even if several proxies change in the same frame.
|
|
31
|
-
The next-frame consumer calls `Update()` or `ConsumeUpdateRequest()` to
|
|
32
|
-
obtain one immutable ordered snapshot. Runtime-resource does not know which
|
|
33
|
-
shader metadata caused the aggregate request; shader packages and engine
|
|
34
|
-
adapters map public parameter names to layer indices.
|
|
35
|
-
|
|
36
|
-
Public effect parameters remain separate from these internal proxies. Their
|
|
37
|
-
authored paths and individual 2D source resources are not replaced by the
|
|
38
|
-
aggregate. An engine-owned, non-persisted bridge mirrors public changes into
|
|
39
|
-
the fixed internal layers.
|
|
40
|
-
|
|
41
|
-
## Update generations
|
|
42
|
-
|
|
43
|
-
`CjsTextureArrayRes` is a derived multi-source resource with an explicit
|
|
44
|
-
requested/prepared revision boundary:
|
|
45
|
-
|
|
46
|
-
```text
|
|
47
|
-
proxy/source change
|
|
48
|
-
-> requested revision + dirty layer
|
|
49
|
-
-> one scheduled next-frame snapshot
|
|
50
|
-
-> consumed/in-flight request
|
|
51
|
-
-> adapter candidate preparation
|
|
52
|
-
-> guarded adapter + prepared-revision publication
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
`ConsumeUpdateRequest()` produces an immutable snapshot and marks that
|
|
56
|
-
revision in flight. A current consumed revision may be completed through
|
|
57
|
-
`CommitPreparedAdapterRevision()`, failed through `FailUpdateRequest()`, or
|
|
58
|
-
returned to the queue through `RetryUpdateRequest()`. Commit-before-consume
|
|
59
|
-
and stale commits are rejected; rejected candidate allocations are destroyed
|
|
60
|
-
by default.
|
|
61
|
-
|
|
62
|
-
Publication installs the adapter allocation and prepared revision before
|
|
63
|
-
completion events run. The result returns the displaced allocation to the
|
|
64
|
-
adapter owner for post-publication destruction. A reentrant source change may
|
|
65
|
-
therefore request a newer revision without allowing stale completion to
|
|
66
|
-
replace it. The previous prepared allocation and `IsGood()` remain usable
|
|
67
|
-
while a replacement is pending or if replacement preparation fails.
|
|
68
|
-
|
|
69
|
-
`Ready()` is specialized for this derived resource: it resolves when the
|
|
70
|
-
generation requested at call time has been published, rather than delegating
|
|
71
|
-
to a single-source object loader. Initial preparation failure rejects it.
|
|
72
|
-
|
|
73
|
-
## Adapter commit example
|
|
74
|
-
|
|
75
|
-
Consumed snapshots are explicit in-flight generations. An adapter either
|
|
76
|
-
publishes the current candidate atomically, requeues retryable work, or
|
|
77
|
-
records failure:
|
|
78
|
-
|
|
79
|
-
```js
|
|
80
|
-
const request = textureArray.ConsumeUpdateRequest();
|
|
81
|
-
|
|
82
|
-
try {
|
|
83
|
-
const candidate = await adapter.PrepareTextureArray(request);
|
|
84
|
-
const result = textureArray.CommitPreparedAdapterRevision(
|
|
85
|
-
request.revision,
|
|
86
|
-
"webgpu",
|
|
87
|
-
candidate
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
// A rejected/stale candidate is destroyed by the commit method by default.
|
|
91
|
-
// The adapter owns disposal of a successfully displaced allocation.
|
|
92
|
-
result.displaced?.destroy();
|
|
93
|
-
} catch (error) {
|
|
94
|
-
textureArray.FailUpdateRequest(request.revision, error, { retry: true });
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
await textureArray.Ready(); // the generation requested at call time
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Sources and topology
|
|
101
|
-
|
|
102
|
-
Logical paths and resolved sources are independent. `SetLayerResource()`
|
|
103
|
-
attaches a resolved or LOD-specific source without rewriting the logical
|
|
104
|
-
requested path or persistence. `TouchLayer()` invalidates an in-place source
|
|
105
|
-
revision. `HandleAdapterLoss()` drops an unusable adapter allocation and
|
|
106
|
-
schedules a complete topology rebuild. Topology-changing snapshots set
|
|
107
|
-
`topologyChanged: true` and report only valid current layer indices in
|
|
108
|
-
`dirtyLayers`.
|
|
109
|
-
|
|
110
|
-
## Related documentation
|
|
111
|
-
|
|
112
|
-
- [Architecture and boundaries](../architecture.md)
|
|
113
|
-
- [Texture CPU pipeline and LOD membership](texture-pipeline.md)
|
|
1
|
+
# Texture arrays and update generations
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
+
Audience: Users and integrators
|
|
6
|
+
Summary: Defines the texture-array proxy surface, the requested/prepared revision boundary, and the adapter commit contract.
|
|
7
|
+
|
|
8
|
+
## Layer proxies
|
|
9
|
+
|
|
10
|
+
Texture-array resources expose one ordinary-looking proxy per ordered layer:
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
const textureArray = new CjsTextureArrayRes({
|
|
14
|
+
paths: [
|
|
15
|
+
"res:/detail1.dds",
|
|
16
|
+
"res:/detail2.dds",
|
|
17
|
+
"res:/detail3.dds"
|
|
18
|
+
],
|
|
19
|
+
layerNames: [ "Detail1Map", "Detail2Map", "Detail3Map" ],
|
|
20
|
+
updateScheduler: resource => frameQueue.add(resource)
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const detail2 = textureArray.GetLayerParameter(1);
|
|
24
|
+
detail2.SetValue("res:/replacement.dds");
|
|
25
|
+
|
|
26
|
+
detail2.textureRes === textureArray; // true
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Proxy setters only update their source path and invalidate the parent. The
|
|
30
|
+
parent is scheduled once even if several proxies change in the same frame.
|
|
31
|
+
The next-frame consumer calls `Update()` or `ConsumeUpdateRequest()` to
|
|
32
|
+
obtain one immutable ordered snapshot. Runtime-resource does not know which
|
|
33
|
+
shader metadata caused the aggregate request; shader packages and engine
|
|
34
|
+
adapters map public parameter names to layer indices.
|
|
35
|
+
|
|
36
|
+
Public effect parameters remain separate from these internal proxies. Their
|
|
37
|
+
authored paths and individual 2D source resources are not replaced by the
|
|
38
|
+
aggregate. An engine-owned, non-persisted bridge mirrors public changes into
|
|
39
|
+
the fixed internal layers.
|
|
40
|
+
|
|
41
|
+
## Update generations
|
|
42
|
+
|
|
43
|
+
`CjsTextureArrayRes` is a derived multi-source resource with an explicit
|
|
44
|
+
requested/prepared revision boundary:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
proxy/source change
|
|
48
|
+
-> requested revision + dirty layer
|
|
49
|
+
-> one scheduled next-frame snapshot
|
|
50
|
+
-> consumed/in-flight request
|
|
51
|
+
-> adapter candidate preparation
|
|
52
|
+
-> guarded adapter + prepared-revision publication
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`ConsumeUpdateRequest()` produces an immutable snapshot and marks that
|
|
56
|
+
revision in flight. A current consumed revision may be completed through
|
|
57
|
+
`CommitPreparedAdapterRevision()`, failed through `FailUpdateRequest()`, or
|
|
58
|
+
returned to the queue through `RetryUpdateRequest()`. Commit-before-consume
|
|
59
|
+
and stale commits are rejected; rejected candidate allocations are destroyed
|
|
60
|
+
by default.
|
|
61
|
+
|
|
62
|
+
Publication installs the adapter allocation and prepared revision before
|
|
63
|
+
completion events run. The result returns the displaced allocation to the
|
|
64
|
+
adapter owner for post-publication destruction. A reentrant source change may
|
|
65
|
+
therefore request a newer revision without allowing stale completion to
|
|
66
|
+
replace it. The previous prepared allocation and `IsGood()` remain usable
|
|
67
|
+
while a replacement is pending or if replacement preparation fails.
|
|
68
|
+
|
|
69
|
+
`Ready()` is specialized for this derived resource: it resolves when the
|
|
70
|
+
generation requested at call time has been published, rather than delegating
|
|
71
|
+
to a single-source object loader. Initial preparation failure rejects it.
|
|
72
|
+
|
|
73
|
+
## Adapter commit example
|
|
74
|
+
|
|
75
|
+
Consumed snapshots are explicit in-flight generations. An adapter either
|
|
76
|
+
publishes the current candidate atomically, requeues retryable work, or
|
|
77
|
+
records failure:
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
const request = textureArray.ConsumeUpdateRequest();
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
const candidate = await adapter.PrepareTextureArray(request);
|
|
84
|
+
const result = textureArray.CommitPreparedAdapterRevision(
|
|
85
|
+
request.revision,
|
|
86
|
+
"webgpu",
|
|
87
|
+
candidate
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
// A rejected/stale candidate is destroyed by the commit method by default.
|
|
91
|
+
// The adapter owns disposal of a successfully displaced allocation.
|
|
92
|
+
result.displaced?.destroy();
|
|
93
|
+
} catch (error) {
|
|
94
|
+
textureArray.FailUpdateRequest(request.revision, error, { retry: true });
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
await textureArray.Ready(); // the generation requested at call time
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Sources and topology
|
|
101
|
+
|
|
102
|
+
Logical paths and resolved sources are independent. `SetLayerResource()`
|
|
103
|
+
attaches a resolved or LOD-specific source without rewriting the logical
|
|
104
|
+
requested path or persistence. `TouchLayer()` invalidates an in-place source
|
|
105
|
+
revision. `HandleAdapterLoss()` drops an unusable adapter allocation and
|
|
106
|
+
schedules a complete topology rebuild. Topology-changing snapshots set
|
|
107
|
+
`topologyChanged: true` and report only valid current layer indices in
|
|
108
|
+
`dirtyLayers`.
|
|
109
|
+
|
|
110
|
+
## Related documentation
|
|
111
|
+
|
|
112
|
+
- [Architecture and boundaries](../architecture.md)
|
|
113
|
+
- [Texture CPU pipeline and LOD membership](texture-pipeline.md)
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# Texture CPU pipeline and LOD membership
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
-
Audience: Users and integrators
|
|
6
|
-
Summary: Defines the `Tr2TexturePipeline` CPU-only step contract and `Tr2TextureLodManager` membership ownership.
|
|
7
|
-
|
|
8
|
-
## Tr2TexturePipeline
|
|
9
|
-
|
|
10
|
-
`Tr2TexturePipeline` is the Carbon texture-specific CPU bitmap pipeline, not a
|
|
11
|
-
general resource prepare stage. `GetResourceDependencies()` returns the sorted
|
|
12
|
-
unique paths required by load and channel-pack steps. `Execute()` resolves
|
|
13
|
-
those inputs from an explicit `inputs` map/object, an async `load(path)`
|
|
14
|
-
callback, or an injected `CjsResMan`, then returns a canonical plain
|
|
15
|
-
`rgba8unorm` payload:
|
|
16
|
-
|
|
17
|
-
```js
|
|
18
|
-
import {
|
|
19
|
-
Tr2TexturePipeline,
|
|
20
|
-
Tr2TexturePipelineStepLoad,
|
|
21
|
-
Tr2TexturePipelineStepLimitSize
|
|
22
|
-
} from "@carbonenginejs/runtime-resource";
|
|
23
|
-
|
|
24
|
-
const load = new Tr2TexturePipelineStepLoad();
|
|
25
|
-
load.path = "res:/texture/source.png";
|
|
26
|
-
const limit = new Tr2TexturePipelineStepLimitSize();
|
|
27
|
-
limit.maxWidth = 512;
|
|
28
|
-
|
|
29
|
-
const pipeline = new Tr2TexturePipeline();
|
|
30
|
-
pipeline.steps = [ load, limit ];
|
|
31
|
-
const rgba = await pipeline.Execute(0, 0, { resMan });
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
The maintained runtime path currently accepts canonical `rgba8unorm` inputs.
|
|
35
|
-
Load copies the source bitmap, limit-size repeatedly performs a 2x2 CPU
|
|
36
|
-
downsample, pack builds logical RGBA channels from independent inputs, and
|
|
37
|
-
Carbon's present compress step remains validation-only because the native
|
|
38
|
-
method is itself a no-op. Unsupported step types fail explicitly.
|
|
39
|
-
|
|
40
|
-
For the decoded-DDS fallback contract used by 2D texture inputs, see the
|
|
41
|
-
[DDS notes in the format map](../formats/README.md#dds-decoded-fallback).
|
|
42
|
-
|
|
43
|
-
## Tr2TextureLodManager
|
|
44
|
-
|
|
45
|
-
`Tr2TextureLodManager` owns only ordered resource membership through
|
|
46
|
-
`RegisterTexture()`, `UnregisterTexture()`, and `GetManagedTextures()`.
|
|
47
|
-
Engine packages continue to own GPU allocations, upload accounting, device
|
|
48
|
-
budgets, capability limits, and device-loss recovery.
|
|
49
|
-
|
|
50
|
-
## Related documentation
|
|
51
|
-
|
|
52
|
-
- [Texture arrays and update generations](texture-arrays.md)
|
|
53
|
-
- [Format subpaths](../formats/README.md)
|
|
1
|
+
# Texture CPU pipeline and LOD membership
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
+
Audience: Users and integrators
|
|
6
|
+
Summary: Defines the `Tr2TexturePipeline` CPU-only step contract and `Tr2TextureLodManager` membership ownership.
|
|
7
|
+
|
|
8
|
+
## Tr2TexturePipeline
|
|
9
|
+
|
|
10
|
+
`Tr2TexturePipeline` is the Carbon texture-specific CPU bitmap pipeline, not a
|
|
11
|
+
general resource prepare stage. `GetResourceDependencies()` returns the sorted
|
|
12
|
+
unique paths required by load and channel-pack steps. `Execute()` resolves
|
|
13
|
+
those inputs from an explicit `inputs` map/object, an async `load(path)`
|
|
14
|
+
callback, or an injected `CjsResMan`, then returns a canonical plain
|
|
15
|
+
`rgba8unorm` payload:
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import {
|
|
19
|
+
Tr2TexturePipeline,
|
|
20
|
+
Tr2TexturePipelineStepLoad,
|
|
21
|
+
Tr2TexturePipelineStepLimitSize
|
|
22
|
+
} from "@carbonenginejs/runtime-resource";
|
|
23
|
+
|
|
24
|
+
const load = new Tr2TexturePipelineStepLoad();
|
|
25
|
+
load.path = "res:/texture/source.png";
|
|
26
|
+
const limit = new Tr2TexturePipelineStepLimitSize();
|
|
27
|
+
limit.maxWidth = 512;
|
|
28
|
+
|
|
29
|
+
const pipeline = new Tr2TexturePipeline();
|
|
30
|
+
pipeline.steps = [ load, limit ];
|
|
31
|
+
const rgba = await pipeline.Execute(0, 0, { resMan });
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The maintained runtime path currently accepts canonical `rgba8unorm` inputs.
|
|
35
|
+
Load copies the source bitmap, limit-size repeatedly performs a 2x2 CPU
|
|
36
|
+
downsample, pack builds logical RGBA channels from independent inputs, and
|
|
37
|
+
Carbon's present compress step remains validation-only because the native
|
|
38
|
+
method is itself a no-op. Unsupported step types fail explicitly.
|
|
39
|
+
|
|
40
|
+
For the decoded-DDS fallback contract used by 2D texture inputs, see the
|
|
41
|
+
[DDS notes in the format map](../formats/README.md#dds-decoded-fallback).
|
|
42
|
+
|
|
43
|
+
## Tr2TextureLodManager
|
|
44
|
+
|
|
45
|
+
`Tr2TextureLodManager` owns only ordered resource membership through
|
|
46
|
+
`RegisterTexture()`, `UnregisterTexture()`, and `GetManagedTextures()`.
|
|
47
|
+
Engine packages continue to own GPU allocations, upload accounting, device
|
|
48
|
+
budgets, capability limits, and device-loss recovery.
|
|
49
|
+
|
|
50
|
+
## Related documentation
|
|
51
|
+
|
|
52
|
+
- [Texture arrays and update generations](texture-arrays.md)
|
|
53
|
+
- [Format subpaths](../formats/README.md)
|
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
# Browser worker execution
|
|
2
|
-
|
|
3
|
-
Status: Evolving
|
|
4
|
-
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
-
Audience: Browser integrators and format maintainers
|
|
6
|
-
Summary: Defines worker-backed source and format execution while keeping resource publication and class-bearing results on the caller thread.
|
|
7
|
-
|
|
8
|
-
## Enable worker execution
|
|
9
|
-
|
|
10
|
-
`CjsResMan` selects the bundled module-worker strategy by default and creates
|
|
11
|
-
the worker lazily on the first eligible source or format read:
|
|
12
|
-
|
|
13
|
-
```js
|
|
14
|
-
import {
|
|
15
|
-
CjsResManFetchProvider,
|
|
16
|
-
CjsResMan
|
|
17
|
-
} from "@carbonenginejs/runtime-resource";
|
|
18
|
-
import { CjsWemFormat } from "@carbonenginejs/runtime-resource/formats/wem";
|
|
19
|
-
|
|
20
|
-
const resMan = new CjsResMan({
|
|
21
|
-
paths: {
|
|
22
|
-
res: "https://cdn.example.invalid/resources/"
|
|
23
|
-
},
|
|
24
|
-
source: new CjsResManFetchProvider(),
|
|
25
|
-
formats: [ CjsWemFormat ]
|
|
26
|
-
});
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Pass `useWorkerLoading: false` or call `UseWorkerLoading(false)` when a caller
|
|
30
|
-
requires deterministic main-thread execution.
|
|
31
|
-
|
|
32
|
-
The default worker entry is resolved relative to the published
|
|
33
|
-
`CjsResManWorkerLoader` module. A browser wrapper may instead inject an
|
|
34
|
-
existing Worker-compatible object, a `workerFactory`, or a `workerUrl` through
|
|
35
|
-
the `workerLoader` constructor option:
|
|
36
|
-
|
|
37
|
-
```js
|
|
38
|
-
const resMan = new CjsResMan({
|
|
39
|
-
source,
|
|
40
|
-
workerLoader: {
|
|
41
|
-
workerFactory: (url, options) => new Worker(url, options)
|
|
42
|
-
},
|
|
43
|
-
useWorkerLoading: true
|
|
44
|
-
});
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Failure to create the worker leaves unsupported and later operations on the
|
|
48
|
-
main-thread fallback. A fatal worker error rejects requests already assigned
|
|
49
|
-
to that worker, disables it, and leaves future reads able to fall back.
|
|
50
|
-
|
|
51
|
-
## Source reads
|
|
52
|
-
|
|
53
|
-
A source opts into worker execution by implementing:
|
|
54
|
-
|
|
55
|
-
```js
|
|
56
|
-
CreateWorkerRequest(sourcePath, options) {
|
|
57
|
-
return {
|
|
58
|
-
operation: "source.fetch",
|
|
59
|
-
payload,
|
|
60
|
-
signal,
|
|
61
|
-
transfer
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Returning `null` selects the main-thread fallback for that read.
|
|
67
|
-
`CjsResMan` resolves the resource path to a URL before invoking a URL-backed
|
|
68
|
-
provider. `CjsResManFetchProvider` implements the worker contract for its
|
|
69
|
-
normal global `fetch` path and returns `ArrayBuffer` data using transfer
|
|
70
|
-
ownership. An injected fetch implementation remains on the caller thread
|
|
71
|
-
unless its provider is explicitly created with `{ worker: true }`.
|
|
72
|
-
Structural sources that do not declare `requiresUrl` continue to receive the
|
|
73
|
-
normalized resource path.
|
|
74
|
-
|
|
75
|
-
Fetch request options may include ordinary headers, including an HTTP `Range`
|
|
76
|
-
header. Range capability, status interpretation, and the identity of an
|
|
77
|
-
offset-backed logical resource remain provider policy; `CjsResMan` does not
|
|
78
|
-
invent offset semantics.
|
|
79
|
-
|
|
80
|
-
## Format reads
|
|
81
|
-
|
|
82
|
-
A clone-safe format opts in with a static worker declaration:
|
|
83
|
-
|
|
84
|
-
```js
|
|
85
|
-
static worker = {
|
|
86
|
-
module: import.meta.url,
|
|
87
|
-
exportName: "CjsExampleFormat"
|
|
88
|
-
};
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
The worker dynamically imports that exact module and invokes its static
|
|
92
|
-
`readAsync`/`read` operation, falling back to an instance
|
|
93
|
-
`ReadAsync`/`Read` operation when required. BNK and WEM are worker-enabled.
|
|
94
|
-
Black `json` and `payload` outputs are worker-enabled; Black document/runtime
|
|
95
|
-
outputs remain on the caller thread because structured cloning would discard
|
|
96
|
-
their class identity.
|
|
97
|
-
|
|
98
|
-
Resource-backed format methods receive `(input, options, context)`. The
|
|
99
|
-
clone-safe context crosses the worker boundary with its normalized lowercase
|
|
100
|
-
`resFilePath`, `ext`, and `fileName`, its compatible `path` alias, and the
|
|
101
|
-
exact translated `url` used by a URL-backed source (or `null` for structural
|
|
102
|
-
sources). Direct descriptor reads that are not attached to a resource receive
|
|
103
|
-
`null` for the third argument.
|
|
104
|
-
|
|
105
|
-
A declaration may restrict clone-safe outputs:
|
|
106
|
-
|
|
107
|
-
```js
|
|
108
|
-
static worker = {
|
|
109
|
-
module: import.meta.url,
|
|
110
|
-
exportName: "CjsExampleFormat",
|
|
111
|
-
outputTypes: [ "json", "payload" ],
|
|
112
|
-
defaultOutput: "json"
|
|
113
|
-
};
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Format options containing functions, symbols, non-plain instances, cycles, or
|
|
117
|
-
caller-supplied class constructors do not cross the worker boundary.
|
|
118
|
-
|
|
119
|
-
## Queues and ownership
|
|
120
|
-
|
|
121
|
-
Worker-safe format reading runs outside the main preparation queue. Its
|
|
122
|
-
resource-operation root remains visible to `Wait()`, and
|
|
123
|
-
`GetPendingWorkers()`/`IsLoading()` include unresolved worker requests. Once
|
|
124
|
-
the reader settles, guarded resource publication is still enqueued on the
|
|
125
|
-
main queue.
|
|
126
|
-
|
|
127
|
-
Format input is cloned by default. This preserves source-cache and
|
|
128
|
-
multi-output ownership at the cost of a copy. A format may declare
|
|
129
|
-
`transferInput: true` only when its caller guarantees exclusive ownership of a
|
|
130
|
-
complete `ArrayBuffer`; transferring detaches the caller's buffer. Result
|
|
131
|
-
ArrayBuffers and typed-array backing stores are transferred back
|
|
132
|
-
automatically.
|
|
133
|
-
|
|
134
|
-
The bundled strategy currently owns one module worker. Asynchronous fetches
|
|
135
|
-
may overlap within it, while synchronous CPU readers are serialized by that
|
|
136
|
-
worker's event loop.
|
|
137
|
-
|
|
138
|
-
## Related documentation
|
|
139
|
-
|
|
140
|
-
- [Queues, publication, and the Wait fence](queues.md)
|
|
141
|
-
- [MotherLode identity, cache, and retention](motherlode-cache.md)
|
|
142
|
-
- [Wwise BNK/WEM formats](../formats/wwise.md)
|
|
1
|
+
# Browser worker execution
|
|
2
|
+
|
|
3
|
+
Status: Evolving
|
|
4
|
+
Scope: `@carbonenginejs/runtime-resource`
|
|
5
|
+
Audience: Browser integrators and format maintainers
|
|
6
|
+
Summary: Defines worker-backed source and format execution while keeping resource publication and class-bearing results on the caller thread.
|
|
7
|
+
|
|
8
|
+
## Enable worker execution
|
|
9
|
+
|
|
10
|
+
`CjsResMan` selects the bundled module-worker strategy by default and creates
|
|
11
|
+
the worker lazily on the first eligible source or format read:
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
import {
|
|
15
|
+
CjsResManFetchProvider,
|
|
16
|
+
CjsResMan
|
|
17
|
+
} from "@carbonenginejs/runtime-resource";
|
|
18
|
+
import { CjsWemFormat } from "@carbonenginejs/runtime-resource/formats/wem";
|
|
19
|
+
|
|
20
|
+
const resMan = new CjsResMan({
|
|
21
|
+
paths: {
|
|
22
|
+
res: "https://cdn.example.invalid/resources/"
|
|
23
|
+
},
|
|
24
|
+
source: new CjsResManFetchProvider(),
|
|
25
|
+
formats: [ CjsWemFormat ]
|
|
26
|
+
});
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Pass `useWorkerLoading: false` or call `UseWorkerLoading(false)` when a caller
|
|
30
|
+
requires deterministic main-thread execution.
|
|
31
|
+
|
|
32
|
+
The default worker entry is resolved relative to the published
|
|
33
|
+
`CjsResManWorkerLoader` module. A browser wrapper may instead inject an
|
|
34
|
+
existing Worker-compatible object, a `workerFactory`, or a `workerUrl` through
|
|
35
|
+
the `workerLoader` constructor option:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
const resMan = new CjsResMan({
|
|
39
|
+
source,
|
|
40
|
+
workerLoader: {
|
|
41
|
+
workerFactory: (url, options) => new Worker(url, options)
|
|
42
|
+
},
|
|
43
|
+
useWorkerLoading: true
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Failure to create the worker leaves unsupported and later operations on the
|
|
48
|
+
main-thread fallback. A fatal worker error rejects requests already assigned
|
|
49
|
+
to that worker, disables it, and leaves future reads able to fall back.
|
|
50
|
+
|
|
51
|
+
## Source reads
|
|
52
|
+
|
|
53
|
+
A source opts into worker execution by implementing:
|
|
54
|
+
|
|
55
|
+
```js
|
|
56
|
+
CreateWorkerRequest(sourcePath, options) {
|
|
57
|
+
return {
|
|
58
|
+
operation: "source.fetch",
|
|
59
|
+
payload,
|
|
60
|
+
signal,
|
|
61
|
+
transfer
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Returning `null` selects the main-thread fallback for that read.
|
|
67
|
+
`CjsResMan` resolves the resource path to a URL before invoking a URL-backed
|
|
68
|
+
provider. `CjsResManFetchProvider` implements the worker contract for its
|
|
69
|
+
normal global `fetch` path and returns `ArrayBuffer` data using transfer
|
|
70
|
+
ownership. An injected fetch implementation remains on the caller thread
|
|
71
|
+
unless its provider is explicitly created with `{ worker: true }`.
|
|
72
|
+
Structural sources that do not declare `requiresUrl` continue to receive the
|
|
73
|
+
normalized resource path.
|
|
74
|
+
|
|
75
|
+
Fetch request options may include ordinary headers, including an HTTP `Range`
|
|
76
|
+
header. Range capability, status interpretation, and the identity of an
|
|
77
|
+
offset-backed logical resource remain provider policy; `CjsResMan` does not
|
|
78
|
+
invent offset semantics.
|
|
79
|
+
|
|
80
|
+
## Format reads
|
|
81
|
+
|
|
82
|
+
A clone-safe format opts in with a static worker declaration:
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
static worker = {
|
|
86
|
+
module: import.meta.url,
|
|
87
|
+
exportName: "CjsExampleFormat"
|
|
88
|
+
};
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The worker dynamically imports that exact module and invokes its static
|
|
92
|
+
`readAsync`/`read` operation, falling back to an instance
|
|
93
|
+
`ReadAsync`/`Read` operation when required. BNK and WEM are worker-enabled.
|
|
94
|
+
Black `json` and `payload` outputs are worker-enabled; Black document/runtime
|
|
95
|
+
outputs remain on the caller thread because structured cloning would discard
|
|
96
|
+
their class identity.
|
|
97
|
+
|
|
98
|
+
Resource-backed format methods receive `(input, options, context)`. The
|
|
99
|
+
clone-safe context crosses the worker boundary with its normalized lowercase
|
|
100
|
+
`resFilePath`, `ext`, and `fileName`, its compatible `path` alias, and the
|
|
101
|
+
exact translated `url` used by a URL-backed source (or `null` for structural
|
|
102
|
+
sources). Direct descriptor reads that are not attached to a resource receive
|
|
103
|
+
`null` for the third argument.
|
|
104
|
+
|
|
105
|
+
A declaration may restrict clone-safe outputs:
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
static worker = {
|
|
109
|
+
module: import.meta.url,
|
|
110
|
+
exportName: "CjsExampleFormat",
|
|
111
|
+
outputTypes: [ "json", "payload" ],
|
|
112
|
+
defaultOutput: "json"
|
|
113
|
+
};
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Format options containing functions, symbols, non-plain instances, cycles, or
|
|
117
|
+
caller-supplied class constructors do not cross the worker boundary.
|
|
118
|
+
|
|
119
|
+
## Queues and ownership
|
|
120
|
+
|
|
121
|
+
Worker-safe format reading runs outside the main preparation queue. Its
|
|
122
|
+
resource-operation root remains visible to `Wait()`, and
|
|
123
|
+
`GetPendingWorkers()`/`IsLoading()` include unresolved worker requests. Once
|
|
124
|
+
the reader settles, guarded resource publication is still enqueued on the
|
|
125
|
+
main queue.
|
|
126
|
+
|
|
127
|
+
Format input is cloned by default. This preserves source-cache and
|
|
128
|
+
multi-output ownership at the cost of a copy. A format may declare
|
|
129
|
+
`transferInput: true` only when its caller guarantees exclusive ownership of a
|
|
130
|
+
complete `ArrayBuffer`; transferring detaches the caller's buffer. Result
|
|
131
|
+
ArrayBuffers and typed-array backing stores are transferred back
|
|
132
|
+
automatically.
|
|
133
|
+
|
|
134
|
+
The bundled strategy currently owns one module worker. Asynchronous fetches
|
|
135
|
+
may overlap within it, while synchronous CPU readers are serialized by that
|
|
136
|
+
worker's event loop.
|
|
137
|
+
|
|
138
|
+
## Related documentation
|
|
139
|
+
|
|
140
|
+
- [Queues, publication, and the Wait fence](queues.md)
|
|
141
|
+
- [MotherLode identity, cache, and retention](motherlode-cache.md)
|
|
142
|
+
- [Wwise BNK/WEM formats](../formats/wwise.md)
|