@carbonenginejs/runtime-resource 0.12.1 → 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
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recognises Carbon's local-light resource family from reflection alone.
|
|
3
|
+
*
|
|
4
|
+
* Carbon puts local lights in two structured buffers plus an optional profile
|
|
5
|
+
* texture. On a backend with storage buffers this needs no attention at all —
|
|
6
|
+
* WebGPU binds them natively and loses nothing. WebGL 2 has no structured
|
|
7
|
+
* buffers, so the same two resources have to be re-expressed as data textures,
|
|
8
|
+
* and something has to say which registers they were.
|
|
9
|
+
*
|
|
10
|
+
* That "which registers" question is what this module answers, and it is
|
|
11
|
+
* backend-neutral for the same reason the detail-map recogniser is: it is a fact
|
|
12
|
+
* about Carbon's resources, not about a shading language. The registers are not
|
|
13
|
+
* fixed — one permutation binds the family at t11/t12/t13 and another at
|
|
14
|
+
* t13/t14/t15 — so this is name-driven and must stay that way.
|
|
15
|
+
*
|
|
16
|
+
* See docs/contracts/webgl2-texture-budget.md for why the two units matter.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** The structured buffers, both required for the family to be recognised. */
|
|
20
|
+
const LIGHT_INDEX_BUFFER = "LightIndexBuffer";
|
|
21
|
+
const LIGHT_DATA_BUFFER = "LightBuffer";
|
|
22
|
+
|
|
23
|
+
/** The profile texture, which is optional. */
|
|
24
|
+
const LIGHT_PROFILE_ARRAY = "LightProfileArray";
|
|
25
|
+
|
|
26
|
+
/** Every resource name in the family, for callers that need to strip them. */
|
|
27
|
+
const LOCAL_LIGHT_RESOURCE_NAMES = Object.freeze([LIGHT_INDEX_BUFFER, LIGHT_DATA_BUFFER, LIGHT_PROFILE_ARRAY]);
|
|
28
|
+
|
|
29
|
+
/** Carbon's resource type code for a structured buffer, as `BoneTransforms` uses. */
|
|
30
|
+
const CARBON_STRUCTURED_BUFFER = 7;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Recognises the local-light family in one stage's reflected resources.
|
|
34
|
+
*
|
|
35
|
+
* Both structured buffers are required. The profile array is not: some
|
|
36
|
+
* permutations never sample it, and a lowering may substitute neutral
|
|
37
|
+
* attenuation for it. Returning a plan with `profileRegister: null` is a
|
|
38
|
+
* different statement from returning null, and callers depend on the difference.
|
|
39
|
+
*
|
|
40
|
+
* @param {Array<object>} resources Reflected resources, each carrying
|
|
41
|
+
* `registerIndex`, `name` and `type`.
|
|
42
|
+
* @returns {object|null} Frozen plan, or null when the family is absent.
|
|
43
|
+
*/
|
|
44
|
+
function recogniseLocalLightFamily(resources) {
|
|
45
|
+
const byName = new Map();
|
|
46
|
+
for (const resource of resources ?? []) {
|
|
47
|
+
const value = resource?.toJSON?.() ?? resource;
|
|
48
|
+
const name = value?.name;
|
|
49
|
+
if (typeof name !== "string" || !LOCAL_LIGHT_RESOURCE_NAMES.includes(name)) continue;
|
|
50
|
+
if (byName.has(name)) return null;
|
|
51
|
+
byName.set(name, value);
|
|
52
|
+
}
|
|
53
|
+
const index = byName.get(LIGHT_INDEX_BUFFER);
|
|
54
|
+
const data = byName.get(LIGHT_DATA_BUFFER);
|
|
55
|
+
if (!index || !data) return null;
|
|
56
|
+
|
|
57
|
+
// Both must actually be structured buffers. A same-named 2D texture is not
|
|
58
|
+
// this family, and lowering it as though it were would misread every light.
|
|
59
|
+
if (index.type !== CARBON_STRUCTURED_BUFFER || data.type !== CARBON_STRUCTURED_BUFFER) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
if (!Number.isInteger(index.registerIndex) || !Number.isInteger(data.registerIndex)) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const profile = byName.get(LIGHT_PROFILE_ARRAY);
|
|
66
|
+
return Object.freeze({
|
|
67
|
+
indexRegister: index.registerIndex,
|
|
68
|
+
dataRegister: data.registerIndex,
|
|
69
|
+
profileRegister: Number.isInteger(profile?.registerIndex) ? profile.registerIndex : null,
|
|
70
|
+
registers: Object.freeze([index.registerIndex, data.registerIndex, profile?.registerIndex].filter(register => Number.isInteger(register)).sort((a, b) => a - b))
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Removes the local-light resource bindings from a binding manifest.
|
|
76
|
+
*
|
|
77
|
+
* Needed when the family is dropped rather than lowered: the emitter no longer
|
|
78
|
+
* declares those resources, and a consumer that still sees them in the manifest
|
|
79
|
+
* tries to build textures for resources the shader does not have.
|
|
80
|
+
*
|
|
81
|
+
* Mutates in place, matching the manifest's own conventions.
|
|
82
|
+
*
|
|
83
|
+
* @param {object} manifestJson Serialized binding manifest.
|
|
84
|
+
* @returns {object} The same manifest, light resource bindings removed.
|
|
85
|
+
*/
|
|
86
|
+
function stripLocalLightBindings(manifestJson) {
|
|
87
|
+
for (const stage of manifestJson?.stages ?? []) {
|
|
88
|
+
stage.bindings = (stage.bindings ?? []).filter(binding => {
|
|
89
|
+
if (binding?.kind !== "resource") return true;
|
|
90
|
+
const name = binding.metadataName || binding.carbon?.name;
|
|
91
|
+
return !LOCAL_LIGHT_RESOURCE_NAMES.includes(name);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return manifestJson;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Transform family recording a profile array replaced by a constant. */
|
|
98
|
+
const LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY = "local-light-profile-neutral";
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Builds the resource transform recording that `LightProfileArray` was replaced
|
|
102
|
+
* by a constant one.
|
|
103
|
+
*
|
|
104
|
+
* A transform rather than a binding because nothing is bound: the resource is
|
|
105
|
+
* gone and its samples are a literal. What has to survive is the *statement*
|
|
106
|
+
* that it was dropped deliberately, since a described Carbon resource with no
|
|
107
|
+
* declaration and no record is exactly what the integrity rules treat as lost.
|
|
108
|
+
*
|
|
109
|
+
* The single input is the profile register itself. `detail-map-array` lists
|
|
110
|
+
* several inputs because it merges them into one output; this family has no
|
|
111
|
+
* output at all, so its input list names only the resource that went away.
|
|
112
|
+
*
|
|
113
|
+
* @param {object} plan Recognised local-light family.
|
|
114
|
+
* @param {string} layoutKey Enclosing pass key.
|
|
115
|
+
* @returns {object|null} Transform record, or null when there is no profile.
|
|
116
|
+
*/
|
|
117
|
+
function localLightProfileNeutralTransformFor(plan, layoutKey) {
|
|
118
|
+
if (!Number.isInteger(plan?.profileRegister)) return null;
|
|
119
|
+
const registerSpace = plan.registerSpace ?? 0;
|
|
120
|
+
return {
|
|
121
|
+
id: `${layoutKey}:${LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY}:sampled-resource:${registerSpace}:${plan.profileRegister}`,
|
|
122
|
+
family: LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY,
|
|
123
|
+
layoutKey,
|
|
124
|
+
inputs: [{
|
|
125
|
+
registerSpace,
|
|
126
|
+
registerIndex: plan.profileRegister,
|
|
127
|
+
parameter: LIGHT_PROFILE_ARRAY
|
|
128
|
+
}]
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export { LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY, LOCAL_LIGHT_RESOURCE_NAMES, localLightProfileNeutralTransformFor, recogniseLocalLightFamily, stripLocalLightBindings };
|
|
133
|
+
//# sourceMappingURL=localLightFamily.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localLightFamily.js","sources":["../../../../../src/formats/hlsl/core/localLightFamily.js"],"sourcesContent":["/**\n * Recognises Carbon's local-light resource family from reflection alone.\n *\n * Carbon puts local lights in two structured buffers plus an optional profile\n * texture. On a backend with storage buffers this needs no attention at all —\n * WebGPU binds them natively and loses nothing. WebGL 2 has no structured\n * buffers, so the same two resources have to be re-expressed as data textures,\n * and something has to say which registers they were.\n *\n * That \"which registers\" question is what this module answers, and it is\n * backend-neutral for the same reason the detail-map recogniser is: it is a fact\n * about Carbon's resources, not about a shading language. The registers are not\n * fixed — one permutation binds the family at t11/t12/t13 and another at\n * t13/t14/t15 — so this is name-driven and must stay that way.\n *\n * See docs/contracts/webgl2-texture-budget.md for why the two units matter.\n */\n\n/** The structured buffers, both required for the family to be recognised. */\nconst LIGHT_INDEX_BUFFER = \"LightIndexBuffer\";\nconst LIGHT_DATA_BUFFER = \"LightBuffer\";\n\n/** The profile texture, which is optional. */\nconst LIGHT_PROFILE_ARRAY = \"LightProfileArray\";\n\n/** Every resource name in the family, for callers that need to strip them. */\nexport const LOCAL_LIGHT_RESOURCE_NAMES = Object.freeze([\n LIGHT_INDEX_BUFFER,\n LIGHT_DATA_BUFFER,\n LIGHT_PROFILE_ARRAY\n]);\n\n/** Carbon's resource type code for a structured buffer, as `BoneTransforms` uses. */\nconst CARBON_STRUCTURED_BUFFER = 7;\n\n/**\n * Recognises the local-light family in one stage's reflected resources.\n *\n * Both structured buffers are required. The profile array is not: some\n * permutations never sample it, and a lowering may substitute neutral\n * attenuation for it. Returning a plan with `profileRegister: null` is a\n * different statement from returning null, and callers depend on the difference.\n *\n * @param {Array<object>} resources Reflected resources, each carrying\n * `registerIndex`, `name` and `type`.\n * @returns {object|null} Frozen plan, or null when the family is absent.\n */\nexport function recogniseLocalLightFamily(resources)\n{\n const byName = new Map();\n\n for (const resource of resources ?? [])\n {\n const value = resource?.toJSON?.() ?? resource;\n const name = value?.name;\n if (typeof name !== \"string\" || !LOCAL_LIGHT_RESOURCE_NAMES.includes(name)) continue;\n if (byName.has(name)) return null;\n byName.set(name, value);\n }\n\n const index = byName.get(LIGHT_INDEX_BUFFER);\n const data = byName.get(LIGHT_DATA_BUFFER);\n if (!index || !data) return null;\n\n // Both must actually be structured buffers. A same-named 2D texture is not\n // this family, and lowering it as though it were would misread every light.\n if (index.type !== CARBON_STRUCTURED_BUFFER || data.type !== CARBON_STRUCTURED_BUFFER)\n {\n return null;\n }\n if (!Number.isInteger(index.registerIndex) || !Number.isInteger(data.registerIndex))\n {\n return null;\n }\n\n const profile = byName.get(LIGHT_PROFILE_ARRAY);\n\n return Object.freeze({\n indexRegister: index.registerIndex,\n dataRegister: data.registerIndex,\n profileRegister: Number.isInteger(profile?.registerIndex) ? profile.registerIndex : null,\n registers: Object.freeze(\n [ index.registerIndex, data.registerIndex, profile?.registerIndex ]\n .filter((register) => Number.isInteger(register))\n .sort((a, b) => a - b)\n )\n });\n}\n\n/**\n * Removes the local-light resource bindings from a binding manifest.\n *\n * Needed when the family is dropped rather than lowered: the emitter no longer\n * declares those resources, and a consumer that still sees them in the manifest\n * tries to build textures for resources the shader does not have.\n *\n * Mutates in place, matching the manifest's own conventions.\n *\n * @param {object} manifestJson Serialized binding manifest.\n * @returns {object} The same manifest, light resource bindings removed.\n */\nexport function stripLocalLightBindings(manifestJson)\n{\n for (const stage of manifestJson?.stages ?? [])\n {\n stage.bindings = (stage.bindings ?? []).filter((binding) =>\n {\n if (binding?.kind !== \"resource\") return true;\n const name = binding.metadataName || binding.carbon?.name;\n return !LOCAL_LIGHT_RESOURCE_NAMES.includes(name);\n });\n }\n return manifestJson;\n}\n\n/** Transform family recording a profile array replaced by a constant. */\nexport const LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY = \"local-light-profile-neutral\";\n\n/**\n * Builds the resource transform recording that `LightProfileArray` was replaced\n * by a constant one.\n *\n * A transform rather than a binding because nothing is bound: the resource is\n * gone and its samples are a literal. What has to survive is the *statement*\n * that it was dropped deliberately, since a described Carbon resource with no\n * declaration and no record is exactly what the integrity rules treat as lost.\n *\n * The single input is the profile register itself. `detail-map-array` lists\n * several inputs because it merges them into one output; this family has no\n * output at all, so its input list names only the resource that went away.\n *\n * @param {object} plan Recognised local-light family.\n * @param {string} layoutKey Enclosing pass key.\n * @returns {object|null} Transform record, or null when there is no profile.\n */\nexport function localLightProfileNeutralTransformFor(plan, layoutKey)\n{\n if (!Number.isInteger(plan?.profileRegister)) return null;\n\n const registerSpace = plan.registerSpace ?? 0;\n return {\n id: `${layoutKey}:${LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY}:sampled-resource:${registerSpace}:${plan.profileRegister}`,\n family: LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY,\n layoutKey,\n inputs: [ {\n registerSpace,\n registerIndex: plan.profileRegister,\n parameter: LIGHT_PROFILE_ARRAY\n } ]\n };\n}\n\nexport default recogniseLocalLightFamily;\n"],"names":["LIGHT_INDEX_BUFFER","LIGHT_DATA_BUFFER","LIGHT_PROFILE_ARRAY","LOCAL_LIGHT_RESOURCE_NAMES","Object","freeze","CARBON_STRUCTURED_BUFFER","recogniseLocalLightFamily","resources","byName","Map","resource","value","toJSON","name","includes","has","set","index","get","data","type","Number","isInteger","registerIndex","profile","indexRegister","dataRegister","profileRegister","registers","filter","register","sort","a","b","stripLocalLightBindings","manifestJson","stage","stages","bindings","binding","kind","metadataName","carbon","LOCAL_LIGHT_PROFILE_NEUTRAL_FAMILY","localLightProfileNeutralTransformFor","plan","layoutKey","registerSpace","id","family","inputs","parameter"],"mappings":"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"}
|