@carbonenginejs/runtime-resource 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/NOTICE +32 -32
- package/README.md +129 -129
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3858
- package/dist/CjsResManFetchProvider.js +94 -94
- package/dist/CjsResManWorkQueue.js +301 -301
- package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
- package/dist/format/CjsBlueReader.js +358 -358
- package/dist/format/CjsByteReader.js +310 -310
- package/dist/format/CjsByteWriter.js +242 -242
- package/dist/format/CjsFormat.js +223 -223
- package/dist/format/CjsFormatError.js +41 -41
- package/dist/format/CjsReader.js +22 -22
- package/dist/format/CjsResourceProbe.js +279 -279
- package/dist/format/CjsStringTable.js +268 -268
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +265 -265
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -182
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -321
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -1147
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -197
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -146
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/sha256.js +114 -114
- package/dist/format/index.js +11 -11
- package/dist/format/payloadContract.js +193 -193
- package/dist/formats/black/CjsBlackFormat.js +310 -310
- package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
- package/dist/formats/black/core/CjsBlackReader.js +764 -764
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
- package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +199 -199
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +175 -175
- package/dist/formats/bnk/core/busNodes.js +252 -252
- package/dist/formats/bnk/core/effectNodes.js +147 -147
- package/dist/formats/bnk/core/eventAction.js +416 -416
- package/dist/formats/bnk/core/globalSettings.js +215 -215
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -512
- package/dist/formats/bnk/core/musicNodes.js +540 -540
- package/dist/formats/bnk/core/nodeBase.js +553 -553
- package/dist/formats/bnk/core/sfxNodes.js +632 -632
- package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +194 -194
- package/dist/formats/cmf/core/buffers.js +237 -237
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +318 -318
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +374 -374
- package/dist/formats/cmf/core/shared.js +277 -277
- package/dist/formats/cmf/core/writer.js +571 -571
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +200 -200
- package/dist/formats/dds/core/bc6h.js +298 -298
- package/dist/formats/dds/core/bc7.js +272 -272
- package/dist/formats/dds/core/helpers.js +901 -862
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +187 -142
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/formats/dxbc/core/DxbcReader.js +266 -266
- package/dist/formats/dxbc/core/container.js +169 -169
- package/dist/formats/dxbc/core/decoder.js +789 -789
- package/dist/formats/dxbc/core/disassemble.js +240 -0
- package/dist/formats/dxbc/core/disassemble.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -19
- package/dist/formats/dxbc/core/helpers.js +220 -220
- package/dist/formats/dxbc/core/opcodes.js +45 -45
- package/dist/formats/dxbc/core/program.js +91 -91
- package/dist/formats/dxbc/core/signature.js +172 -172
- package/dist/formats/dxbc/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3932 -3932
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +142 -142
- package/dist/formats/flac/core/helpers.js +315 -315
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +141 -141
- package/dist/formats/gif/core/helpers.js +380 -380
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +252 -290
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +287 -307
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +679 -679
- package/dist/formats/gltf/core/targets.js +173 -173
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +289 -289
- package/dist/formats/gr2/core/bitknit2.js +282 -282
- package/dist/formats/gr2/core/curves.js +1047 -1047
- package/dist/formats/gr2/core/gsf.js +72 -72
- package/dist/formats/gr2/core/helpers.js +352 -352
- package/dist/formats/gr2/core/json.js +622 -622
- package/dist/formats/gr2/core/oodle1.js +388 -388
- package/dist/formats/gr2/core/tangents.js +48 -48
- package/dist/formats/gr2/core/targets.js +361 -361
- package/dist/formats/gr2/index.js +2 -2
- package/dist/formats/hlsl/CjsHlslFormat.js +233 -254
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
- package/dist/formats/hlsl/core/analysis.js +51 -51
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -850
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -128
- package/dist/formats/hlsl/core/helpers.js +270 -270
- package/dist/formats/hlsl/core/json.js +284 -284
- package/dist/formats/hlsl/core/localLightFamily.js +133 -133
- package/dist/formats/hlsl/core/metadata.js +327 -327
- package/dist/formats/hlsl/core/render-states.js +280 -280
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -320
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +423 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -62
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
- package/dist/formats/hlsl/index.js +3 -3
- package/dist/formats/index.js +33 -33
- package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
- package/dist/formats/jpeg/core/helpers.js +402 -402
- package/dist/formats/jpeg/core/jpeg.js +480 -480
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +197 -197
- package/dist/formats/mp3/core/helpers.js +375 -375
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +197 -197
- package/dist/formats/mp4/core/helpers.js +484 -484
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +232 -253
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/obj/core/helpers.js +553 -573
- package/dist/formats/obj/core/helpers.js.map +1 -1
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +143 -143
- package/dist/formats/ogg/core/helpers.js +410 -410
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +1017 -1017
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/pickle/CjsPickleFormat.js +214 -214
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -551
- package/dist/formats/pickle/index.js +2 -2
- package/dist/formats/png/CjsPngFormat.js +201 -201
- package/dist/formats/png/core/helpers.js +635 -635
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +263 -263
- package/dist/formats/red/core/CjsRedReader.js +246 -246
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +158 -158
- package/dist/formats/red/core/redGraph.js +71 -71
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +320 -365
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +241 -261
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +642 -642
- package/dist/formats/stl/core/targets.js +173 -173
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +197 -197
- package/dist/formats/tga/core/helpers.js +493 -493
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +198 -198
- package/dist/formats/wav/core/helpers.js +365 -365
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webgl/CjsWebglFormat.js +199 -199
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -70
- package/dist/formats/webgl/core/effectPackage.js +900 -900
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2820
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -486
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -98
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -552
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -243
- package/dist/formats/webgl/core/glslEffectCompleteness.js +85 -85
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -1
- package/dist/formats/webgl/core/helpers.js +167 -167
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -122
- package/dist/formats/webgl/core/readGlslEffectContainer.js +202 -256
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -89
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js +354 -354
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +306 -306
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
- package/dist/formats/webgpu/core/packageEffect.js +381 -381
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageMetadata.js +17 -17
- package/dist/formats/webgpu/core/schema.js +4 -4
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +325 -325
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
- package/dist/formats/webgpu/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +197 -197
- package/dist/formats/webm/core/helpers.js +572 -572
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +140 -140
- package/dist/formats/webp/core/helpers.js +237 -237
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +250 -250
- package/dist/formats/wem/core/bitStream.js +261 -261
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +437 -437
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +134 -134
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -400
- package/dist/formats/yaml/core/helpers.js +196 -196
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -64
- package/dist/resource/CjsLoadingObject.js +19 -19
- package/dist/resource/CjsResource.js +801 -801
- package/dist/resource/ResourceHandlerMode.js +14 -14
- package/dist/resource/Tr2LightProfileRes.js +32 -32
- package/dist/resource/audio/AudioGeometryResData.js +47 -47
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
- package/dist/resource/audio/CjsAudioRes.js +213 -213
- package/dist/resource/audio/index.js +4 -4
- package/dist/resource/geometry/MeshDecalData.js +37 -37
- package/dist/resource/geometry/MeshDecalLodData.js +34 -34
- package/dist/resource/geometry/TriGeometryRes.js +570 -467
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
- package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
- package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
- package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
- package/dist/resource/geometry/TriJointBinding.js +38 -38
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
- package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
- package/dist/resource/geometry/granny/enums.js +10 -10
- package/dist/resource/geometry/granny/index.js +6 -6
- package/dist/resource/geometry/index.js +17 -17
- package/dist/resource/index.js +54 -54
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -336
- package/dist/resource/shader/Tr2MaterialArea.js +31 -31
- package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
- package/dist/resource/shader/Tr2MaterialRes.js +31 -31
- package/dist/resource/shader/Tr2Shader.js +283 -283
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -143
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -114
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -168
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -125
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -120
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -372
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -78
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -168
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -159
- package/dist/resource/shader/reflection/shaderStage.js +22 -22
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -135
- package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
- package/dist/resource/texture/Tr2ImageRes.js +120 -120
- package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
- package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
- package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resource/texture/TriTextureRes.js +359 -359
- package/dist/resource/texture/index.js +15 -15
- package/dist/resource/texture/texturePipelineBehavior.js +308 -308
- package/dist/worker/CjsResManMainThreadLoader.js +89 -89
- package/dist/worker/CjsResManWorker.js +218 -218
- package/dist/worker/CjsResManWorkerLoader.js +437 -437
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -118
- package/docs/concepts/resource-lifecycle.md +226 -226
- package/docs/concepts/shader-resource-model.md +111 -111
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -138
- package/docs/formats/carbon-effect-container.md +553 -553
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +105 -77
- package/docs/formats/dxbc/reference/classes/README.md +9 -9
- package/docs/formats/dxbc/reference/decoded-output.md +122 -122
- package/docs/formats/gr2.md +160 -160
- package/docs/formats/hlsl/README.md +54 -54
- package/docs/formats/hlsl/architecture.md +66 -65
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -60
- package/docs/formats/hlsl/guides/reading-effects.md +68 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -61
- package/docs/formats/hlsl/reference/api.md +91 -92
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -97
- package/docs/formats/pickle.md +82 -82
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -115
- package/docs/formats/webgl/architecture.md +69 -69
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
- package/docs/formats/webgl/decl-io.md +1234 -1234
- package/docs/formats/webgl/memory-structured.md +890 -890
- package/docs/formats/webgl/reference/classes/README.md +9 -9
- package/docs/formats/webgl/texture-sample.md +964 -964
- package/docs/formats/webgpu/README.md +84 -84
- package/docs/formats/webgpu/architecture.md +95 -95
- package/docs/formats/webgpu/formats/carbon-webgpu.md +215 -215
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -189
- package/docs/formats/webgpu/reference/api.md +196 -196
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1546
- package/docs/formats/wwise.md +146 -146
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -216
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -944
- package/docs/reference/classes/resources.md +456 -456
- package/docs/reference/classes/texture.md +26 -26
- package/docs/reference/events.md +117 -117
- package/docs/reference/motherlode-cache.md +275 -275
- package/docs/reference/queues.md +194 -194
- package/docs/reference/reload.md +107 -107
- package/docs/reference/texture-arrays.md +113 -113
- package/docs/reference/texture-pipeline.md +53 -53
- package/docs/reference/workers.md +142 -142
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
const COMPONENTS = "xyzw";
|
|
2
|
-
const DESTINATION_MASK = /^x?y?z?w?$/u;
|
|
3
|
-
function fail(reason) {
|
|
4
|
-
throw new Error(`Shader IR indexable temp is not supported: ${reason}`);
|
|
5
|
-
}
|
|
6
|
-
function validateComponents(operand, role, componentCount) {
|
|
7
|
-
const valid = COMPONENTS.slice(0, componentCount);
|
|
8
|
-
if (role === "destination") {
|
|
9
|
-
if (typeof operand.mask !== "string" || !operand.mask || !DESTINATION_MASK.test(operand.mask) || Array.from(operand.mask).some(component => !valid.includes(component)) || operand.swizzle || operand.selected) {
|
|
10
|
-
fail("a destination requires one canonical in-range write mask");
|
|
11
|
-
}
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (operand.mask) {
|
|
15
|
-
fail("a source indexable temp requires swizzle or select component mode");
|
|
16
|
-
}
|
|
17
|
-
if ([operand.swizzle, operand.selected].filter(Boolean).length > 1) {
|
|
18
|
-
fail("a source requires exactly one component-selection mode");
|
|
19
|
-
}
|
|
20
|
-
if (operand.swizzle && (operand.swizzle.length !== 4 || Array.from(operand.swizzle).some(component => !valid.includes(component))) || operand.selected && (operand.selected.length !== 1 || !valid.includes(operand.selected))) {
|
|
21
|
-
fail("a source selects an invalid or out-of-range component");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Validates the declaration-backed identity of an indexable-temp operand.
|
|
27
|
-
* Mutable fixed slots are returned as ordinary SSA register identities.
|
|
28
|
-
* Reads from an extracted immutable table return null so they bypass register
|
|
29
|
-
* SSA and lower through the table expression path instead.
|
|
30
|
-
*
|
|
31
|
-
* @param {object} program Shader IR program under construction or lowering.
|
|
32
|
-
* @param {object} operand Indexable-temp operand.
|
|
33
|
-
* @param {"source"|"destination"} role Operand role.
|
|
34
|
-
* @returns {{registerIndex:number, slotIndex:number, key:string}|null} Fixed SSA address, or null for a const-table read.
|
|
35
|
-
*/
|
|
36
|
-
function validateIndexableTempOperand(program, operand, role) {
|
|
37
|
-
if (operand?.typeName !== "indexable_temp") return null;
|
|
38
|
-
if (!["source", "destination"].includes(role)) throw new TypeError("Invalid indexable-temp operand role");
|
|
39
|
-
const indices = operand.indices;
|
|
40
|
-
if (!Array.isArray(indices) || indices.length !== 2) {
|
|
41
|
-
fail("an operand requires exactly [register][slot] indices");
|
|
42
|
-
}
|
|
43
|
-
const registerIndex = indices[0];
|
|
44
|
-
if (registerIndex?.relative || !Array.isArray(registerIndex?.values) || registerIndex.values.length !== 1 || !Number.isInteger(registerIndex.values[0]) || registerIndex.values[0] < 0) {
|
|
45
|
-
fail("the register index must be one fixed non-negative integer");
|
|
46
|
-
}
|
|
47
|
-
const register = registerIndex.values[0];
|
|
48
|
-
if (!Number.isInteger(operand.registerIndex) || operand.registerIndex !== register) {
|
|
49
|
-
fail("the operand register identity does not match its first index");
|
|
50
|
-
}
|
|
51
|
-
const declarations = (program.declarations || []).filter(declaration => declaration.opcodeName === "dcl_indexable_temp" && declaration.data?.registerIndex === register);
|
|
52
|
-
if (declarations.length !== 1) {
|
|
53
|
-
fail(declarations.length ? `x${register} has duplicate declarations` : `x${register} is undeclared`);
|
|
54
|
-
}
|
|
55
|
-
const declaration = declarations[0].data;
|
|
56
|
-
if (!Number.isInteger(declaration.registerCount) || declaration.registerCount < 1) {
|
|
57
|
-
fail(`x${register} has no usable slot count`);
|
|
58
|
-
}
|
|
59
|
-
if (!Number.isInteger(declaration.componentCount) || declaration.componentCount < 1 || declaration.componentCount > 4) {
|
|
60
|
-
fail(`x${register} has an invalid component count`);
|
|
61
|
-
}
|
|
62
|
-
if (operand.componentCount !== 4) {
|
|
63
|
-
fail(`x${register} operand is not four-component`);
|
|
64
|
-
}
|
|
65
|
-
validateComponents(operand, role, declaration.componentCount);
|
|
66
|
-
const tables = (program.constTables || []).filter(table => table.registerIndex === register);
|
|
67
|
-
if (tables.length > 1) fail(`x${register} aliases duplicate immutable constant tables`);
|
|
68
|
-
if (tables.length && role === "destination") fail(`x${register} aliases an immutable constant table`);
|
|
69
|
-
const slotIndex = indices[1];
|
|
70
|
-
if (slotIndex?.relative) {
|
|
71
|
-
if (!Array.isArray(slotIndex.values) || slotIndex.values.length > 1 || slotIndex.values.length === 1 && (!Number.isInteger(slotIndex.values[0]) || slotIndex.values[0] < 0)) {
|
|
72
|
-
fail(`x${register} has an invalid relative slot base`);
|
|
73
|
-
}
|
|
74
|
-
if (tables.length && role === "source") return null;
|
|
75
|
-
fail(`x${register} uses relative ${role} addressing`);
|
|
76
|
-
}
|
|
77
|
-
if (!Array.isArray(slotIndex?.values) || slotIndex.values.length !== 1 || !Number.isInteger(slotIndex.values[0]) || slotIndex.values[0] < 0) {
|
|
78
|
-
fail(`x${register} requires one fixed non-negative slot index`);
|
|
79
|
-
}
|
|
80
|
-
const slot = slotIndex.values[0];
|
|
81
|
-
if (slot >= declaration.registerCount) {
|
|
82
|
-
fail(`x${register}[${slot}] is outside its declared range`);
|
|
83
|
-
}
|
|
84
|
-
if (tables.length) return null;
|
|
85
|
-
if (declaration.componentCount !== 4) {
|
|
86
|
-
fail(`x${register}[${slot}] is not a four-component mutable operand`);
|
|
87
|
-
}
|
|
88
|
-
return {
|
|
89
|
-
registerIndex: register,
|
|
90
|
-
slotIndex: slot,
|
|
91
|
-
key: `indexable_temp[${register},${slot}]`
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Cross-checks a fixed source operand against its canonical SSA read record.
|
|
97
|
-
*
|
|
98
|
-
* @param {object} program Frozen shader IR program.
|
|
99
|
-
* @param {object} operand Indexable-temp source operand.
|
|
100
|
-
* @param {object} read Register-read or index-read dataflow record.
|
|
101
|
-
* @param {string[]} expectedComponents Components selected by the current operand metadata.
|
|
102
|
-
* @returns {{registerIndex:number, slotIndex:number,key:string}} Validated fixed address.
|
|
103
|
-
*/
|
|
104
|
-
function validateIndexableTempRead(program, operand, read, expectedComponents) {
|
|
105
|
-
if (operand?.typeName !== "indexable_temp") return null;
|
|
106
|
-
const address = validateIndexableTempOperand(program, operand, "source");
|
|
107
|
-
if (!address || read?.register !== address.key || !Array.isArray(read.refs) || !read.refs.length || !Array.isArray(expectedComponents) || expectedComponents.length !== read.refs.length || read.refs.some((ref, index) => ref.component !== expectedComponents[index]) || Array.isArray(read.components) && (read.components.length !== expectedComponents.length || read.components.some((component, index) => component !== expectedComponents[index]))) {
|
|
108
|
-
fail("a fixed source has inconsistent register dataflow");
|
|
109
|
-
}
|
|
110
|
-
for (const ref of read.refs) {
|
|
111
|
-
const value = program.values.find(entry => entry.id === ref.valueId);
|
|
112
|
-
if (!value || value.register !== address.key) {
|
|
113
|
-
fail("a fixed source references a value from another register");
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return address;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Cross-checks a fixed destination operand against its canonical SSA write.
|
|
121
|
-
*
|
|
122
|
-
* @param {object} program Frozen shader IR program.
|
|
123
|
-
* @param {object} operand Indexable-temp destination operand.
|
|
124
|
-
* @param {object} write Register-write dataflow record.
|
|
125
|
-
* @returns {{registerIndex:number, slotIndex:number,key:string}} Validated fixed address.
|
|
126
|
-
*/
|
|
127
|
-
function validateIndexableTempWrite(program, operand, write) {
|
|
128
|
-
const address = validateIndexableTempOperand(program, operand, "destination");
|
|
129
|
-
const value = program.values.find(entry => entry.id === write?.valueId);
|
|
130
|
-
if (!address || write?.register !== address.key || write.mask !== operand.mask || !value || value.register !== address.key || value.writeMask !== write.mask) {
|
|
131
|
-
fail("a fixed destination has inconsistent indexable-temp dataflow");
|
|
132
|
-
}
|
|
133
|
-
return address;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export { validateIndexableTempOperand, validateIndexableTempRead, validateIndexableTempWrite };
|
|
137
|
-
//# sourceMappingURL=indexableTemps.js.map
|
|
1
|
+
const COMPONENTS = "xyzw";
|
|
2
|
+
const DESTINATION_MASK = /^x?y?z?w?$/u;
|
|
3
|
+
function fail(reason) {
|
|
4
|
+
throw new Error(`Shader IR indexable temp is not supported: ${reason}`);
|
|
5
|
+
}
|
|
6
|
+
function validateComponents(operand, role, componentCount) {
|
|
7
|
+
const valid = COMPONENTS.slice(0, componentCount);
|
|
8
|
+
if (role === "destination") {
|
|
9
|
+
if (typeof operand.mask !== "string" || !operand.mask || !DESTINATION_MASK.test(operand.mask) || Array.from(operand.mask).some(component => !valid.includes(component)) || operand.swizzle || operand.selected) {
|
|
10
|
+
fail("a destination requires one canonical in-range write mask");
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (operand.mask) {
|
|
15
|
+
fail("a source indexable temp requires swizzle or select component mode");
|
|
16
|
+
}
|
|
17
|
+
if ([operand.swizzle, operand.selected].filter(Boolean).length > 1) {
|
|
18
|
+
fail("a source requires exactly one component-selection mode");
|
|
19
|
+
}
|
|
20
|
+
if (operand.swizzle && (operand.swizzle.length !== 4 || Array.from(operand.swizzle).some(component => !valid.includes(component))) || operand.selected && (operand.selected.length !== 1 || !valid.includes(operand.selected))) {
|
|
21
|
+
fail("a source selects an invalid or out-of-range component");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Validates the declaration-backed identity of an indexable-temp operand.
|
|
27
|
+
* Mutable fixed slots are returned as ordinary SSA register identities.
|
|
28
|
+
* Reads from an extracted immutable table return null so they bypass register
|
|
29
|
+
* SSA and lower through the table expression path instead.
|
|
30
|
+
*
|
|
31
|
+
* @param {object} program Shader IR program under construction or lowering.
|
|
32
|
+
* @param {object} operand Indexable-temp operand.
|
|
33
|
+
* @param {"source"|"destination"} role Operand role.
|
|
34
|
+
* @returns {{registerIndex:number, slotIndex:number, key:string}|null} Fixed SSA address, or null for a const-table read.
|
|
35
|
+
*/
|
|
36
|
+
function validateIndexableTempOperand(program, operand, role) {
|
|
37
|
+
if (operand?.typeName !== "indexable_temp") return null;
|
|
38
|
+
if (!["source", "destination"].includes(role)) throw new TypeError("Invalid indexable-temp operand role");
|
|
39
|
+
const indices = operand.indices;
|
|
40
|
+
if (!Array.isArray(indices) || indices.length !== 2) {
|
|
41
|
+
fail("an operand requires exactly [register][slot] indices");
|
|
42
|
+
}
|
|
43
|
+
const registerIndex = indices[0];
|
|
44
|
+
if (registerIndex?.relative || !Array.isArray(registerIndex?.values) || registerIndex.values.length !== 1 || !Number.isInteger(registerIndex.values[0]) || registerIndex.values[0] < 0) {
|
|
45
|
+
fail("the register index must be one fixed non-negative integer");
|
|
46
|
+
}
|
|
47
|
+
const register = registerIndex.values[0];
|
|
48
|
+
if (!Number.isInteger(operand.registerIndex) || operand.registerIndex !== register) {
|
|
49
|
+
fail("the operand register identity does not match its first index");
|
|
50
|
+
}
|
|
51
|
+
const declarations = (program.declarations || []).filter(declaration => declaration.opcodeName === "dcl_indexable_temp" && declaration.data?.registerIndex === register);
|
|
52
|
+
if (declarations.length !== 1) {
|
|
53
|
+
fail(declarations.length ? `x${register} has duplicate declarations` : `x${register} is undeclared`);
|
|
54
|
+
}
|
|
55
|
+
const declaration = declarations[0].data;
|
|
56
|
+
if (!Number.isInteger(declaration.registerCount) || declaration.registerCount < 1) {
|
|
57
|
+
fail(`x${register} has no usable slot count`);
|
|
58
|
+
}
|
|
59
|
+
if (!Number.isInteger(declaration.componentCount) || declaration.componentCount < 1 || declaration.componentCount > 4) {
|
|
60
|
+
fail(`x${register} has an invalid component count`);
|
|
61
|
+
}
|
|
62
|
+
if (operand.componentCount !== 4) {
|
|
63
|
+
fail(`x${register} operand is not four-component`);
|
|
64
|
+
}
|
|
65
|
+
validateComponents(operand, role, declaration.componentCount);
|
|
66
|
+
const tables = (program.constTables || []).filter(table => table.registerIndex === register);
|
|
67
|
+
if (tables.length > 1) fail(`x${register} aliases duplicate immutable constant tables`);
|
|
68
|
+
if (tables.length && role === "destination") fail(`x${register} aliases an immutable constant table`);
|
|
69
|
+
const slotIndex = indices[1];
|
|
70
|
+
if (slotIndex?.relative) {
|
|
71
|
+
if (!Array.isArray(slotIndex.values) || slotIndex.values.length > 1 || slotIndex.values.length === 1 && (!Number.isInteger(slotIndex.values[0]) || slotIndex.values[0] < 0)) {
|
|
72
|
+
fail(`x${register} has an invalid relative slot base`);
|
|
73
|
+
}
|
|
74
|
+
if (tables.length && role === "source") return null;
|
|
75
|
+
fail(`x${register} uses relative ${role} addressing`);
|
|
76
|
+
}
|
|
77
|
+
if (!Array.isArray(slotIndex?.values) || slotIndex.values.length !== 1 || !Number.isInteger(slotIndex.values[0]) || slotIndex.values[0] < 0) {
|
|
78
|
+
fail(`x${register} requires one fixed non-negative slot index`);
|
|
79
|
+
}
|
|
80
|
+
const slot = slotIndex.values[0];
|
|
81
|
+
if (slot >= declaration.registerCount) {
|
|
82
|
+
fail(`x${register}[${slot}] is outside its declared range`);
|
|
83
|
+
}
|
|
84
|
+
if (tables.length) return null;
|
|
85
|
+
if (declaration.componentCount !== 4) {
|
|
86
|
+
fail(`x${register}[${slot}] is not a four-component mutable operand`);
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
registerIndex: register,
|
|
90
|
+
slotIndex: slot,
|
|
91
|
+
key: `indexable_temp[${register},${slot}]`
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Cross-checks a fixed source operand against its canonical SSA read record.
|
|
97
|
+
*
|
|
98
|
+
* @param {object} program Frozen shader IR program.
|
|
99
|
+
* @param {object} operand Indexable-temp source operand.
|
|
100
|
+
* @param {object} read Register-read or index-read dataflow record.
|
|
101
|
+
* @param {string[]} expectedComponents Components selected by the current operand metadata.
|
|
102
|
+
* @returns {{registerIndex:number, slotIndex:number,key:string}} Validated fixed address.
|
|
103
|
+
*/
|
|
104
|
+
function validateIndexableTempRead(program, operand, read, expectedComponents) {
|
|
105
|
+
if (operand?.typeName !== "indexable_temp") return null;
|
|
106
|
+
const address = validateIndexableTempOperand(program, operand, "source");
|
|
107
|
+
if (!address || read?.register !== address.key || !Array.isArray(read.refs) || !read.refs.length || !Array.isArray(expectedComponents) || expectedComponents.length !== read.refs.length || read.refs.some((ref, index) => ref.component !== expectedComponents[index]) || Array.isArray(read.components) && (read.components.length !== expectedComponents.length || read.components.some((component, index) => component !== expectedComponents[index]))) {
|
|
108
|
+
fail("a fixed source has inconsistent register dataflow");
|
|
109
|
+
}
|
|
110
|
+
for (const ref of read.refs) {
|
|
111
|
+
const value = program.values.find(entry => entry.id === ref.valueId);
|
|
112
|
+
if (!value || value.register !== address.key) {
|
|
113
|
+
fail("a fixed source references a value from another register");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return address;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Cross-checks a fixed destination operand against its canonical SSA write.
|
|
121
|
+
*
|
|
122
|
+
* @param {object} program Frozen shader IR program.
|
|
123
|
+
* @param {object} operand Indexable-temp destination operand.
|
|
124
|
+
* @param {object} write Register-write dataflow record.
|
|
125
|
+
* @returns {{registerIndex:number, slotIndex:number,key:string}} Validated fixed address.
|
|
126
|
+
*/
|
|
127
|
+
function validateIndexableTempWrite(program, operand, write) {
|
|
128
|
+
const address = validateIndexableTempOperand(program, operand, "destination");
|
|
129
|
+
const value = program.values.find(entry => entry.id === write?.valueId);
|
|
130
|
+
if (!address || write?.register !== address.key || write.mask !== operand.mask || !value || value.register !== address.key || value.writeMask !== write.mask) {
|
|
131
|
+
fail("a fixed destination has inconsistent indexable-temp dataflow");
|
|
132
|
+
}
|
|
133
|
+
return address;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { validateIndexableTempOperand, validateIndexableTempRead, validateIndexableTempWrite };
|
|
137
|
+
//# sourceMappingURL=indexableTemps.js.map
|