@carbonenginejs/runtime-resource 0.12.2 → 0.13.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 -108
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3494
- package/dist/CjsResMan.js.map +1 -1
- 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 +408 -361
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -427
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -955
- package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -0
- package/dist/format/effect/effectBodyInventory.js.map +1 -0
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/effectPermutationGraph.js.map +1 -1
- 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 -292
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- 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 -156
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/busNodes.js +252 -0
- package/dist/formats/bnk/core/busNodes.js.map +1 -0
- package/dist/formats/bnk/core/effectNodes.js +147 -0
- package/dist/formats/bnk/core/effectNodes.js.map +1 -0
- package/dist/formats/bnk/core/eventAction.js +416 -305
- package/dist/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/formats/bnk/core/globalSettings.js +215 -0
- package/dist/formats/bnk/core/globalSettings.js.map +1 -0
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -480
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +533 -509
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/nodeBase.js +553 -532
- package/dist/formats/bnk/core/nodeBase.js.map +1 -1
- 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 +862 -862
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -142
- 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/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 +290 -290
- package/dist/formats/gltf/core/helpers.js +307 -307
- 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 +254 -254
- 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 -781
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
- package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
- 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 -0
- package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
- 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 -314
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -742
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
- 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 -31
- package/dist/formats/index.js.map +1 -1
- 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 +253 -253
- package/dist/formats/obj/core/helpers.js +573 -573
- 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 -0
- package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
- package/dist/formats/pickle/index.js +2 -0
- package/dist/formats/pickle/index.js.map +1 -0
- 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 -68
- package/dist/formats/red/core/redGraph.js.map +1 -1
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +365 -365
- package/dist/formats/stl/core/helpers.js +261 -261
- 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 -221
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
- package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +900 -792
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2678
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -428
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
- package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
- package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
- package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +85 -81
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +167 -306
- package/dist/formats/webgl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js +303 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -197
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
- package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +354 -368
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +289 -289
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/errors.js.map +1 -1
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/helpers.js.map +1 -1
- 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 -385
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
- 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/buildResourceTransformPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +320 -320
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- 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/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -402
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +196 -170
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -62
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsLoadingObject.js +19 -0
- package/dist/resource/CjsLoadingObject.js.map +1 -0
- package/dist/resource/CjsResource.js +801 -797
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/ResourceHandlerMode.js +14 -0
- package/dist/resource/ResourceHandlerMode.js.map +1 -0
- 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 +675 -675
- 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 -52
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -431
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- 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 -261
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -135
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -109
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -147
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -105
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -86
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -241
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -68
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -111
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
- package/dist/resource/shader/reflection/shaderStage.js +22 -0
- package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -77
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- 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 -87
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/worker/CjsResManWorker.js +218 -217
- package/dist/worker/CjsResManWorker.js.map +1 -1
- package/dist/worker/CjsResManWorkerLoader.js +437 -434
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -109
- package/docs/concepts/resource-lifecycle.md +226 -225
- package/docs/concepts/shader-resource-model.md +111 -114
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -136
- package/docs/formats/carbon-effect-container.md +553 -452
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +77 -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 +65 -67
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -62
- package/docs/formats/hlsl/guides/reading-effects.md +64 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -66
- package/docs/formats/hlsl/reference/api.md +92 -98
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -100
- package/docs/formats/pickle.md +82 -0
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -57
- package/docs/formats/webgl/architecture.md +69 -70
- 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 -871
- 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 -96
- package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +215 -216
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -191
- package/docs/formats/webgpu/reference/api.md +196 -197
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1543
- package/docs/formats/wwise.md +146 -85
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -206
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -952
- 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 -110
- 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 -135
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
- package/dist/format/effect/effectReflectionPackage.js +0 -636
- package/dist/format/effect/effectReflectionPackage.js.map +0 -1
- package/dist/formats/hlsl/core/HlslReader.js +0 -16
- package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
- package/dist/formats/hlsl/core/portableReflection.js +0 -848
- package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
- package/dist/formats/hlsl/portable.js +0 -2
- package/dist/formats/hlsl/portable.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
- package/dist/formats/webgl/core/cewg/binary.js +0 -19
- package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
- package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
- package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
- package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
- package/dist/resource/shader/portable.js +0 -33
- package/dist/resource/shader/portable.js.map +0 -1
- package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
- package/docs/formats/webgl/effect-reflection.md +0 -127
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildWgslSet.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/buildWgslSet.js"],"sourcesContent":["import { normalizeResourceTransformPlan } from \"./buildResourceTransformPlan.js\";\r\nimport { compareUtf8 } from \"../../../../format/compareUtf8.js\";\r\n\r\nexport const WGSL_SET_VERSION = 3;\r\n\r\nconst KEY_PATTERN = /^(.*)\\.pass([0-9]+)\\.(vertex|pixel|compute)$/;\r\nconst KEY_STAGE = Object.freeze({ vertex: \"vertex\", pixel: \"fragment\", compute: \"compute\" });\r\nconst STAGE_TYPES = Object.freeze({ vertex: 0, pixel: 1, compute: 2 });\r\nconst STAGE_NAME_ORDER = Object.freeze([ \"vertex\", \"pixel\", \"compute\" ]);\r\n\r\nconst VISIBILITY_ORDER = Object.freeze([ \"vertex\", \"fragment\", \"compute\" ]);\r\n\r\nfunction clonePlain(value)\r\n{\r\n if (Array.isArray(value)) return value.map(clonePlain);\r\n if (value && typeof value === \"object\")\r\n {\r\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [ key, clonePlain(entry) ]));\r\n }\r\n return value;\r\n}\r\n\r\nfunction deepFreeze(value)\r\n{\r\n if (!value || typeof value !== \"object\" || Object.isFrozen(value)) return value;\r\n for (const entry of Object.values(value)) deepFreeze(entry);\r\n return Object.freeze(value);\r\n}\r\n\r\nfunction normalizeEntry(entry, index)\r\n{\r\n const shader = entry?.shader;\r\n if (shader?.format !== \"CJS_WGSL_SHADER\" || shader.formatVersion !== 1\r\n || typeof shader.code !== \"string\" || !shader.code\r\n || typeof shader.entryPoint !== \"string\" || !shader.entryPoint\r\n || !Array.isArray(shader.sourceMap)\r\n || shader.program?.format !== \"CJS_TYPED_SHADER\")\r\n {\r\n throw new TypeError(`WGSL set entry ${index} requires a CJS_WGSL_SHADER descriptor`);\r\n }\r\n const key = typeof entry.key === \"string\" ? entry.key : \"\";\r\n const match = KEY_PATTERN.exec(key);\r\n if (!match || !match[1]) throw new Error(`WGSL set entry ${index} has malformed key ${key || \"<empty>\"}`);\r\n const techniqueName = match[1];\r\n const passIndex = Number(match[2]);\r\n const stageName = match[3];\r\n if (shader.stage !== KEY_STAGE[stageName])\r\n {\r\n throw new Error(`WGSL set key ${key} does not match shader stage ${shader.stage}`);\r\n }\r\n let threadGroupSize = null;\r\n if (stageName === \"compute\")\r\n {\r\n threadGroupSize = shader.threadGroupSize;\r\n if (!Array.isArray(threadGroupSize) || threadGroupSize.length !== 3\r\n || threadGroupSize.some((value) => !Number.isSafeInteger(value) || value < 1))\r\n {\r\n throw new Error(`WGSL compute shader ${key} requires a positive three-dimensional threadGroupSize`);\r\n }\r\n }\r\n else if (shader.threadGroupSize !== undefined && shader.threadGroupSize !== null)\r\n {\r\n throw new Error(`WGSL render shader ${key} cannot declare threadGroupSize`);\r\n }\r\n return {\r\n shader,\r\n stage: shader.stage,\r\n techniqueName,\r\n passIndex,\r\n stageName,\r\n stageType: STAGE_TYPES[stageName],\r\n ...(threadGroupSize ? { threadGroupSize: clonePlain(threadGroupSize) } : {}),\r\n key\r\n };\r\n}\r\n\r\nfunction portableBinding(binding, visibility)\r\n{\r\n if (!Number.isInteger(binding.group) || binding.group < 0\r\n || !Number.isInteger(binding.binding) || binding.binding < 0\r\n || !Number.isInteger(binding.registerSpace) || binding.registerSpace < 0\r\n || !Number.isInteger(binding.registerIndex) || binding.registerIndex < 0\r\n || typeof binding.resourceKind !== \"string\" || !binding.resourceKind\r\n || typeof binding.generatedSymbol !== \"string\" || !binding.generatedSymbol\r\n || typeof binding.type !== \"string\" || !binding.type)\r\n {\r\n throw new Error(`WGSL binding ${binding.id || binding.generatedSymbol || \"unknown\"} has an invalid portable identity`);\r\n }\r\n const identity = `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\r\n if (binding.scopeIdentity !== undefined\r\n && (typeof binding.scopeIdentity !== \"string\" || !binding.scopeIdentity))\r\n {\r\n throw new Error(`WGSL binding ${binding.generatedSymbol} has invalid scope identity ${binding.scopeIdentity || \"<empty>\"}`);\r\n }\r\n const scopeIdentity = binding.scopeIdentity === undefined\r\n ? `${identity}@${visibility}`\r\n : binding.scopeIdentity;\r\n if (binding.identity !== undefined && binding.identity !== identity)\r\n {\r\n throw new Error(`WGSL binding ${binding.generatedSymbol} has inconsistent D3D identity ${binding.identity}`);\r\n }\r\n const hasTransform = binding.transformId !== undefined\r\n || binding.arrayLayerCount !== undefined;\r\n if (hasTransform\r\n && (binding.resourceKind !== \"sampled-resource\"\r\n || typeof binding.transformId !== \"string\" || !binding.transformId\r\n || !Number.isInteger(binding.arrayLayerCount) || binding.arrayLayerCount < 2\r\n || binding.type !== \"texture_2d_array<f32>\"\r\n || binding.texture?.viewDimension !== \"2d-array\"))\r\n {\r\n throw new Error(`WGSL binding ${binding.generatedSymbol} has invalid resource transform metadata`);\r\n }\r\n if (scopeIdentity !== identity && scopeIdentity !== `${identity}@${visibility}`)\r\n {\r\n throw new Error(`WGSL binding ${binding.generatedSymbol} has invalid scope identity ${scopeIdentity}`);\r\n }\r\n const descriptorKeys = [ \"buffer\", \"texture\", \"sampler\" ].filter((key) => binding[key]);\r\n const expectedDescriptors = {\r\n \"uniform-buffer\": [ \"buffer\" ],\r\n \"sampled-resource\": [ \"buffer\", \"texture\" ],\r\n \"storage-resource\": [ \"buffer\" ],\r\n sampler: [ \"sampler\" ]\r\n }[binding.resourceKind];\r\n if (!expectedDescriptors || descriptorKeys.length !== 1 || !expectedDescriptors.includes(descriptorKeys[0]))\r\n {\r\n throw new Error(`WGSL binding ${binding.generatedSymbol} has an invalid ${binding.resourceKind} layout descriptor`);\r\n }\r\n return {\r\n identity,\r\n scopeIdentity,\r\n resourceKind: binding.resourceKind,\r\n generatedSymbol: binding.generatedSymbol,\r\n registerSpace: binding.registerSpace,\r\n registerIndex: binding.registerIndex,\r\n group: binding.group,\r\n binding: binding.binding,\r\n visibility: [ visibility ],\r\n type: binding.type,\r\n ...(hasTransform\r\n ? {\r\n transformId: binding.transformId,\r\n arrayLayerCount: binding.arrayLayerCount\r\n }\r\n : {}),\r\n ...(Number.isInteger(binding.structureStride) ? { structureStride: binding.structureStride } : {}),\r\n ...(binding.buffer ? { buffer: clonePlain(binding.buffer) } : {}),\r\n ...(binding.texture ? { texture: clonePlain(binding.texture) } : {}),\r\n ...(binding.sampler ? { sampler: clonePlain(binding.sampler) } : {})\r\n };\r\n}\r\n\r\nfunction bindingIdentity(binding)\r\n{\r\n return binding.scopeIdentity || `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\r\n}\r\n\r\nfunction bindingFingerprint(binding)\r\n{\r\n return JSON.stringify({\r\n resourceKind: binding.resourceKind,\r\n identity: binding.identity,\r\n scopeIdentity: binding.scopeIdentity,\r\n generatedSymbol: binding.generatedSymbol,\r\n registerSpace: binding.registerSpace,\r\n registerIndex: binding.registerIndex,\r\n group: binding.group,\r\n binding: binding.binding,\r\n type: binding.type,\r\n transformId: binding.transformId ?? null,\r\n arrayLayerCount: binding.arrayLayerCount ?? null,\r\n structureStride: binding.structureStride ?? null,\r\n buffer: binding.buffer || null,\r\n texture: binding.texture || null,\r\n sampler: binding.sampler || null\r\n });\r\n}\r\n\r\nfunction buildLayouts(entries)\r\n{\r\n const passes = new Map();\r\n for (const entry of entries)\r\n {\r\n const passKey = `${entry.techniqueName}.pass${entry.passIndex}`;\r\n if (!passes.has(passKey))\r\n {\r\n passes.set(passKey, { identities: new Map(), baseScopes: new Map(), slots: new Map() });\r\n }\r\n const pass = passes.get(passKey);\r\n const symbols = new Map();\r\n const d3dIdentities = new Set();\r\n for (const source of entry.shader.program.bindings || [])\r\n {\r\n const binding = portableBinding(source, entry.stage);\r\n const identity = bindingIdentity(binding);\r\n if (d3dIdentities.has(binding.identity))\r\n {\r\n throw new Error(`WGSL shader ${entry.key} contains duplicate D3D identity ${binding.identity}`);\r\n }\r\n d3dIdentities.add(binding.identity);\r\n if (!pass.baseScopes.has(binding.identity)) pass.baseScopes.set(binding.identity, new Set());\r\n const baseScopes = pass.baseScopes.get(binding.identity);\r\n if ((identity === binding.identity && Array.from(baseScopes).some((scope) => scope !== binding.identity))\r\n || (identity !== binding.identity && baseScopes.has(binding.identity)))\r\n {\r\n throw new Error(`WGSL set ${passKey} mixes shared and stage-scoped forms for ${binding.identity}`);\r\n }\r\n baseScopes.add(identity);\r\n if (symbols.has(binding.generatedSymbol))\r\n {\r\n throw new Error(`WGSL shader ${entry.key} contains duplicate generated symbol ${binding.generatedSymbol}`);\r\n }\r\n symbols.set(binding.generatedSymbol, identity);\r\n const slot = `${binding.group}:${binding.binding}`;\r\n const existingSlot = pass.slots.get(slot);\r\n if (existingSlot && existingSlot !== identity)\r\n {\r\n throw new Error(`WGSL set ${passKey} assigns ${slot} to both ${existingSlot} and ${identity}`);\r\n }\r\n pass.slots.set(slot, identity);\r\n const existing = pass.identities.get(identity);\r\n if (!existing)\r\n {\r\n pass.identities.set(identity, binding);\r\n continue;\r\n }\r\n if (bindingFingerprint(existing) !== bindingFingerprint(binding))\r\n {\r\n throw new Error(`WGSL set ${passKey} has conflicting layouts for ${identity}`);\r\n }\r\n existing.visibility = Array.from(new Set([ ...existing.visibility, ...binding.visibility ]))\r\n .sort((left, right) => VISIBILITY_ORDER.indexOf(left) - VISIBILITY_ORDER.indexOf(right));\r\n }\r\n }\r\n return Array.from(passes, ([ key, pass ]) =>\r\n {\r\n for (const [ identity, scopes ] of pass.baseScopes)\r\n {\r\n if (scopes.has(identity) && pass.identities.get(identity)?.visibility.length < 2)\r\n {\r\n throw new Error(`WGSL set ${key} shared identity ${identity} does not cover multiple stages`);\r\n }\r\n }\r\n const groups = new Map();\r\n for (const binding of pass.identities.values())\r\n {\r\n if (!groups.has(binding.group)) groups.set(binding.group, []);\r\n groups.get(binding.group).push(binding);\r\n }\r\n return {\r\n key,\r\n techniqueName: key.slice(0, key.lastIndexOf(\".pass\")),\r\n passIndex: Number(/\\.pass([0-9]+)$/.exec(key)?.[1]),\r\n bindGroups: Array.from(groups, ([ group, bindings ]) => ({\r\n group,\r\n bindings: bindings.sort((left, right) => left.binding - right.binding)\r\n })).sort((left, right) => left.group - right.group)\r\n };\r\n }).sort((left, right) =>\r\n compareUtf8(left.techniqueName, right.techniqueName)\r\n || left.passIndex - right.passIndex);\r\n}\r\n\r\nfunction validatePassTopologies(entries)\r\n{\r\n const stagesByPass = new Map();\r\n for (const entry of entries)\r\n {\r\n const passKey = `${entry.techniqueName}.pass${entry.passIndex}`;\r\n if (!stagesByPass.has(passKey)) stagesByPass.set(passKey, []);\r\n stagesByPass.get(passKey).push(entry.stageName);\r\n }\r\n for (const [ passKey, stages ] of stagesByPass)\r\n {\r\n if (stages.includes(\"compute\") && (stages.length !== 1 || stages[0] !== \"compute\"))\r\n {\r\n throw new Error(`WGSL set ${passKey} cannot mix compute and render shader stages`);\r\n }\r\n }\r\n}\r\n\r\nfunction buildResourceTransforms(entries, layouts)\r\n{\r\n const raw = entries.flatMap((entry) => entry.shader.program.resourceTransforms || []);\r\n const transformedBindings = layouts.flatMap((layout) =>\r\n layout.bindGroups.flatMap((group) =>\r\n group.bindings.filter((binding) => binding.transformId)\r\n .map((binding) => ({ layoutKey: layout.key, binding }))));\r\n if (!raw.length)\r\n {\r\n if (transformedBindings.length)\r\n {\r\n throw new Error(\"WGSL set has transformed bindings without resource recipes\");\r\n }\r\n return [];\r\n }\r\n const plan = normalizeResourceTransformPlan({\r\n format: \"CJS_WGSL_RESOURCE_TRANSFORM_PLAN\",\r\n formatVersion: 1,\r\n resourceTransforms: raw\r\n });\r\n const ids = new Set(plan.resourceTransforms.map((transform) => transform.id));\r\n for (const { binding } of transformedBindings)\r\n {\r\n if (!ids.has(binding.transformId))\r\n {\r\n throw new Error(`WGSL binding ${binding.generatedSymbol} references missing transform ${binding.transformId}`);\r\n }\r\n }\r\n for (const transform of plan.resourceTransforms)\r\n {\r\n const stageKey = `${transform.layoutKey}.pixel`;\r\n if (!entries.some((entry) => entry.key === stageKey))\r\n {\r\n throw new Error(`WGSL resource transform ${transform.id} has no fragment shader ${stageKey}`);\r\n }\r\n const links = transformedBindings.filter(({ layoutKey, binding }) =>\r\n layoutKey === transform.layoutKey\r\n && binding.transformId === transform.id);\r\n if (links.length !== 1)\r\n {\r\n throw new Error(`WGSL resource transform ${transform.id} must link exactly one physical binding`);\r\n }\r\n const binding = links[0].binding;\r\n if (binding.identity !== transform.output.identity\r\n || binding.scopeIdentity !== transform.output.scopeIdentity\r\n || binding.texture?.viewDimension !== transform.output.viewDimension\r\n || binding.arrayLayerCount !== transform.output.layerCount)\r\n {\r\n throw new Error(`WGSL resource transform ${transform.id} does not match its physical binding`);\r\n }\r\n const transformLayout = layouts.find((layout) =>\r\n layout.key === transform.layoutKey);\r\n const physicalScopes = new Set((transformLayout?.bindGroups || []).flatMap((group) =>\r\n group.bindings.map((entry) => entry.scopeIdentity)));\r\n for (const input of transform.inputs.slice(1))\r\n {\r\n if (physicalScopes.has(input.scopeIdentity))\r\n {\r\n throw new Error(`WGSL resource transform ${transform.id} retains removed input ${input.scopeIdentity}`);\r\n }\r\n }\r\n }\r\n return plan.resourceTransforms;\r\n}\r\n\r\n/**\r\n * Builds the portable JSON document stored in a CEWGPU `WGSL` chunk.\r\n * Existing numeric bindings are validated and never reassigned.\r\n *\r\n * @param {Array<object>} input Wrapped emitted shader descriptors.\r\n * @returns {object} Frozen CJS_WGSL_SET document.\r\n */\r\nexport function buildWgslSet(input)\r\n{\r\n if (!Array.isArray(input) || !input.length) throw new TypeError(\"BuildWgslSet expects a non-empty shader entry array\");\r\n const entries = input.map(normalizeEntry);\r\n const keys = new Set();\r\n const shaders = entries.map((entry) =>\r\n {\r\n if (keys.has(entry.key)) throw new Error(`WGSL set contains duplicate shader key ${entry.key}`);\r\n keys.add(entry.key);\r\n return {\r\n key: entry.key,\r\n techniqueName: entry.techniqueName,\r\n passIndex: entry.passIndex,\r\n stageName: entry.stageName,\r\n stage: entry.stage,\r\n stageType: entry.stageType,\r\n entryPoint: entry.shader.entryPoint,\r\n code: entry.shader.code,\r\n sourceMap: clonePlain(entry.shader.sourceMap || []),\r\n ...(entry.threadGroupSize ? { threadGroupSize: clonePlain(entry.threadGroupSize) } : {})\r\n };\r\n }).sort((left, right) =>\r\n compareUtf8(left.techniqueName, right.techniqueName)\r\n || left.passIndex - right.passIndex\r\n || STAGE_NAME_ORDER.indexOf(left.stageName) - STAGE_NAME_ORDER.indexOf(right.stageName));\r\n validatePassTopologies(entries);\r\n const layouts = buildLayouts(entries);\r\n const resourceTransforms = buildResourceTransforms(entries, layouts);\r\n return deepFreeze({\r\n format: \"CJS_WGSL_SET\",\r\n formatVersion: WGSL_SET_VERSION,\r\n shaders,\r\n layouts,\r\n ...(resourceTransforms.length ? { resourceTransforms } : {})\r\n });\r\n}\r\n"],"names":["WGSL_SET_VERSION","KEY_PATTERN","KEY_STAGE","Object","freeze","vertex","pixel","compute","STAGE_TYPES","STAGE_NAME_ORDER","VISIBILITY_ORDER","clonePlain","value","Array","isArray","map","fromEntries","entries","key","entry","deepFreeze","isFrozen","values","normalizeEntry","index","shader","format","formatVersion","code","entryPoint","sourceMap","program","TypeError","match","exec","Error","techniqueName","passIndex","Number","stageName","stage","threadGroupSize","length","some","isSafeInteger","undefined","stageType","portableBinding","binding","visibility","isInteger","group","registerSpace","registerIndex","resourceKind","generatedSymbol","type","id","identity","scopeIdentity","hasTransform","transformId","arrayLayerCount","texture","viewDimension","descriptorKeys","filter","expectedDescriptors","sampler","includes","structureStride","buffer","bindingIdentity","bindingFingerprint","JSON","stringify","buildLayouts","passes","Map","passKey","has","set","identities","baseScopes","slots","pass","get","symbols","d3dIdentities","Set","source","bindings","add","from","scope","slot","existingSlot","existing","sort","left","right","indexOf","scopes","groups","push","slice","lastIndexOf","bindGroups","compareUtf8","validatePassTopologies","stagesByPass","stages","buildResourceTransforms","layouts","raw","flatMap","resourceTransforms","transformedBindings","layout","layoutKey","plan","normalizeResourceTransformPlan","ids","transform","stageKey","links","output","layerCount","transformLayout","find","physicalScopes","input","inputs","buildWgslSet","keys","shaders"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildWgslSet.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/buildWgslSet.js"],"sourcesContent":["import { normalizeResourceTransformPlan } from \"./buildResourceTransformPlan.js\";\nimport { compareUtf8 } from \"../../../../format/compareUtf8.js\";\n\nexport const WGSL_SET_VERSION = 3;\n\nconst KEY_PATTERN = /^(.*)\\.pass([0-9]+)\\.(vertex|pixel|compute)$/;\nconst KEY_STAGE = Object.freeze({ vertex: \"vertex\", pixel: \"fragment\", compute: \"compute\" });\nconst STAGE_TYPES = Object.freeze({ vertex: 0, pixel: 1, compute: 2 });\nconst STAGE_NAME_ORDER = Object.freeze([ \"vertex\", \"pixel\", \"compute\" ]);\n\nconst VISIBILITY_ORDER = Object.freeze([ \"vertex\", \"fragment\", \"compute\" ]);\n\nfunction clonePlain(value)\n{\n if (Array.isArray(value)) return value.map(clonePlain);\n if (value && typeof value === \"object\")\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [ key, clonePlain(entry) ]));\n }\n return value;\n}\n\nfunction deepFreeze(value)\n{\n if (!value || typeof value !== \"object\" || Object.isFrozen(value)) return value;\n for (const entry of Object.values(value)) deepFreeze(entry);\n return Object.freeze(value);\n}\n\nfunction normalizeEntry(entry, index)\n{\n const shader = entry?.shader;\n if (shader?.format !== \"CJS_WGSL_SHADER\" || shader.formatVersion !== 1\n || typeof shader.code !== \"string\" || !shader.code\n || typeof shader.entryPoint !== \"string\" || !shader.entryPoint\n || !Array.isArray(shader.sourceMap)\n || shader.program?.format !== \"CJS_TYPED_SHADER\")\n {\n throw new TypeError(`WGSL set entry ${index} requires a CJS_WGSL_SHADER descriptor`);\n }\n const key = typeof entry.key === \"string\" ? entry.key : \"\";\n const match = KEY_PATTERN.exec(key);\n if (!match || !match[1]) throw new Error(`WGSL set entry ${index} has malformed key ${key || \"<empty>\"}`);\n const techniqueName = match[1];\n const passIndex = Number(match[2]);\n const stageName = match[3];\n if (shader.stage !== KEY_STAGE[stageName])\n {\n throw new Error(`WGSL set key ${key} does not match shader stage ${shader.stage}`);\n }\n let threadGroupSize = null;\n if (stageName === \"compute\")\n {\n threadGroupSize = shader.threadGroupSize;\n if (!Array.isArray(threadGroupSize) || threadGroupSize.length !== 3\n || threadGroupSize.some((value) => !Number.isSafeInteger(value) || value < 1))\n {\n throw new Error(`WGSL compute shader ${key} requires a positive three-dimensional threadGroupSize`);\n }\n }\n else if (shader.threadGroupSize !== undefined && shader.threadGroupSize !== null)\n {\n throw new Error(`WGSL render shader ${key} cannot declare threadGroupSize`);\n }\n return {\n shader,\n stage: shader.stage,\n techniqueName,\n passIndex,\n stageName,\n stageType: STAGE_TYPES[stageName],\n ...(threadGroupSize ? { threadGroupSize: clonePlain(threadGroupSize) } : {}),\n key\n };\n}\n\nfunction portableBinding(binding, visibility)\n{\n if (!Number.isInteger(binding.group) || binding.group < 0\n || !Number.isInteger(binding.binding) || binding.binding < 0\n || !Number.isInteger(binding.registerSpace) || binding.registerSpace < 0\n || !Number.isInteger(binding.registerIndex) || binding.registerIndex < 0\n || typeof binding.resourceKind !== \"string\" || !binding.resourceKind\n || typeof binding.generatedSymbol !== \"string\" || !binding.generatedSymbol\n || typeof binding.type !== \"string\" || !binding.type)\n {\n throw new Error(`WGSL binding ${binding.id || binding.generatedSymbol || \"unknown\"} has an invalid portable identity`);\n }\n const identity = `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\n if (binding.scopeIdentity !== undefined\n && (typeof binding.scopeIdentity !== \"string\" || !binding.scopeIdentity))\n {\n throw new Error(`WGSL binding ${binding.generatedSymbol} has invalid scope identity ${binding.scopeIdentity || \"<empty>\"}`);\n }\n const scopeIdentity = binding.scopeIdentity === undefined\n ? `${identity}@${visibility}`\n : binding.scopeIdentity;\n if (binding.identity !== undefined && binding.identity !== identity)\n {\n throw new Error(`WGSL binding ${binding.generatedSymbol} has inconsistent D3D identity ${binding.identity}`);\n }\n const hasTransform = binding.transformId !== undefined\n || binding.arrayLayerCount !== undefined;\n if (hasTransform\n && (binding.resourceKind !== \"sampled-resource\"\n || typeof binding.transformId !== \"string\" || !binding.transformId\n || !Number.isInteger(binding.arrayLayerCount) || binding.arrayLayerCount < 2\n || binding.type !== \"texture_2d_array<f32>\"\n || binding.texture?.viewDimension !== \"2d-array\"))\n {\n throw new Error(`WGSL binding ${binding.generatedSymbol} has invalid resource transform metadata`);\n }\n if (scopeIdentity !== identity && scopeIdentity !== `${identity}@${visibility}`)\n {\n throw new Error(`WGSL binding ${binding.generatedSymbol} has invalid scope identity ${scopeIdentity}`);\n }\n const descriptorKeys = [ \"buffer\", \"texture\", \"sampler\" ].filter((key) => binding[key]);\n const expectedDescriptors = {\n \"uniform-buffer\": [ \"buffer\" ],\n \"sampled-resource\": [ \"buffer\", \"texture\" ],\n \"storage-resource\": [ \"buffer\" ],\n sampler: [ \"sampler\" ]\n }[binding.resourceKind];\n if (!expectedDescriptors || descriptorKeys.length !== 1 || !expectedDescriptors.includes(descriptorKeys[0]))\n {\n throw new Error(`WGSL binding ${binding.generatedSymbol} has an invalid ${binding.resourceKind} layout descriptor`);\n }\n return {\n identity,\n scopeIdentity,\n resourceKind: binding.resourceKind,\n generatedSymbol: binding.generatedSymbol,\n registerSpace: binding.registerSpace,\n registerIndex: binding.registerIndex,\n group: binding.group,\n binding: binding.binding,\n visibility: [ visibility ],\n type: binding.type,\n ...(hasTransform\n ? {\n transformId: binding.transformId,\n arrayLayerCount: binding.arrayLayerCount\n }\n : {}),\n ...(Number.isInteger(binding.structureStride) ? { structureStride: binding.structureStride } : {}),\n ...(binding.buffer ? { buffer: clonePlain(binding.buffer) } : {}),\n ...(binding.texture ? { texture: clonePlain(binding.texture) } : {}),\n ...(binding.sampler ? { sampler: clonePlain(binding.sampler) } : {})\n };\n}\n\nfunction bindingIdentity(binding)\n{\n return binding.scopeIdentity || `${binding.resourceKind}:${binding.registerSpace}:${binding.registerIndex}`;\n}\n\nfunction bindingFingerprint(binding)\n{\n return JSON.stringify({\n resourceKind: binding.resourceKind,\n identity: binding.identity,\n scopeIdentity: binding.scopeIdentity,\n generatedSymbol: binding.generatedSymbol,\n registerSpace: binding.registerSpace,\n registerIndex: binding.registerIndex,\n group: binding.group,\n binding: binding.binding,\n type: binding.type,\n transformId: binding.transformId ?? null,\n arrayLayerCount: binding.arrayLayerCount ?? null,\n structureStride: binding.structureStride ?? null,\n buffer: binding.buffer || null,\n texture: binding.texture || null,\n sampler: binding.sampler || null\n });\n}\n\nfunction buildLayouts(entries)\n{\n const passes = new Map();\n for (const entry of entries)\n {\n const passKey = `${entry.techniqueName}.pass${entry.passIndex}`;\n if (!passes.has(passKey))\n {\n passes.set(passKey, { identities: new Map(), baseScopes: new Map(), slots: new Map() });\n }\n const pass = passes.get(passKey);\n const symbols = new Map();\n const d3dIdentities = new Set();\n for (const source of entry.shader.program.bindings || [])\n {\n const binding = portableBinding(source, entry.stage);\n const identity = bindingIdentity(binding);\n if (d3dIdentities.has(binding.identity))\n {\n throw new Error(`WGSL shader ${entry.key} contains duplicate D3D identity ${binding.identity}`);\n }\n d3dIdentities.add(binding.identity);\n if (!pass.baseScopes.has(binding.identity)) pass.baseScopes.set(binding.identity, new Set());\n const baseScopes = pass.baseScopes.get(binding.identity);\n if ((identity === binding.identity && Array.from(baseScopes).some((scope) => scope !== binding.identity))\n || (identity !== binding.identity && baseScopes.has(binding.identity)))\n {\n throw new Error(`WGSL set ${passKey} mixes shared and stage-scoped forms for ${binding.identity}`);\n }\n baseScopes.add(identity);\n if (symbols.has(binding.generatedSymbol))\n {\n throw new Error(`WGSL shader ${entry.key} contains duplicate generated symbol ${binding.generatedSymbol}`);\n }\n symbols.set(binding.generatedSymbol, identity);\n const slot = `${binding.group}:${binding.binding}`;\n const existingSlot = pass.slots.get(slot);\n if (existingSlot && existingSlot !== identity)\n {\n throw new Error(`WGSL set ${passKey} assigns ${slot} to both ${existingSlot} and ${identity}`);\n }\n pass.slots.set(slot, identity);\n const existing = pass.identities.get(identity);\n if (!existing)\n {\n pass.identities.set(identity, binding);\n continue;\n }\n if (bindingFingerprint(existing) !== bindingFingerprint(binding))\n {\n throw new Error(`WGSL set ${passKey} has conflicting layouts for ${identity}`);\n }\n existing.visibility = Array.from(new Set([ ...existing.visibility, ...binding.visibility ]))\n .sort((left, right) => VISIBILITY_ORDER.indexOf(left) - VISIBILITY_ORDER.indexOf(right));\n }\n }\n return Array.from(passes, ([ key, pass ]) =>\n {\n for (const [ identity, scopes ] of pass.baseScopes)\n {\n if (scopes.has(identity) && pass.identities.get(identity)?.visibility.length < 2)\n {\n throw new Error(`WGSL set ${key} shared identity ${identity} does not cover multiple stages`);\n }\n }\n const groups = new Map();\n for (const binding of pass.identities.values())\n {\n if (!groups.has(binding.group)) groups.set(binding.group, []);\n groups.get(binding.group).push(binding);\n }\n return {\n key,\n techniqueName: key.slice(0, key.lastIndexOf(\".pass\")),\n passIndex: Number(/\\.pass([0-9]+)$/.exec(key)?.[1]),\n bindGroups: Array.from(groups, ([ group, bindings ]) => ({\n group,\n bindings: bindings.sort((left, right) => left.binding - right.binding)\n })).sort((left, right) => left.group - right.group)\n };\n }).sort((left, right) =>\n compareUtf8(left.techniqueName, right.techniqueName)\n || left.passIndex - right.passIndex);\n}\n\nfunction validatePassTopologies(entries)\n{\n const stagesByPass = new Map();\n for (const entry of entries)\n {\n const passKey = `${entry.techniqueName}.pass${entry.passIndex}`;\n if (!stagesByPass.has(passKey)) stagesByPass.set(passKey, []);\n stagesByPass.get(passKey).push(entry.stageName);\n }\n for (const [ passKey, stages ] of stagesByPass)\n {\n if (stages.includes(\"compute\") && (stages.length !== 1 || stages[0] !== \"compute\"))\n {\n throw new Error(`WGSL set ${passKey} cannot mix compute and render shader stages`);\n }\n }\n}\n\nfunction buildResourceTransforms(entries, layouts)\n{\n const raw = entries.flatMap((entry) => entry.shader.program.resourceTransforms || []);\n const transformedBindings = layouts.flatMap((layout) =>\n layout.bindGroups.flatMap((group) =>\n group.bindings.filter((binding) => binding.transformId)\n .map((binding) => ({ layoutKey: layout.key, binding }))));\n if (!raw.length)\n {\n if (transformedBindings.length)\n {\n throw new Error(\"WGSL set has transformed bindings without resource recipes\");\n }\n return [];\n }\n const plan = normalizeResourceTransformPlan({\n format: \"CJS_WGSL_RESOURCE_TRANSFORM_PLAN\",\n formatVersion: 1,\n resourceTransforms: raw\n });\n const ids = new Set(plan.resourceTransforms.map((transform) => transform.id));\n for (const { binding } of transformedBindings)\n {\n if (!ids.has(binding.transformId))\n {\n throw new Error(`WGSL binding ${binding.generatedSymbol} references missing transform ${binding.transformId}`);\n }\n }\n for (const transform of plan.resourceTransforms)\n {\n const stageKey = `${transform.layoutKey}.pixel`;\n if (!entries.some((entry) => entry.key === stageKey))\n {\n throw new Error(`WGSL resource transform ${transform.id} has no fragment shader ${stageKey}`);\n }\n const links = transformedBindings.filter(({ layoutKey, binding }) =>\n layoutKey === transform.layoutKey\n && binding.transformId === transform.id);\n if (links.length !== 1)\n {\n throw new Error(`WGSL resource transform ${transform.id} must link exactly one physical binding`);\n }\n const binding = links[0].binding;\n if (binding.identity !== transform.output.identity\n || binding.scopeIdentity !== transform.output.scopeIdentity\n || binding.texture?.viewDimension !== transform.output.viewDimension\n || binding.arrayLayerCount !== transform.output.layerCount)\n {\n throw new Error(`WGSL resource transform ${transform.id} does not match its physical binding`);\n }\n const transformLayout = layouts.find((layout) =>\n layout.key === transform.layoutKey);\n const physicalScopes = new Set((transformLayout?.bindGroups || []).flatMap((group) =>\n group.bindings.map((entry) => entry.scopeIdentity)));\n for (const input of transform.inputs.slice(1))\n {\n if (physicalScopes.has(input.scopeIdentity))\n {\n throw new Error(`WGSL resource transform ${transform.id} retains removed input ${input.scopeIdentity}`);\n }\n }\n }\n return plan.resourceTransforms;\n}\n\n/**\n * Builds the portable JSON document stored in a Carbon WebGPU `WGSL` chunk.\n * Existing numeric bindings are validated and never reassigned.\n *\n * @param {Array<object>} input Wrapped emitted shader descriptors.\n * @returns {object} Frozen CJS_WGSL_SET document.\n */\nexport function buildWgslSet(input)\n{\n if (!Array.isArray(input) || !input.length) throw new TypeError(\"BuildWgslSet expects a non-empty shader entry array\");\n const entries = input.map(normalizeEntry);\n const keys = new Set();\n const shaders = entries.map((entry) =>\n {\n if (keys.has(entry.key)) throw new Error(`WGSL set contains duplicate shader key ${entry.key}`);\n keys.add(entry.key);\n return {\n key: entry.key,\n techniqueName: entry.techniqueName,\n passIndex: entry.passIndex,\n stageName: entry.stageName,\n stage: entry.stage,\n stageType: entry.stageType,\n entryPoint: entry.shader.entryPoint,\n code: entry.shader.code,\n sourceMap: clonePlain(entry.shader.sourceMap || []),\n ...(entry.threadGroupSize ? { threadGroupSize: clonePlain(entry.threadGroupSize) } : {})\n };\n }).sort((left, right) =>\n compareUtf8(left.techniqueName, right.techniqueName)\n || left.passIndex - right.passIndex\n || STAGE_NAME_ORDER.indexOf(left.stageName) - STAGE_NAME_ORDER.indexOf(right.stageName));\n validatePassTopologies(entries);\n const layouts = buildLayouts(entries);\n const resourceTransforms = buildResourceTransforms(entries, layouts);\n return deepFreeze({\n format: \"CJS_WGSL_SET\",\n formatVersion: WGSL_SET_VERSION,\n shaders,\n layouts,\n ...(resourceTransforms.length ? { resourceTransforms } : {})\n });\n}\n"],"names":["WGSL_SET_VERSION","KEY_PATTERN","KEY_STAGE","Object","freeze","vertex","pixel","compute","STAGE_TYPES","STAGE_NAME_ORDER","VISIBILITY_ORDER","clonePlain","value","Array","isArray","map","fromEntries","entries","key","entry","deepFreeze","isFrozen","values","normalizeEntry","index","shader","format","formatVersion","code","entryPoint","sourceMap","program","TypeError","match","exec","Error","techniqueName","passIndex","Number","stageName","stage","threadGroupSize","length","some","isSafeInteger","undefined","stageType","portableBinding","binding","visibility","isInteger","group","registerSpace","registerIndex","resourceKind","generatedSymbol","type","id","identity","scopeIdentity","hasTransform","transformId","arrayLayerCount","texture","viewDimension","descriptorKeys","filter","expectedDescriptors","sampler","includes","structureStride","buffer","bindingIdentity","bindingFingerprint","JSON","stringify","buildLayouts","passes","Map","passKey","has","set","identities","baseScopes","slots","pass","get","symbols","d3dIdentities","Set","source","bindings","add","from","scope","slot","existingSlot","existing","sort","left","right","indexOf","scopes","groups","push","slice","lastIndexOf","bindGroups","compareUtf8","validatePassTopologies","stagesByPass","stages","buildResourceTransforms","layouts","raw","flatMap","resourceTransforms","transformedBindings","layout","layoutKey","plan","normalizeResourceTransformPlan","ids","transform","stageKey","links","output","layerCount","transformLayout","find","physicalScopes","input","inputs","buildWgslSet","keys","shaders"],"mappings":"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"}
|