@carbonenginejs/runtime-resource 0.9.2 → 0.11.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/NOTICE +3 -2
- package/README.md +47 -6
- package/dist/CjsMotherLode.js +88 -88
- package/dist/CjsMotherLode.js.map +1 -1
- package/dist/CjsResMan.js +717 -228
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResManFetchProvider.js +94 -0
- package/dist/CjsResManFetchProvider.js.map +1 -0
- package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
- package/dist/CjsResManWorkQueue.js.map +1 -0
- package/dist/format/CjsBlueReader.js +89 -0
- package/dist/format/CjsBlueReader.js.map +1 -1
- package/dist/format/CjsFormat.js +42 -16
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsReader.js +4 -0
- package/dist/format/CjsReader.js.map +1 -1
- package/dist/format/CjsResourceProbe.js +2 -0
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/format/effect/effectPermutationGraph.js +257 -0
- package/dist/format/effect/effectPermutationGraph.js.map +1 -0
- package/dist/format/effect/effectReflectionPackage.js +636 -0
- package/dist/format/effect/effectReflectionPackage.js.map +1 -0
- package/dist/format/effect/sha256.js +114 -0
- package/dist/format/effect/sha256.js.map +1 -0
- package/dist/format/payloadContract.js +20 -0
- package/dist/format/payloadContract.js.map +1 -1
- package/dist/formats/black/CjsBlackFormat.js +15 -1
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
- package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
- package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
- package/dist/formats/black/core/CjsBlackReader.js +125 -0
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
- package/dist/formats/black/core/helpers.js +17 -0
- package/dist/formats/black/core/helpers.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +8 -0
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +20 -0
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +40 -3
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/cmf/core/binary.js +71 -0
- package/dist/formats/cmf/core/binary.js.map +1 -1
- package/dist/formats/cmf/core/buffers.js +4 -0
- package/dist/formats/cmf/core/buffers.js.map +1 -1
- package/dist/formats/cmf/core/helpers.js +31 -0
- package/dist/formats/cmf/core/helpers.js.map +1 -1
- package/dist/formats/cmf/core/schema.js +10 -0
- package/dist/formats/cmf/core/schema.js.map +1 -1
- package/dist/formats/cmf/core/shared.js +9 -0
- package/dist/formats/cmf/core/shared.js.map +1 -1
- package/dist/formats/cmf/core/writer.js +54 -0
- package/dist/formats/cmf/core/writer.js.map +1 -1
- package/dist/formats/dds/core/bc6h.js +10 -0
- package/dist/formats/dds/core/bc6h.js.map +1 -1
- package/dist/formats/dds/core/bc7.js +16 -0
- package/dist/formats/dds/core/bc7.js.map +1 -1
- package/dist/formats/dds/core/helpers.js +47 -0
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
- package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
- package/dist/formats/dxbc/core/DxbcReader.js +266 -0
- package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
- package/dist/formats/dxbc/core/container.js +169 -0
- package/dist/formats/dxbc/core/container.js.map +1 -0
- package/dist/formats/dxbc/core/decoder.js +789 -0
- package/dist/formats/dxbc/core/decoder.js.map +1 -0
- package/dist/formats/dxbc/core/errors.js +19 -0
- package/dist/formats/dxbc/core/errors.js.map +1 -0
- package/dist/formats/dxbc/core/helpers.js +220 -0
- package/dist/formats/dxbc/core/helpers.js.map +1 -0
- package/dist/formats/dxbc/core/opcodes.js +45 -0
- package/dist/formats/dxbc/core/opcodes.js.map +1 -0
- package/dist/formats/dxbc/core/program.js +91 -0
- package/dist/formats/dxbc/core/program.js.map +1 -0
- package/dist/formats/dxbc/core/signature.js +172 -0
- package/dist/formats/dxbc/core/signature.js.map +1 -0
- package/dist/formats/dxbc/index.js +2 -0
- package/dist/formats/dxbc/index.js.map +1 -0
- package/dist/formats/fbx/core/helpers.js +21 -0
- package/dist/formats/fbx/core/helpers.js.map +1 -1
- package/dist/formats/flac/CjsFlacFormat.js +49 -0
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/formats/flac/core/helpers.js +20 -0
- package/dist/formats/flac/core/helpers.js.map +1 -1
- package/dist/formats/gif/CjsGifFormat.js +49 -0
- package/dist/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/formats/gif/core/helpers.js +20 -0
- package/dist/formats/gif/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +15 -0
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/parser.js +13 -0
- package/dist/formats/gltf/core/parser.js.map +1 -1
- package/dist/formats/gltf/core/targets.js +10 -0
- package/dist/formats/gltf/core/targets.js.map +1 -1
- package/dist/formats/gr2/core/bitknit2.js +2 -0
- package/dist/formats/gr2/core/bitknit2.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +20 -0
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +10 -0
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
- package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
- package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
- package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
- package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
- package/dist/formats/hlsl/core/HlslReader.js +266 -0
- package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
- package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
- package/dist/formats/hlsl/core/analysis.js +51 -0
- package/dist/formats/hlsl/core/analysis.js.map +1 -0
- package/dist/formats/hlsl/core/helpers.js +270 -0
- package/dist/formats/hlsl/core/helpers.js.map +1 -0
- package/dist/formats/hlsl/core/json.js +284 -0
- package/dist/formats/hlsl/core/json.js.map +1 -0
- package/dist/formats/hlsl/core/metadata.js +327 -0
- package/dist/formats/hlsl/core/metadata.js.map +1 -0
- package/dist/formats/hlsl/core/portableReflection.js +848 -0
- package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
- package/dist/formats/hlsl/core/render-states.js +280 -0
- package/dist/formats/hlsl/core/render-states.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
- package/dist/formats/hlsl/index.js +2 -0
- package/dist/formats/hlsl/index.js.map +1 -0
- package/dist/formats/hlsl/portable.js +2 -0
- package/dist/formats/hlsl/portable.js.map +1 -0
- package/dist/formats/index.js +4 -0
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/jpeg/core/helpers.js +52 -0
- package/dist/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/formats/jpeg/core/jpeg.js +93 -0
- package/dist/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/formats/mp3/core/helpers.js +37 -0
- package/dist/formats/mp3/core/helpers.js.map +1 -1
- package/dist/formats/mp4/core/helpers.js +35 -0
- package/dist/formats/mp4/core/helpers.js.map +1 -1
- package/dist/formats/ogg/CjsOggFormat.js +49 -0
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/formats/ogg/core/helpers.js +23 -0
- package/dist/formats/ogg/core/helpers.js.map +1 -1
- package/dist/formats/ogg/core/vorbis.js +13 -0
- package/dist/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/formats/png/core/helpers.js +52 -0
- package/dist/formats/png/core/helpers.js.map +1 -1
- package/dist/formats/red/CjsRedFormat.js +2 -0
- package/dist/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/formats/red/core/CjsRedReader.js +52 -0
- package/dist/formats/red/core/CjsRedReader.js.map +1 -1
- package/dist/formats/red/core/helpers.js +19 -0
- package/dist/formats/red/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/stl.js +8 -0
- package/dist/formats/stl/core/stl.js.map +1 -1
- package/dist/formats/stl/core/targets.js +10 -0
- package/dist/formats/stl/core/targets.js.map +1 -1
- package/dist/formats/tga/core/helpers.js +47 -0
- package/dist/formats/tga/core/helpers.js.map +1 -1
- package/dist/formats/wav/core/helpers.js +37 -0
- package/dist/formats/wav/core/helpers.js.map +1 -1
- package/dist/formats/webgl/CjsWebglFormat.js +221 -0
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
- package/dist/formats/webgl/core/cewg/binary.js +101 -0
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
- package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
- package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +789 -0
- package/dist/formats/webgl/core/effectPackage.js.map +1 -0
- package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
- package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgl/core/errors.js +27 -0
- package/dist/formats/webgl/core/errors.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +306 -0
- package/dist/formats/webgl/core/helpers.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -0
- package/dist/formats/webgl/index.js.map +1 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
- package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
- package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
- package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
- package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
- package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
- package/dist/formats/webgpu/core/errors.js +20 -0
- package/dist/formats/webgpu/core/errors.js.map +1 -0
- package/dist/formats/webgpu/core/helpers.js +448 -0
- package/dist/formats/webgpu/core/helpers.js.map +1 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
- package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
- package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
- package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
- package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffect.js +300 -0
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
- package/dist/formats/webgpu/core/packageMetadata.js +8 -0
- package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
- package/dist/formats/webgpu/core/schema.js +4 -0
- package/dist/formats/webgpu/core/schema.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
- package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
- package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
- package/dist/formats/webgpu/index.js +2 -0
- package/dist/formats/webgpu/index.js.map +1 -0
- package/dist/formats/webm/core/helpers.js +35 -0
- package/dist/formats/webm/core/helpers.js.map +1 -1
- package/dist/formats/webp/CjsWebpFormat.js +49 -0
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/formats/webp/core/helpers.js +23 -0
- package/dist/formats/webp/core/helpers.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +8 -0
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/bitStream.js +2 -0
- package/dist/formats/wem/core/bitStream.js.map +1 -1
- package/dist/formats/wem/core/helpers.js +20 -0
- package/dist/formats/wem/core/helpers.js.map +1 -1
- package/dist/formats/yaml/CjsYamlFormat.js +45 -0
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +10 -0
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/index.js +56 -43
- package/dist/index.js.map +1 -1
- package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
- package/dist/resource/CjsResource.js.map +1 -0
- package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
- package/dist/resource/Tr2LightProfileRes.js.map +1 -0
- package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
- package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
- package/dist/resource/audio/CjsAudioRes.js +213 -0
- package/dist/resource/audio/CjsAudioRes.js.map +1 -0
- package/dist/resource/audio/index.js +4 -0
- package/dist/resource/audio/index.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
- package/dist/resource/geometry/MeshDecalData.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
- package/dist/resource/geometry/TriGeometryRes.js +656 -0
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
- package/dist/resource/geometry/TriJointBinding.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
- package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
- package/dist/resource/geometry/granny/enums.js.map +1 -0
- package/dist/resource/geometry/granny/index.js +6 -0
- package/dist/resource/geometry/granny/index.js.map +1 -0
- package/dist/resource/geometry/index.js +17 -0
- package/dist/resource/geometry/index.js.map +1 -0
- package/dist/resource/index.js +52 -0
- package/dist/resource/index.js.map +1 -0
- package/dist/resource/resourceBoundary.js +64 -0
- package/dist/resource/resourceBoundary.js.map +1 -0
- package/dist/resource/shader/Tr2EffectRes.js +429 -0
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
- package/dist/resource/shader/Tr2MaterialArea.js +34 -0
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
- package/dist/resource/shader/Tr2MaterialMesh.js +30 -0
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
- package/dist/resource/shader/Tr2MaterialRes.js +35 -0
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
- package/dist/resource/shader/Tr2Shader.js +256 -0
- package/dist/resource/shader/Tr2Shader.js.map +1 -0
- package/dist/resource/shader/Tr2ShaderPermutation.js +47 -0
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
- package/dist/resource/shader/index.js +17 -0
- package/dist/resource/shader/index.js.map +1 -0
- package/dist/resource/shader/portable.js +33 -0
- package/dist/resource/shader/portable.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +135 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +28 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +107 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +145 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +103 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js +84 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +239 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +66 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2Pass.js +109 -0
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +75 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
- package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
- package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
- package/dist/resource/texture/TriTextureRes.js.map +1 -0
- package/dist/resource/texture/index.js +15 -0
- package/dist/resource/texture/index.js.map +1 -0
- package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
- package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
- package/dist/worker/CjsResManMainThreadLoader.js +87 -0
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
- package/dist/worker/CjsResManWorker.js +217 -0
- package/dist/worker/CjsResManWorker.js.map +1 -0
- package/dist/worker/CjsResManWorkerLoader.js +434 -0
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
- package/dist/worker/protocol.js +12 -0
- package/dist/worker/protocol.js.map +1 -0
- package/docs/README.md +16 -3
- package/docs/architecture.md +39 -16
- package/docs/concepts/resource-lifecycle.md +2 -1
- package/docs/formats/README.md +8 -0
- package/docs/formats/provenance.md +11 -3
- package/docs/reference/classes/README.md +6 -4
- package/docs/reference/classes/audio.md +30 -0
- package/docs/reference/classes/core.md +31 -11
- package/docs/reference/classes/formats.md +440 -0
- package/docs/reference/classes/resources.md +151 -41
- package/docs/reference/classes/texture.md +7 -7
- package/docs/reference/motherlode-cache.md +17 -0
- package/docs/reference/queues.md +9 -1
- package/docs/reference/workers.md +135 -0
- package/docs/roadmap.md +27 -1
- package/format-notices/dxbc/LICENSE +21 -0
- package/format-notices/dxbc/NOTICE +20 -0
- package/format-notices/hlsl/LICENSE +21 -0
- package/format-notices/hlsl/NOTICE +25 -0
- package/format-notices/webgl/LICENSE +21 -0
- package/format-notices/webgl/NOTICE +35 -0
- package/format-notices/webgpu/LICENSE +21 -0
- package/format-notices/webgpu/NOTICE +31 -0
- package/package.json +13 -1
- package/dist/CjsResManQueue.js.map +0 -1
- package/dist/CjsResource.js.map +0 -1
- package/dist/CjsResourceSource.js +0 -68
- package/dist/CjsResourceSource.js.map +0 -1
- package/dist/resourcePath.js +0 -18
- package/dist/resourcePath.js.map +0 -1
- package/dist/resourceStates.js +0 -9
- package/dist/resourceStates.js.map +0 -1
- package/dist/resources/AudioGeometryResData.js.map +0 -1
- package/dist/resources/GStateBindingCallbackData.js.map +0 -1
- package/dist/resources/MeshDecalData.js.map +0 -1
- package/dist/resources/MeshDecalLodData.js.map +0 -1
- package/dist/resources/Tr2EffectRes.js +0 -71
- package/dist/resources/Tr2EffectRes.js.map +0 -1
- package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
- package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
- package/dist/resources/Tr2ImageRes.js.map +0 -1
- package/dist/resources/Tr2LightProfileRes.js.map +0 -1
- package/dist/resources/Tr2MaterialArea.js +0 -34
- package/dist/resources/Tr2MaterialArea.js.map +0 -1
- package/dist/resources/Tr2MaterialMesh.js +0 -31
- package/dist/resources/Tr2MaterialMesh.js.map +0 -1
- package/dist/resources/Tr2MaterialRes.js +0 -34
- package/dist/resources/Tr2MaterialRes.js.map +0 -1
- package/dist/resources/Tr2ShaderPermutation.js +0 -43
- package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
- package/dist/resources/Tr2TextureLodManager.js.map +0 -1
- package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
- package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
- package/dist/resources/Tr2TexturePipeline.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
- package/dist/resources/TriGeometryRes.js +0 -239
- package/dist/resources/TriGeometryRes.js.map +0 -1
- package/dist/resources/TriGeometryResAreaData.js.map +0 -1
- package/dist/resources/TriGeometryResJointData.js.map +0 -1
- package/dist/resources/TriGeometryResLodData.js.map +0 -1
- package/dist/resources/TriGeometryResMeshData.js.map +0 -1
- package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
- package/dist/resources/TriGrannyRes.js.map +0 -1
- package/dist/resources/TriJointBinding.js.map +0 -1
- package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
- package/dist/resources/TriRtGeometryConstants.js.map +0 -1
- package/dist/resources/TriTextureRes.js.map +0 -1
- package/dist/resources/enums.js.map +0 -1
- package/dist/resources/resourceBoundary.js +0 -47
- package/dist/resources/resourceBoundary.js.map +0 -1
- package/dist/resources/texturePipelineBehavior.js.map +0 -1
- package/dist/texture/CjsTextureArrayRes.js.map +0 -1
- package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lowerVertexProgram.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/lowerVertexProgram.js"],"sourcesContent":["import { fixedSourceLanes } from \"../ir/sourceLanes.js\";\nimport {\n validateIndexableTempOperand,\n validateIndexableTempRead,\n validateIndexableTempWrite\n} from \"../ir/indexableTemps.js\";\nimport { hoistEscapingValues } from \"./hoistEscapingValues.js\";\nimport { lowerBindingLayout } from \"./lowerBindingLayout.js\";\nimport { requireRefactoringAllowed, validatePreciseInstruction } from \"./precisionControls.js\";\nimport { buildSelectionPlans, cloneWritten, terminatesAllPaths } from \"./selectionPlans.js\";\nimport { validateFixedHandleBinding, validateFixedHandleOperand } from \"./validateHandleOperand.js\";\n\nfunction containsOutputAssignment(statements)\n{\n return statements.some((statement) => statement.kind === \"assignment\"\n || (statement.kind === \"if\" && (containsOutputAssignment(statement.statements)\n || (statement.elseStatements ? containsOutputAssignment(statement.elseStatements) : false)))\n || (statement.kind === \"switch\" && statement.clauses.some((clause) => containsOutputAssignment(clause.statements)))\n || (statement.kind === \"loop\" && containsOutputAssignment(statement.statements)));\n}\n\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\nconst SYSTEM_BUILTINS = Object.freeze({\n SV_POSITION: \"position\"\n});\nconst INPUT_BUILTINS = Object.freeze({\n SV_VERTEXID: { name: \"vertex_index\", scalarType: \"uint32\" },\n SV_INSTANCEID: { name: \"instance_index\", scalarType: \"uint32\" }\n});\nconst SUPPORTED_OPCODES = new Set([\n \"add\", \"and\", \"div\", \"dp2\", \"dp3\", \"dp4\", \"eq\", \"exp\", \"f16tof32\",\n \"f32tof16\", \"frc\", \"ftoi\", \"ftou\",\n \"ge\", \"iadd\", \"ieq\", \"ige\", \"ilt\", \"imad\", \"imax\", \"imin\", \"imul\", \"ine\",\n \"ishl\", \"ishr\", \"itof\", \"ld\", \"ld_structured\", \"log\", \"lt\", \"mad\", \"max\", \"min\",\n \"mov\", \"movc\", \"mul\", \"ne\", \"or\", \"rcp\", \"round_ni\", \"round_pi\", \"round_z\", \"rsq\",\n \"sample_d\", \"sample_l\", \"sincos\", \"sqrt\", \"udiv\", \"uge\", \"ult\", \"umax\",\n \"umin\", \"ushr\", \"utof\", \"xor\", \"ret\"\n]);\nconst METADATA_OPCODE_EXTENSIONS = new Set([ \"resource_dimension\", \"resource_return_type\" ]);\nconst SAMPLE_OFFSET_OPCODES = new Set([ \"sample_d\", \"sample_l\" ]);\nconst NUMERIC_CONVERSIONS = Object.freeze({\n itof: [ \"int32\", \"float32\" ],\n utof: [ \"uint32\", \"float32\" ],\n ftoi: [ \"float32\", \"int32\" ],\n ftou: [ \"float32\", \"uint32\" ]\n});\n\nfunction sampleOffsetArgument(instruction, viewDimension)\n{\n const controls = instruction.extensions?.filter((extension) => extension.typeName === \"sample_controls\") || [];\n if (!controls.length) return \"\";\n if (controls.length !== 1)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has duplicate sample_controls extensions`);\n }\n if (viewDimension !== \"2d\")\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} immediate sample offsets support only 2d textures`);\n }\n const offsets = controls[0].sampleOffsets;\n if (![ offsets?.u, offsets?.v, offsets?.w ].every((value) =>\n Number.isInteger(value) && value >= -8 && value <= 7))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has invalid immediate sample offsets`);\n }\n // D3D ignores the w offset for Texture2D. WGSL takes the same signed,\n // texel-space u/v constants as the final sampling argument.\n return `, vec2<i32>(${offsets.u}, ${offsets.v})`;\n}\n\nfunction componentsFromMask(mask)\n{\n return COMPONENTS.filter((_, index) => (mask & (1 << index)) !== 0);\n}\n\nfunction scalarTypeName(type)\n{\n return ({ float32: \"f32\", int32: \"i32\", uint32: \"u32\", bool: \"bool\", bitpattern32: \"u32\" })[type] || null;\n}\n\nfunction fieldType(scalarType, count)\n{\n const scalar = scalarTypeName(scalarType);\n if (!scalar) throw new Error(`WGSL vertex interface cannot use unresolved scalar type ${scalarType}`);\n return count === 1 ? scalar : `vec${count}<${scalar}>`;\n}\n\nfunction interfaceFields(program, direction)\n{\n const groups = new Map();\n for (const signature of program.signatures?.[direction] || [])\n {\n if (!groups.has(signature.registerIndex)) groups.set(signature.registerIndex, []);\n groups.get(signature.registerIndex).push(signature);\n }\n return Array.from(groups.values()).map((rows) =>\n {\n const registerIndex = rows[0].registerIndex;\n const mask = rows.reduce((accumulator, signature) => accumulator | signature.mask, 0);\n const components = componentsFromMask(mask);\n if (!components.length || !components.every((component, componentIndex) => component === COMPONENTS[componentIndex]))\n {\n throw new Error(`WGSL vertex ${direction} signature register ${registerIndex} has a non-prefix mask`);\n }\n const semantic = String(rows[0].semanticName || \"\").toUpperCase();\n const outputBuiltin = direction === \"output\" ? SYSTEM_BUILTINS[semantic] || null : null;\n const inputBuiltin = direction === \"input\" ? INPUT_BUILTINS[semantic] || null : null;\n const builtinName = outputBuiltin || inputBuiltin?.name || null;\n if (rows.some((signature) => String(signature.semanticName || \"\").toUpperCase().startsWith(\"SV_\")) && !builtinName)\n {\n throw new Error(`WGSL vertex ${direction} system semantic ${semantic} is not supported`);\n }\n const componentTypeName = rows[0].componentTypeName;\n if (rows.some((signature) => signature.componentTypeName !== componentTypeName))\n {\n throw new Error(`WGSL vertex ${direction} register ${registerIndex} packs mixed component types`);\n }\n const scalarType = inputBuiltin?.scalarType || componentTypeName;\n return {\n kind: \"interface-field\",\n id: `${direction}:r${registerIndex}`,\n direction,\n registerIndex,\n semanticName: rows[0].semanticName,\n semanticIndex: rows[0].semanticIndex,\n components,\n scalarType,\n type: inputBuiltin?.scalarType ? scalarTypeName(scalarType) : fieldType(componentTypeName, components.length),\n name: builtinName || `${direction}${registerIndex}`,\n attribute: builtinName\n ? { kind: \"builtin\", name: builtinName }\n : { kind: \"location\", index: registerIndex }\n };\n });\n}\n\nfunction packedComponent(mask, component)\n{\n const index = Array.from(mask).indexOf(component);\n if (index < 0) throw new Error(`WGSL value mask ${mask} does not contain component ${component}`);\n return COMPONENTS[index];\n}\n\nfunction valueType(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n const types = Array.from(write.mask).map((component) => value?.componentTypes?.[component]);\n if (!types.length || types.some((type) => !scalarTypeName(type)) || new Set(types).size !== 1)\n {\n throw new Error(`WGSL vertex value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n const scalarType = types[0];\n return {\n scalarType,\n wgslType: fieldType(scalarType, types.length)\n };\n}\n\nfunction isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)\n{\n if (!localSsaDestination || readValueIds.has(write.valueId)) return false;\n const value = program.values.find((entry) => entry.id === write.valueId);\n return Array.from(write.mask).some((component) => !scalarTypeName(value?.componentTypes?.[component]));\n}\n\nfunction mixedImmediateTypes(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n if (!value || write.mask.length < 2) return null;\n const types = Array.from(write.mask).map((component) => value.componentTypes?.[component]);\n if (types.some((type) => !scalarTypeName(type)) || new Set(types).size === 1) return null;\n return types;\n}\n\n\nfunction liveInputRegisters(program)\n{\n const values = new Map(program.values.map((value) => [ value.id, value ]));\n const reachableBlocks = new Set(program.controlFlow.reachableBlockIds);\n const reachableInstructions = new Set(program.blocks\n .filter((block) => reachableBlocks.has(block.id))\n .flatMap((block) => block.instructionIndices));\n const registers = new Set();\n for (const instruction of program.instructions)\n {\n if (!reachableInstructions.has(instruction.index)) continue;\n for (const ref of instruction.dataflow.reads.flatMap((read) => read.refs))\n {\n const value = values.get(ref.valueId);\n if (value?.origin === \"undefined-register\")\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} reads undefined ${value.register}.${ref.component}`);\n }\n const match = value?.origin === \"program-input\" && /^input\\[(\\d+)\\]$/.exec(value.register);\n if (match) registers.add(Number(match[1]));\n }\n }\n return registers;\n}\n\nfunction sourceRead(instruction, operandIndex)\n{\n return instruction.dataflow.reads.find((entry) =>\n entry.kind !== \"index-read\" && entry.operandIndex === operandIndex) || null;\n}\n\nfunction vectorCode(parts, scalarType)\n{\n if (parts.length === 1) return parts[0];\n return `vec${parts.length}<${scalarTypeName(scalarType)}>(${parts.join(\", \")})`;\n}\n\nfunction reinterpretCode(code, fromType, toType, count, context)\n{\n const from = scalarTypeName(fromType);\n const to = scalarTypeName(toType);\n if (!from || !to) throw new Error(`WGSL vertex cannot resolve ${context} type ${fromType} to ${toType}`);\n if (from === to) return code;\n if (![ \"f32\", \"i32\", \"u32\" ].includes(from) || ![ \"f32\", \"i32\", \"u32\" ].includes(to))\n {\n throw new Error(`WGSL vertex cannot reinterpret ${context} from ${fromType} to ${toType}`);\n }\n return `bitcast<${fieldType(toType, count)}>(${code})`;\n}\n\nfunction valueReference(program, ref, inputs)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n if (!value) throw new Error(`WGSL vertex references missing value ${ref.valueId}`);\n if (value.origin === \"undefined-register\") throw new Error(`WGSL vertex reads undefined ${value.register}.${ref.component}`);\n if (value.origin === \"program-input\")\n {\n const registerIndex = Number(/^input\\[(\\d+)\\]$/.exec(value.register)?.[1]);\n const field = inputs.find((entry) => entry.registerIndex === registerIndex);\n if (!field) throw new Error(`WGSL vertex has no live input field for ${value.register}`);\n const packed = packedComponent(field.components.join(\"\"), ref.component);\n const code = field.components.length === 1 ? `input.${field.name}` : `input.${field.name}.${packed}`;\n return reinterpretCode(code, field.scalarType, value.componentTypes?.[ref.component], 1, `${value.register}.${ref.component}`);\n }\n if (value.origin === \"instruction-write\" && value.writeMask.length > 1)\n {\n const componentTypes = Array.from(value.writeMask).map((component) => value.componentTypes?.[component]);\n if (new Set(componentTypes).size > 1) return `${value.id}_${ref.component}`;\n }\n const packed = packedComponent(value.writeMask, ref.component);\n return value.writeMask.length === 1 ? value.id : `${value.id}.${packed}`;\n}\n\nfunction sourceComponents(operand, destinationMask, count, activeComponents = null)\n{\n const selected = operand.selected || \"\";\n if (selected) return Array.from({ length: count }, () => selected);\n const swizzle = operand.swizzle || \"xyzw\";\n const positions = activeComponents || (count > destinationMask.length\n ? COMPONENTS.slice(0, count)\n : Array.from(destinationMask).slice(0, count));\n return positions.map((component) => swizzle[COMPONENTS.indexOf(component)] || swizzle[0]);\n}\n\nfunction immediateRawBits(operand, destinationMask, count, activeComponents = null)\n{\n const values = operand.immediateValues || [];\n const components = sourceComponents(operand, destinationMask, count, activeComponents);\n return components.map((component, index) =>\n {\n const sourceIndex = values.length === 1 ? 0 : COMPONENTS.indexOf(component);\n const bits = values[sourceIndex]?.uint32 ?? values[index]?.uint32;\n if (!Number.isInteger(bits)) throw new Error(\"WGSL vertex immediate has no raw uint32 bits\");\n return bits >>> 0;\n });\n}\n\nfunction immediateParts(operand, destinationMask, count, expectedType, activeComponents = null)\n{\n return immediateRawBits(operand, destinationMask, count, activeComponents).map((bits) =>\n {\n const hex = `0x${(bits >>> 0).toString(16).padStart(8, \"0\")}u`;\n if (expectedType === \"float32\") return `bitcast<f32>(${hex})`;\n if (expectedType === \"int32\") return `bitcast<i32>(${hex})`;\n return hex;\n });\n}\n\nfunction validateRcpImmediate(program, instruction, write)\n{\n const operand = instruction.operands[1];\n if (operand?.typeName !== \"immediate32\") return;\n const activeComponents = fixedSourceLanes(instruction, 1, program);\n const bits = immediateRawBits(operand, write.mask, write.mask.length, activeComponents);\n if (bits.some((value) =>\n {\n const exponent = (value >>> 23) & 0xff;\n return exponent === 0 || exponent === 0xff;\n }))\n {\n throw new Error(`WGSL vertex rcp instruction ${instruction.index} requires finite normal immediate source lanes`);\n }\n}\n\nfunction bindingForOperand(bindings, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n if (Number.isInteger(rangeId))\n {\n const matches = bindings.filter((entry) => entry.resourceKind === resourceKind && entry.rangeId === rangeId);\n if (matches.length > 1) throw new Error(`WGSL vertex ${resourceKind} range ${rangeId} is ambiguous`);\n const binding = matches[0] || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"vertex\");\n }\n const binding = bindings.find((entry) =>\n entry.resourceKind === resourceKind && entry.registerIndex === operand.registerIndex) || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"vertex\");\n}\n\nfunction cbufferVectorIndex(program, instruction, operandIndex, operand, inputs)\n{\n const indices = operand.indices || [];\n for (let dimension = 0; dimension < indices.length - 1; dimension += 1)\n {\n if (indices[dimension].relative) throw new Error(\"WGSL vertex does not support dynamic cbuffer register selection\");\n }\n const last = indices.at(-1);\n const base = last?.values?.length ? last.values[0] : (last?.relative ? 0 : undefined);\n if (!Number.isInteger(base) || base < 0) throw new Error(\"WGSL vertex cbuffer operand has no immediate vector index\");\n if (!last.relative) return `${base}`;\n const read = instruction.dataflow.reads.find((entry) => entry.kind === \"index-read\"\n && entry.operandIndex === operandIndex && entry.dimension === indices.length - 1);\n if (!read || read.refs.length !== 1) throw new Error(\"WGSL vertex dynamic cbuffer index has no resolved register\");\n if (last.relative?.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(program, last.relative, read, sourceComponents(last.relative, \"x\", 1));\n }\n const ref = read.refs[0];\n const storage = valueStorageType(program, ref);\n let indexCode = valueReference(program, ref, inputs);\n if (storage === \"uint32\" || storage === \"bitpattern32\") indexCode = `i32(${indexCode})`;\n else if (storage !== \"int32\") throw new Error(`WGSL vertex dynamic cbuffer index has unsupported type ${storage}`);\n return base === 0 ? indexCode : `${base} + ${indexCode}`;\n}\n\nfunction cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedScalarType, inputs, activeComponents = null)\n{\n const binding = bindingForOperand(bindings, \"uniform-buffer\", operand);\n if (!binding) throw new Error(`WGSL vertex cannot resolve cb${operand.registerIndex}`);\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = sourceComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${binding.generatedSymbol}[${vectorIndex}].${component}`);\n if (expectedScalarType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedScalarType))\n {\n throw new Error(`WGSL vertex cannot reinterpret cbuffer lanes as ${expectedScalarType}`);\n }\n const target = scalarTypeName(expectedScalarType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedScalarType, inputs, activeComponents = null)\n{\n if (!program.immediateConstantBuffer?.length)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has no immediate constant buffer`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = sourceComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `icb[${vectorIndex}].${component}`);\n if (expectedScalarType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedScalarType))\n {\n throw new Error(`WGSL vertex cannot reinterpret icb lanes as ${expectedScalarType}`);\n }\n const target = scalarTypeName(expectedScalarType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedScalarType, inputs, activeComponents = null)\n{\n if (validateIndexableTempOperand(program, operand, \"source\") !== null)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} fixed indexable temp has no resolved SSA read`);\n }\n const registerIndex = operand.indices?.[0]?.values?.[0];\n const table = (program.constTables || []).find((entry) => entry.registerIndex === registerIndex);\n if (!table)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} indexable temp x${registerIndex} is not a supported constant table`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = sourceComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${table.symbol}[${vectorIndex}].${component}`);\n if (expectedScalarType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedScalarType))\n {\n throw new Error(`WGSL vertex cannot reinterpret constant-table lanes as ${expectedScalarType}`);\n }\n const target = scalarTypeName(expectedScalarType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\n// DXBC float source modifiers are selected by the consuming opcode. Integer\n// consumers admit two's-complement negation only. Bit-preserving movers\n// (unknown expected type) apply the FLOAT semantics to raw lane bits\n// (\"modifiers assume float data\"), represented as sign-bit arithmetic.\nfunction modifierOnStorage(part, storage, modifier)\n{\n if (storage === \"float32\")\n {\n if (modifier === \"neg\") return `-(${part})`;\n if (modifier === \"abs\") return `abs(${part})`;\n return `-(abs(${part}))`;\n }\n const bit = modifier === \"neg\" ? \"^ 0x80000000u\" : modifier === \"abs\" ? \"& 0x7fffffffu\" : \"| 0x80000000u\";\n const raw = storage === \"int32\" ? `bitcast<u32>(${part})` : part;\n const masked = `(${raw} ${bit})`;\n return storage === \"int32\" ? `bitcast<i32>(${masked})` : masked;\n}\n\nconst MODIFIER_STORAGE_TYPES = new Set([ \"float32\", \"int32\", \"uint32\", \"bitpattern32\" ]);\n\nfunction applyModifier(parts, operand, expected, storageTypes, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return parts;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier))\n {\n throw new Error(`WGSL vertex operand modifier ${modifier} is not supported`);\n }\n if (expected === \"float32\")\n {\n if (modifier === \"neg\") return parts.map((part) => `-(${part})`);\n if (modifier === \"abs\") return parts.map((part) => `abs(${part})`);\n return parts.map((part) => `-(abs(${part}))`);\n }\n if (expected === \"int32\" && modifier === \"neg\")\n {\n return parts.map((part) => `-(${part})`);\n }\n if (expected === \"uint32\" && modifier === \"neg\")\n {\n return parts.map((part) => `(0u - ${part})`);\n }\n if (expected === \"bitpattern32\")\n {\n return parts.map((part) => modifierOnStorage(part, \"bitpattern32\", modifier));\n }\n if (expected === \"unknown\" && storageTypes?.length === parts.length\n && storageTypes.every((storage) => MODIFIER_STORAGE_TYPES.has(storage)))\n {\n return parts.map((part, index) => modifierOnStorage(part, storageTypes[index], modifier));\n }\n throw new Error(`WGSL vertex instruction ${instruction?.index} operand ${operandIndex} uses an unsupported ${modifier} modifier for ${expected}`);\n}\n\nfunction applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return code;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier) || !MODIFIER_STORAGE_TYPES.has(targetType))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} lane operand ${operandIndex} uses an unsupported ${modifier} modifier for ${targetType}`);\n }\n // The per-lane path is reached only from bit-preserving movc lanes, where\n // DXBC applies the float modifier semantics to the raw lane bits; the lane\n // code is already reinterpreted to targetType.\n return modifierOnStorage(code, targetType, modifier);\n}\n\nfunction expectedType(instruction, operandIndex)\n{\n return instruction.typeInfo.operandTypes.find((entry) => entry.operandIndex === operandIndex)?.expectedType || \"unknown\";\n}\n\nfunction valueStorageType(program, ref)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n return value?.componentTypes?.[ref.component] || \"unknown\";\n}\n\nfunction bitcastKey(entry)\n{\n if (entry.kind === \"read-bitcast\")\n {\n return [ entry.kind, entry.operandIndex, entry.componentIndex, entry.valueId, entry.component,\n entry.from, entry.to ].join(\":\");\n }\n return [ entry.kind, entry.operandIndex, entry.valueId, entry.component, entry.from, entry.to ].join(\":\");\n}\n\nfunction validateRegisterBitcasts(program, instruction)\n{\n const required = [];\n for (const read of instruction.dataflow.reads)\n {\n if (read.kind === \"index-read\") continue;\n const expected = expectedType(instruction, read.operandIndex);\n if (expected === \"unknown\") continue;\n read.refs.forEach((ref, componentIndex) =>\n {\n const storage = valueStorageType(program, ref);\n if (storage !== \"unknown\" && storage !== expected)\n {\n required.push({\n kind: \"read-bitcast\",\n operandIndex: read.operandIndex,\n componentIndex,\n valueId: ref.valueId,\n component: ref.component,\n from: storage,\n to: expected\n });\n }\n });\n }\n const intrinsicResult = instruction.typeInfo.resultType;\n if (intrinsicResult !== \"unknown\")\n {\n for (const write of instruction.dataflow.writes)\n {\n for (const component of write.mask)\n {\n const storage = valueStorageType(program, { valueId: write.valueId, component });\n if (storage !== \"unknown\" && storage !== intrinsicResult)\n {\n required.push({\n kind: \"result-bitcast\",\n operandIndex: write.operandIndex,\n valueId: write.valueId,\n component,\n from: intrinsicResult,\n to: storage\n });\n }\n }\n }\n }\n const actual = instruction.typeInfo.bitcasts.filter((entry) =>\n entry.kind === \"read-bitcast\" || entry.kind === \"result-bitcast\");\n const requiredKeys = required.map(bitcastKey).sort();\n const actualKeys = actual.map(bitcastKey).sort();\n if (new Set(actualKeys).size !== actualKeys.length\n || requiredKeys.length !== actualKeys.length\n || requiredKeys.some((entry, index) => entry !== actualKeys[index]))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has inconsistent register bitcast metadata`);\n }\n}\n\nfunction unsupportedMinPrecision(operand)\n{\n // D3D minimum precision is a floor, not a format: computing float_16\n // operands at full 32-bit is a conforming implementation, so they promote\n // to ordinary f32 lanes (registers are 32-bit either way). Other kinds\n // stay fail-closed until a shader needs them.\n const name = operand.minPrecisionName || \"default\";\n return name !== \"default\" && name !== \"float_16\";\n}\n\nfunction operandLaneExpression(program, instruction, operandIndex, destinationMask, laneIndex, targetType, inputs, bindings,\n moverData = false)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL vertex instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n sourceComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n if (read)\n {\n const replicated = read.refs.length === 1 && Boolean(operand.selected);\n if (!replicated && laneIndex >= read.refs.length)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has too few source lanes`);\n }\n const ref = replicated ? read.refs[0] : read.refs[laneIndex];\n const storage = valueStorageType(program, ref);\n const code = reinterpretCode(valueReference(program, ref, inputs), storage, targetType, 1,\n `instruction ${instruction.index} lane read`);\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n const component = destinationMask[laneIndex];\n if (operand.typeName === \"immediate32\")\n {\n const code = immediateParts(operand, component, 1, targetType)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n if (operand.typeName === \"constant_buffer\")\n {\n const code = cbufferParts(program, instruction, operandIndex, operand, component, 1, bindings, targetType, inputs)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n throw new Error(`WGSL vertex instruction ${instruction.index} cannot lower ${operand.typeName} lane operand ${operandIndex}`);\n}\n\nfunction operandExpression(program, instruction, operandIndex, destinationMask, count, inputs, bindings)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL vertex instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const type = expectedType(instruction, operandIndex);\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n sourceComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n let parts;\n let modifierStorageTypes = null;\n if (read)\n {\n if (read.refs.length < count && !(read.refs.length === 1 && operand.selected))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has too few source lanes`);\n }\n const refs = read.refs.length === 1 && operand.selected\n ? Array.from({ length: count }, () => read.refs[0])\n : read.refs.slice(0, count);\n if ((operand.modifierName || \"none\") !== \"none\" && type === \"unknown\")\n {\n modifierStorageTypes = refs.map((ref) => valueStorageType(program, ref));\n }\n const replicatedSelected = read.refs.length === 1 && Boolean(operand.selected);\n parts = refs.map((ref, componentIndex) =>\n {\n let part = valueReference(program, ref, inputs);\n const sourceComponentIndex = replicatedSelected ? 0 : componentIndex;\n const bitcast = instruction.typeInfo.bitcasts.find((entry) => entry.kind === \"read-bitcast\"\n && entry.operandIndex === operandIndex && entry.componentIndex === sourceComponentIndex\n && entry.valueId === ref.valueId && entry.component === ref.component);\n if (bitcast)\n {\n part = reinterpretCode(part, bitcast.from, bitcast.to, 1, `instruction ${instruction.index} read`);\n }\n return part;\n });\n }\n else if (operand.typeName === \"immediate32\")\n {\n parts = immediateParts(operand, destinationMask, count, type, activeComponents);\n }\n else if (operand.typeName === \"constant_buffer\")\n {\n parts = cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, type, inputs, activeComponents);\n }\n else if (operand.typeName === \"indexable_temp\")\n {\n parts = constTableParts(program, instruction, operandIndex, operand, destinationMask, count, type, inputs, activeComponents);\n }\n else if (operand.typeName === \"immediate_constant_buffer\")\n {\n parts = icbParts(program, instruction, operandIndex, operand, destinationMask, count, type, inputs, activeComponents);\n }\n else\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} cannot lower ${operand.typeName} operand ${operandIndex}`);\n }\n return vectorCode(applyModifier(parts, operand, type, modifierStorageTypes, instruction, operandIndex), type);\n}\n\nfunction floatBound(count, value)\n{\n return count === 1 ? value : `vec${count}<f32>(${value})`;\n}\n\nfunction zeroMask(count)\n{\n return count === 1 ? \"0u\" : `vec${count}<u32>(0u)`;\n}\n\nfunction fullMask(count)\n{\n return count === 1 ? \"0xffffffffu\" : `vec${count}<u32>(0xffffffffu)`;\n}\n\nfunction oneMask(count)\n{\n return count === 1 ? \"1u\" : `vec${count}<u32>(1u)`;\n}\n\nfunction splatScalar(code, count)\n{\n return count === 1 ? code : `vec${count}<f32>(${code})`;\n}\n\nfunction structuredLoadExpression(program, instruction, write, type, inputs, bindings)\n{\n const count = write.mask.length;\n if (instruction.operands.length !== 4)\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} requires four operands`);\n }\n const addressOperand = instruction.operands[1];\n if (!COMPONENTS.includes(addressOperand?.selected) || (addressOperand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} requires one unmodified scalar address`);\n }\n const address = operandExpression(program, instruction, 1, write.mask, 1, inputs, bindings);\n const byteOffsetOperand = instruction.operands[2];\n const byteOffset = byteOffsetOperand?.immediateValues?.[0]?.uint32;\n if (byteOffsetOperand?.typeName !== \"immediate32\" || byteOffsetOperand.immediateValues?.length !== 1\n || (byteOffsetOperand.modifierName || \"none\") !== \"none\"\n || !Number.isInteger(byteOffset))\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} requires an immediate byte offset`);\n }\n const resource = validateFixedHandleOperand(instruction, 3, \"resource\", \"vertex\");\n const binding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!binding?.buffer || !Number.isInteger(binding.structureStride))\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} has no structured buffer binding`);\n }\n const strideWords = binding.structureStride / 4;\n const firstWord = byteOffset / 4;\n if (byteOffset % 4 !== 0)\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} has a non-DWORD byte offset`);\n }\n const swizzle = sourceComponents(resource, write.mask, count);\n const symbol = binding.generatedSymbol;\n const wordCount = `arrayLength(&${symbol})`;\n const addressInRange = `${address} < (${wordCount} / ${strideWords}u)`;\n const selected = swizzle.map((component) =>\n {\n const index = COMPONENTS.indexOf(component);\n const word = firstWord + index;\n if (index < 0 || word >= strideWords)\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} exceeds its ${binding.structureStride}-byte stride`);\n }\n const wordAddress = `((${address}) * ${strideWords}u) + ${word}u`;\n const safeWordAddress = `min(${wordAddress}, ${wordCount} - 1u)`;\n return `select(0u, ${symbol}[${safeWordAddress}], ${addressInRange})`;\n });\n if (type === null) return selected;\n const parts = selected.map((part) => reinterpretCode(part, \"uint32\", type.scalarType, 1,\n `structured load ${instruction.index}`));\n return vectorCode(parts, type.scalarType);\n}\n\nfunction expressionFor(program, instruction, write, type, inputs, bindings)\n{\n const mask = write.mask;\n const count = mask.length;\n const source = (index, forcedCount = count) =>\n operandExpression(program, instruction, index, mask, forcedCount, inputs, bindings);\n const op = instruction.opcodeName;\n if ([ \"add\", \"iadd\", \"mul\", \"div\" ].includes(op))\n {\n const operator = { add: \"+\", iadd: \"+\", mul: \"*\", div: \"/\" }[op];\n return `(${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mad\" || op === \"imad\" || op === \"umad\") return `((${source(1)} * ${source(2)}) + ${source(3)})`;\n if (op === \"f16tof32\" || op === \"f32tof16\")\n {\n const src = source(1);\n const lane = (index) => (count === 1 ? `(${src})` : `(${src})[${index}]`);\n const parts = Array.from({ length: count }, (_, index) => (op === \"f16tof32\"\n ? `unpack2x16float(${lane(index)}).x`\n : `(pack2x16float(vec2<f32>(${lane(index)}, 0.0)) & 0xffffu)`));\n return vectorCode(parts, op === \"f16tof32\" ? \"float32\" : \"uint32\");\n }\n if (op === \"imul\" || op === \"umul\")\n {\n if (write.operandIndex !== 1)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} does not support the ${op} high result`);\n }\n return `(${source(2)} * ${source(3)})`;\n }\n if (op === \"udiv\")\n {\n const divisor = instruction.operands[3];\n const lanes = (divisor?.immediateValues || []).map((value) => value.uint32);\n const operator = write.operandIndex === 0 ? \"/\" : write.operandIndex === 1 ? \"%\" : null;\n if (!operator) throw new Error(`WGSL vertex udiv instruction ${instruction.index} has an unexpected destination operand`);\n if (divisor?.typeName === \"immediate32\" && (divisor.modifierName ?? \"none\") === \"none\" && lanes.length\n && lanes.every((value) => Number.isInteger(value) && value !== 0))\n {\n return `(${source(2)} ${operator} ${source(3)})`;\n }\n const dividendCode = source(2);\n const divisorCode = source(3);\n return `select(${fullMask(count)}, (${dividendCode} ${operator} max(${divisorCode}, ${oneMask(count)})), ${divisorCode} != ${zeroMask(count)})`;\n }\n if (op === \"and\") return `(${source(1)} & ${source(2)})`;\n if (op === \"or\") return `(${source(1)} | ${source(2)})`;\n if (op === \"xor\") return `(${source(1)} ^ ${source(2)})`;\n if (op === \"ushr\") return `(${source(1)} >> ${source(2)})`;\n if ([ \"lt\", \"ge\", \"eq\", \"ne\", \"ilt\", \"ige\", \"ieq\", \"ine\", \"ult\", \"uge\" ].includes(op))\n {\n const operator = { lt: \"<\", ge: \">=\", eq: \"==\", ne: \"!=\", ilt: \"<\", ige: \">=\", ieq: \"==\", ine: \"!=\", ult: \"<\", uge: \">=\" }[op];\n return `select(${zeroMask(count)}, ${fullMask(count)}, ${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mov\") return source(1);\n if (op === \"movc\") return `select(${source(3)}, ${source(2)}, ${source(1)} != ${zeroMask(count)})`;\n if (op === \"exp\") return `exp2(${source(1)})`;\n if (op === \"log\") return `log2(${source(1)})`;\n if (op === \"rcp\")\n {\n validateRcpImmediate(program, instruction, write);\n return `(${floatBound(count, \"1.0\")} / ${source(1)})`;\n }\n if (op === \"rsq\") return `inverseSqrt(${source(1)})`;\n if (op === \"sqrt\") return `sqrt(${source(1)})`;\n if ([ \"max\", \"imax\", \"umax\" ].includes(op)) return `max(${source(1)}, ${source(2)})`;\n if ([ \"min\", \"imin\", \"umin\" ].includes(op)) return `min(${source(1)}, ${source(2)})`;\n if (op === \"ishl\") return `(${source(1)} << u32(${source(2)}))`;\n if (op === \"ishr\") return `(${source(1)} >> u32(${source(2)}))`;\n if (op === \"frc\") return `fract(${source(1)})`;\n if (op === \"round_ni\") return `floor(${source(1)})`;\n if (op === \"round_pi\") return `ceil(${source(1)})`;\n if (op === \"round_z\") return `trunc(${source(1)})`;\n if (op === \"sincos\")\n {\n const fn = write.operandIndex === 0 ? \"sin\" : write.operandIndex === 1 ? \"cos\" : null;\n if (!fn) throw new Error(`WGSL vertex sincos instruction ${instruction.index} has an unexpected destination operand`);\n return `${fn}(${source(2)})`;\n }\n if (op === \"ld_structured\") return structuredLoadExpression(program, instruction, write, type, inputs, bindings);\n if (op === \"ld\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"vertex\");\n const bufferBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!bufferBinding) throw new Error(`WGSL vertex instruction ${instruction.index} has an unresolved load resource`);\n if (!bufferBinding.buffer || Number.isInteger(bufferBinding.structureStride))\n {\n throw new Error(`WGSL vertex load instruction ${instruction.index} resource shape is not supported; only typed buffers are supported`);\n }\n // Typed Buffer SRV: storage-array element fetch. D3D ld returns\n // zero out of bounds. Clamp the eagerly evaluated WGSL load itself\n // before selecting zero so no invalid memory reference is formed.\n const element = bufferBinding.type.slice(\"array<\".length, -1);\n const address = source(1, 1);\n const symbol = bufferBinding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n const loaded = `select(${element}(), ${symbol}[min(${address}, ${length} - 1u)], ${address} < ${length})`;\n const components = sourceComponents(resource, write.mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (op === \"sample_l\" || op === \"sample_d\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"vertex\");\n const sampler = validateFixedHandleOperand(instruction, 3, \"sampler\", \"vertex\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n const samplerBinding = bindingForOperand(bindings, \"sampler\", sampler);\n if (!textureBinding || !samplerBinding) throw new Error(`WGSL vertex instruction ${instruction.index} has unresolved sample bindings`);\n const viewDimension = textureBinding.texture?.viewDimension;\n const coordComponents = viewDimension === \"2d\" ? 2 : 3;\n const gradientComponents = [ \"2d\", \"2d-array\" ].includes(viewDimension) ? 2 : 3;\n let coord;\n let arrayArg = \"\";\n if (viewDimension === \"2d-array\")\n {\n const coord3 = source(1, 3);\n coord = `${coord3}.xy`;\n arrayArg = `, i32(round(${coord3}.z))`;\n }\n else\n {\n coord = source(1, coordComponents);\n }\n const tex = `${textureBinding.generatedSymbol}, ${samplerBinding.generatedSymbol}`;\n const offsetArg = sampleOffsetArgument(instruction, viewDimension);\n const sampled = op === \"sample_l\"\n ? `textureSampleLevel(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : `textureSampleGrad(${tex}, ${coord}${arrayArg}, ${source(4, gradientComponents)}, ${source(5, gradientComponents)}${offsetArg})`;\n const components = sourceComponents(resource, write.mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? sampled : `${sampled}.${components.join(\"\")}`;\n }\n if (op === \"dp2\") return splatScalar(`dot(${source(1, 2)}, ${source(2, 2)})`, count);\n if (op === \"dp3\") return splatScalar(`dot(${source(1, 3)}, ${source(2, 3)})`, count);\n if (op === \"dp4\") return splatScalar(`dot(${source(1, 4)}, ${source(2, 4)})`, count);\n if (NUMERIC_CONVERSIONS[op])\n {\n const conversion = instruction.typeInfo.conversion;\n const [ from, to ] = NUMERIC_CONVERSIONS[op];\n if (conversion?.from !== from || conversion?.to !== to)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has invalid ${op} conversion metadata`);\n }\n return `${fieldType(to, count)}(${source(1)})`;\n }\n throw new Error(`WGSL vertex opcode ${op} at instruction ${instruction.index} is not supported`);\n}\n\nfunction applyResultBitcast(program, instruction, write, expression, type)\n{\n const components = Array.from(write.mask);\n const records = instruction.typeInfo.bitcasts.filter((entry) => entry.kind === \"result-bitcast\"\n && entry.operandIndex === write.operandIndex && entry.valueId === write.valueId);\n if (!records.length) return expression;\n const intrinsicType = instruction.typeInfo.resultType;\n if (records.length !== components.length || records.some((entry) =>\n entry.from !== intrinsicType || entry.to !== type.scalarType)\n || components.some((component) => !records.some((entry) => entry.component === component)))\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has unsupported result bitcasts`);\n }\n return reinterpretCode(expression, intrinsicType, type.scalarType, components.length,\n `instruction ${instruction.index} result`);\n}\n\nfunction lowerInstruction(program, instruction, inputs, outputs, bindings, written, readValueIds)\n{\n if (!SUPPORTED_OPCODES.has(instruction.opcodeName))\n {\n throw new Error(`WGSL vertex opcode ${instruction.opcodeName} at instruction ${instruction.index} is not supported`);\n }\n const unsupportedExtension = instruction.extensions?.find((extension) =>\n !METADATA_OPCODE_EXTENSIONS.has(extension.typeName)\n && !(extension.typeName === \"sample_controls\"\n && SAMPLE_OFFSET_OPCODES.has(instruction.opcodeName)));\n if (unsupportedExtension)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} opcode extension ${unsupportedExtension.typeName} is not supported`);\n }\n validatePreciseInstruction(instruction, \"vertex\");\n const imprecise = instruction.operands.find(unsupportedMinPrecision);\n if (imprecise)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} minimum-precision kind ${imprecise.minPrecisionName} is not supported`);\n }\n validateRegisterBitcasts(program, instruction);\n if (instruction.opcodeName === \"ld_structured\" && instruction.saturate)\n {\n throw new Error(`WGSL vertex structured load ${instruction.index} cannot saturate its result`);\n }\n if (instruction.opcodeName === \"ret\")\n {\n for (const field of outputs)\n {\n const missing = field.components.filter((component) => !written.get(field.id).has(component));\n // A builtin output (SV_Position) must be fully written — zero is not a\n // meaningful position. A location varying (COLOR/TEXCOORD) left unwritten\n // is undefined under D3D; WGSL zero-initializes `var output`, so the\n // unwritten lanes read as 0 — a safe, valid choice. Some EVE shaders\n // (e.g. ui/ubershader3d) declare outputs a given permutation never fills.\n if (missing.length && field.attribute?.kind === \"builtin\")\n {\n throw new Error(`WGSL vertex output ${field.semanticName}${field.semanticIndex} leaves ${missing.join(\"\")} unwritten before return`);\n }\n }\n return { kind: \"return\", instructionIndex: instruction.index, dxbcOffset: instruction.dxbcOffset };\n }\n const writes = instruction.dataflow.writes;\n if (!writes.length) throw new Error(`WGSL vertex instruction ${instruction.index} has no result write`);\n if (instruction.opcodeName === \"sincos\" || instruction.opcodeName === \"udiv\")\n {\n const destinationOperands = writes.map((write) => write.operandIndex);\n if (writes.length > 2 || new Set(destinationOperands).size !== writes.length\n || destinationOperands.some((operandIndex) => ![ 0, 1 ].includes(operandIndex)))\n {\n throw new Error(`WGSL vertex ${instruction.opcodeName} instruction ${instruction.index} has unsupported result writes`);\n }\n if (writes.length === 2 && writes[0].mask !== writes[1].mask)\n {\n throw new Error(`WGSL vertex ${instruction.opcodeName} instruction ${instruction.index} requires matching destination masks`);\n }\n }\n else if (writes.length !== 1)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} has unsupported multiple result writes`);\n }\n\n function lowerWrite(write)\n {\n const destination = instruction.operands[write.operandIndex];\n const indexableAddress = destination?.typeName === \"indexable_temp\"\n ? validateIndexableTempWrite(program, destination, write)\n : null;\n const localSsaDestination = destination?.typeName === \"temp\" || Boolean(indexableAddress);\n if (isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)) return [];\n const mixedTypes = mixedImmediateTypes(program, write);\n if (mixedTypes)\n {\n if (instruction.opcodeName === \"ld_structured\" && localSsaDestination && !instruction.saturate)\n {\n const words = structuredLoadExpression(program, instruction, write, null, inputs, bindings);\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: reinterpretCode(words[laneIndex], \"uint32\", mixedTypes[laneIndex], 1, `structured load ${instruction.index}`),\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const intrinsic = instruction.typeInfo.resultType;\n if (localSsaDestination && scalarTypeName(intrinsic) && instruction.opcodeName !== \"mov\")\n {\n let packedCode = expressionFor(program, instruction, write,\n { scalarType: intrinsic, wgslType: fieldType(intrinsic, write.mask.length) }, inputs, bindings);\n if (instruction.saturate)\n {\n if (intrinsic !== \"float32\") throw new Error(`WGSL vertex instruction ${instruction.index} saturates a non-float result`);\n packedCode = `clamp(${packedCode}, ${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")})`;\n }\n const packedName = `${write.valueId}_p`;\n const packedType = fieldType(intrinsic, write.mask.length);\n const statements = [ {\n kind: \"let\", instructionIndex: instruction.index, dxbcOffset: instruction.dxbcOffset,\n name: packedName, type: packedType, expression: { code: packedCode, type: packedType }\n } ];\n Array.from(write.mask).forEach((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const access = write.mask.length === 1 ? packedName : `${packedName}.${COMPONENTS[laneIndex]}`;\n statements.push({\n kind: \"let\", name: `${write.valueId}_${component}`, type: scalarTypeName(laneType),\n expression: { code: reinterpretCode(access, intrinsic, laneType, 1, `mixed write ${instruction.index}`), type: scalarTypeName(laneType) }\n });\n });\n return statements;\n }\n if (instruction.opcodeName === \"movc\" && localSsaDestination && !instruction.saturate)\n {\n return Array.from(write.mask).map((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const condition = operandLaneExpression(program, instruction, 1, write.mask, laneIndex, \"uint32\", inputs, bindings);\n const whenTrue = operandLaneExpression(program, instruction, 2, write.mask, laneIndex, laneType, inputs, bindings, true);\n const whenFalse = operandLaneExpression(program, instruction, 3, write.mask, laneIndex, laneType, inputs, bindings, true);\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: `select(${whenFalse}, ${whenTrue}, ${condition} != 0u)`,\n type: scalarTypeName(laneType)\n }\n };\n });\n }\n const immediateSource = instruction.operands[1];\n if (instruction.opcodeName !== \"mov\" || instruction.saturate\n || !localSsaDestination || immediateSource?.typeName !== \"immediate32\")\n {\n throw new Error(`WGSL vertex value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: immediateParts(immediateSource, component, 1, mixedTypes[laneIndex])[0],\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const type = valueType(program, write);\n let expression = expressionFor(program, instruction, write, type, inputs, bindings);\n if (instruction.saturate)\n {\n const clampBounds = `${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")}`;\n if (instruction.typeInfo.resultType === \"float32\")\n {\n expression = `clamp(${expression}, ${clampBounds})`;\n }\n else if ([ \"mov\", \"movc\" ].includes(instruction.opcodeName)\n && [ \"int32\", \"uint32\", \"bitpattern32\" ].includes(type.scalarType))\n {\n // D3D saturate assumes float data (like source modifiers); on a\n // bit-preserving mover whose lanes resolved to integer storage,\n // clamp the float interpretation of the bits and keep the storage.\n const floatType = fieldType(\"float32\", write.mask.length);\n expression = `bitcast<${type.wgslType}>(clamp(bitcast<${floatType}>(${expression}), ${clampBounds}))`;\n }\n else\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} saturates a non-float result`);\n }\n }\n expression = applyResultBitcast(program, instruction, write, expression, type);\n if (destination.typeName === \"output\")\n {\n const field = outputs.find((entry) => entry.registerIndex === destination.registerIndex);\n if (!field) throw new Error(`WGSL vertex instruction ${instruction.index} references undeclared output r${destination.registerIndex}`);\n const components = Array.from(write.mask).map((component) => packedComponent(field.components.join(\"\"), component));\n const outputType = fieldType(field.scalarType, write.mask.length);\n const assignmentExpression = reinterpretCode(expression, type.scalarType, field.scalarType, write.mask.length,\n `output r${destination.registerIndex}`);\n Array.from(write.mask).forEach((component) => written.get(field.id).add(component));\n const assignment = {\n kind: \"assignment\",\n target: { fieldId: field.id, components, type: outputType },\n expression: { code: assignmentExpression, type: outputType }\n };\n if (!readValueIds.has(write.valueId))\n {\n return { ...assignment, instructionIndex: instruction.index, dxbcOffset: instruction.dxbcOffset };\n }\n return [\n {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n },\n {\n ...assignment,\n expression: {\n code: reinterpretCode(write.valueId, type.scalarType, field.scalarType, write.mask.length,\n `output r${destination.registerIndex}`),\n type: outputType\n }\n }\n ];\n }\n if (!localSsaDestination)\n {\n throw new Error(`WGSL vertex instruction ${instruction.index} writes unsupported ${destination.typeName}`);\n }\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n };\n }\n\n const statements = writes.flatMap((write) => lowerWrite(write));\n return statements.length === 1 ? statements[0] : statements;\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\n/**\n * Lowers the bounded straight-line vertex slice into typed SSA expressions,\n * interface assignments, and canonical uniform-buffer bindings.\n *\n * @param {object} program Frozen CJS shader IR.\n * @returns {object} Frozen typed vertex program.\n */\nexport function lowerVertexProgram(program, options = {})\n{\n if (program?.format !== \"CJS_SHADER_IR\") throw new TypeError(\"WGSL vertex lowering expects CJS_SHADER_IR input\");\n if (program.stage !== \"vertex\") throw new Error(`WGSL vertex lowering cannot lower ${program.stage}`);\n if (program.shaderModel.major !== 5 || ![ 0, 1 ].includes(program.shaderModel.minor))\n {\n throw new Error(\"WGSL vertex body slice currently supports only SM5.0/SM5.1\");\n }\n requireRefactoringAllowed(program, \"vertex\");\n const liveRegisters = liveInputRegisters(program);\n const inputs = interfaceFields(program, \"input\").filter((field) => liveRegisters.has(field.registerIndex));\n const outputs = interfaceFields(program, \"output\");\n // Mirror the fragment stage's non-default interpolation modes (recorded on\n // the pass-global plan) — WebGPU requires both sides of a location to match.\n for (const field of outputs)\n {\n const interpolation = options.bindingPlan?.varyingInterpolation?.[field.registerIndex];\n if (interpolation && field.attribute.kind === \"location\") field.interpolation = interpolation;\n }\n for (const fields of [ inputs, outputs ])\n {\n if (new Set(fields.map((field) => field.registerIndex)).size !== fields.length)\n {\n throw new Error(\"WGSL vertex body slice does not support packed signature registers\");\n }\n }\n const bindings = lowerBindingLayout(program, options.bindingPlan);\n if (bindings.some((binding) => ![ \"uniform-buffer\", \"sampled-resource\", \"sampler\" ].includes(binding.resourceKind)))\n {\n throw new Error(\"WGSL vertex body slice supports only uniform, texture, sampler, and read-only structured-buffer bindings\");\n }\n const plans = buildSelectionPlans(program, \"vertex\");\n const written = new Map(outputs.map((field) => [ field.id, new Set() ]));\n const reachableInstructions = new Set(program.blocks\n .filter((block) => block.reachable !== false)\n .flatMap((block) => block.instructionIndices));\n const readValueIds = new Set([\n ...program.instructions.flatMap((instruction) => (reachableInstructions.has(instruction.index)\n ? instruction.dataflow.reads.flatMap((read) => read.refs.map((ref) => ref.valueId))\n : [])),\n ...program.values.flatMap((value) => (value.incoming || []).map((incoming) => incoming.valueId))\n ]);\n\n function exitMergeAssignments(loopExit, breakIndex)\n {\n return (loopExit?.get(breakIndex) || []).map((assign) => ({\n kind: \"value-assignment\", name: assign.id, type: assign.type,\n expression: { code: valueReference(program, assign.ref, inputs), type: assign.type }\n }));\n }\n\n function lowerRange(start, end, rangeWritten, inLoop = false, loopExit = null)\n {\n const statements = [];\n for (let index = start; index < end; index += 1)\n {\n if (!reachableInstructions.has(index)) continue;\n const plan = plans.get(index);\n if (!plan)\n {\n const marker = program.instructions[index].opcodeName;\n if (marker === \"break\" || marker === \"breakc\")\n {\n if (!inLoop) throw new Error(`WGSL vertex has an unmatched ${marker} at instruction ${index}`);\n const breakInstruction = program.instructions[index];\n if (marker === \"break\")\n {\n statements.push(...exitMergeAssignments(loopExit, breakInstruction.index));\n statements.push({ kind: \"break\", instructionIndex: breakInstruction.index, dxbcOffset: breakInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(breakInstruction, \"vertex\");\n validateRegisterBitcasts(program, breakInstruction);\n const conditionOperand = breakInstruction.operands[0];\n const conditionRead = sourceRead(breakInstruction, 0);\n if (breakInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(breakInstruction.testBoolean))\n {\n throw new Error(`WGSL vertex breakc instruction ${breakInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, breakInstruction, 0, \"x\", 1, inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: breakInstruction.index,\n dxbcOffset: breakInstruction.dxbcOffset,\n condition: { code: `${condition} ${breakInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ ...exitMergeAssignments(loopExit, breakInstruction.index), { kind: \"break\" } ]\n });\n continue;\n }\n if (marker === \"continue\" || marker === \"continuec\")\n {\n if (!inLoop) throw new Error(`WGSL vertex has an unmatched ${marker} at instruction ${index}`);\n const continueInstruction = program.instructions[index];\n if (marker === \"continue\")\n {\n statements.push({ kind: \"continue\", instructionIndex: continueInstruction.index, dxbcOffset: continueInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(continueInstruction, \"vertex\");\n validateRegisterBitcasts(program, continueInstruction);\n const conditionOperand = continueInstruction.operands[0];\n const conditionRead = sourceRead(continueInstruction, 0);\n if (continueInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(continueInstruction.testBoolean))\n {\n throw new Error(`WGSL vertex continuec instruction ${continueInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, continueInstruction, 0, \"x\", 1, inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: continueInstruction.index,\n dxbcOffset: continueInstruction.dxbcOffset,\n condition: { code: `${condition} ${continueInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"continue\" } ]\n });\n continue;\n }\n if ([ \"endif\", \"else\", \"case\", \"default\", \"endswitch\", \"endloop\" ].includes(marker))\n {\n throw new Error(`WGSL vertex has an unmatched ${marker} at instruction ${index}`);\n }\n const lowered = lowerInstruction(\n program, program.instructions[index], inputs, outputs, bindings, rangeWritten, readValueIds);\n statements.push(...(Array.isArray(lowered) ? lowered : [ lowered ]));\n continue;\n }\n if (plan.kind === \"loop\")\n {\n const loopInstruction = program.instructions[index];\n if (loopInstruction.opcodeName !== \"loop\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endloop\")\n {\n throw new Error(\"WGSL vertex loop boundaries are malformed\");\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.entryIncoming, inputs), type: merge.type } });\n }\n for (const merge of plan.exitMerges || [])\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: merge.zeroCode, type: merge.type } });\n }\n const bodyWritten = cloneWritten(rangeWritten);\n const body = lowerRange(index + 1, plan.region.endInstruction, bodyWritten, true, plan.exitEdges);\n if (body.at(-1)?.kind === \"return\")\n {\n throw new Error(`WGSL vertex loop at ${index} terminates before latch assignments`);\n }\n // Latch phi updates go in a `continuing` block so they run on both\n // fall-through and `continue` paths.\n const latch = plan.merges.map((merge) => ({ kind: \"value-assignment\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.backedgeIncoming, inputs), type: merge.type } }));\n statements.push({ kind: \"loop\", instructionIndex: loopInstruction.index, dxbcOffset: loopInstruction.dxbcOffset,\n statements: body, continuing: latch });\n index = plan.region.endInstruction;\n continue;\n }\n if (plan.kind === \"switch\")\n {\n const switchInstruction = program.instructions[index];\n if (switchInstruction.opcodeName !== \"switch\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endswitch\")\n {\n throw new Error(\"WGSL vertex switch boundaries are malformed\");\n }\n validatePreciseInstruction(switchInstruction, \"vertex\");\n validateRegisterBitcasts(program, switchInstruction);\n const selectorOperand = switchInstruction.operands[0];\n const selectorRead = sourceRead(switchInstruction, 0);\n if (switchInstruction.saturate || (selectorOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(selectorOperand?.selected) || selectorRead?.refs.length !== 1)\n {\n throw new Error(`WGSL vertex switch instruction ${switchInstruction.index} requires one unmodified scalar selector`);\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: merge.zeroCode, type: merge.type } });\n }\n const selector = operandExpression(program, switchInstruction, 0, \"x\", 1, inputs, bindings);\n const clauses = [];\n const clauseResults = [];\n for (let clauseIndex = 0; clauseIndex < plan.clauses.length; clauseIndex += 1)\n {\n const clause = plan.clauses[clauseIndex];\n const clauseWritten = cloneWritten(rangeWritten);\n const body = lowerRange(clause.bodyStart, clause.bodyEnd, clauseWritten, false, loopExit);\n if ((plan.merges.length || plan.outerMerges?.length) && containsOutputAssignment(body))\n {\n throw new Error(`WGSL vertex switch at ${index} writes output before a live merge`);\n }\n if (body.at(-1)?.kind === \"return\" && (plan.merges.length || plan.outerMerges?.length))\n {\n throw new Error(`WGSL vertex switch at ${index} terminates before merge assignments`);\n }\n for (const merge of [ ...plan.merges, ...(plan.outerMerges || []) ])\n {\n body.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.perClause[clauseIndex], inputs), type: merge.type }\n });\n }\n clauses.push({ selectors: clause.selectors, isDefault: clause.isDefault, statements: body });\n clauseResults.push({ clauseWritten, returns: body.at(-1)?.kind === \"return\" });\n }\n statements.push({\n kind: \"switch\",\n instructionIndex: switchInstruction.index,\n dxbcOffset: switchInstruction.dxbcOffset,\n selector: { code: selector, type: \"u32\" },\n clauses\n });\n if (plan.region.defaultInstruction !== null)\n {\n const continuing = clauseResults.filter((entry) => !entry.returns);\n for (const [ fieldId, target ] of rangeWritten)\n {\n if (!continuing.length) break;\n const sets = continuing.map((entry) => entry.clauseWritten.get(fieldId) || new Set());\n for (const component of sets[0])\n {\n if (sets.every((set) => set.has(component))) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n continue;\n }\n const ifInstruction = program.instructions[index];\n const endInstruction = program.instructions[plan.region.endInstruction];\n if (ifInstruction.opcodeName !== \"if\" || endInstruction.opcodeName !== \"endif\"\n || (plan.hasElse && program.instructions[plan.region.elseInstruction].opcodeName !== \"else\"))\n {\n throw new Error(\"WGSL vertex selection boundaries are malformed\");\n }\n validatePreciseInstruction(ifInstruction, \"vertex\");\n validateRegisterBitcasts(program, ifInstruction);\n const conditionOperand = ifInstruction.operands[0];\n const conditionRead = sourceRead(ifInstruction, 0);\n if (ifInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1)\n {\n throw new Error(`WGSL vertex if instruction ${ifInstruction.index} requires one unmodified scalar condition`);\n }\n for (const merge of plan.merges)\n {\n const expression = plan.hasElse\n ? merge.zeroCode\n : (merge.falseCode || valueReference(program, merge.falseIncoming, inputs));\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: expression, type: merge.type } });\n }\n const condition = operandExpression(program, ifInstruction, 0, \"x\", 1, inputs, bindings);\n const comparison = ifInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\";\n const trueBodyEnd = plan.hasElse ? plan.region.elseInstruction : plan.region.endInstruction;\n const trueWritten = cloneWritten(rangeWritten);\n const trueStatements = lowerRange(index + 1, trueBodyEnd, trueWritten, inLoop, loopExit);\n if (trueStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL vertex selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n if (merge.viaSwitch) continue;\n trueStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.trueIncoming, inputs), type: merge.type }\n });\n }\n let falseStatements = null;\n let falseWritten = null;\n if (plan.hasElse)\n {\n falseWritten = cloneWritten(rangeWritten);\n falseStatements = lowerRange(plan.region.elseInstruction + 1, plan.region.endInstruction, falseWritten, inLoop, loopExit);\n if (falseStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL vertex selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n falseStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: merge.falseCode || valueReference(program, merge.falseIncoming, inputs), type: merge.type }\n });\n }\n }\n statements.push({\n kind: \"if\",\n instructionIndex: ifInstruction.index,\n dxbcOffset: ifInstruction.dxbcOffset,\n condition: { code: `${condition} ${comparison} 0u`, type: \"bool\" },\n statements: trueStatements,\n ...(falseStatements ? { elseStatements: falseStatements } : {})\n });\n if (plan.hasElse)\n {\n const trueReturns = trueStatements.at(-1)?.kind === \"return\";\n const falseReturns = falseStatements.at(-1)?.kind === \"return\";\n for (const [ fieldId, target ] of rangeWritten)\n {\n const fromTrue = trueWritten.get(fieldId) || new Set();\n const fromFalse = falseWritten.get(fieldId) || new Set();\n if (trueReturns && !falseReturns) for (const component of fromFalse) target.add(component);\n else if (falseReturns && !trueReturns) for (const component of fromTrue) target.add(component);\n else if (!trueReturns && !falseReturns)\n {\n for (const component of fromTrue) if (fromFalse.has(component)) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n }\n return statements;\n }\n\n const lowered = lowerRange(0, program.instructions.length, written);\n if (!terminatesAllPaths(lowered)) throw new Error(\"WGSL vertex path must end in return\");\n const statements = hoistEscapingValues(lowered);\n\n return deepFreeze({\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"vertex\",\n entryPoint: \"main\",\n interface: { inputs, outputs },\n bindings,\n immediateConstantBuffer: program.immediateConstantBuffer || null,\n constTables: program.constTables || null,\n statements\n });\n}\n"],"names":["containsOutputAssignment","statements","some","statement","kind","elseStatements","clauses","clause","COMPONENTS","SYSTEM_BUILTINS","Object","freeze","SV_POSITION","INPUT_BUILTINS","SV_VERTEXID","name","scalarType","SV_INSTANCEID","SUPPORTED_OPCODES","Set","METADATA_OPCODE_EXTENSIONS","SAMPLE_OFFSET_OPCODES","NUMERIC_CONVERSIONS","itof","utof","ftoi","ftou","sampleOffsetArgument","instruction","viewDimension","controls","extensions","filter","extension","typeName","length","Error","index","offsets","sampleOffsets","u","v","w","every","value","Number","isInteger","componentsFromMask","mask","_","scalarTypeName","type","float32","int32","uint32","bool","bitpattern32","fieldType","count","scalar","interfaceFields","program","direction","groups","Map","signature","signatures","has","registerIndex","set","get","push","Array","from","values","map","rows","reduce","accumulator","components","component","componentIndex","semantic","String","semanticName","toUpperCase","outputBuiltin","inputBuiltin","builtinName","startsWith","componentTypeName","id","semanticIndex","attribute","packedComponent","indexOf","valueType","write","find","entry","valueId","types","componentTypes","size","wgslType","isDeadUntypedWrite","readValueIds","localSsaDestination","mixedImmediateTypes","liveInputRegisters","reachableBlocks","controlFlow","reachableBlockIds","reachableInstructions","blocks","block","flatMap","instructionIndices","registers","instructions","ref","dataflow","reads","read","refs","origin","register","match","exec","add","sourceRead","operandIndex","vectorCode","parts","join","reinterpretCode","code","fromType","toType","context","to","includes","valueReference","inputs","field","packed","writeMask","sourceComponents","operand","destinationMask","activeComponents","selected","swizzle","positions","slice","immediateRawBits","immediateValues","sourceIndex","bits","immediateParts","expectedType","hex","toString","padStart","validateRcpImmediate","operands","fixedSourceLanes","exponent","bindingForOperand","bindings","resourceKind","rangeId","resourceReference","matches","binding","validateFixedHandleBinding","cbufferVectorIndex","indices","dimension","relative","last","at","base","undefined","validateIndexableTempRead","storage","valueStorageType","indexCode","cbufferParts","expectedScalarType","vectorIndex","generatedSymbol","target","part","icbParts","immediateConstantBuffer","constTableParts","validateIndexableTempOperand","table","constTables","symbol","modifierOnStorage","modifier","bit","raw","masked","MODIFIER_STORAGE_TYPES","applyModifier","expected","storageTypes","modifierName","applyLaneModifier","targetType","typeInfo","operandTypes","bitcastKey","validateRegisterBitcasts","required","forEach","intrinsicResult","resultType","writes","actual","bitcasts","requiredKeys","sort","actualKeys","unsupportedMinPrecision","minPrecisionName","operandLaneExpression","laneIndex","moverData","replicated","Boolean","operandExpression","modifierStorageTypes","replicatedSelected","sourceComponentIndex","bitcast","floatBound","zeroMask","fullMask","oneMask","splatScalar","structuredLoadExpression","addressOperand","address","byteOffsetOperand","byteOffset","resource","validateFixedHandleOperand","buffer","structureStride","strideWords","firstWord","wordCount","addressInRange","word","wordAddress","safeWordAddress","expressionFor","source","forcedCount","op","opcodeName","operator","iadd","mul","div","src","lane","divisor","lanes","dividendCode","divisorCode","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","fn","bufferBinding","element","loaded","sampler","textureBinding","samplerBinding","texture","coordComponents","gradientComponents","coord","arrayArg","coord3","tex","offsetArg","sampled","conversion","applyResultBitcast","expression","records","intrinsicType","lowerInstruction","outputs","written","unsupportedExtension","validatePreciseInstruction","imprecise","saturate","missing","instructionIndex","dxbcOffset","destinationOperands","lowerWrite","destination","indexableAddress","validateIndexableTempWrite","mixedTypes","words","intrinsic","packedCode","packedName","packedType","laneType","access","condition","whenTrue","whenFalse","immediateSource","clampBounds","floatType","outputType","assignmentExpression","assignment","fieldId","deepFreeze","isFrozen","lowerVertexProgram","options","format","TypeError","stage","shaderModel","major","minor","requireRefactoringAllowed","liveRegisters","interpolation","bindingPlan","varyingInterpolation","fields","lowerBindingLayout","plans","buildSelectionPlans","reachable","incoming","exitMergeAssignments","loopExit","breakIndex","assign","lowerRange","start","end","rangeWritten","inLoop","plan","marker","breakInstruction","conditionOperand","conditionRead","testBoolean","continueInstruction","lowered","isArray","loopInstruction","region","endInstruction","merge","merges","entryIncoming","exitMerges","zeroCode","bodyWritten","cloneWritten","body","exitEdges","latch","backedgeIncoming","continuing","switchInstruction","selectorOperand","selectorRead","selector","clauseResults","clauseIndex","clauseWritten","bodyStart","bodyEnd","outerMerges","perClause","selectors","isDefault","returns","defaultInstruction","sets","terminatesAllPaths","ifInstruction","hasElse","elseInstruction","falseCode","falseIncoming","comparison","trueBodyEnd","trueWritten","trueStatements","viaSwitch","trueIncoming","falseStatements","falseWritten","trueReturns","falseReturns","fromTrue","fromFalse","hoistEscapingValues","formatVersion","entryPoint","interface"],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { sha256Utf8 } from '../../../../format/effect/sha256.js';
|
|
2
|
+
|
|
3
|
+
function encodeString(value, parts) {
|
|
4
|
+
parts.push("s", `${value.length}`, ":", value, ";");
|
|
5
|
+
}
|
|
6
|
+
function propertyKeyRecord(key) {
|
|
7
|
+
if (typeof key === "string") return `s${key.length}:${key}`;
|
|
8
|
+
return `y${String(key).length}:${String(key)}`;
|
|
9
|
+
}
|
|
10
|
+
function objectKind(value) {
|
|
11
|
+
if (Array.isArray(value)) return "array";
|
|
12
|
+
const prototype = Object.getPrototypeOf(value);
|
|
13
|
+
if (prototype === Object.prototype) return "object";
|
|
14
|
+
if (prototype === null) return "null-prototype";
|
|
15
|
+
return "foreign-prototype";
|
|
16
|
+
}
|
|
17
|
+
function encodeDescriptor(descriptor, parts, seen, transform = null) {
|
|
18
|
+
if (!descriptor) {
|
|
19
|
+
parts.push("missing;");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!Object.hasOwn(descriptor, "value")) {
|
|
23
|
+
parts.push("accessor;");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
parts.push("data:");
|
|
27
|
+
if (transform) transform(descriptor.value, parts, seen);else encodeValue(descriptor.value, parts, seen);
|
|
28
|
+
}
|
|
29
|
+
function sortedKeys(value, omitted = null) {
|
|
30
|
+
return Reflect.ownKeys(value).filter(key => !omitted?.has(key)).map(key => ({
|
|
31
|
+
key,
|
|
32
|
+
record: propertyKeyRecord(key)
|
|
33
|
+
})).sort((left, right) => left.record < right.record ? -1 : left.record > right.record ? 1 : 0);
|
|
34
|
+
}
|
|
35
|
+
function encodeObject(value, parts, seen, omitted = null, transformProperty = null) {
|
|
36
|
+
if (seen.has(value)) {
|
|
37
|
+
throw new TypeError("Exact semantic records must be acyclic");
|
|
38
|
+
}
|
|
39
|
+
seen.add(value);
|
|
40
|
+
const kind = objectKind(value);
|
|
41
|
+
parts.push("o", `${kind.length}`, ":", kind, "{");
|
|
42
|
+
const keys = sortedKeys(value, omitted);
|
|
43
|
+
parts.push(`${keys.length}`, ":");
|
|
44
|
+
for (const {
|
|
45
|
+
key,
|
|
46
|
+
record
|
|
47
|
+
} of keys) {
|
|
48
|
+
parts.push("k", record, "=");
|
|
49
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
50
|
+
const transform = transformProperty ? transformProperty(key) : null;
|
|
51
|
+
encodeDescriptor(descriptor, parts, seen, transform);
|
|
52
|
+
}
|
|
53
|
+
parts.push("}");
|
|
54
|
+
seen.delete(value);
|
|
55
|
+
}
|
|
56
|
+
function encodeValue(value, parts, seen) {
|
|
57
|
+
if (value === undefined) parts.push("undefined;");else if (value === null) parts.push("null;");else if (typeof value === "boolean") {
|
|
58
|
+
parts.push(value ? "boolean:true;" : "boolean:false;");
|
|
59
|
+
} else if (typeof value === "number") {
|
|
60
|
+
if (Number.isNaN(value)) parts.push("number:NaN;");else if (Object.is(value, -0)) parts.push("number:-0;");else if (value === Number.POSITIVE_INFINITY) {
|
|
61
|
+
parts.push("number:+Infinity;");
|
|
62
|
+
} else if (value === Number.NEGATIVE_INFINITY) {
|
|
63
|
+
parts.push("number:-Infinity;");
|
|
64
|
+
} else parts.push("number:", `${value}`, ";");
|
|
65
|
+
} else if (typeof value === "string") encodeString(value, parts);else if (typeof value === "bigint") {
|
|
66
|
+
parts.push("bigint:", value.toString(), ";");
|
|
67
|
+
} else if (typeof value === "symbol") {
|
|
68
|
+
parts.push("symbol:", propertyKeyRecord(value), ";");
|
|
69
|
+
} else if (typeof value === "function") parts.push("function;");else encodeObject(value, parts, seen);
|
|
70
|
+
}
|
|
71
|
+
function encodeInstruction(instruction, parts, seen) {
|
|
72
|
+
if (!instruction || typeof instruction !== "object") {
|
|
73
|
+
encodeValue(instruction, parts, seen);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
encodeObject(instruction, parts, seen, new Set(["dataflow", "typeInfo"]));
|
|
77
|
+
}
|
|
78
|
+
function instructionTransform(key) {
|
|
79
|
+
return typeof key === "string" && /^\d+$/u.test(key) ? encodeInstruction : null;
|
|
80
|
+
}
|
|
81
|
+
function encodeInstructions(value, parts, seen) {
|
|
82
|
+
if (!Array.isArray(value)) {
|
|
83
|
+
encodeValue(value, parts, seen);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
encodeObject(value, parts, seen, null, instructionTransform);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Produces the lossless semantic digest used only by the particle-emitter
|
|
91
|
+
* exact profile. Source labels and derived CFG/SSA/type annotations are
|
|
92
|
+
* deliberately excluded.
|
|
93
|
+
*
|
|
94
|
+
* @param {object} program CJS shader IR candidate.
|
|
95
|
+
* @returns {string} Lower-case SHA-256 digest.
|
|
96
|
+
*/
|
|
97
|
+
function particleEmitSemanticDigest(program) {
|
|
98
|
+
const parts = ["particle-emit-semantic-profile:1{"];
|
|
99
|
+
const seen = new WeakSet();
|
|
100
|
+
if (!program || typeof program !== "object") {
|
|
101
|
+
encodeValue(program, parts, seen);
|
|
102
|
+
} else {
|
|
103
|
+
encodeObject(program, parts, seen, new Set(["source", "blocks", "controlFlow", "values"]), key => key === "instructions" ? encodeInstructions : null);
|
|
104
|
+
}
|
|
105
|
+
parts.push("}");
|
|
106
|
+
return sha256Utf8(parts.join(""));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { particleEmitSemanticDigest, sha256Utf8 };
|
|
110
|
+
//# sourceMappingURL=particleEmitSemanticDigest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleEmitSemanticDigest.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js"],"sourcesContent":["import { sha256Utf8 } from \"../../../../format/effect/sha256.js\";\n\nexport { sha256Utf8 };\n\nfunction encodeString(value, parts)\n{\n parts.push(\"s\", `${value.length}`, \":\", value, \";\");\n}\n\nfunction propertyKeyRecord(key)\n{\n if (typeof key === \"string\") return `s${key.length}:${key}`;\n return `y${String(key).length}:${String(key)}`;\n}\n\nfunction objectKind(value)\n{\n if (Array.isArray(value)) return \"array\";\n const prototype = Object.getPrototypeOf(value);\n if (prototype === Object.prototype) return \"object\";\n if (prototype === null) return \"null-prototype\";\n return \"foreign-prototype\";\n}\n\nfunction encodeDescriptor(descriptor, parts, seen, transform = null)\n{\n if (!descriptor)\n {\n parts.push(\"missing;\");\n return;\n }\n if (!Object.hasOwn(descriptor, \"value\"))\n {\n parts.push(\"accessor;\");\n return;\n }\n parts.push(\"data:\");\n if (transform) transform(descriptor.value, parts, seen);\n else encodeValue(descriptor.value, parts, seen);\n}\n\nfunction sortedKeys(value, omitted = null)\n{\n return Reflect.ownKeys(value)\n .filter((key) => !omitted?.has(key))\n .map((key) => ({ key, record: propertyKeyRecord(key) }))\n .sort((left, right) =>\n left.record < right.record ? -1 : left.record > right.record ? 1 : 0);\n}\n\nfunction encodeObject(\n value,\n parts,\n seen,\n omitted = null,\n transformProperty = null)\n{\n if (seen.has(value))\n {\n throw new TypeError(\"Exact semantic records must be acyclic\");\n }\n seen.add(value);\n const kind = objectKind(value);\n parts.push(\"o\", `${kind.length}`, \":\", kind, \"{\");\n const keys = sortedKeys(value, omitted);\n parts.push(`${keys.length}`, \":\");\n for (const { key, record } of keys)\n {\n parts.push(\"k\", record, \"=\");\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n const transform = transformProperty\n ? transformProperty(key)\n : null;\n encodeDescriptor(descriptor, parts, seen, transform);\n }\n parts.push(\"}\");\n seen.delete(value);\n}\n\nfunction encodeValue(value, parts, seen)\n{\n if (value === undefined) parts.push(\"undefined;\");\n else if (value === null) parts.push(\"null;\");\n else if (typeof value === \"boolean\")\n {\n parts.push(value ? \"boolean:true;\" : \"boolean:false;\");\n }\n else if (typeof value === \"number\")\n {\n if (Number.isNaN(value)) parts.push(\"number:NaN;\");\n else if (Object.is(value, -0)) parts.push(\"number:-0;\");\n else if (value === Number.POSITIVE_INFINITY)\n {\n parts.push(\"number:+Infinity;\");\n }\n else if (value === Number.NEGATIVE_INFINITY)\n {\n parts.push(\"number:-Infinity;\");\n }\n else parts.push(\"number:\", `${value}`, \";\");\n }\n else if (typeof value === \"string\") encodeString(value, parts);\n else if (typeof value === \"bigint\")\n {\n parts.push(\"bigint:\", value.toString(), \";\");\n }\n else if (typeof value === \"symbol\")\n {\n parts.push(\"symbol:\", propertyKeyRecord(value), \";\");\n }\n else if (typeof value === \"function\") parts.push(\"function;\");\n else encodeObject(value, parts, seen);\n}\n\nfunction encodeInstruction(instruction, parts, seen)\n{\n if (!instruction || typeof instruction !== \"object\")\n {\n encodeValue(instruction, parts, seen);\n return;\n }\n encodeObject(\n instruction,\n parts,\n seen,\n new Set([ \"dataflow\", \"typeInfo\" ]));\n}\n\nfunction instructionTransform(key)\n{\n return typeof key === \"string\" && /^\\d+$/u.test(key)\n ? encodeInstruction\n : null;\n}\n\nfunction encodeInstructions(value, parts, seen)\n{\n if (!Array.isArray(value))\n {\n encodeValue(value, parts, seen);\n return;\n }\n encodeObject(value, parts, seen, null, instructionTransform);\n}\n\n/**\n * Produces the lossless semantic digest used only by the particle-emitter\n * exact profile. Source labels and derived CFG/SSA/type annotations are\n * deliberately excluded.\n *\n * @param {object} program CJS shader IR candidate.\n * @returns {string} Lower-case SHA-256 digest.\n */\nexport function particleEmitSemanticDigest(program)\n{\n const parts = [ \"particle-emit-semantic-profile:1{\" ];\n const seen = new WeakSet();\n if (!program || typeof program !== \"object\")\n {\n encodeValue(program, parts, seen);\n }\n else\n {\n encodeObject(\n program,\n parts,\n seen,\n new Set([ \"source\", \"blocks\", \"controlFlow\", \"values\" ]),\n (key) => key === \"instructions\" ? encodeInstructions : null);\n }\n parts.push(\"}\");\n return sha256Utf8(parts.join(\"\"));\n}\n"],"names":["encodeString","value","parts","push","length","propertyKeyRecord","key","String","objectKind","Array","isArray","prototype","Object","getPrototypeOf","encodeDescriptor","descriptor","seen","transform","hasOwn","encodeValue","sortedKeys","omitted","Reflect","ownKeys","filter","has","map","record","sort","left","right","encodeObject","transformProperty","TypeError","add","kind","keys","getOwnPropertyDescriptor","delete","undefined","Number","isNaN","is","POSITIVE_INFINITY","NEGATIVE_INFINITY","toString","encodeInstruction","instruction","Set","instructionTransform","test","encodeInstructions","particleEmitSemanticDigest","program","WeakSet","sha256Utf8","join"],"mappings":";;AAIA,SAASA,YAAYA,CAACC,KAAK,EAAEC,KAAK,EAClC;AACIA,EAAAA,KAAK,CAACC,IAAI,CAAC,GAAG,EAAE,GAAGF,KAAK,CAACG,MAAM,CAAA,CAAE,EAAE,GAAG,EAAEH,KAAK,EAAE,GAAG,CAAC;AACvD;AAEA,SAASI,iBAAiBA,CAACC,GAAG,EAC9B;AACI,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,CAAA,CAAA,EAAIA,GAAG,CAACF,MAAM,CAAA,CAAA,EAAIE,GAAG,CAAA,CAAE;AAC3D,EAAA,OAAO,CAAA,CAAA,EAAIC,MAAM,CAACD,GAAG,CAAC,CAACF,MAAM,CAAA,CAAA,EAAIG,MAAM,CAACD,GAAG,CAAC,CAAA,CAAE;AAClD;AAEA,SAASE,UAAUA,CAACP,KAAK,EACzB;EACI,IAAIQ,KAAK,CAACC,OAAO,CAACT,KAAK,CAAC,EAAE,OAAO,OAAO;AACxC,EAAA,MAAMU,SAAS,GAAGC,MAAM,CAACC,cAAc,CAACZ,KAAK,CAAC;AAC9C,EAAA,IAAIU,SAAS,KAAKC,MAAM,CAACD,SAAS,EAAE,OAAO,QAAQ;AACnD,EAAA,IAAIA,SAAS,KAAK,IAAI,EAAE,OAAO,gBAAgB;AAC/C,EAAA,OAAO,mBAAmB;AAC9B;AAEA,SAASG,gBAAgBA,CAACC,UAAU,EAAEb,KAAK,EAAEc,IAAI,EAAEC,SAAS,GAAG,IAAI,EACnE;EACI,IAAI,CAACF,UAAU,EACf;AACIb,IAAAA,KAAK,CAACC,IAAI,CAAC,UAAU,CAAC;AACtB,IAAA;AACJ,EAAA;EACA,IAAI,CAACS,MAAM,CAACM,MAAM,CAACH,UAAU,EAAE,OAAO,CAAC,EACvC;AACIb,IAAAA,KAAK,CAACC,IAAI,CAAC,WAAW,CAAC;AACvB,IAAA;AACJ,EAAA;AACAD,EAAAA,KAAK,CAACC,IAAI,CAAC,OAAO,CAAC;EACnB,IAAIc,SAAS,EAAEA,SAAS,CAACF,UAAU,CAACd,KAAK,EAAEC,KAAK,EAAEc,IAAI,CAAC,CAAC,KACnDG,WAAW,CAACJ,UAAU,CAACd,KAAK,EAAEC,KAAK,EAAEc,IAAI,CAAC;AACnD;AAEA,SAASI,UAAUA,CAACnB,KAAK,EAAEoB,OAAO,GAAG,IAAI,EACzC;EACI,OAAOC,OAAO,CAACC,OAAO,CAACtB,KAAK,CAAC,CACxBuB,MAAM,CAAElB,GAAG,IAAK,CAACe,OAAO,EAAEI,GAAG,CAACnB,GAAG,CAAC,CAAC,CACnCoB,GAAG,CAAEpB,GAAG,KAAM;IAAEA,GAAG;IAAEqB,MAAM,EAAEtB,iBAAiB,CAACC,GAAG;AAAE,GAAC,CAAC,CAAC,CACvDsB,IAAI,CAAC,CAACC,IAAI,EAAEC,KAAK,KACdD,IAAI,CAACF,MAAM,GAAGG,KAAK,CAACH,MAAM,GAAG,EAAE,GAAGE,IAAI,CAACF,MAAM,GAAGG,KAAK,CAACH,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AACjF;AAEA,SAASI,YAAYA,CACjB9B,KAAK,EACLC,KAAK,EACLc,IAAI,EACJK,OAAO,GAAG,IAAI,EACdW,iBAAiB,GAAG,IAAI,EAC5B;AACI,EAAA,IAAIhB,IAAI,CAACS,GAAG,CAACxB,KAAK,CAAC,EACnB;AACI,IAAA,MAAM,IAAIgC,SAAS,CAAC,wCAAwC,CAAC;AACjE,EAAA;AACAjB,EAAAA,IAAI,CAACkB,GAAG,CAACjC,KAAK,CAAC;AACf,EAAA,MAAMkC,IAAI,GAAG3B,UAAU,CAACP,KAAK,CAAC;AAC9BC,EAAAA,KAAK,CAACC,IAAI,CAAC,GAAG,EAAE,GAAGgC,IAAI,CAAC/B,MAAM,CAAA,CAAE,EAAE,GAAG,EAAE+B,IAAI,EAAE,GAAG,CAAC;AACjD,EAAA,MAAMC,IAAI,GAAGhB,UAAU,CAACnB,KAAK,EAAEoB,OAAO,CAAC;EACvCnB,KAAK,CAACC,IAAI,CAAC,CAAA,EAAGiC,IAAI,CAAChC,MAAM,CAAA,CAAE,EAAE,GAAG,CAAC;AACjC,EAAA,KAAK,MAAM;IAAEE,GAAG;AAAEqB,IAAAA;GAAQ,IAAIS,IAAI,EAClC;IACIlC,KAAK,CAACC,IAAI,CAAC,GAAG,EAAEwB,MAAM,EAAE,GAAG,CAAC;IAC5B,MAAMZ,UAAU,GAAGH,MAAM,CAACyB,wBAAwB,CAACpC,KAAK,EAAEK,GAAG,CAAC;IAC9D,MAAMW,SAAS,GAAGe,iBAAiB,GAC7BA,iBAAiB,CAAC1B,GAAG,CAAC,GACtB,IAAI;IACVQ,gBAAgB,CAACC,UAAU,EAAEb,KAAK,EAAEc,IAAI,EAAEC,SAAS,CAAC;AACxD,EAAA;AACAf,EAAAA,KAAK,CAACC,IAAI,CAAC,GAAG,CAAC;AACfa,EAAAA,IAAI,CAACsB,MAAM,CAACrC,KAAK,CAAC;AACtB;AAEA,SAASkB,WAAWA,CAAClB,KAAK,EAAEC,KAAK,EAAEc,IAAI,EACvC;AACI,EAAA,IAAIf,KAAK,KAAKsC,SAAS,EAAErC,KAAK,CAACC,IAAI,CAAC,YAAY,CAAC,CAAC,KAC7C,IAAIF,KAAK,KAAK,IAAI,EAAEC,KAAK,CAACC,IAAI,CAAC,OAAO,CAAC,CAAC,KACxC,IAAI,OAAOF,KAAK,KAAK,SAAS,EACnC;IACIC,KAAK,CAACC,IAAI,CAACF,KAAK,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC1D,EAAA,CAAC,MACI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAClC;AACI,IAAA,IAAIuC,MAAM,CAACC,KAAK,CAACxC,KAAK,CAAC,EAAEC,KAAK,CAACC,IAAI,CAAC,aAAa,CAAC,CAAC,KAC9C,IAAIS,MAAM,CAAC8B,EAAE,CAACzC,KAAK,EAAE,EAAE,CAAC,EAAEC,KAAK,CAACC,IAAI,CAAC,YAAY,CAAC,CAAC,KACnD,IAAIF,KAAK,KAAKuC,MAAM,CAACG,iBAAiB,EAC3C;AACIzC,MAAAA,KAAK,CAACC,IAAI,CAAC,mBAAmB,CAAC;AACnC,IAAA,CAAC,MACI,IAAIF,KAAK,KAAKuC,MAAM,CAACI,iBAAiB,EAC3C;AACI1C,MAAAA,KAAK,CAACC,IAAI,CAAC,mBAAmB,CAAC;AACnC,IAAA,CAAC,MACID,KAAK,CAACC,IAAI,CAAC,SAAS,EAAE,CAAA,EAAGF,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC;EAC/C,CAAC,MACI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAED,YAAY,CAACC,KAAK,EAAEC,KAAK,CAAC,CAAC,KAC1D,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAClC;AACIC,IAAAA,KAAK,CAACC,IAAI,CAAC,SAAS,EAAEF,KAAK,CAAC4C,QAAQ,EAAE,EAAE,GAAG,CAAC;AAChD,EAAA,CAAC,MACI,IAAI,OAAO5C,KAAK,KAAK,QAAQ,EAClC;IACIC,KAAK,CAACC,IAAI,CAAC,SAAS,EAAEE,iBAAiB,CAACJ,KAAK,CAAC,EAAE,GAAG,CAAC;EACxD,CAAC,MACI,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAEC,KAAK,CAACC,IAAI,CAAC,WAAW,CAAC,CAAC,KACzD4B,YAAY,CAAC9B,KAAK,EAAEC,KAAK,EAAEc,IAAI,CAAC;AACzC;AAEA,SAAS8B,iBAAiBA,CAACC,WAAW,EAAE7C,KAAK,EAAEc,IAAI,EACnD;AACI,EAAA,IAAI,CAAC+B,WAAW,IAAI,OAAOA,WAAW,KAAK,QAAQ,EACnD;AACI5B,IAAAA,WAAW,CAAC4B,WAAW,EAAE7C,KAAK,EAAEc,IAAI,CAAC;AACrC,IAAA;AACJ,EAAA;AACAe,EAAAA,YAAY,CACRgB,WAAW,EACX7C,KAAK,EACLc,IAAI,EACJ,IAAIgC,GAAG,CAAC,CAAE,UAAU,EAAE,UAAU,CAAE,CAAC,CAAC;AAC5C;AAEA,SAASC,oBAAoBA,CAAC3C,GAAG,EACjC;AACI,EAAA,OAAO,OAAOA,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC4C,IAAI,CAAC5C,GAAG,CAAC,GAC9CwC,iBAAiB,GACjB,IAAI;AACd;AAEA,SAASK,kBAAkBA,CAAClD,KAAK,EAAEC,KAAK,EAAEc,IAAI,EAC9C;AACI,EAAA,IAAI,CAACP,KAAK,CAACC,OAAO,CAACT,KAAK,CAAC,EACzB;AACIkB,IAAAA,WAAW,CAAClB,KAAK,EAAEC,KAAK,EAAEc,IAAI,CAAC;AAC/B,IAAA;AACJ,EAAA;EACAe,YAAY,CAAC9B,KAAK,EAAEC,KAAK,EAAEc,IAAI,EAAE,IAAI,EAAEiC,oBAAoB,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,0BAA0BA,CAACC,OAAO,EAClD;AACI,EAAA,MAAMnD,KAAK,GAAG,CAAE,mCAAmC,CAAE;AACrD,EAAA,MAAMc,IAAI,GAAG,IAAIsC,OAAO,EAAE;AAC1B,EAAA,IAAI,CAACD,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACIlC,IAAAA,WAAW,CAACkC,OAAO,EAAEnD,KAAK,EAAEc,IAAI,CAAC;AACrC,EAAA,CAAC,MAED;AACIe,IAAAA,YAAY,CACRsB,OAAO,EACPnD,KAAK,EACLc,IAAI,EACJ,IAAIgC,GAAG,CAAC,CAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAE,CAAC,EACvD1C,GAAG,IAAKA,GAAG,KAAK,cAAc,GAAG6C,kBAAkB,GAAG,IAAI,CAAC;AACpE,EAAA;AACAjD,EAAAA,KAAK,CAACC,IAAI,CAAC,GAAG,CAAC;EACf,OAAOoD,UAAU,CAACrD,KAAK,CAACsD,IAAI,CAAC,EAAE,CAAC,CAAC;AACrC;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const COMPONENT_MASK = /^x?y?z?w?$/u;
|
|
2
|
+
const REFACTORING_ALLOWED = 1 << 11;
|
|
3
|
+
function fail(stage, instruction, message) {
|
|
4
|
+
throw new Error(`WGSL ${stage} instruction ${instruction.index} precise ${instruction.opcodeName} ${message}`);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Requires the DXBC shader to opt into refactoring. Without the global flag,
|
|
9
|
+
* DXBC defines every operation as precise, which portable WGSL cannot promise.
|
|
10
|
+
*
|
|
11
|
+
* @param {object} program CJS shader IR.
|
|
12
|
+
* @param {string} stage Diagnostic stage label.
|
|
13
|
+
*/
|
|
14
|
+
function requireRefactoringAllowed(program, stage) {
|
|
15
|
+
const declarations = program.declarations.filter(entry => entry.opcodeName === "dcl_global_flags");
|
|
16
|
+
if (declarations.length !== 1) {
|
|
17
|
+
throw new Error(`WGSL ${stage} shader requires exactly one dcl_global_flags declaration`);
|
|
18
|
+
}
|
|
19
|
+
const data = declarations[0].data;
|
|
20
|
+
if (!Number.isInteger(data?.globalFlags) || data.globalFlags < 0 || typeof data.refactoringAllowed !== "boolean" || data.refactoringAllowed !== ((data.globalFlags & REFACTORING_ALLOWED) !== 0)) {
|
|
21
|
+
throw new Error(`WGSL ${stage} shader has inconsistent dcl_global_flags metadata`);
|
|
22
|
+
}
|
|
23
|
+
if (!data.refactoringAllowed) {
|
|
24
|
+
throw new Error(`WGSL ${stage} shader disables refactoring globally; exact lowering is not representable in WGSL`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Validates precise-mask metadata only. ADAPTED CONTRACT (requester decision,
|
|
30
|
+
* 2026-07-20): DXBC `precise` operations are accepted and lowered as ordinary
|
|
31
|
+
* IEEE float math, and the vertex position output is emitted `@invariant`.
|
|
32
|
+
* WGSL has no general no-contraction control, so bit-exact parity with native
|
|
33
|
+
* D3D11 arithmetic is NOT promised; `@invariant` instead guarantees identical
|
|
34
|
+
* position results across the pipelines built from the same emitted WGSL,
|
|
35
|
+
* which is the multi-pass invariance `precise` protects in these shaders.
|
|
36
|
+
* See docs/reference/wgsl-compatibility.md ("precise" entry) before changing
|
|
37
|
+
* this.
|
|
38
|
+
*
|
|
39
|
+
* @param {object} instruction Typed CJS shader IR instruction.
|
|
40
|
+
* @param {string} stage Diagnostic stage label.
|
|
41
|
+
*/
|
|
42
|
+
function validatePreciseInstruction(instruction, stage) {
|
|
43
|
+
const mask = instruction.preciseMask;
|
|
44
|
+
if (typeof mask !== "string" || !COMPONENT_MASK.test(mask)) {
|
|
45
|
+
fail(stage, instruction, `has malformed component mask ${String(mask)}`);
|
|
46
|
+
}
|
|
47
|
+
if (!mask) return;
|
|
48
|
+
const writes = instruction.dataflow?.writes || [];
|
|
49
|
+
if (!writes.length || Array.from(mask).some(component => !writes.some(write => write.mask.includes(component)))) {
|
|
50
|
+
fail(stage, instruction, `mask ${mask} requires a destination write containing every precise lane`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { requireRefactoringAllowed, validatePreciseInstruction };
|
|
55
|
+
//# sourceMappingURL=precisionControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"precisionControls.js","sources":["../../../../../../src/formats/webgpu/core/wgsl/precisionControls.js"],"sourcesContent":["const COMPONENT_MASK = /^x?y?z?w?$/u;\nconst REFACTORING_ALLOWED = 1 << 11;\n\nfunction fail(stage, instruction, message)\n{\n throw new Error(`WGSL ${stage} instruction ${instruction.index} precise ${instruction.opcodeName} ${message}`);\n}\n\n/**\n * Requires the DXBC shader to opt into refactoring. Without the global flag,\n * DXBC defines every operation as precise, which portable WGSL cannot promise.\n *\n * @param {object} program CJS shader IR.\n * @param {string} stage Diagnostic stage label.\n */\nexport function requireRefactoringAllowed(program, stage)\n{\n const declarations = program.declarations.filter((entry) => entry.opcodeName === \"dcl_global_flags\");\n if (declarations.length !== 1)\n {\n throw new Error(`WGSL ${stage} shader requires exactly one dcl_global_flags declaration`);\n }\n const data = declarations[0].data;\n if (!Number.isInteger(data?.globalFlags) || data.globalFlags < 0\n || typeof data.refactoringAllowed !== \"boolean\"\n || data.refactoringAllowed !== ((data.globalFlags & REFACTORING_ALLOWED) !== 0))\n {\n throw new Error(`WGSL ${stage} shader has inconsistent dcl_global_flags metadata`);\n }\n if (!data.refactoringAllowed)\n {\n throw new Error(`WGSL ${stage} shader disables refactoring globally; exact lowering is not representable in WGSL`);\n }\n}\n\n/**\n * Validates precise-mask metadata only. ADAPTED CONTRACT (requester decision,\n * 2026-07-20): DXBC `precise` operations are accepted and lowered as ordinary\n * IEEE float math, and the vertex position output is emitted `@invariant`.\n * WGSL has no general no-contraction control, so bit-exact parity with native\n * D3D11 arithmetic is NOT promised; `@invariant` instead guarantees identical\n * position results across the pipelines built from the same emitted WGSL,\n * which is the multi-pass invariance `precise` protects in these shaders.\n * See docs/reference/wgsl-compatibility.md (\"precise\" entry) before changing\n * this.\n *\n * @param {object} instruction Typed CJS shader IR instruction.\n * @param {string} stage Diagnostic stage label.\n */\nexport function validatePreciseInstruction(instruction, stage)\n{\n const mask = instruction.preciseMask;\n if (typeof mask !== \"string\" || !COMPONENT_MASK.test(mask))\n {\n fail(stage, instruction, `has malformed component mask ${String(mask)}`);\n }\n if (!mask) return;\n const writes = instruction.dataflow?.writes || [];\n if (!writes.length\n || Array.from(mask).some((component) => !writes.some((write) => write.mask.includes(component))))\n {\n fail(stage, instruction, `mask ${mask} requires a destination write containing every precise lane`);\n }\n}\n"],"names":["COMPONENT_MASK","REFACTORING_ALLOWED","fail","stage","instruction","message","Error","index","opcodeName","requireRefactoringAllowed","program","declarations","filter","entry","length","data","Number","isInteger","globalFlags","refactoringAllowed","validatePreciseInstruction","mask","preciseMask","test","String","writes","dataflow","Array","from","some","component","write","includes"],"mappings":"AAAA,MAAMA,cAAc,GAAG,aAAa;AACpC,MAAMC,mBAAmB,GAAG,CAAC,IAAI,EAAE;AAEnC,SAASC,IAAIA,CAACC,KAAK,EAAEC,WAAW,EAAEC,OAAO,EACzC;AACI,EAAA,MAAM,IAAIC,KAAK,CAAC,CAAA,KAAA,EAAQH,KAAK,gBAAgBC,WAAW,CAACG,KAAK,CAAA,SAAA,EAAYH,WAAW,CAACI,UAAU,CAAA,CAAA,EAAIH,OAAO,EAAE,CAAC;AAClH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,yBAAyBA,CAACC,OAAO,EAAEP,KAAK,EACxD;AACI,EAAA,MAAMQ,YAAY,GAAGD,OAAO,CAACC,YAAY,CAACC,MAAM,CAAEC,KAAK,IAAKA,KAAK,CAACL,UAAU,KAAK,kBAAkB,CAAC;AACpG,EAAA,IAAIG,YAAY,CAACG,MAAM,KAAK,CAAC,EAC7B;AACI,IAAA,MAAM,IAAIR,KAAK,CAAC,CAAA,KAAA,EAAQH,KAAK,2DAA2D,CAAC;AAC7F,EAAA;AACA,EAAA,MAAMY,IAAI,GAAGJ,YAAY,CAAC,CAAC,CAAC,CAACI,IAAI;AACjC,EAAA,IAAI,CAACC,MAAM,CAACC,SAAS,CAACF,IAAI,EAAEG,WAAW,CAAC,IAAIH,IAAI,CAACG,WAAW,GAAG,CAAC,IACzD,OAAOH,IAAI,CAACI,kBAAkB,KAAK,SAAS,IAC5CJ,IAAI,CAACI,kBAAkB,MAAM,CAACJ,IAAI,CAACG,WAAW,GAAGjB,mBAAmB,MAAM,CAAC,CAAC,EACnF;AACI,IAAA,MAAM,IAAIK,KAAK,CAAC,CAAA,KAAA,EAAQH,KAAK,oDAAoD,CAAC;AACtF,EAAA;AACA,EAAA,IAAI,CAACY,IAAI,CAACI,kBAAkB,EAC5B;AACI,IAAA,MAAM,IAAIb,KAAK,CAAC,CAAA,KAAA,EAAQH,KAAK,oFAAoF,CAAC;AACtH,EAAA;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASiB,0BAA0BA,CAAChB,WAAW,EAAED,KAAK,EAC7D;AACI,EAAA,MAAMkB,IAAI,GAAGjB,WAAW,CAACkB,WAAW;AACpC,EAAA,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAI,CAACrB,cAAc,CAACuB,IAAI,CAACF,IAAI,CAAC,EAC1D;IACInB,IAAI,CAACC,KAAK,EAAEC,WAAW,EAAE,CAAA,6BAAA,EAAgCoB,MAAM,CAACH,IAAI,CAAC,CAAA,CAAE,CAAC;AAC5E,EAAA;EACA,IAAI,CAACA,IAAI,EAAE;EACX,MAAMI,MAAM,GAAGrB,WAAW,CAACsB,QAAQ,EAAED,MAAM,IAAI,EAAE;AACjD,EAAA,IAAI,CAACA,MAAM,CAACX,MAAM,IACXa,KAAK,CAACC,IAAI,CAACP,IAAI,CAAC,CAACQ,IAAI,CAAEC,SAAS,IAAK,CAACL,MAAM,CAACI,IAAI,CAAEE,KAAK,IAAKA,KAAK,CAACV,IAAI,CAACW,QAAQ,CAACF,SAAS,CAAC,CAAC,CAAC,EACpG;IACI5B,IAAI,CAACC,KAAK,EAAEC,WAAW,EAAE,CAAA,KAAA,EAAQiB,IAAI,6DAA6D,CAAC;AACvG,EAAA;AACJ;;;;"}
|