@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,197 +1,197 @@
|
|
|
1
|
-
import { CjsFormatReadError, CjsFormatWriteError } from '../CjsFormatError.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The resource-transform section, shared by every backend's per-pass block.
|
|
5
|
-
*
|
|
6
|
-
* A resource transform is a recipe for building one backend resource out of
|
|
7
|
-
* several Carbon ones. It is deliberately backend-neutral: `detail-map-array`
|
|
8
|
-
* merges `Detail1Map`, `Detail2Map` and `Detail3Map` into one array texture, and
|
|
9
|
-
* that decision is about the *resources*, not about WGSL or GLSL. Both backends
|
|
10
|
-
* want the identical merge, for different reasons - WebGPU to reduce binding
|
|
11
|
-
* churn, WebGL 2 because the family otherwise needs 17 texture units against a
|
|
12
|
-
* limit of 16 (docs/contracts/webgl2-texture-budget.md).
|
|
13
|
-
*
|
|
14
|
-
* So the section lives here rather than in either backend's block codec, and the
|
|
15
|
-
* two codecs compose it. A transform written by one backend decodes identically
|
|
16
|
-
* under the other.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Resource-transform families. The discriminator exists so `kind`,
|
|
21
|
-
* `representation`, `missingLayer` and the output name stay derivable without
|
|
22
|
-
* pinning the format to one recognizer: a second family costs an enum value
|
|
23
|
-
* rather than a format version bump.
|
|
24
|
-
*/
|
|
25
|
-
const CARBON_BACKEND_TRANSFORM_FAMILY = Object.freeze(["detail-map-array", "local-light-profile-neutral"]);
|
|
26
|
-
|
|
27
|
-
/** Constants a `detail-map-array` transform restores rather than storing. */
|
|
28
|
-
const DETAIL_MAP_ARRAY_DEFAULTS = Object.freeze({
|
|
29
|
-
version: 1,
|
|
30
|
-
kind: "texture-2d-array",
|
|
31
|
-
stage: "fragment",
|
|
32
|
-
representation: "native-or-rgba8",
|
|
33
|
-
missingLayer: "reject",
|
|
34
|
-
viewDimension: "2d-array",
|
|
35
|
-
outputName: "DetailArrayMap"
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Constants a `local-light-profile-neutral` transform restores rather than
|
|
40
|
-
* storing.
|
|
41
|
-
*
|
|
42
|
-
* Unlike `detail-map-array` this transform has no output resource: its whole
|
|
43
|
-
* content is that an input resource was replaced by a constant. It exists so a
|
|
44
|
-
* described Carbon resource that the backend deliberately dropped is still
|
|
45
|
-
* accounted for - a resource that simply disappears is indistinguishable from
|
|
46
|
-
* one that was lost, and the integrity rules reject that on purpose.
|
|
47
|
-
*
|
|
48
|
-
* `LightProfileArray` is multiplied into a light's attenuation, so the constant
|
|
49
|
-
* is one, not zero. That is the same value the shader's own no-profile path
|
|
50
|
-
* produces, which is why dropping it is neutral rather than dark.
|
|
51
|
-
*/
|
|
52
|
-
const LOCAL_LIGHT_PROFILE_NEUTRAL_DEFAULTS = Object.freeze({
|
|
53
|
-
version: 1,
|
|
54
|
-
kind: "constant",
|
|
55
|
-
stage: "fragment",
|
|
56
|
-
representation: "constant-one",
|
|
57
|
-
missingLayer: "ignore",
|
|
58
|
-
viewDimension: null,
|
|
59
|
-
outputName: null
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Per-family constant sets, keyed by family name.
|
|
64
|
-
*
|
|
65
|
-
* The reader restores these rather than storing them, so a family that omitted
|
|
66
|
-
* its entry here would silently inherit another family's constants.
|
|
67
|
-
*/
|
|
68
|
-
const TRANSFORM_DEFAULTS_BY_FAMILY = Object.freeze({
|
|
69
|
-
"detail-map-array": DETAIL_MAP_ARRAY_DEFAULTS,
|
|
70
|
-
"local-light-profile-neutral": LOCAL_LIGHT_PROFILE_NEUTRAL_DEFAULTS
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Writes a length-prefixed UTF-8 string.
|
|
75
|
-
*
|
|
76
|
-
* @param {object} writer Target byte writer.
|
|
77
|
-
* @param {string} value Text value.
|
|
78
|
-
*/
|
|
79
|
-
function writeInlineString(writer, value) {
|
|
80
|
-
const bytes = new TextEncoder().encode(String(value ?? ""));
|
|
81
|
-
if (bytes.length > 0xffff) {
|
|
82
|
-
throw new CjsFormatWriteError("Backend block string exceeds 65535 bytes", {
|
|
83
|
-
byteLength: bytes.length
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
writer.u16(bytes.length);
|
|
87
|
-
writer.bytes(bytes);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Reads a length-prefixed UTF-8 string.
|
|
92
|
-
*
|
|
93
|
-
* @param {object} reader Source byte reader.
|
|
94
|
-
* @returns {string} Decoded text.
|
|
95
|
-
*/
|
|
96
|
-
function readInlineString(reader) {
|
|
97
|
-
const length = reader.readUint16();
|
|
98
|
-
return new TextDecoder("utf-8", {
|
|
99
|
-
fatal: false
|
|
100
|
-
}).decode(reader.readRaw(length));
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Writes the count-prefixed resource-transform section.
|
|
105
|
-
*
|
|
106
|
-
* @param {object} writer Target byte writer.
|
|
107
|
-
* @param {object[]} transforms Resource transforms.
|
|
108
|
-
*/
|
|
109
|
-
function writeTransformSection(writer, transforms) {
|
|
110
|
-
writer.u8(transforms.length);
|
|
111
|
-
for (const transform of transforms) {
|
|
112
|
-
const family = CARBON_BACKEND_TRANSFORM_FAMILY.indexOf(transform.family ?? "detail-map-array");
|
|
113
|
-
if (family < 0) {
|
|
114
|
-
throw new CjsFormatWriteError(`Unknown transform family "${transform.family}"`, {
|
|
115
|
-
family: transform.family
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
writer.u8(family);
|
|
119
|
-
// `id` stays on the wire: a caller may supply it, and it propagates into
|
|
120
|
-
// the engine binding as `transformId`. Deriving it would foreclose the
|
|
121
|
-
// caller-supplied plan path to save four bytes.
|
|
122
|
-
writeInlineString(writer, transform.id);
|
|
123
|
-
writer.u8(transform.inputs.length);
|
|
124
|
-
for (const input of transform.inputs) {
|
|
125
|
-
// Array position is the layer. Safe because `parameter` stays on the
|
|
126
|
-
// wire, so layer identity remains cross-checkable rather than
|
|
127
|
-
// asserted by position.
|
|
128
|
-
writer.u8(input.registerSpace);
|
|
129
|
-
writer.u8(input.registerIndex);
|
|
130
|
-
writeInlineString(writer, input.parameter);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Reads the count-prefixed resource-transform section, restoring derived fields.
|
|
137
|
-
*
|
|
138
|
-
* @param {object} reader Source byte reader.
|
|
139
|
-
* @param {string|null} layoutKey Enclosing pass key, restored onto records.
|
|
140
|
-
* @returns {object[]} Resource transforms.
|
|
141
|
-
*/
|
|
142
|
-
function readTransformSection(reader, layoutKey) {
|
|
143
|
-
const transforms = [];
|
|
144
|
-
const transformCount = reader.readUint8();
|
|
145
|
-
for (let index = 0; index < transformCount; index += 1) {
|
|
146
|
-
const family = CARBON_BACKEND_TRANSFORM_FAMILY[reader.readUint8()];
|
|
147
|
-
const defaults = TRANSFORM_DEFAULTS_BY_FAMILY[family];
|
|
148
|
-
if (!defaults) {
|
|
149
|
-
throw new CjsFormatReadError(`Transform family "${family}" has no restored constants`, {
|
|
150
|
-
family
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
const id = readInlineString(reader);
|
|
154
|
-
const inputs = [];
|
|
155
|
-
const inputCount = reader.readUint8();
|
|
156
|
-
for (let layer = 0; layer < inputCount; layer += 1) {
|
|
157
|
-
const registerSpace = reader.readUint8();
|
|
158
|
-
const registerIndex = reader.readUint8();
|
|
159
|
-
const parameter = readInlineString(reader);
|
|
160
|
-
const identity = `sampled-resource:${registerSpace}:${registerIndex}`;
|
|
161
|
-
inputs.push({
|
|
162
|
-
parameter,
|
|
163
|
-
layer,
|
|
164
|
-
// Kept alongside the identity they compose: a consumer checking
|
|
165
|
-
// the transform against a binding set compares registers, and
|
|
166
|
-
// re-parsing them back out of the identity string is a second
|
|
167
|
-
// place for the format of that string to matter.
|
|
168
|
-
registerSpace,
|
|
169
|
-
registerIndex,
|
|
170
|
-
identity,
|
|
171
|
-
scopeIdentity: `${identity}@${defaults.stage}`
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
transforms.push({
|
|
175
|
-
id,
|
|
176
|
-
family,
|
|
177
|
-
version: defaults.version,
|
|
178
|
-
kind: defaults.kind,
|
|
179
|
-
stage: defaults.stage,
|
|
180
|
-
representation: defaults.representation,
|
|
181
|
-
missingLayer: defaults.missingLayer,
|
|
182
|
-
layoutKey,
|
|
183
|
-
inputs,
|
|
184
|
-
output: {
|
|
185
|
-
name: defaults.outputName,
|
|
186
|
-
viewDimension: defaults.viewDimension,
|
|
187
|
-
layerCount: inputs.length,
|
|
188
|
-
identity: inputs[0]?.identity ?? null,
|
|
189
|
-
scopeIdentity: inputs[0]?.scopeIdentity ?? null
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
return transforms;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
export { CARBON_BACKEND_TRANSFORM_FAMILY, DETAIL_MAP_ARRAY_DEFAULTS, LOCAL_LIGHT_PROFILE_NEUTRAL_DEFAULTS, readInlineString, readTransformSection, writeInlineString, writeTransformSection };
|
|
197
|
-
//# sourceMappingURL=carbonEffectResourceTransform.js.map
|
|
1
|
+
import { CjsFormatReadError, CjsFormatWriteError } from '../CjsFormatError.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The resource-transform section, shared by every backend's per-pass block.
|
|
5
|
+
*
|
|
6
|
+
* A resource transform is a recipe for building one backend resource out of
|
|
7
|
+
* several Carbon ones. It is deliberately backend-neutral: `detail-map-array`
|
|
8
|
+
* merges `Detail1Map`, `Detail2Map` and `Detail3Map` into one array texture, and
|
|
9
|
+
* that decision is about the *resources*, not about WGSL or GLSL. Both backends
|
|
10
|
+
* want the identical merge, for different reasons - WebGPU to reduce binding
|
|
11
|
+
* churn, WebGL 2 because the family otherwise needs 17 texture units against a
|
|
12
|
+
* limit of 16 (docs/contracts/webgl2-texture-budget.md).
|
|
13
|
+
*
|
|
14
|
+
* So the section lives here rather than in either backend's block codec, and the
|
|
15
|
+
* two codecs compose it. A transform written by one backend decodes identically
|
|
16
|
+
* under the other.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Resource-transform families. The discriminator exists so `kind`,
|
|
21
|
+
* `representation`, `missingLayer` and the output name stay derivable without
|
|
22
|
+
* pinning the format to one recognizer: a second family costs an enum value
|
|
23
|
+
* rather than a format version bump.
|
|
24
|
+
*/
|
|
25
|
+
const CARBON_BACKEND_TRANSFORM_FAMILY = Object.freeze(["detail-map-array", "local-light-profile-neutral"]);
|
|
26
|
+
|
|
27
|
+
/** Constants a `detail-map-array` transform restores rather than storing. */
|
|
28
|
+
const DETAIL_MAP_ARRAY_DEFAULTS = Object.freeze({
|
|
29
|
+
version: 1,
|
|
30
|
+
kind: "texture-2d-array",
|
|
31
|
+
stage: "fragment",
|
|
32
|
+
representation: "native-or-rgba8",
|
|
33
|
+
missingLayer: "reject",
|
|
34
|
+
viewDimension: "2d-array",
|
|
35
|
+
outputName: "DetailArrayMap"
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Constants a `local-light-profile-neutral` transform restores rather than
|
|
40
|
+
* storing.
|
|
41
|
+
*
|
|
42
|
+
* Unlike `detail-map-array` this transform has no output resource: its whole
|
|
43
|
+
* content is that an input resource was replaced by a constant. It exists so a
|
|
44
|
+
* described Carbon resource that the backend deliberately dropped is still
|
|
45
|
+
* accounted for - a resource that simply disappears is indistinguishable from
|
|
46
|
+
* one that was lost, and the integrity rules reject that on purpose.
|
|
47
|
+
*
|
|
48
|
+
* `LightProfileArray` is multiplied into a light's attenuation, so the constant
|
|
49
|
+
* is one, not zero. That is the same value the shader's own no-profile path
|
|
50
|
+
* produces, which is why dropping it is neutral rather than dark.
|
|
51
|
+
*/
|
|
52
|
+
const LOCAL_LIGHT_PROFILE_NEUTRAL_DEFAULTS = Object.freeze({
|
|
53
|
+
version: 1,
|
|
54
|
+
kind: "constant",
|
|
55
|
+
stage: "fragment",
|
|
56
|
+
representation: "constant-one",
|
|
57
|
+
missingLayer: "ignore",
|
|
58
|
+
viewDimension: null,
|
|
59
|
+
outputName: null
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Per-family constant sets, keyed by family name.
|
|
64
|
+
*
|
|
65
|
+
* The reader restores these rather than storing them, so a family that omitted
|
|
66
|
+
* its entry here would silently inherit another family's constants.
|
|
67
|
+
*/
|
|
68
|
+
const TRANSFORM_DEFAULTS_BY_FAMILY = Object.freeze({
|
|
69
|
+
"detail-map-array": DETAIL_MAP_ARRAY_DEFAULTS,
|
|
70
|
+
"local-light-profile-neutral": LOCAL_LIGHT_PROFILE_NEUTRAL_DEFAULTS
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Writes a length-prefixed UTF-8 string.
|
|
75
|
+
*
|
|
76
|
+
* @param {object} writer Target byte writer.
|
|
77
|
+
* @param {string} value Text value.
|
|
78
|
+
*/
|
|
79
|
+
function writeInlineString(writer, value) {
|
|
80
|
+
const bytes = new TextEncoder().encode(String(value ?? ""));
|
|
81
|
+
if (bytes.length > 0xffff) {
|
|
82
|
+
throw new CjsFormatWriteError("Backend block string exceeds 65535 bytes", {
|
|
83
|
+
byteLength: bytes.length
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
writer.u16(bytes.length);
|
|
87
|
+
writer.bytes(bytes);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Reads a length-prefixed UTF-8 string.
|
|
92
|
+
*
|
|
93
|
+
* @param {object} reader Source byte reader.
|
|
94
|
+
* @returns {string} Decoded text.
|
|
95
|
+
*/
|
|
96
|
+
function readInlineString(reader) {
|
|
97
|
+
const length = reader.readUint16();
|
|
98
|
+
return new TextDecoder("utf-8", {
|
|
99
|
+
fatal: false
|
|
100
|
+
}).decode(reader.readRaw(length));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Writes the count-prefixed resource-transform section.
|
|
105
|
+
*
|
|
106
|
+
* @param {object} writer Target byte writer.
|
|
107
|
+
* @param {object[]} transforms Resource transforms.
|
|
108
|
+
*/
|
|
109
|
+
function writeTransformSection(writer, transforms) {
|
|
110
|
+
writer.u8(transforms.length);
|
|
111
|
+
for (const transform of transforms) {
|
|
112
|
+
const family = CARBON_BACKEND_TRANSFORM_FAMILY.indexOf(transform.family ?? "detail-map-array");
|
|
113
|
+
if (family < 0) {
|
|
114
|
+
throw new CjsFormatWriteError(`Unknown transform family "${transform.family}"`, {
|
|
115
|
+
family: transform.family
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
writer.u8(family);
|
|
119
|
+
// `id` stays on the wire: a caller may supply it, and it propagates into
|
|
120
|
+
// the engine binding as `transformId`. Deriving it would foreclose the
|
|
121
|
+
// caller-supplied plan path to save four bytes.
|
|
122
|
+
writeInlineString(writer, transform.id);
|
|
123
|
+
writer.u8(transform.inputs.length);
|
|
124
|
+
for (const input of transform.inputs) {
|
|
125
|
+
// Array position is the layer. Safe because `parameter` stays on the
|
|
126
|
+
// wire, so layer identity remains cross-checkable rather than
|
|
127
|
+
// asserted by position.
|
|
128
|
+
writer.u8(input.registerSpace);
|
|
129
|
+
writer.u8(input.registerIndex);
|
|
130
|
+
writeInlineString(writer, input.parameter);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Reads the count-prefixed resource-transform section, restoring derived fields.
|
|
137
|
+
*
|
|
138
|
+
* @param {object} reader Source byte reader.
|
|
139
|
+
* @param {string|null} layoutKey Enclosing pass key, restored onto records.
|
|
140
|
+
* @returns {object[]} Resource transforms.
|
|
141
|
+
*/
|
|
142
|
+
function readTransformSection(reader, layoutKey) {
|
|
143
|
+
const transforms = [];
|
|
144
|
+
const transformCount = reader.readUint8();
|
|
145
|
+
for (let index = 0; index < transformCount; index += 1) {
|
|
146
|
+
const family = CARBON_BACKEND_TRANSFORM_FAMILY[reader.readUint8()];
|
|
147
|
+
const defaults = TRANSFORM_DEFAULTS_BY_FAMILY[family];
|
|
148
|
+
if (!defaults) {
|
|
149
|
+
throw new CjsFormatReadError(`Transform family "${family}" has no restored constants`, {
|
|
150
|
+
family
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
const id = readInlineString(reader);
|
|
154
|
+
const inputs = [];
|
|
155
|
+
const inputCount = reader.readUint8();
|
|
156
|
+
for (let layer = 0; layer < inputCount; layer += 1) {
|
|
157
|
+
const registerSpace = reader.readUint8();
|
|
158
|
+
const registerIndex = reader.readUint8();
|
|
159
|
+
const parameter = readInlineString(reader);
|
|
160
|
+
const identity = `sampled-resource:${registerSpace}:${registerIndex}`;
|
|
161
|
+
inputs.push({
|
|
162
|
+
parameter,
|
|
163
|
+
layer,
|
|
164
|
+
// Kept alongside the identity they compose: a consumer checking
|
|
165
|
+
// the transform against a binding set compares registers, and
|
|
166
|
+
// re-parsing them back out of the identity string is a second
|
|
167
|
+
// place for the format of that string to matter.
|
|
168
|
+
registerSpace,
|
|
169
|
+
registerIndex,
|
|
170
|
+
identity,
|
|
171
|
+
scopeIdentity: `${identity}@${defaults.stage}`
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
transforms.push({
|
|
175
|
+
id,
|
|
176
|
+
family,
|
|
177
|
+
version: defaults.version,
|
|
178
|
+
kind: defaults.kind,
|
|
179
|
+
stage: defaults.stage,
|
|
180
|
+
representation: defaults.representation,
|
|
181
|
+
missingLayer: defaults.missingLayer,
|
|
182
|
+
layoutKey,
|
|
183
|
+
inputs,
|
|
184
|
+
output: {
|
|
185
|
+
name: defaults.outputName,
|
|
186
|
+
viewDimension: defaults.viewDimension,
|
|
187
|
+
layerCount: inputs.length,
|
|
188
|
+
identity: inputs[0]?.identity ?? null,
|
|
189
|
+
scopeIdentity: inputs[0]?.scopeIdentity ?? null
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return transforms;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export { CARBON_BACKEND_TRANSFORM_FAMILY, DETAIL_MAP_ARRAY_DEFAULTS, LOCAL_LIGHT_PROFILE_NEUTRAL_DEFAULTS, readInlineString, readTransformSection, writeInlineString, writeTransformSection };
|
|
197
|
+
//# sourceMappingURL=carbonEffectResourceTransform.js.map
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
const textEncoder = new TextEncoder();
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Compares two strings by their UTF-8 bytes, unsigned.
|
|
5
|
-
*
|
|
6
|
-
* This is `strcmp` order, and it is the only string comparison allowed to decide
|
|
7
|
-
* emitted bytes anywhere in this package.
|
|
8
|
-
*
|
|
9
|
-
* `String.prototype.localeCompare` cannot be used for that job. Without an
|
|
10
|
-
* explicit locale it is implementation- and ICU-dependent, so the same input can
|
|
11
|
-
* order differently across Node builds; it treats case as a minor difference, so
|
|
12
|
-
* `"Z"` sorts *after* `"a"` where bytes put it before; and it gives punctuation
|
|
13
|
-
* variable weight, so `-`, `:` and `@` — which appear in every binding identity we
|
|
14
|
-
* sort — are not ordered by code point. Any of those is enough to make a build
|
|
15
|
-
* unreproducible.
|
|
16
|
-
*
|
|
17
|
-
* Carbon compares the same way, both in its string table (`Blob::operator<`,
|
|
18
|
-
* `StringTable.h:109-122`) and when it sorts annotation keys before writing them
|
|
19
|
-
* (`strcmp`, `EffectData.h:613-616`).
|
|
20
|
-
*
|
|
21
|
-
* @param {string} left First string.
|
|
22
|
-
* @param {string} right Second string.
|
|
23
|
-
* @returns {number} Negative, zero, or positive ordering result.
|
|
24
|
-
*/
|
|
25
|
-
function compareUtf8(left, right) {
|
|
26
|
-
const a = textEncoder.encode(String(left));
|
|
27
|
-
const b = textEncoder.encode(String(right));
|
|
28
|
-
const shared = Math.min(a.length, b.length);
|
|
29
|
-
for (let index = 0; index < shared; index += 1) {
|
|
30
|
-
if (a[index] !== b[index]) return a[index] - b[index];
|
|
31
|
-
}
|
|
32
|
-
return a.length - b.length;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export { compareUtf8 };
|
|
36
|
-
//# sourceMappingURL=compareUtf8.js.map
|
|
1
|
+
const textEncoder = new TextEncoder();
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Compares two strings by their UTF-8 bytes, unsigned.
|
|
5
|
+
*
|
|
6
|
+
* This is `strcmp` order, and it is the only string comparison allowed to decide
|
|
7
|
+
* emitted bytes anywhere in this package.
|
|
8
|
+
*
|
|
9
|
+
* `String.prototype.localeCompare` cannot be used for that job. Without an
|
|
10
|
+
* explicit locale it is implementation- and ICU-dependent, so the same input can
|
|
11
|
+
* order differently across Node builds; it treats case as a minor difference, so
|
|
12
|
+
* `"Z"` sorts *after* `"a"` where bytes put it before; and it gives punctuation
|
|
13
|
+
* variable weight, so `-`, `:` and `@` — which appear in every binding identity we
|
|
14
|
+
* sort — are not ordered by code point. Any of those is enough to make a build
|
|
15
|
+
* unreproducible.
|
|
16
|
+
*
|
|
17
|
+
* Carbon compares the same way, both in its string table (`Blob::operator<`,
|
|
18
|
+
* `StringTable.h:109-122`) and when it sorts annotation keys before writing them
|
|
19
|
+
* (`strcmp`, `EffectData.h:613-616`).
|
|
20
|
+
*
|
|
21
|
+
* @param {string} left First string.
|
|
22
|
+
* @param {string} right Second string.
|
|
23
|
+
* @returns {number} Negative, zero, or positive ordering result.
|
|
24
|
+
*/
|
|
25
|
+
function compareUtf8(left, right) {
|
|
26
|
+
const a = textEncoder.encode(String(left));
|
|
27
|
+
const b = textEncoder.encode(String(right));
|
|
28
|
+
const shared = Math.min(a.length, b.length);
|
|
29
|
+
for (let index = 0; index < shared; index += 1) {
|
|
30
|
+
if (a[index] !== b[index]) return a[index] - b[index];
|
|
31
|
+
}
|
|
32
|
+
return a.length - b.length;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { compareUtf8 };
|
|
36
|
+
//# sourceMappingURL=compareUtf8.js.map
|