@carbonenginejs/runtime-resource 0.10.0 → 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/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/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/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/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/resource/shader/Tr2EffectRes.js +159 -150
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +23 -28
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialMesh.js +21 -27
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialRes.js +24 -29
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
- package/dist/resource/shader/Tr2Shader.js +45 -39
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +30 -32
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +113 -78
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +17 -23
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +23 -29
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +44 -40
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +82 -86
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +55 -61
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +49 -45
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +25 -30
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +30 -32
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +21 -26
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/docs/formats/README.md +4 -0
- package/docs/formats/provenance.md +11 -3
- package/docs/reference/classes/formats.md +440 -0
- 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 +6 -1
- package/dist/resource/shader/portableValidation.js +0 -461
- package/dist/resource/shader/portableValidation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DxbcGlslEmitter.js","sources":["../../../../../../src/formats/webgl/core/glsl/DxbcGlslEmitter.js"],"sourcesContent":["import CjsDxbcFormat from \"../../../dxbc/index.js\";\nimport { WebglReadError } from \"../errors.js\";\nimport { DxbcGlslOperandFormatter } from \"./DxbcGlslOperandFormatter.js\";\nimport { DxbcGlslHelperRegistry } from \"./DxbcGlslHelpers.js\";\n\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\n\n/**\n * Map-style compute lowering caps simultaneous UAV writes to this many\n * fragment color outputs. WebGL2 only guarantees `MAX_DRAW_BUFFERS >= 4`\n * (real implementations commonly expose up to 8); a compute kernel that\n * writes more UAVs than fit in one draw call's attachment set (e.g. a\n * hierarchical mip-chain \"Pack\" pass writing 16 mip levels per dispatch)\n * cannot become a single map-style fragment pass at all.\n */\nconst MAX_MAP_STYLE_UAV_OUTPUTS = 8;\n\n/**\n * GLSL sampler type per DXBC resource-dimension id (float return types; the\n * stripped-RDEF corpus reflects everything as float).\n */\nconst SAMPLER_TYPE_BY_DIMENSION = {\n 2: \"sampler2D\",\n 3: \"sampler2D\",\n 5: \"sampler3D\",\n 6: \"samplerCube\",\n 8: \"sampler2DArray\"\n};\n\n/**\n * Shadow-sampler type per WebGL2-supported DXBC resource dimension.\n * Comparison sampling changes both the call signature and the uniform type;\n * keeping this separate from the ordinary sampler table guarantees shaders\n * without comparison opcodes retain their existing declarations verbatim.\n */\nconst SHADOW_SAMPLER_TYPE_BY_DIMENSION = {\n 3: \"sampler2DShadow\",\n 6: \"samplerCubeShadow\",\n 8: \"sampler2DArrayShadow\"\n};\n\nconst COMPARISON_SAMPLE_OPCODES = new Set([ \"sample_c\", \"sample_c_lz\" ]);\nconst NON_COMPARISON_TEXTURE_OPCODES = new Set([\n \"sample\", \"sample_l\", \"sample_b\", \"sample_d\",\n \"gather4\", \"gather4_po\", \"ld\", \"ld_ms\", \"lod\"\n]);\n\n/**\n * Filtered-sample coordinate mask per resource dimension\n * (HLSLcc `TranslateTexCoord`, toGLSLInstruction.cpp:985-1031).\n */\nconst COORD_MASK_BY_DIMENSION = {\n 2: \"x\",\n 3: \"xy\",\n 5: \"xyz\",\n 6: \"xyz\",\n 7: \"xy\",\n 8: \"xyz\",\n 10: \"xyzw\"\n};\n\n/**\n * DXBC -> GLSL ES 3.00 emitter for vertex and pixel stages.\n *\n * Implements the lowering rules in `docs/dxbc-lowering/*.md`, which pin every\n * template to HLSLcc's `toGLSLInstruction.cpp`/`toGLSLDeclaration.cpp`.\n * Registers are stored as float vec4s with bitcasts at use sites, comparison\n * results are 0xFFFFFFFF/0 masks (never bools), and register-stable symbols\n * (`cb#.data[]`, `t#`, `in_SEMANTIC#`, `vs_SEMANTIC#`) form the ABI surface.\n *\n * Emitter-wide policy: Adreno-3xx driver hygiene from HLSLcc (per-component\n * bitwise splits, `op_not`, `uint(0)` literals, `uvecN()` ctor wraps) is NOT\n * ported; the target is ANGLE-backed WebGL2 and the plain spec-legal forms\n * are emitted instead.\n */\nexport class DxbcGlslEmitter\n{\n /**\n * @param {object} [options] Emitter options.\n * @param {object} [options.profile] Target-runtime profile overrides.\n * @param {\"array\"|\"std140\"} [options.profile.constantBufferStyle] `uniform vec4 cbN[]`\n * arrays for ccpwgl's uniform4fv path, or std140 blocks.\n * @param {Object.<number,number>} [options.profile.pixelConstantBufferRemap] Pixel-stage\n * cb slot renames (ccpwgl keeps PS effect constants at cb7).\n * @param {function(number,string):string} [options.profile.samplerName] Texture uniform\n * naming per register and stage.\n * @param {number} [options.profile.vertexStructuredCapacity] Element capacity for\n * vertex-stage structured-buffer UBOs (bones; Carbon max is 69 joints).\n */\n constructor(options = {})\n {\n this.helpers = new DxbcGlslHelperRegistry();\n this._defineHelpers();\n this.profile = {\n constantBufferStyle: \"array\",\n pixelConstantBufferRemap: { 0: 7 },\n samplerName: (register, stageName) => (stageName === \"vertex\" ? `vs${register}` : `s${register}`),\n vertexStructuredCapacity: 69,\n dataTextureWidth: 2048,\n // Resource (t#) registers to lower to a compile-time zero instead of\n // declaring a sampler / structured-buffer texture for them. Empty by\n // default (no behavior change); the packager fills this with the\n // tiled-lighting resources (LightBuffer/LightIndexBuffer/\n // LightProfileArray) when `--stub-light-resources` is set, so the\n // fragment sampler count drops under MAX_TEXTURE_IMAGE_UNITS.\n stubResourceRegisters: [],\n lightConstantBuffer: null,\n lightPackedTexture: null,\n ...options.profile\n };\n }\n\n /**\n * Registers the GLSL helper functions this emitter's lowerings can require.\n * GLSL ES 3.00 has no `bitfieldExtract`/`bitfieldInsert`/`bitCount`/\n * `textureGather` (all ES 3.10+), so `ibfe`/`ubfe`/`bfi`/`countbits`/\n * `gather4` lower to these hand-written equivalents instead.\n */\n _defineHelpers()\n {\n // D3D11 IBFE pseudocode: width = src0 & 0x1f, offset = src1 & 0x1f;\n // width == 0 -> 0; width + offset < 32 -> a left/right arithmetic-shift\n // pair that sign-extends from bit (width-1); else an arithmetic shift by\n // offset alone. `w`/`o` are masked to [0,31] first so no shift amount\n // here can ever reach 32 (GLSL shift-by-bit-width is undefined).\n this.helpers.define(\"hlslcc_ibfe\", {\n source: [\n \"int hlslcc_ibfe(int width, int offset, int value) {\",\n \" int w = width & 31;\",\n \" int o = offset & 31;\",\n \" if (w == 0) return 0;\",\n \" if (w + o < 32) {\",\n \" return (value << (32 - w - o)) >> (32 - w);\",\n \" }\",\n \" return value >> o;\",\n \"}\"\n ].join(\"\\n\")\n });\n // Same shape as `hlslcc_ibfe` with logical (unsigned) shifts.\n this.helpers.define(\"hlslcc_ubfe\", {\n source: [\n \"uint hlslcc_ubfe(uint width, uint offset, uint value) {\",\n \" uint w = width & 31u;\",\n \" uint o = offset & 31u;\",\n \" if (w == 0u) return 0u;\",\n \" if (w + o < 32u) {\",\n \" return (value << (32u - w - o)) >> (32u - w);\",\n \" }\",\n \" return value >> o;\",\n \"}\"\n ].join(\"\\n\")\n });\n // D3D11 BFI pseudocode: bits = (((1 << width) - 1) << offset);\n // ((insert << offset) & bits) | (base & ~bits). `w` is masked to [0,31]\n // (per-spec \"width&31\") so `1u << w` never shifts by 32.\n this.helpers.define(\"hlslcc_bfi\", {\n source: [\n \"uint hlslcc_bfi(uint width, uint offset, uint insert, uint base) {\",\n \" uint w = width & 31u;\",\n \" uint o = offset & 31u;\",\n \" uint bits = ((1u << w) - 1u) << o;\",\n \" return ((insert << o) & bits) | (base & ~bits);\",\n \"}\"\n ].join(\"\\n\")\n });\n // Parallel (SWAR) popcount over a 32-bit uint.\n this.helpers.define(\"hlslcc_countbits\", {\n source: [\n \"uint hlslcc_countbits(uint value) {\",\n \" uint v = value;\",\n \" v = v - ((v >> 1u) & 0x55555555u);\",\n \" v = (v & 0x33333333u) + ((v >> 2u) & 0x33333333u);\",\n \" v = (v + (v >> 4u)) & 0x0F0F0F0Fu;\",\n \" return (v * 0x01010101u) >> 24u;\",\n \"}\"\n ].join(\"\\n\")\n });\n // GLSL ES 3.00 has no `textureGather` (ES 3.10+/desktop 4.0+ only, see\n // docs/dxbc-lowering/texture-sample.md section 5). Emulated with four\n // `texelFetch` taps at the bilinear neighborhood, matching D3D Gather4 /\n // GL textureGather's neighbor order (top-left, top-right, bottom-right,\n // bottom-left -> .x/.y/.z/.w), clamped to the texture's edge.\n this.helpers.define(\"hlslcc_textureGather4Emulated\", {\n source: [\n \"vec4 hlslcc_textureGather4Emulated(sampler2D samp, vec2 uv, int channel) {\",\n \" ivec2 size = textureSize(samp, 0);\",\n \" ivec2 maxCoord = size - ivec2(1);\",\n \" vec2 texel = uv * vec2(size) - vec2(0.5);\",\n \" ivec2 base = ivec2(floor(texel));\",\n \" ivec2 c0 = clamp(base + ivec2(0, 1), ivec2(0), maxCoord);\",\n \" ivec2 c1 = clamp(base + ivec2(1, 1), ivec2(0), maxCoord);\",\n \" ivec2 c2 = clamp(base + ivec2(1, 0), ivec2(0), maxCoord);\",\n \" ivec2 c3 = clamp(base + ivec2(0, 0), ivec2(0), maxCoord);\",\n \" return vec4(\",\n \" texelFetch(samp, c0, 0)[channel],\",\n \" texelFetch(samp, c1, 0)[channel],\",\n \" texelFetch(samp, c2, 0)[channel],\",\n \" texelFetch(samp, c3, 0)[channel]\",\n \" );\",\n \"}\"\n ].join(\"\\n\")\n });\n // texture2darray variant of the gather4 emulation (ASSAO-style passes\n // gather from the deinterleaved depth/AO slice arrays constantly).\n // Same four-tap bilinear neighborhood and neighbor order as the 2D\n // helper; the layer index rides in uvw.z and rounds to the nearest\n // slice, matching D3D's array-coordinate rounding for Gather4. Unlike\n // sampler2D (default lowp), sampler2DArray has NO default precision\n // in GLSL ES 3.00, so the parameter must be qualified explicitly.\n this.helpers.define(\"hlslcc_textureGather4ArrayEmulated\", {\n source: [\n \"vec4 hlslcc_textureGather4ArrayEmulated(mediump sampler2DArray samp, vec3 uvw, int channel) {\",\n \" ivec2 size = textureSize(samp, 0).xy;\",\n \" ivec2 maxCoord = size - ivec2(1);\",\n \" int layer = int(uvw.z + 0.5);\",\n \" vec2 texel = uvw.xy * vec2(size) - vec2(0.5);\",\n \" ivec2 base = ivec2(floor(texel));\",\n \" ivec2 c0 = clamp(base + ivec2(0, 1), ivec2(0), maxCoord);\",\n \" ivec2 c1 = clamp(base + ivec2(1, 1), ivec2(0), maxCoord);\",\n \" ivec2 c2 = clamp(base + ivec2(1, 0), ivec2(0), maxCoord);\",\n \" ivec2 c3 = clamp(base + ivec2(0, 0), ivec2(0), maxCoord);\",\n \" return vec4(\",\n \" texelFetch(samp, ivec3(c0, layer), 0)[channel],\",\n \" texelFetch(samp, ivec3(c1, layer), 0)[channel],\",\n \" texelFetch(samp, ivec3(c2, layer), 0)[channel],\",\n \" texelFetch(samp, ivec3(c3, layer), 0)[channel]\",\n \" );\",\n \"}\"\n ].join(\"\\n\")\n });\n }\n\n /**\n * Translates one DXBC stage into GLSL ES 3.00 source.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes DXBC container bytes.\n * @param {object} [options] Emit options.\n * @param {string} [options.source] Source name used in error details.\n * @returns {{source:string,stageName:string,inputs:object[],outputs:object[],bindings:object[],warnings:string[],computeFragment:(object|undefined)}}\n * GLSL text plus the IO contract the packaging layer records; compute\n * stages add a `computeFragment` host contract (thread group,\n * dispatch-origin uniform, per-output UAV slice routing).\n */\n Emit(bytes, options = {})\n {\n const sourceName = options.source || \"memory\";\n const raw = CjsDxbcFormat.read(bytes, { source: sourceName, emit: CjsDxbcFormat.OUTPUT_RAW });\n if (!raw.program)\n {\n throw new WebglReadError(\"DXBC container has no shader program chunk\", { source: sourceName });\n }\n const program = raw.program;\n if (program.programTypeName !== \"vertex\" && program.programTypeName !== \"pixel\" && program.programTypeName !== \"compute\")\n {\n throw new WebglReadError(\"Only vertex, pixel, and compute stages target WebGL2\", {\n source: sourceName,\n programTypeName: program.programTypeName\n });\n }\n\n const state = {\n sourceName,\n stageName: program.programTypeName,\n isPixel: program.programTypeName === \"pixel\",\n isCompute: program.programTypeName === \"compute\",\n decoder: raw.decoder,\n isgn: raw.inputSignature,\n osgn: raw.outputSignature,\n inputNames: new Map(),\n outputNames: new Map(),\n resourceDimensions: new Map(),\n resourceNames: new Map(),\n comparisonResources: this._analyzeComparisonResources(raw.decoder, sourceName),\n constantBufferNames: new Map(),\n structuredBuffers: new Map(),\n lightConstantBuffer: this._normalizeLightConstantBufferProfile(),\n lightConstantBufferDeclared: false,\n lightPackedTexture: this._normalizeLightPackedTextureProfile(),\n lightPackedTextureDeclared: false,\n // Resource (t#) registers stubbed to a compile-time zero: their\n // declarations/bindings are dropped and every read of them lowers\n // to `uintBitsToFloat(0u)` (structured) / `vec4(0.0)` (sampled).\n stubbedResources: new Set(this.profile.stubResourceRegisters || []),\n inputMasks: new Map(),\n outputMasks: new Map(),\n bindings: [],\n declarationLines: [],\n earlyMainLines: [],\n bodyLines: [],\n indent: 1,\n warnings: [],\n inputs: [],\n outputs: [],\n icbName: \"ImmCB_0\",\n // Compute (map-style) state: workgroup size, UAV register->name map,\n // UAV declared-return-types (for the non-float-format warning),\n // the `_analyzeUavStores` pre-pass results (register->dimension,\n // register->slice plan, register->per-slice output names, running\n // output-location count), the dispatch-origin uniform name once\n // declared, and which of the four thread-id pseudo-inputs this\n // shader declares.\n threadGroup: null,\n uavNames: new Map(),\n uavReturnTypes: new Map(),\n uavDimensions: new Map(),\n uavSlicePlan: new Map(),\n uavSliceNames: new Map(),\n uavOutputCount: 0,\n dispatchOriginUniform: null,\n computeInputsUsed: { threadId: false, groupId: false, tig: false, flattened: false }\n };\n this.helpers.reset();\n\n if (state.isCompute)\n {\n this._assertMapStyleCompute(state);\n this._analyzeUavStores(state);\n }\n\n state.integerVertexInputs = new Map();\n\n state.formatter = new DxbcGlslOperandFormatter({\n // Populated during vertex-input declaration (the declaration loop\n // runs before any body emission, so the map is complete before the\n // first operand is formatted). Integer reads of these registers\n // value-convert instead of bitcast - see _declareVertexInput.\n integerInputs: state.integerVertexInputs,\n componentMap: (operand) =>\n {\n if (operand.type === 1) return state.inputMasks.get(operand.registerIndex) || null;\n if (operand.type === 2) return state.outputMasks.get(operand.registerIndex) || null;\n return null;\n },\n names: {\n input: (index) => state.inputNames.get(index) || `v${index}`,\n output: (index) => state.outputNames.get(index) || `o${index}`,\n constantBuffer: (slot) => state.constantBufferNames.get(slot) || `cb${slot}`,\n constantBufferMember: this.profile.constantBufferStyle === \"std140\" ? \"data\" : \"\",\n resource: (index) => state.resourceNames.get(index) || `t${index}`,\n uav: (index) => state.uavNames.get(index) || `cewgUav${index}`,\n immediateConstantBuffer: state.icbName\n }\n });\n\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration)\n {\n this._emitDeclaration(state, instruction);\n }\n }\n if (state.isCompute)\n {\n this._emitComputeInputPrelude(state);\n }\n // Pair-aware varyings: declare and zero-fill any varying register the\n // paired pixel stage reads but this vertex stage never declares (DX11\n // tolerates such signature mismatches; GLSL linking does not).\n if (!state.isPixel && !state.isCompute && Array.isArray(options.pairVaryings))\n {\n for (const register of options.pairVaryings)\n {\n if (state.outputNames.has(register)) continue;\n const name = `vs_r${register}`;\n state.outputNames.set(register, name);\n state.declarationLines.push(`out vec4 ${name};`);\n state.outputs.push({ register, name, width: 4, semanticName: null, semanticIndex: 0 });\n state.warnings.push(`varying ${name} is read by the paired pixel stage but never produced; zero-filled`);\n }\n }\n this._zeroFillUnwrittenOutputs(state);\n for (const instruction of state.decoder.instructions)\n {\n if (!instruction.isDeclaration)\n {\n this._emitInstruction(state, instruction);\n }\n }\n if (state.indent !== 1)\n {\n throw new WebglReadError(\"Unbalanced control-flow blocks\", {\n source: sourceName,\n indent: state.indent\n });\n }\n\n const result = {\n source: this._assemble(state),\n stageName: state.stageName,\n inputs: state.inputs,\n outputs: state.outputs,\n bindings: state.bindings,\n warnings: state.warnings\n };\n if (state.isCompute)\n {\n // Host contract for one map-style draw: viewport = target size,\n // `uavOutputs[i].location` = color attachment index, and `slice`\n // (when non-null) = the texture2darray layer to attach there via\n // framebufferTextureLayer. `threadGroup` documents the original\n // dispatch granularity (fragment execution does not need it).\n result.computeFragment = {\n threadGroup: state.threadGroup ? [ ...state.threadGroup ] : null,\n dispatchOriginUniform: state.dispatchOriginUniform,\n uavOutputs: state.bindings\n .filter((binding) => binding.kind === \"uavTexture\")\n .map((binding) => ({\n register: binding.registerIndex,\n slice: binding.slice,\n location: binding.location,\n glslName: binding.name\n }))\n };\n }\n return result;\n }\n\n /**\n * Normalizes the optional local-light constant-buffer lowering profile.\n *\n * @returns {object|null} Normalized profile, or null when disabled.\n */\n _normalizeLightConstantBufferProfile()\n {\n const profile = this.profile.lightConstantBuffer;\n if (!profile || typeof profile !== \"object\") return null;\n const indexRegister = Number(profile.indexRegister);\n const dataRegister = Number(profile.dataRegister);\n if (!Number.isInteger(indexRegister) || !Number.isInteger(dataRegister)) return null;\n return {\n indexRegister,\n dataRegister,\n profileRegister: Number.isInteger(Number(profile.profileRegister)) ? Number(profile.profileRegister) : null,\n registerIndex: Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : 6,\n name: profile.name || `cb${Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : 6}`,\n capacity: Number.isInteger(Number(profile.capacity)) ? Number(profile.capacity) : 40,\n listBase: Number.isInteger(Number(profile.listBase)) ? Number(profile.listBase) : 65536\n };\n }\n\n /**\n * Finds resources used by comparison-sample instructions before resource\n * declarations are emitted, so those declarations can use shadow sampler\n * types. A single GLSL uniform cannot be both a shadow and ordinary sampler;\n * reject that shape explicitly instead of producing invalid GLSL.\n *\n * @param {object} decoder Decoded DXBC instruction stream.\n * @param {string} sourceName Source name used in error details.\n * @returns {Map<number,Set<number>>} Resource register -> sampler registers.\n */\n _analyzeComparisonResources(decoder, sourceName)\n {\n const comparisonResources = new Map();\n const ordinaryResources = new Set();\n\n for (const instruction of decoder.instructions)\n {\n const resourceOperand = instruction.operands?.[2];\n if (!resourceOperand || !Number.isInteger(resourceOperand.registerIndex)) continue;\n\n if (COMPARISON_SAMPLE_OPCODES.has(instruction.opcodeName))\n {\n const register = resourceOperand.registerIndex;\n const samplerRegister = instruction.operands?.[3]?.registerIndex;\n const samplers = comparisonResources.get(register) || new Set();\n if (Number.isInteger(samplerRegister)) samplers.add(samplerRegister);\n comparisonResources.set(register, samplers);\n }\n else if (NON_COMPARISON_TEXTURE_OPCODES.has(instruction.opcodeName))\n {\n ordinaryResources.add(resourceOperand.registerIndex);\n }\n }\n\n for (const register of comparisonResources.keys())\n {\n if (ordinaryResources.has(register))\n {\n throw new WebglReadError(\n \"A resource sampled with comparison and non-comparison operations requires separate combined samplers\",\n { source: sourceName, registerIndex: register }\n );\n }\n }\n\n return comparisonResources;\n }\n\n /**\n * Normalizes the optional packed local-light texture lowering profile.\n *\n * @returns {object|null} Normalized profile, or null when disabled.\n */\n _normalizeLightPackedTextureProfile()\n {\n const profile = this.profile.lightPackedTexture;\n if (!profile || typeof profile !== \"object\") return null;\n const indexRegister = Number(profile.indexRegister);\n const dataRegister = Number(profile.dataRegister);\n if (!Number.isInteger(indexRegister) || !Number.isInteger(dataRegister)) return null;\n return {\n indexRegister,\n dataRegister,\n profileRegister: Number.isInteger(Number(profile.profileRegister)) ? Number(profile.profileRegister) : null,\n registerIndex: Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : indexRegister,\n name: profile.name || \"cewgLocalLightTexture\",\n dataTexelBase: Number.isInteger(Number(profile.dataTexelBase)) ? Number(profile.dataTexelBase) : 131072\n };\n }\n\n /**\n * Declares the packed local-light texture ABI used to replace the\n * LightIndexBuffer/LightBuffer/LightProfileArray trio with one RGBA32UI\n * data texture.\n *\n * @param {object} state Emit state.\n */\n _ensureLightPackedTexture(state)\n {\n const profile = state.lightPackedTexture;\n if (!profile || state.lightPackedTextureDeclared) return;\n state.lightPackedTextureDeclared = true;\n\n state.declarationLines.push(`uniform highp usampler2D ${profile.name};`);\n state.bindings.push({\n kind: \"structuredTexture\",\n registerIndex: profile.registerIndex,\n name: profile.name,\n strideBytes: 0,\n format: \"RGBA32UI\",\n width: this.profile.dataTextureWidth,\n cewgSemantic: \"packedLocalLights\",\n lightIndexRegister: profile.indexRegister,\n lightDataRegister: profile.dataRegister,\n lightProfileRegister: profile.profileRegister,\n dataTexelBase: profile.dataTexelBase\n });\n }\n\n /**\n * Declares the local-light constant-buffer ABI used to replace the two\n * tiled-light structured buffers without consuming sampler units.\n *\n * @param {object} state Emit state.\n */\n _ensureLightConstantBuffer(state)\n {\n const profile = state.lightConstantBuffer;\n if (!profile || state.lightConstantBufferDeclared) return;\n state.lightConstantBufferDeclared = true;\n\n const rows = 1 + profile.capacity * 3;\n state.constantBufferNames.set(profile.registerIndex, profile.name);\n state.declarationLines.push(\n `uniform vec4 ${profile.name}[${rows}];`,\n `uint cewgLocalLightCount() { return floatBitsToUint(${profile.name}[0].x); }`,\n \"uint cewgLocalLightIndexLoad(int element) {\",\n \" uint count = cewgLocalLightCount();\",\n \" if (count == 0u) return 0u;\",\n ` const int listBase = ${profile.listBase};`,\n \" if (element < listBase) return uint(listBase);\",\n \" int local = element - listBase;\",\n \" int node = local >> 1;\",\n \" if (node < 0 || uint(node) >= count) return 0u;\",\n \" if ((local & 1) == 0) return uint(node + 1);\",\n \" uint next = uint(node + 1);\",\n \" return next < count ? uint(listBase + int(next) * 2) : 0u;\",\n \"}\",\n \"vec4 cewgLocalLightRow(int lightIndex, int row) {\",\n \" int i = lightIndex - 1;\",\n \" if (i < 0 || uint(i) >= cewgLocalLightCount() || row < 0 || row >= 3) return vec4(0.0);\",\n ` return ${profile.name}[1 + i * 3 + row];`,\n \"}\"\n );\n state.bindings.push({\n kind: \"constantBuffer\",\n registerIndex: profile.registerIndex,\n name: profile.name,\n sizeInVec4: rows,\n style: \"array\",\n cewgSemantic: \"localLights\",\n capacityLights: profile.capacity,\n lightIndexRegister: profile.indexRegister,\n lightDataRegister: profile.dataRegister,\n lightProfileRegister: profile.profileRegister\n });\n }\n\n /**\n * Rejects compute shaders that need real compute-pipeline features (shared\n * memory, barriers, atomics, raw/structured/typed UAV reads) instead of the\n * \"map-style\" thread-per-fragment shape this emitter lowers. The message\n * intentionally contains \"not supported\" so packaging's kill-list\n * classifier regex (`/not supported|No GLSL lowering|unimplementable/i`)\n * routes these to the exclusion list rather than the failure list.\n *\n * @param {object} state Emit state.\n */\n _assertMapStyleCompute(state)\n {\n for (const instruction of state.decoder.instructions)\n {\n const name = instruction.opcodeName;\n const blocked = name.startsWith(\"dcl_thread_group_shared_memory\")\n || name === \"sync\"\n || name.startsWith(\"atomic_\")\n || name.startsWith(\"imm_atomic_\")\n || name === \"ld_uav_typed\"\n || name === \"store_raw\"\n || name === \"store_structured\";\n if (blocked)\n {\n throw new WebglReadError(\n \"compute stage is not map-style; WebGL2 fragment lowering is not supported for this instruction\",\n { source: state.sourceName, opcodeName: name, offset: instruction.offset }\n );\n }\n }\n }\n\n /**\n * Pre-scans a map-style compute shader's `store_uav_typed` instructions and\n * builds a per-UAV slice plan before any declaration is emitted.\n *\n * Straight-line constant propagation only: the address registers ASSAO-style\n * Prepare passes build are `mov rX.<c>, l(k)` immediates, so the tracker\n * records the last constant written to each temp component and treats every\n * other write as dynamic. Each stored-to UAV register resolves to either\n * `{ kind: \"single\" }` (at most one store; the array-slice coordinate, when\n * present, is dropped — the host attaches the target layer via\n * `framebufferTextureLayer`) or `{ kind: \"multiSlice\", slices, sliceByOffset }`\n * (several stores at statically distinct texture2darray slices, each routed\n * to its own fragment output — the host attaches those layers as sequential\n * color attachments).\n *\n * Anything outside those two shapes cannot become one fragment pass, so the\n * throw messages deliberately contain \"not supported\" for packaging's\n * kill-list classifier (see `_assertMapStyleCompute`).\n *\n * @param {object} state Emit state.\n */\n _analyzeUavStores(state)\n {\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration && instruction.opcodeName === \"dcl_unordered_access_view_typed\")\n {\n state.uavDimensions.set(instruction.declaration.registerIndex, instruction.declaration.resourceDimension);\n }\n }\n\n const constantTemps = new Map();\n const storesByUav = new Map();\n let controlFlowDepth = 0;\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration) continue;\n const name = instruction.opcodeName;\n if (name === \"if\" || name === \"loop\" || name === \"switch\")\n {\n controlFlowDepth += 1;\n continue;\n }\n if (name === \"endif\" || name === \"endloop\" || name === \"endswitch\")\n {\n controlFlowDepth -= 1;\n continue;\n }\n if (name === \"store_uav_typed\")\n {\n const [ uavOperand, addressOperand ] = instruction.operands;\n const register = uavOperand.registerIndex;\n const isArray = state.uavDimensions.get(register) === 8;\n const stores = storesByUav.get(register) || [];\n stores.push({\n offset: instruction.offset,\n slice: isArray ? this._resolveSliceConstant(addressOperand, constantTemps) : null,\n isArray,\n controlFlowDepth\n });\n storesByUav.set(register, stores);\n continue;\n }\n this._trackTempConstants(instruction, constantTemps);\n }\n\n for (const [ register, stores ] of storesByUav)\n {\n if (stores.length <= 1)\n {\n state.uavSlicePlan.set(register, { kind: \"single\" });\n continue;\n }\n const throwNotMapStyle = (shape) =>\n {\n throw new WebglReadError(\n `compute stage is not map-style; ${shape} are not supported by the WebGL2 emitter's fragment-output lowering`,\n { source: state.sourceName, registerIndex: register, storeCount: stores.length }\n );\n };\n const slices = stores.map((store) => store.slice);\n if (!stores[0].isArray)\n {\n throwNotMapStyle(\"multiple stores to one non-array UAV\");\n }\n if (slices.some((slice) => slice === null))\n {\n throwNotMapStyle(\"multiple UAV stores with a dynamic array slice\");\n }\n if (new Set(slices).size !== slices.length)\n {\n throwNotMapStyle(\"multiple UAV stores to the same array slice\");\n }\n if (stores.some((store) => store.controlFlowDepth > 0))\n {\n throwNotMapStyle(\"multi-slice UAV stores inside divergent control flow\");\n }\n state.uavSlicePlan.set(register, {\n kind: \"multiSlice\",\n slices: [ ...slices ].sort((a, b) => a - b),\n sliceByOffset: new Map(stores.map((store) => [ store.offset, store.slice ]))\n });\n }\n }\n\n /**\n * Updates the per-temp-component constant tracker for one instruction:\n * `mov rX.<mask>, l(...)` records each written component's immediate dword,\n * and any other write to a temp component invalidates it. Destination\n * operands are exactly the mask-selection temp operands (DXBC sources\n * always read through swizzle/select1), so this also handles multi-\n * destination opcodes like `sincos` and `udiv` conservatively.\n *\n * @param {object} instruction Decoded non-declaration instruction.\n * @param {Map<string, number>} constantTemps Constant tracker keyed `<register>.<component>`.\n */\n _trackTempConstants(instruction, constantTemps)\n {\n const source = instruction.operands[1];\n const isConstantMov = instruction.opcodeName === \"mov\"\n && !instruction.saturate\n && source?.type === 4\n && source.modifierName === \"none\";\n for (const operand of instruction.operands)\n {\n if (operand.type !== 0 || operand.selectionModeName !== \"mask\" || operand.registerIndex === null) continue;\n for (const component of operand.mask || \"xyzw\")\n {\n const key = `${operand.registerIndex}.${component}`;\n if (isConstantMov && operand.mask)\n {\n const value = source.componentCount === 1\n ? source.immediateValues[0]\n : source.immediateValues[\"xyzw\".indexOf(component)];\n constantTemps.set(key, value.uint32 | 0);\n }\n else\n {\n constantTemps.delete(key);\n }\n }\n }\n }\n\n /**\n * Resolves the array-slice (z) component of a `store_uav_typed` address\n * operand to a compile-time constant, or null when it is dynamic.\n *\n * @param {object} addressOperand Decoded address operand.\n * @param {Map<string, number>} constantTemps Constant tracker keyed `<register>.<component>`.\n * @returns {number|null} Constant slice index, or null.\n */\n _resolveSliceConstant(addressOperand, constantTemps)\n {\n if (addressOperand.type === 4)\n {\n const value = addressOperand.componentCount === 1\n ? addressOperand.immediateValues[0]\n : addressOperand.immediateValues[2];\n return value ? value.uint32 | 0 : null;\n }\n if (addressOperand.type !== 0)\n {\n return null;\n }\n const component = addressOperand.selectionModeName === \"swizzle\" && addressOperand.swizzle\n ? addressOperand.swizzle[2]\n : \"z\";\n const key = `${addressOperand.registerIndex}.${component}`;\n return constantTemps.has(key) ? constantTemps.get(key) : null;\n }\n\n /**\n * Allocates the next map-style UAV fragment-output location, enforcing the\n * `MAX_MAP_STYLE_UAV_OUTPUTS` attachment budget across single-output UAVs\n * and per-slice multi-output UAVs alike.\n *\n * @param {object} state Emit state.\n * @param {number} register UAV register index (error detail only).\n * @returns {number} Allocated output location.\n */\n _allocateUavOutputLocation(state, register)\n {\n const location = state.uavOutputCount;\n if (location >= MAX_MAP_STYLE_UAV_OUTPUTS)\n {\n throw new WebglReadError(\n \"compute stage is not map-style; too many simultaneous UAV writes are not supported by the WebGL2 emitter's fragment-output lowering\",\n { source: state.sourceName, registerIndex: register, uavCount: location + 1 }\n );\n }\n state.uavOutputCount += 1;\n return location;\n }\n\n // ------------------------------------------------------------------\n // Declarations\n // ------------------------------------------------------------------\n\n /**\n * Emits one decoded DXBC declaration into the GLSL interface and manifest.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC declaration instruction.\n * @private\n */\n _emitDeclaration(state, instruction)\n {\n const declaration = instruction.declaration;\n switch (instruction.opcodeName)\n {\n case \"dcl_global_flags\":\n // layout(early_fragment_tests) is not GLSL ES 3.00; suppressed by design.\n break;\n case \"dcl_temps\":\n for (let index = 0; index < declaration.tempCount; index += 1)\n {\n state.declarationLines.push(`vec4 r${index};`);\n }\n break;\n case \"dcl_indexable_temp\":\n state.declarationLines.push(\n `vec${declaration.componentCount} x${declaration.registerIndex}[${declaration.registerCount}];`\n );\n break;\n case \"dcl_constant_buffer\": {\n const slot = declaration.registerIndex;\n const mapped = state.isPixel ? (this.profile.pixelConstantBufferRemap[slot] ?? slot) : slot;\n const name = `cb${mapped}`;\n state.constantBufferNames.set(slot, name);\n if (this.profile.constantBufferStyle === \"std140\")\n {\n state.declarationLines.push(\n `layout(std140) uniform ConstantBuffer${mapped} {`,\n ` vec4 data[${declaration.sizeInVec4}];`,\n `} ${name};`\n );\n }\n else\n {\n state.declarationLines.push(`uniform vec4 ${name}[${declaration.sizeInVec4}];`);\n }\n state.bindings.push({\n kind: \"constantBuffer\",\n registerIndex: slot,\n name,\n sizeInVec4: declaration.sizeInVec4,\n style: this.profile.constantBufferStyle\n });\n break;\n }\n case \"dcl_sampler\":\n break;\n case \"dcl_resource\": {\n const register = declaration.registerIndex;\n if (state.lightPackedTexture?.profileRegister === register)\n {\n this._ensureLightPackedTexture(state);\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, `s${register}`);\n break;\n }\n if (state.lightConstantBuffer?.profileRegister === register)\n {\n this._ensureLightConstantBuffer(state);\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, `s${register}`);\n break;\n }\n if (state.stubbedResources.has(register))\n {\n // Stubbed tiled-lighting sampler (e.g. LightProfileArray):\n // drop the declaration + binding entirely; every sample of\n // this register lowers to vec4(0.0) in _textureSample.\n break;\n }\n if (declaration.resourceDimension === 1)\n {\n // Buffer<> texel buffers (post-processing) become float data textures\n // read via width-wrapped texelFetch; no samplerBuffer in WebGL2.\n const name = `bt${register}`;\n state.resourceDimensions.set(register, 1);\n state.resourceNames.set(register, name);\n state.declarationLines.push(`uniform highp sampler2D ${name};`);\n state.bindings.push({\n kind: \"bufferTexture\",\n registerIndex: register,\n name,\n format: \"RGBA32F\",\n width: this.profile.dataTextureWidth,\n returnTypes: declaration.returnType?.returnTypeNames || null\n });\n break;\n }\n const comparisonSamplers = state.comparisonResources.get(register) || null;\n const samplerType = comparisonSamplers\n ? SHADOW_SAMPLER_TYPE_BY_DIMENSION[declaration.resourceDimension]\n : SAMPLER_TYPE_BY_DIMENSION[declaration.resourceDimension];\n if (!samplerType)\n {\n throw new WebglReadError(\n comparisonSamplers\n ? \"Comparison sampling is not supported for this resource dimension by the WebGL2 emitter\"\n : \"Resource dimension is not supported by the WebGL2 emitter\",\n {\n source: state.sourceName,\n dimensionName: declaration.resourceDimensionName\n }\n );\n }\n const name = this.profile.samplerName(register, state.stageName);\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, name);\n state.declarationLines.push(`uniform mediump ${samplerType} ${name};`);\n state.bindings.push({\n kind: \"resource\",\n registerIndex: register,\n name,\n samplerType,\n dimensionName: declaration.resourceDimensionName,\n ...(comparisonSamplers ? {\n comparison: true,\n samplerRegisterIndices: [ ...comparisonSamplers ].sort((a, b) => a - b)\n } : {})\n });\n break;\n }\n case \"dcl_resource_structured\": {\n const register = declaration.registerIndex;\n const strideBytes = declaration.structureStride || 4;\n const strideDwords = Math.max(1, strideBytes >> 2);\n if (state.lightPackedTexture?.indexRegister === register)\n {\n this._ensureLightPackedTexture(state);\n state.structuredBuffers.set(register, { kind: \"lightIndexPacked\", name: state.lightPackedTexture.name, strideDwords });\n break;\n }\n if (state.lightPackedTexture?.dataRegister === register)\n {\n this._ensureLightPackedTexture(state);\n state.structuredBuffers.set(register, {\n kind: \"lightDataPacked\",\n name: state.lightPackedTexture.name,\n strideDwords,\n dataTexelBase: state.lightPackedTexture.dataTexelBase\n });\n break;\n }\n if (state.lightConstantBuffer?.indexRegister === register)\n {\n this._ensureLightConstantBuffer(state);\n state.structuredBuffers.set(register, { kind: \"lightIndexCb\", name: state.lightConstantBuffer.name, strideDwords });\n break;\n }\n if (state.lightConstantBuffer?.dataRegister === register)\n {\n this._ensureLightConstantBuffer(state);\n state.structuredBuffers.set(register, { kind: \"lightDataCb\", name: state.lightConstantBuffer.name, strideDwords });\n break;\n }\n if (state.stubbedResources.has(register))\n {\n // Stubbed tiled-lighting structured buffer (LightBuffer /\n // LightIndexBuffer): drop the usampler2D declaration + binding;\n // ld_structured reads of it lower to uintBitsToFloat(0u), which\n // zeroes the per-tile light count and makes the light loop dead.\n state.structuredBuffers.set(register, { kind: \"stub\", name: `sb${register}`, strideDwords });\n break;\n }\n if (state.isPixel)\n {\n // Pixel-stage structured buffers (light lists) become RGBA32UI data\n // textures: exact bits, no SSBO, resolution-scalable tile tables.\n const name = `sb${register}`;\n state.structuredBuffers.set(register, { kind: \"texture\", name, strideDwords });\n state.declarationLines.push(`uniform highp usampler2D ${name};`);\n state.bindings.push({\n kind: \"structuredTexture\",\n registerIndex: register,\n name,\n strideBytes,\n format: \"RGBA32UI\",\n width: this.profile.dataTextureWidth\n });\n }\n else\n {\n // Vertex-stage structured buffers (BoneTransforms) become dedicated\n // std140 UBOs sized to the profile capacity (Carbon max 69 joints).\n const name = `CewgSb${register}`;\n const capacity = this.profile.vertexStructuredCapacity;\n const rows = capacity * Math.ceil(strideDwords / 4);\n state.structuredBuffers.set(register, { kind: \"ubo\", name, strideDwords });\n state.declarationLines.push(\n `layout(std140) uniform ${name}Block {`,\n ` vec4 data[${rows}];`,\n `} ${name};`\n );\n state.bindings.push({\n kind: \"structuredUbo\",\n registerIndex: register,\n name,\n strideBytes,\n capacityElements: capacity\n });\n }\n break;\n }\n case \"dcl_input\":\n if (state.isCompute)\n {\n this._declareComputeInput(state, instruction);\n }\n else\n {\n this._declareVertexInput(state, instruction);\n }\n break;\n case \"dcl_thread_group\":\n state.threadGroup = [ declaration.threadGroupX, declaration.threadGroupY, declaration.threadGroupZ ];\n break;\n case \"dcl_unordered_access_view_typed\": {\n const register = declaration.registerIndex;\n const returnTypes = declaration.returnType?.returnTypeNames || null;\n const plan = state.uavSlicePlan.get(register);\n state.uavReturnTypes.set(register, returnTypes);\n if (plan?.kind === \"multiSlice\")\n {\n // Statically distinct texture2darray slices each become their\n // own fragment output; the host attaches the matching array\n // layers as sequential color attachments (slice order) via\n // framebufferTextureLayer.\n const sliceNames = new Map();\n for (const slice of plan.slices)\n {\n const name = `cewgUav${register}_s${slice}`;\n const location = this._allocateUavOutputLocation(state, register);\n sliceNames.set(slice, name);\n state.declarationLines.push(`layout(location = ${location}) out highp vec4 ${name};`);\n state.bindings.push({\n kind: \"uavTexture\",\n registerIndex: register,\n name,\n slice,\n location,\n returnTypes\n });\n }\n state.uavSliceNames.set(register, sliceNames);\n break;\n }\n const name = `cewgUav${register}`;\n const location = this._allocateUavOutputLocation(state, register);\n state.uavNames.set(register, name);\n state.declarationLines.push(`layout(location = ${location}) out highp vec4 ${name};`);\n state.bindings.push({\n kind: \"uavTexture\",\n registerIndex: register,\n name,\n slice: null,\n location,\n returnTypes\n });\n break;\n }\n case \"dcl_input_ps\":\n case \"dcl_input_ps_siv\":\n case \"dcl_input_ps_sgv\":\n this._declarePixelInput(state, instruction);\n break;\n case \"dcl_input_sgv\":\n this._declareSystemInput(state, instruction);\n break;\n case \"dcl_output\":\n case \"dcl_output_siv\":\n this._declareOutput(state, instruction);\n break;\n case \"customdata\":\n this._declareImmediateConstantBuffer(state, instruction);\n break;\n default:\n throw new WebglReadError(\"Declaration is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n opcodeName: instruction.opcodeName\n });\n }\n }\n\n /**\n * Finds the signature element assigned to a register.\n *\n * @param {object|null} signature Decoded DXBC signature.\n * @param {number} registerIndex Register index.\n * @returns {object|null} Matching signature element.\n * @private\n */\n _signatureElement(signature, registerIndex)\n {\n return signature?.elements.find((element) => element.registerIndex === registerIndex) || null;\n }\n\n /**\n * Declares one vertex input using its Carbon semantic identity.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded input declaration.\n * @private\n */\n _declareVertexInput(state, instruction)\n {\n const register = instruction.declaration.registerIndex;\n if (state.isPixel)\n {\n return this._declarePixelInput(state, instruction);\n }\n const element = this._signatureElement(state.isgn, register);\n if (!element)\n {\n throw new WebglReadError(\"Vertex input register has no ISGN row\", {\n source: state.sourceName,\n register\n });\n }\n if (state.inputNames.has(register))\n {\n return;\n }\n const name = `in_${element.semanticName}${element.semanticIndex}`;\n const width = this._maskWidth(element.mask);\n // Integer semantics are float-lowered: ccpwgl binds all attributes with\n // vertexAttribPointer, so uvec/ivec declarations would break linking.\n // Because they're uploaded as plain float VALUES (e.g. bone index 5.0,\n // not the bit pattern of int 5 - confirmed by the legacy skinned VS\n // which does `3.0 * attr.x`), an integer read of one must VALUE-convert\n // (`int(attr)`) rather than bitcast (`floatBitsToInt(attr)`, which would\n // yield garbage). Record integer-typed inputs so the formatter knows.\n if (element.componentTypeName === \"uint32\" || element.componentTypeName === \"int32\")\n {\n state.integerVertexInputs.set(register, element.componentTypeName === \"uint32\" ? \"uint\" : \"int\");\n }\n state.inputNames.set(register, name);\n state.inputMasks.set(register, this._maskChars(element.mask));\n state.declarationLines.push(`in highp ${this._vecType(width)} ${name};`);\n state.inputs.push({\n register,\n name,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex,\n componentTypeName: element.componentTypeName,\n mask: element.mask\n });\n }\n\n /**\n * Declares one pixel-stage varying or system input.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded input declaration.\n * @private\n */\n _declarePixelInput(state, instruction)\n {\n const register = instruction.declaration.registerIndex;\n const declaration = instruction.declaration;\n\n if (instruction.opcodeName === \"dcl_input_ps_siv\" && declaration.systemValueName === \"position\")\n {\n state.inputNames.set(register, \"hlslcc_FragCoord\");\n state.earlyMainLines.push(\"vec4 hlslcc_FragCoord = vec4(gl_FragCoord.xyz, 1.0/gl_FragCoord.w);\");\n return;\n }\n if (instruction.opcodeName === \"dcl_input_ps_sgv\" || instruction.opcodeName === \"dcl_input_sgv\")\n {\n return this._declareSystemInput(state, instruction);\n }\n\n if (state.inputNames.has(register))\n {\n return;\n }\n const element = this._signatureElement(state.isgn, register);\n if (!element)\n {\n throw new WebglReadError(\"Pixel input register has no ISGN row\", {\n source: state.sourceName,\n register\n });\n }\n // Varyings are internal VS<->PS wires: named by register and always vec4,\n // so packed registers (two semantics sharing one register) and partial\n // reads can never produce cross-stage name/type mismatches.\n const name = `vs_r${register}`;\n const flat = element.componentType === 1 || element.componentType === 2\n || declaration.interpolationModeName === \"constant\";\n state.inputNames.set(register, name);\n state.declarationLines.push(`${flat ? \"flat \" : \"\"}in vec4 ${name};`);\n state.inputs.push({\n register,\n name,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex,\n componentTypeName: element.componentTypeName,\n mask: element.mask\n });\n }\n\n /**\n * Maps a supported system-generated input to its GLSL expression.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded system-input declaration.\n * @private\n */\n _declareSystemInput(state, instruction)\n {\n const declaration = instruction.declaration;\n const register = declaration.registerIndex;\n switch (declaration.systemValueName)\n {\n case \"is_front_face\":\n state.inputNames.set(register, \"vec4(uintBitsToFloat(gl_FrontFacing ? 0xffffffffu : 0u))\");\n break;\n case \"vertex_id\":\n state.inputNames.set(register, \"vec4(intBitsToFloat(gl_VertexID))\");\n break;\n case \"instance_id\":\n state.inputNames.set(register, \"vec4(intBitsToFloat(gl_InstanceID))\");\n break;\n default:\n throw new WebglReadError(\"System-generated input is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n systemValueName: declaration.systemValueName\n });\n }\n }\n\n /**\n * Records which compute pseudo-input(s) a `dcl_input` declaration exposes.\n * The actual GLSL (uniform + derived locals) is emitted once, after every\n * declaration has been seen, by `_emitComputeInputPrelude` — `dcl_input`\n * for a thread-id kind can appear before or after `dcl_thread_group` in the\n * bytecode stream, and the flattened/group-id forms need the workgroup\n * size regardless of declaration order.\n *\n * @param {object} state Emit state.\n * @param {object} instruction `dcl_input` instruction with a thread-id-kind operand.\n */\n _declareComputeInput(state, instruction)\n {\n const kind = instruction.declaration.operandTypeName;\n switch (kind)\n {\n case \"input_thread_id\":\n state.computeInputsUsed.threadId = true;\n break;\n case \"input_thread_group_id\":\n state.computeInputsUsed.groupId = true;\n break;\n case \"input_thread_id_in_group\":\n state.computeInputsUsed.tig = true;\n break;\n case \"input_thread_id_in_group_flattened\":\n state.computeInputsUsed.flattened = true;\n break;\n default:\n throw new WebglReadError(\"Compute input is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n operandTypeName: kind\n });\n }\n }\n\n /**\n * Emits the shared `gl_FragCoord`-derived thread-id prelude for map-style\n * compute shaders: a `cewgDispatchOrigin` uniform (so a dispatch can be\n * tiled across more than one draw/viewport), then only the intermediate\n * and final locals this shader actually declared inputs for.\n *\n * @param {object} state Emit state.\n */\n _emitComputeInputPrelude(state)\n {\n const used = state.computeInputsUsed;\n if (!used.threadId && !used.groupId && !used.tig && !used.flattened)\n {\n return;\n }\n state.dispatchOriginUniform = \"cewgDispatchOrigin\";\n state.declarationLines.push(\"uniform ivec3 cewgDispatchOrigin;\");\n state.bindings.push({ kind: \"dispatchUniform\", name: \"cewgDispatchOrigin\" });\n state.earlyMainLines.push(\"ivec3 cewgThreadId = ivec3(ivec2(gl_FragCoord.xy), 0) + cewgDispatchOrigin;\");\n if (used.threadId)\n {\n state.earlyMainLines.push(\"vec4 vThreadID = intBitsToFloat(ivec4(cewgThreadId, 0));\");\n }\n if (used.groupId || used.tig || used.flattened)\n {\n const [ nx, ny, nz ] = this._threadGroupSizeOrThrow(state);\n state.earlyMainLines.push(`ivec3 cewgGroupId = cewgThreadId / ivec3(${nx}, ${ny}, ${nz});`);\n if (used.groupId)\n {\n state.earlyMainLines.push(\"vec4 vThreadGroupID = intBitsToFloat(ivec4(cewgGroupId, 0));\");\n }\n if (used.tig || used.flattened)\n {\n state.earlyMainLines.push(`ivec3 cewgTig = cewgThreadId - cewgGroupId * ivec3(${nx}, ${ny}, ${nz});`);\n if (used.tig)\n {\n state.earlyMainLines.push(\"vec4 vThreadIDInGroup = intBitsToFloat(ivec4(cewgTig, 0));\");\n }\n if (used.flattened)\n {\n state.earlyMainLines.push(\n `vec4 vThreadIDInGroupFlattened = intBitsToFloat(ivec4(cewgTig.z*${nx}*${ny} + cewgTig.y*${nx} + cewgTig.x, 0, 0, 0));`\n );\n }\n }\n }\n }\n\n /**\n * Reads the workgroup size recorded by `dcl_thread_group`, required to\n * split the flat thread id back into group id / id-in-group components.\n *\n * @param {object} state Emit state.\n * @returns {[number,number,number]} Workgroup size.\n */\n _threadGroupSizeOrThrow(state)\n {\n if (!Array.isArray(state.threadGroup))\n {\n throw new WebglReadError(\"Compute shader reads a thread-group-relative input with no dcl_thread_group\", {\n source: state.sourceName\n });\n }\n return state.threadGroup;\n }\n\n /**\n * Declares one stage output and records its backend identity.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded output declaration.\n * @private\n */\n _declareOutput(state, instruction)\n {\n const declaration = instruction.declaration;\n const register = declaration.registerIndex;\n\n if (instruction.opcodeName === \"dcl_output_siv\")\n {\n if (declaration.systemValueName === \"position\")\n {\n state.outputNames.set(register, \"gl_Position\");\n state.outputs.push({ register, name: \"gl_Position\", semanticName: \"SV_Position\", semanticIndex: 0 });\n return;\n }\n throw new WebglReadError(\"Output system value is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n systemValueName: declaration.systemValueName\n });\n }\n\n if (state.outputNames.has(register))\n {\n return;\n }\n const element = this._signatureElement(state.osgn, register);\n if (!element)\n {\n throw new WebglReadError(\"Output register has no OSGN row\", {\n source: state.sourceName,\n register\n });\n }\n const width = this._maskWidth(element.mask);\n if (state.isPixel)\n {\n const name = `${element.semanticName}${element.semanticIndex}`;\n state.outputNames.set(register, name);\n state.outputMasks.set(register, this._maskChars(element.mask));\n state.declarationLines.push(`layout(location = ${element.semanticIndex}) out ${this._vecType(width)} ${name};`);\n state.outputs.push({\n register,\n name,\n width,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex\n });\n }\n else\n {\n const name = `vs_r${register}`;\n state.outputNames.set(register, name);\n state.declarationLines.push(`out vec4 ${name};`);\n state.outputs.push({\n register,\n name,\n width: 4,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex\n });\n }\n }\n\n /**\n * Materializes an immediate constant-buffer declaration.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded custom-data declaration.\n * @private\n */\n _declareImmediateConstantBuffer(state, instruction)\n {\n const rows = instruction.customData?.immediateConstantBuffer;\n if (!rows)\n {\n return;\n }\n const literals = rows.map((row) =>\n `vec4(${row.map((value) => `uintBitsToFloat(0x${(value.uint32 >>> 0).toString(16)}u)`).join(\", \")})`\n );\n state.declarationLines.push(\n `const vec4 ${state.icbName}[${rows.length}] = vec4[${rows.length}](`,\n ...literals.map((literal, index) => ` ${literal}${index < literals.length - 1 ? \",\" : \"\"}`),\n \");\"\n );\n }\n\n /**\n * Initializes paired vertex outputs that the source shader does not write.\n *\n * @param {object} state Mutable emission state.\n * @private\n */\n _zeroFillUnwrittenOutputs(state)\n {\n const written = new Set();\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration) continue;\n for (const operand of instruction.operands)\n {\n if (operand.type === 2 && operand.registerIndex !== null)\n {\n written.add(operand.registerIndex);\n }\n }\n }\n for (const [ register, name ] of state.outputNames)\n {\n if (!written.has(register) && name !== \"gl_Position\")\n {\n const width = state.outputs.find((output) => output.register === register)?.width || 4;\n state.earlyMainLines.push(`${name} = ${this._vecType(width)}(0.0);`);\n state.warnings.push(`output ${name} is declared but never written; zero-filled`);\n }\n }\n }\n\n // ------------------------------------------------------------------\n // Instructions\n // ------------------------------------------------------------------\n\n /**\n * Dispatches one decoded instruction to its GLSL lowering rule.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @private\n */\n _emitInstruction(state, instruction)\n {\n const lower = DxbcGlslEmitter.LOWERINGS[instruction.opcodeName];\n if (!lower)\n {\n throw new WebglReadError(\"No GLSL lowering for opcode\", {\n source: state.sourceName,\n opcodeName: instruction.opcodeName,\n offset: instruction.offset\n });\n }\n lower.call(this, state, instruction);\n }\n\n /**\n * Appends one correctly indented line to the emitted function body.\n *\n * @param {object} state Mutable emission state.\n * @param {string} text GLSL source line.\n * @private\n */\n _line(state, text)\n {\n state.bodyLines.push(`${\" \".repeat(state.indent)}${text}`);\n }\n\n /**\n * Counts the active components in a DXBC mask.\n *\n * @param {number} mask DXBC component bit mask.\n * @returns {number} Active component count.\n * @private\n */\n _maskWidth(mask)\n {\n let width = 0;\n for (let bit = 0; bit < 4; bit += 1)\n {\n if (mask & (1 << bit)) width += 1;\n }\n return width || 4;\n }\n\n /**\n * Converts a DXBC component bit mask to GLSL swizzle characters.\n *\n * @param {number} mask DXBC component bit mask.\n * @returns {string} GLSL component string.\n * @private\n */\n _maskChars(mask)\n {\n return COMPONENTS.filter((_, bit) => mask & (1 << bit)).join(\"\") || \"xyzw\";\n }\n\n /**\n * Builds the lvalue text for one register-space destination component,\n * remapped into the target variable's declared component space.\n */\n _destComponentRef(state, destOperand, target, component)\n {\n const remapped = state.formatter.remapComponents(destOperand, component);\n return `${target.ref}${remapped ? `.${remapped}` : \"\"}`;\n }\n\n /**\n * Formats a resolved destination reference and optional mask.\n *\n * @param {object} target Resolved destination.\n * @returns {string} GLSL lvalue text.\n * @private\n */\n _destText(target)\n {\n return `${target.ref}${target.mask ? `.${target.mask}` : \"\"}`;\n }\n\n /**\n * Selects the GLSL floating scalar or vector type for a width.\n *\n * @param {number} width Component width.\n * @returns {string} GLSL type name.\n * @private\n */\n _vecType(width)\n {\n return width === 1 ? \"float\" : `vec${width}`;\n }\n\n /**\n * Reads a source at the destination mask's width, wrapping in a matching\n * constructor so intrinsic arguments always type-check exactly.\n */\n _vecArg(state, operand, destMask, as = \"float\")\n {\n const expression = state.formatter.sourceExpression(operand, { destMask, as });\n if (destMask.length === 1)\n {\n return expression;\n }\n const ctor = { float: \"vec\", int: \"ivec\", uint: \"uvec\" }[as] + destMask.length;\n return `${ctor}(${expression})`;\n }\n\n /**\n * Resolves a destination operand and its register-space component mask.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {number} [operandIndex=0] Destination operand index.\n * @returns {{target: object|null, mask: string}} Destination and mask.\n * @private\n */\n _destMask(state, instruction, operandIndex = 0)\n {\n const target = state.formatter.destination(instruction.operands[operandIndex]);\n // `mask` stays in register space: source-swizzle pairing is positional\n // against the register components; `target.mask` carries the declared-space\n // display form used for lvalue text.\n return { target, mask: target?.registerMask || \"xyzw\" };\n }\n\n /**\n * Tests whether an operand produces one scalar component.\n *\n * @param {object} operand Decoded DXBC operand.\n * @returns {boolean} True when the source is scalar.\n * @private\n */\n _isScalarSource(operand)\n {\n return operand.selectionModeName === \"select1\"\n || (operand.type === 4 && operand.componentCount === 1)\n || operand.componentCount === 1;\n }\n\n /**\n * Emits an assignment and applies instruction saturation when required.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} valueExpression GLSL right-hand expression.\n * @param {object} [options={}] Assignment formatting options.\n * @private\n */\n _assign(state, instruction, valueExpression, options = {})\n {\n const statement = state.formatter.assignment(instruction.operands[0], valueExpression, options);\n if (statement)\n {\n this._line(state, statement);\n if (options.saturate === undefined && instruction.saturate)\n {\n const { target } = this._destMask(state, instruction);\n const text = this._destText(target);\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\n }\n }\n }\n\n /**\n * Emits a width-correct floating binary infix operation.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} operator GLSL infix operator.\n * @private\n */\n _infixBinary(state, instruction, operator)\n {\n const { mask } = this._destMask(state, instruction);\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask });\n const width = Math.max(\n state.formatter.expressionWidth(instruction.operands[1], mask),\n state.formatter.expressionWidth(instruction.operands[2], mask)\n );\n this._assignWidened(state, instruction, mask, `${a} ${operator} ${b}`, width === 1);\n }\n\n /**\n * Widens a scalar result when assigning it to a vector destination.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} mask Destination component mask.\n * @param {string} expression GLSL expression.\n * @param {boolean} rhsIsScalar Whether the expression is scalar.\n * @private\n */\n _assignWidened(state, instruction, mask, expression, rhsIsScalar)\n {\n const value = rhsIsScalar && mask.length > 1 ? `vec${mask.length}(${expression})` : expression;\n this._assign(state, instruction, value, { saturate: instruction.saturate });\n }\n\n /**\n * Emits a unary GLSL intrinsic with destination-width handling.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} glslName GLSL intrinsic name.\n * @private\n */\n _helperUnary(state, instruction, glslName)\n {\n const { mask } = this._destMask(state, instruction);\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n this._assignWidened(state, instruction, mask, `${glslName}(${src})`,\n state.formatter.expressionWidth(instruction.operands[1], mask) === 1);\n }\n\n /**\n * Emits a binary GLSL intrinsic with width-matched arguments.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} glslName GLSL intrinsic name.\n * @private\n */\n _helperBinary(state, instruction, glslName)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask);\n const b = this._vecArg(state, instruction.operands[2], mask);\n this._assign(state, instruction, `${glslName}(${a}, ${b})`, { saturate: instruction.saturate });\n }\n\n /**\n * Emits a dot product and replicates its scalar result when necessary.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} sourceMask Source component mask.\n * @private\n */\n _dotProduct(state, instruction, sourceMask)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], sourceMask);\n const b = this._vecArg(state, instruction.operands[2], sourceMask);\n const dot = `dot(${a}, ${b})`;\n this._assign(state, instruction, mask.length > 1 ? `vec${mask.length}(${dot})` : dot, {\n saturate: instruction.saturate\n });\n }\n\n /**\n * Emits scalar or vector comparison bits in the float register model.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {object} options Comparison options.\n * @param {string} options.intrinsic GLSL vector comparison intrinsic.\n * @param {string} options.operator GLSL scalar comparison operator.\n * @param {\"float\"|\"int\"|\"uint\"} options.as Operand interpretation.\n * @private\n */\n _comparison(state, instruction, { intrinsic, operator, as })\n {\n const { mask } = this._destMask(state, instruction);\n if (mask.length === 1)\n {\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask, as });\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask, as });\n this._assign(state, instruction, `uintBitsToFloat((${a} ${operator} ${b}) ? 0xFFFFFFFFu : 0u)`);\n return;\n }\n const a = this._vecArg(state, instruction.operands[1], mask, as);\n const b = this._vecArg(state, instruction.operands[2], mask, as);\n this._assign(\n state,\n instruction,\n `uintBitsToFloat(uvec${mask.length}(${intrinsic}(${a}, ${b})) * 0xFFFFFFFFu)`\n );\n }\n\n /**\n * Emits an unsigned bitwise operation through register bitcasts.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} operator GLSL bitwise operator.\n * @private\n */\n _bitwiseBinary(state, instruction, operator)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, \"uint\");\n const b = this._vecArg(state, instruction.operands[2], mask, \"uint\");\n this._assign(state, instruction, `uintBitsToFloat(${a} ${operator} ${b})`);\n }\n\n /**\n * Emits a signed or unsigned integer binary operation through bitcasts.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} operator GLSL integer operator.\n * @param {\"int\"|\"uint\"} [as=\"int\"] Integer interpretation.\n * @private\n */\n _intBinary(state, instruction, operator, as = \"int\")\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, as);\n const b = this._vecArg(state, instruction.operands[2], mask, as);\n const wrap = as === \"uint\" ? \"uintBitsToFloat\" : \"intBitsToFloat\";\n this._assign(state, instruction, `${wrap}(${a} ${operator} ${b})`);\n }\n\n /**\n * Formats the DXBC zero or nonzero control-flow condition.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @returns {string} GLSL boolean expression.\n * @private\n */\n _condition(state, instruction)\n {\n const scalar = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\" });\n const test = instruction.testBoolean === \"nonzero\" ? \"!=\" : \"==\";\n return `floatBitsToUint(${scalar}) ${test} 0u`;\n }\n\n /**\n * Emits component-wise conditional moves without aliasing destinations.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @private\n */\n _movc(state, instruction)\n {\n const destOperand = instruction.operands[0];\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n const aliases = instruction.operands.slice(1).some((operand) =>\n operand.type === destOperand.type && operand.registerIndex === destOperand.registerIndex);\n\n if (aliases)\n {\n this._line(state, \"{\");\n state.indent += 1;\n this._line(state, `vec4 hlslcc_movcTemp = ${target.ref};`);\n }\n for (const component of mask)\n {\n const condition = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"int\" });\n const ifTrue = state.formatter.sourceExpression(instruction.operands[2], { destMask: component });\n const ifFalse = state.formatter.sourceExpression(instruction.operands[3], { destMask: component });\n const lvalue = aliases\n ? `hlslcc_movcTemp.${component}`\n : this._destComponentRef(state, destOperand, target, component);\n this._line(state, `${lvalue} = (${condition} != 0) ? ${ifTrue} : ${ifFalse};`);\n }\n if (aliases)\n {\n this._line(state, `${target.ref} = hlslcc_movcTemp;`);\n state.indent -= 1;\n this._line(state, \"}\");\n }\n if (instruction.saturate)\n {\n const text = this._destText(target);\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\n }\n }\n\n /**\n * Emits the paired sine and cosine destinations in alias-safe order.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @private\n */\n _sincos(state, instruction)\n {\n const [ sinDest, cosDest, angle ] = instruction.operands;\n const emitOne = (destOperand, fn) =>\n {\n if (destOperand.type === 13) return;\n const target = state.formatter.destination(destOperand);\n const mask = target.registerMask || \"xyzw\";\n const src = state.formatter.sourceExpression(angle, { destMask: mask });\n const call = state.formatter.expressionWidth(angle, mask) === 1 && mask.length > 1\n ? `vec${mask.length}(${fn}(${src}))`\n : `${fn}(${src})`;\n const text = this._destText(target);\n this._line(state, `${text} = ${call};`);\n if (instruction.saturate)\n {\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\n }\n };\n const sinAliasesAngle = sinDest.type === angle.type && sinDest.registerIndex === angle.registerIndex;\n if (sinAliasesAngle)\n {\n emitOne(cosDest, \"cos\");\n emitOne(sinDest, \"sin\");\n }\n else\n {\n emitOne(sinDest, \"sin\");\n emitOne(cosDest, \"cos\");\n }\n }\n\n /**\n * Resolves and validates the declared dimension of a texture operand.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {object} texOperand Texture resource operand.\n * @returns {number} DXBC resource-dimension code.\n * @private\n */\n _resourceDimension(state, instruction, texOperand)\n {\n const dimension = state.resourceDimensions.get(texOperand.registerIndex);\n if (!dimension)\n {\n throw new WebglReadError(\"Texture instruction references an undeclared resource\", {\n source: state.sourceName,\n register: texOperand.registerIndex,\n opcodeName: instruction.opcodeName\n });\n }\n return dimension;\n }\n\n /**\n * Emits a regular, LOD, bias, gradient, or comparison texture sample.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC texture instruction.\n * @param {object} [options={}] Sampling-mode operand indexes.\n * @param {number|null} [options.lodOperandIndex=null] Explicit LOD operand.\n * @param {number|null} [options.biasOperandIndex=null] LOD bias operand.\n * @param {number[]|null} [options.gradOperandIndexes=null] Gradient operands.\n * @param {number|null} [options.comparisonRefOperandIndex=null] Comparison reference operand.\n * @param {boolean} [options.forceLodZero=false] Whether to force the LOD-zero adaptation.\n * @private\n */\n _textureSample(state, instruction, {\n lodOperandIndex = null,\n biasOperandIndex = null,\n gradOperandIndexes = null,\n comparisonRefOperandIndex = null,\n forceLodZero = false\n } = {})\n {\n const { mask } = this._destMask(state, instruction);\n const coordOperand = instruction.operands[1];\n const texOperand = instruction.operands[2];\n if (state.lightPackedTexture?.profileRegister === texOperand.registerIndex)\n {\n const oneSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n if (state.lightConstantBuffer?.profileRegister === texOperand.registerIndex)\n {\n // The constant-buffer local-light path carries the light rows but\n // not the texture profile array. Treat profile lookups as neutral\n // attenuation so profile-enabled lights degrade to unprofiled lights\n // instead of costing another sampler unit.\n const oneSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n if (state.stubbedResources.has(texOperand.registerIndex))\n {\n // Stubbed tiled-lighting sampler (LightProfileArray): its declaration\n // was dropped, so lower the sample to a compile-time zero of the\n // destination width instead of referencing the missing sampler.\n const zeroSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(0.0).${zeroSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n const dimension = this._resourceDimension(state, instruction, texOperand);\n const coordMask = COORD_MASK_BY_DIMENSION[dimension];\n const coord = this._vecArg(state, coordOperand, coordMask);\n const texName = state.formatter.registerReference(texOperand);\n const returnSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n\n if (comparisonRefOperandIndex !== null)\n {\n const reference = state.formatter.sourceExpression(\n instruction.operands[comparisonRefOperandIndex],\n { destMask: \"x\" }\n );\n const comparisonCoord = `vec${coordMask.length + 1}(${coord}, ${reference})`;\n let comparisonCall;\n\n if (!forceLodZero)\n {\n comparisonCall = `texture(${texName}, ${comparisonCoord})`;\n }\n else if (dimension === 3)\n {\n comparisonCall = `textureLod(${texName}, ${comparisonCoord}, 0.0)`;\n }\n else if (dimension === 6)\n {\n comparisonCall = `textureGrad(${texName}, ${comparisonCoord}, vec3(0.0), vec3(0.0))`;\n }\n else if (dimension === 8)\n {\n comparisonCall = `textureGrad(${texName}, ${comparisonCoord}, vec2(0.0), vec2(0.0))`;\n }\n else\n {\n throw new WebglReadError(\"Comparison LOD-zero sampling is not supported for this resource dimension\", {\n source: state.sourceName,\n opcodeName: instruction.opcodeName,\n dimension\n });\n }\n\n const value = mask.length === 1\n ? comparisonCall\n : `vec${mask.length}(${comparisonCall})`;\n this._assign(state, instruction, value, { saturate: instruction.saturate });\n return;\n }\n\n let call;\n if (gradOperandIndexes !== null)\n {\n const gradMask = coordMask === \"xyzw\" ? \"xyz\" : coordMask;\n const gradX = this._vecArg(state, instruction.operands[gradOperandIndexes[0]], gradMask);\n const gradY = this._vecArg(state, instruction.operands[gradOperandIndexes[1]], gradMask);\n call = `textureGrad(${texName}, ${coord}, ${gradX}, ${gradY})`;\n }\n else if (lodOperandIndex !== null)\n {\n const lod = state.formatter.sourceExpression(instruction.operands[lodOperandIndex], { destMask: \"x\" });\n call = `textureLod(${texName}, ${coord}, ${lod})`;\n }\n else if (biasOperandIndex !== null)\n {\n const bias = state.formatter.sourceExpression(instruction.operands[biasOperandIndex], { destMask: \"x\" });\n call = `texture(${texName}, ${coord}, ${bias})`;\n }\n else\n {\n call = `texture(${texName}, ${coord})`;\n }\n this._assign(state, instruction, `${call}.${returnSwizzle}`, { saturate: instruction.saturate });\n }\n\n /**\n * Emits an integer-coordinate texel fetch for a declared resource.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC load instruction.\n * @private\n */\n _texelFetch(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const coordOperand = instruction.operands[1];\n const texOperand = instruction.operands[2];\n const dimension = this._resourceDimension(state, instruction, texOperand);\n const texName = state.formatter.registerReference(texOperand);\n const returnSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n\n let call;\n if (dimension === 1)\n {\n const index = state.formatter.sourceExpression(coordOperand, { destMask: \"x\", as: \"int\" });\n const widthMask = this.profile.dataTextureWidth - 1;\n const widthShift = Math.log2(this.profile.dataTextureWidth);\n call = `texelFetch(${texName}, ivec2((${index}) & ${widthMask}, (${index}) >> ${widthShift}), 0)`;\n }\n else\n {\n const coordMask = dimension === 5 || dimension === 8 ? \"xyz\" : \"xy\";\n const coord = this._vecArg(state, coordOperand, coordMask, \"int\");\n const mip = state.formatter.sourceExpression(coordOperand, { destMask: \"w\", as: \"int\" });\n call = `texelFetch(${texName}, ${coord}, ${mip})`;\n }\n this._assign(state, instruction, `${call}.${returnSwizzle}`, { saturate: instruction.saturate });\n }\n}\n\n/**\n * Per-opcode lowering table. Every rule cites its family spec in\n * `docs/dxbc-lowering/`; templates are HLSLcc-derived, see each doc.\n */\nDxbcGlslEmitter.LOWERINGS = {\n // --- float-alu ---\n mov(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n this._assignWidened(state, instruction, mask, src,\n state.formatter.expressionWidth(instruction.operands[1], mask) === 1);\n },\n mad(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask });\n const c = state.formatter.sourceExpression(instruction.operands[3], { destMask: mask });\n const width = Math.max(...[ 1, 2, 3 ].map((index) =>\n state.formatter.expressionWidth(instruction.operands[index], mask)));\n this._assignWidened(state, instruction, mask, `${a} * ${b} + ${c}`, width === 1);\n },\n mul(state, instruction) { this._infixBinary(state, instruction, \"*\"); },\n add(state, instruction) { this._infixBinary(state, instruction, \"+\"); },\n div(state, instruction) { this._infixBinary(state, instruction, \"/\"); },\n dp2(state, instruction) { this._dotProduct(state, instruction, \"xy\"); },\n dp3(state, instruction) { this._dotProduct(state, instruction, \"xyz\"); },\n dp4(state, instruction) { this._dotProduct(state, instruction, \"xyzw\"); },\n max(state, instruction) { this._helperBinary(state, instruction, \"max\"); },\n min(state, instruction) { this._helperBinary(state, instruction, \"min\"); },\n sqrt(state, instruction) { this._helperUnary(state, instruction, \"sqrt\"); },\n rsq(state, instruction) { this._helperUnary(state, instruction, \"inversesqrt\"); },\n exp(state, instruction) { this._helperUnary(state, instruction, \"exp2\"); },\n log(state, instruction) { this._helperUnary(state, instruction, \"log2\"); },\n frc(state, instruction) { this._helperUnary(state, instruction, \"fract\"); },\n round_ne(state, instruction) { this._helperUnary(state, instruction, \"roundEven\"); },\n round_ni(state, instruction) { this._helperUnary(state, instruction, \"floor\"); },\n round_pi(state, instruction) { this._helperUnary(state, instruction, \"ceil\"); },\n round_z(state, instruction) { this._helperUnary(state, instruction, \"trunc\"); },\n rcp(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask);\n const one = mask.length > 1 ? `vec${mask.length}(1.0)` : \"1.0\";\n this._assign(state, instruction, `${one} / ${src}`, { saturate: instruction.saturate });\n },\n sincos(state, instruction) { this._sincos(state, instruction); },\n\n // --- cmp-controlflow ---\n lt(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"float\" }); },\n ge(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"float\" }); },\n eq(state, instruction) { this._comparison(state, instruction, { intrinsic: \"equal\", operator: \"==\", as: \"float\" }); },\n ne(state, instruction) { this._comparison(state, instruction, { intrinsic: \"notEqual\", operator: \"!=\", as: \"float\" }); },\n ilt(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"int\" }); },\n ige(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"int\" }); },\n ieq(state, instruction) { this._comparison(state, instruction, { intrinsic: \"equal\", operator: \"==\", as: \"int\" }); },\n ine(state, instruction) { this._comparison(state, instruction, { intrinsic: \"notEqual\", operator: \"!=\", as: \"int\" }); },\n ult(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"uint\" }); },\n uge(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"uint\" }); },\n and(state, instruction) { this._bitwiseBinary(state, instruction, \"&\"); },\n or(state, instruction) { this._bitwiseBinary(state, instruction, \"|\"); },\n xor(state, instruction) { this._bitwiseBinary(state, instruction, \"^\"); },\n not(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\n this._assign(state, instruction, `intBitsToFloat(~${src})`);\n },\n movc(state, instruction) { this._movc(state, instruction); },\n if(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {`);\n state.indent += 1;\n },\n else(state)\n {\n state.indent -= 1;\n this._line(state, \"} else {\");\n state.indent += 1;\n },\n endif(state)\n {\n state.indent -= 1;\n this._line(state, \"}\");\n },\n loop(state)\n {\n this._line(state, \"while(true){\");\n state.indent += 1;\n },\n endloop(state)\n {\n state.indent -= 1;\n this._line(state, \"}\");\n },\n break(state) { this._line(state, \"break;\"); },\n breakc(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {break;}`);\n },\n continue(state) { this._line(state, \"continue;\"); },\n continuec(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {continue;}`);\n },\n switch(state, instruction)\n {\n const selector = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\", as: \"int\" });\n this._line(state, `switch(${selector}){`);\n state.indent += 2;\n },\n case(state, instruction)\n {\n const label = instruction.operands[0].immediateValues[0].uint32 | 0;\n state.indent -= 1;\n this._line(state, `case ${label}:`);\n state.indent += 1;\n },\n default(state)\n {\n state.indent -= 1;\n this._line(state, \"default:\");\n state.indent += 1;\n },\n endswitch(state)\n {\n state.indent -= 2;\n this._line(state, \"}\");\n },\n ret(state) { this._line(state, \"return;\"); },\n retc(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {return;}`);\n },\n discard(state, instruction)\n {\n const scalar = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\", as: \"int\" });\n const test = instruction.testBoolean === \"nonzero\" ? \"!=\" : \"==\";\n this._line(state, `if((${scalar})${test}0){discard;}`);\n },\n\n // --- integer-conv (corpus-common subset) ---\n iadd(state, instruction) { this._intBinary(state, instruction, \"+\"); },\n imad(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, \"int\");\n const b = this._vecArg(state, instruction.operands[2], mask, \"int\");\n const c = this._vecArg(state, instruction.operands[3], mask, \"int\");\n this._assign(state, instruction, `intBitsToFloat(${a} * ${b} + ${c})`);\n },\n imul(state, instruction)\n {\n if (instruction.operands[0].type !== 13)\n {\n throw new WebglReadError(\"imul with a live high-half destination is unimplementable in GLSL ES 3.00\", {\n source: state.sourceName\n });\n }\n const destLow = instruction.operands[1];\n const mask = state.formatter.destination(destLow)?.registerMask || \"xyzw\";\n const a = this._vecArg(state, instruction.operands[2], mask, \"int\");\n const b = this._vecArg(state, instruction.operands[3], mask, \"int\");\n const statement = state.formatter.assignment(destLow, `intBitsToFloat(${a} * ${b})`);\n if (statement) this._line(state, statement);\n },\n ineg(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\n this._assign(state, instruction, `intBitsToFloat(-${src})`);\n },\n imax(state, instruction) { this._intMinMax(state, instruction, \"max\", \"int\"); },\n imin(state, instruction) { this._intMinMax(state, instruction, \"min\", \"int\"); },\n umax(state, instruction) { this._intMinMax(state, instruction, \"max\", \"uint\"); },\n umin(state, instruction) { this._intMinMax(state, instruction, \"min\", \"uint\"); },\n ishl(state, instruction) { this._intBinary(state, instruction, \"<<\"); },\n ishr(state, instruction) { this._intBinary(state, instruction, \">>\"); },\n ushr(state, instruction) { this._intBinary(state, instruction, \">>\", \"uint\"); },\n ftoi(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask);\n const type = mask.length > 1 ? `ivec${mask.length}` : \"int\";\n this._assign(state, instruction, `intBitsToFloat(${type}(${src}))`);\n },\n ftou(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask);\n const type = mask.length > 1 ? `uvec${mask.length}` : \"uint\";\n this._assign(state, instruction, `uintBitsToFloat(${type}(${src}))`);\n },\n itof(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\n const type = mask.length > 1 ? `vec${mask.length}` : \"float\";\n this._assign(state, instruction, `${type}(${src})`, { saturate: instruction.saturate });\n },\n utof(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"uint\");\n const type = mask.length > 1 ? `vec${mask.length}` : \"float\";\n this._assign(state, instruction, `${type}(${src})`, { saturate: instruction.saturate });\n },\n\n // --- texture-sample ---\n sample(state, instruction) { this._textureSample(state, instruction); },\n sample_c(state, instruction) { this._textureSample(state, instruction, { comparisonRefOperandIndex: 4 }); },\n sample_c_lz(state, instruction) { this._textureSample(state, instruction, { comparisonRefOperandIndex: 4, forceLodZero: true }); },\n sample_l(state, instruction) { this._textureSample(state, instruction, { lodOperandIndex: 4 }); },\n sample_b(state, instruction) { this._textureSample(state, instruction, { biasOperandIndex: 4 }); },\n sample_d(state, instruction) { this._textureSample(state, instruction, { gradOperandIndexes: [ 4, 5 ] }); },\n udiv(state, instruction)\n {\n // Quotient into operand 0, remainder into operand 1; either may be null.\n // Raw `/` and `%` match HLSLcc; divide-by-zero is GLSL-undefined (spec risk noted).\n const [ quotient, remainder, a, b ] = instruction.operands;\n for (const [ destOperand, operator ] of [ [ quotient, \"/\" ], [ remainder, \"%\" ] ])\n {\n if (destOperand.type === 13) continue;\n const mask = state.formatter.destination(destOperand)?.registerMask || \"xyzw\";\n const left = this._vecArg(state, a, mask, \"uint\");\n const right = this._vecArg(state, b, mask, \"uint\");\n const statement = state.formatter.assignment(destOperand, `uintBitsToFloat(${left} ${operator} ${right})`);\n if (statement) this._line(state, statement);\n }\n },\n ld(state, instruction) { this._texelFetch(state, instruction); },\n deriv_rtx(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\n deriv_rtx_coarse(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\n deriv_rtx_fine(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\n deriv_rty(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\n deriv_rty_coarse(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\n deriv_rty_fine(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\n resinfo(state, instruction) { this._resinfo(state, instruction); },\n\n // --- memory-structured ---\n ld_structured(state, instruction) { this._ldStructured(state, instruction); },\n\n // --- integer-conv: half-float packing (skinned vertex data unpacking) ---\n f16tof32(state, instruction)\n {\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = unpackHalf2x16(floatBitsToUint(${src}) & 0xffffu).x;`);\n }\n },\n f32tof16(state, instruction)\n {\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(packHalf2x16(vec2(${src}, 0.0)) & 0xffffu);`);\n }\n },\n nop() {},\n\n // --- bitfield (GLSL ES 3.00 has no bitfieldExtract/Insert/bitCount; ES 3.10+ only) ---\n ibfe(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_ibfe\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"int\" });\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"int\" });\n const src = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"int\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = intBitsToFloat(${helper}(${width}, ${offset}, ${src}));`);\n }\n },\n ubfe(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_ubfe\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"uint\" });\n const src = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"uint\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${width}, ${offset}, ${src}));`);\n }\n },\n bfi(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_bfi\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"uint\" });\n const insert = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"uint\" });\n const base = state.formatter.sourceExpression(instruction.operands[4], { destMask: component, as: \"uint\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${width}, ${offset}, ${insert}, ${base}));`);\n }\n },\n countbits(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_countbits\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${src}));`);\n }\n },\n\n // --- texture-sample: gather4 (GLSL ES 3.00 has no textureGather; emulated via 4 texelFetch taps) ---\n gather4(state, instruction) { this._gather4(state, instruction); },\n\n // --- compute map-style: UAV write ---\n store_uav_typed(state, instruction)\n {\n // Map-style contract: the address operand's xy are assumed to equal the\n // current fragment's coordinate (the packaging pipeline only routes\n // map-style compute shaders through this lowering, where every UAV\n // write targets the invoking thread's own output texel) — they are\n // deliberately unread here. The z (array-slice) coordinate was resolved\n // by the `_analyzeUavStores` pre-pass: a multi-slice UAV routes each\n // store to its own per-slice fragment output, a single-store UAV drops\n // the slice entirely (the host attaches the target layer).\n const [ uavOperand, , valueOperand ] = instruction.operands;\n const target = state.formatter.destination(uavOperand);\n if (!target) return;\n const mask = target.registerMask || \"xyzw\";\n const value = this._vecArg(state, valueOperand, mask);\n // RGBA float render targets are assumed for every map-style UAV output;\n // uint/sint DXBC UAV formats still pass their bit patterns through as\n // float here (consistent with this emitter's float-vec4 register model),\n // so flag it as a warning rather than a hard failure.\n const returnTypes = state.uavReturnTypes.get(uavOperand.registerIndex);\n if (returnTypes && returnTypes.some((name) => name === \"uint\" || name === \"sint\"))\n {\n state.warnings.push(\n `store_uav_typed at offset ${instruction.offset} targets a non-float UAV (${returnTypes.join(\",\")}); output is treated as an RGBA float render target`\n );\n }\n const plan = state.uavSlicePlan.get(uavOperand.registerIndex);\n if (plan?.kind === \"multiSlice\")\n {\n const slice = plan.sliceByOffset.get(instruction.offset);\n const sliceName = state.uavSliceNames.get(uavOperand.registerIndex).get(slice);\n this._line(state, `${sliceName}${target.mask ? `.${target.mask}` : \"\"} = ${value};`);\n return;\n }\n this._line(state, `${this._destText(target)} = ${value};`);\n }\n};\n\n/**\n * `ld_structured` lowering. Vertex UBO path reads `name.data[row]` vec4 rows;\n * pixel data-texture path reads RGBA32UI texels (4 dwords per texel, fixed\n * 2048-texel row width). 16-byte-aligned reads use one static channel per\n * component; unaligned reads fall back to per-dword dynamic addressing.\n */\nDxbcGlslEmitter.prototype._ldStructured = function _ldStructured(state, instruction)\n{\n const target = state.formatter.destination(instruction.operands[0]);\n if (!target) return;\n const mask = target.registerMask || \"xyzw\";\n const resourceOperand = instruction.operands[3];\n const info = state.structuredBuffers.get(resourceOperand.registerIndex);\n if (!info)\n {\n throw new WebglReadError(\"ld_structured references an undeclared structured buffer\", {\n source: state.sourceName,\n register: resourceOperand.registerIndex\n });\n }\n if (info.kind === \"stub\")\n {\n // Stubbed tiled-lighting buffer: every component reads a compile-time\n // zero. floatBitsToUint of this is 0u, so the per-tile light count is 0\n // and the surrounding light loop is dead (no live sb#/s# references).\n for (const component of mask)\n {\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = uintBitsToFloat(0u);`);\n }\n return;\n }\n const offsetOperand = instruction.operands[2];\n if (offsetOperand.type !== 4)\n {\n throw new WebglReadError(\"ld_structured with a non-immediate byte offset is not supported\", {\n source: state.sourceName,\n offset: instruction.offset\n });\n }\n const offsetDwords = offsetOperand.immediateValues[0].uint32 >> 2;\n const element = state.formatter.sourceExpression(instruction.operands[1], { destMask: \"x\", as: \"int\" });\n const swizzle = resourceOperand.swizzle || \"xyzw\";\n const widthMask = this.profile.dataTextureWidth - 1;\n const widthShift = Math.log2(this.profile.dataTextureWidth);\n const aligned = info.strideDwords % 4 === 0 && offsetDwords % 4 === 0;\n\n for (const component of mask)\n {\n const channel = swizzle[\"xyzw\".indexOf(component)];\n const channelIndex = \"xyzw\".indexOf(channel);\n let value;\n if (info.kind === \"lightIndexPacked\")\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2(((${dword}) >> 2) & ${widthMask}, (${dword}) >> ${widthShift + 2}), 0)[(${dword}) & 3])`;\n }\n else if (info.kind === \"lightDataPacked\")\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n const texel = `(${info.dataTexelBase} + ((${dword}) >> 2))`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2((${texel}) & ${widthMask}, (${texel}) >> ${widthShift}), 0)[(${dword}) & 3])`;\n }\n else if (info.kind === \"lightIndexCb\")\n {\n value = `uintBitsToFloat(cewgLocalLightIndexLoad(${element}))`;\n }\n else if (info.kind === \"lightDataCb\")\n {\n if (!aligned)\n {\n throw new WebglReadError(\"local-light constant-buffer lowering requires aligned light rows\", {\n source: state.sourceName,\n offset: instruction.offset\n });\n }\n value = `cewgLocalLightRow(${element}, ${offsetDwords / 4}).${channel}`;\n }\n else if (info.kind === \"ubo\")\n {\n if (aligned)\n {\n const row = `(${element}) * ${info.strideDwords / 4}${offsetDwords ? ` + ${offsetDwords / 4}` : \"\"}`;\n value = `${info.name}.data[${row}].${channel}`;\n }\n else\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n value = `${info.name}.data[(${dword}) >> 2][(${dword}) & 3]`;\n }\n }\n else if (aligned)\n {\n const texel = `(${element}) * ${info.strideDwords / 4}${offsetDwords ? ` + ${offsetDwords / 4}` : \"\"}`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2((${texel}) & ${widthMask}, (${texel}) >> ${widthShift}), 0).${channel})`;\n }\n else\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2(((${dword}) >> 2) & ${widthMask}, (${dword}) >> ${widthShift + 2}), 0)[(${dword}) & 3])`;\n }\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = ${value};`);\n }\n};\n\n/**\n * `resinfo` lowering: width/height/depth via textureSize per live destination\n * component; the 4th (mip-count) channel has no WebGL2 equivalent and throws\n * only when a shader actually reads it.\n */\nDxbcGlslEmitter.prototype._resinfo = function _resinfo(state, instruction)\n{\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n const mipExpression = state.formatter.sourceExpression(instruction.operands[1], { destMask: \"x\", as: \"int\" });\n const texOperand = instruction.operands[2];\n const dimension = this._resourceDimension(state, instruction, texOperand);\n const axisCount = dimension === 5 || dimension === 8 ? 3 : 2;\n const returnType = instruction.resinfoReturnTypeName || \"float\";\n const sizeExpression = `textureSize(${state.formatter.registerReference(texOperand)}, ${mipExpression})`;\n\n for (const component of mask)\n {\n const destElem = \"xyzw\".indexOf(component);\n const channelChar = texOperand.swizzle ? texOperand.swizzle[destElem] : component;\n const channel = \"xyzw\".indexOf(channelChar);\n let value;\n if (channel >= 3)\n {\n throw new WebglReadError(\"resinfo mip-count component has no WebGL2 lowering\", {\n source: state.sourceName,\n offset: instruction.offset\n });\n }\n else if (channel >= axisCount)\n {\n value = returnType === \"uint\" ? \"uintBitsToFloat(0u)\" : \"0.0\";\n }\n else\n {\n const axis = COMPONENTS[channel];\n if (returnType === \"uint\")\n {\n value = `uintBitsToFloat(uint(${sizeExpression}.${axis}))`;\n }\n else if (returnType === \"rcpfloat\")\n {\n value = `1.0 / float(${sizeExpression}.${axis})`;\n }\n else\n {\n value = `float(${sizeExpression}.${axis})`;\n }\n }\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = ${value};`);\n }\n};\n\n/**\n * Shared int/uint min-max lowering used by imax/imin/umax/umin.\n */\nDxbcGlslEmitter.prototype._intMinMax = function _intMinMax(state, instruction, fn, as)\n{\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, as);\n const b = this._vecArg(state, instruction.operands[2], mask, as);\n const wrap = as === \"uint\" ? \"uintBitsToFloat\" : \"intBitsToFloat\";\n this._assign(state, instruction, `${wrap}(${fn}(${a}, ${b}))`);\n};\n\n/**\n * `gather4` lowering: fetches one channel from each of the four texels a\n * bilinear sample would blend, via the `hlslcc_textureGather4Emulated` /\n * `hlslcc_textureGather4ArrayEmulated` helpers (GLSL ES 3.00 has no\n * `textureGather`). Only 2D and 2D-array resources are supported — the\n * dimensions the AO/blur/FSR/CAS map-style corpus this lowering targets is\n * known to use (ASSAO gathers from its deinterleaved texture2darray slices).\n *\n * @param {object} state Emit state.\n * @param {object} instruction `gather4` instruction.\n */\nDxbcGlslEmitter.prototype._gather4 = function _gather4(state, instruction)\n{\n const { mask } = this._destMask(state, instruction);\n const coordOperand = instruction.operands[1];\n const texOperand = instruction.operands[2];\n const samplerOperand = instruction.operands[3];\n const dimension = this._resourceDimension(state, instruction, texOperand);\n if (dimension !== 3 && dimension !== 8)\n {\n throw new WebglReadError(\"gather4 against this resource dimension is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n dimensionName: texOperand.typeName,\n offset: instruction.offset\n });\n }\n const helper = this.helpers.require(\n dimension === 8 ? \"hlslcc_textureGather4ArrayEmulated\" : \"hlslcc_textureGather4Emulated\"\n );\n const coord = this._vecArg(state, coordOperand, dimension === 8 ? \"xyz\" : \"xy\");\n const texName = state.formatter.registerReference(texOperand);\n const channelLetter = this._gather4Channel(samplerOperand);\n const channelIndex = \"xyzw\".indexOf(channelLetter);\n const call = `${helper}(${texName}, ${coord}, ${channelIndex})`;\n this._assign(state, instruction, mask === \"xyzw\" ? call : `${call}.${mask}`, { saturate: instruction.saturate });\n};\n\n/**\n * Reads the gathered-channel selector `gather4`/`gather4_po` carry on their\n * sampler operand (a 1-component swizzle; red/`x` is the default when no\n * selection is encoded).\n *\n * @param {object} operand Decoded sampler operand.\n * @returns {string} Channel letter (`x`/`y`/`z`/`w`).\n */\nDxbcGlslEmitter.prototype._gather4Channel = function _gather4Channel(operand)\n{\n if (operand.selectionModeName === \"select1\" && operand.selected)\n {\n return operand.selected;\n }\n if (operand.selectionModeName === \"swizzle\" && operand.swizzle)\n {\n return operand.swizzle[0];\n }\n return \"x\";\n};\n\n/**\n * Assembles the final GLSL text.\n */\nDxbcGlslEmitter.prototype._assemble = function _assemble(state)\n{\n const lines = [ \"#version 300 es\" ];\n if (state.isPixel || state.isCompute)\n {\n lines.push(\"precision highp float;\", \"precision highp int;\");\n }\n lines.push(\"\", ...state.declarationLines);\n const helperSource = this.helpers.emit();\n if (helperSource)\n {\n lines.push(\"\", helperSource);\n }\n // Vertex stages get the standard DX->GL depth-range fixup: EVE's\n // projection matrices are D3D-style (z_clip in [0, w]), so the raw\n // DXBC position would land in GL NDC [0, 1] instead of [-1, 1] —\n // halving depth precision and breaking every pixel-stage read of\n // SV_Position.z (gl_FragCoord.z) and depth-encoding technique against\n // the DX-convention values the shaders were compiled for. Remapping\n // z after the translated body runs makes depth output, clipping and\n // gl_FragCoord.z all match D3D semantics exactly. The body is wrapped\n // in a helper so early `ret` (return) statements cannot skip the\n // fixup.\n const writesPosition = [ ...state.outputNames.values() ].includes(\"gl_Position\");\n if (!state.isPixel && !state.isCompute && writesPosition)\n {\n lines.push(\"\", \"void dxbc_main() {\");\n for (const early of state.earlyMainLines)\n {\n lines.push(` ${early}`);\n }\n lines.push(...state.bodyLines, \"}\");\n lines.push(\n \"\",\n \"void main() {\",\n \" dxbc_main();\",\n \" gl_Position.z = 2.0 * gl_Position.z - gl_Position.w;\",\n \"}\"\n );\n return `${lines.join(\"\\n\")}\\n`;\n }\n\n lines.push(\"\", \"void main() {\");\n for (const early of state.earlyMainLines)\n {\n lines.push(` ${early}`);\n }\n lines.push(...state.bodyLines, \"}\");\n return `${lines.join(\"\\n\")}\\n`;\n};\n"],"names":["COMPONENTS","MAX_MAP_STYLE_UAV_OUTPUTS","SAMPLER_TYPE_BY_DIMENSION","SHADOW_SAMPLER_TYPE_BY_DIMENSION","COMPARISON_SAMPLE_OPCODES","Set","NON_COMPARISON_TEXTURE_OPCODES","COORD_MASK_BY_DIMENSION","DxbcGlslEmitter","constructor","options","helpers","DxbcGlslHelperRegistry","_defineHelpers","profile","constantBufferStyle","pixelConstantBufferRemap","samplerName","register","stageName","vertexStructuredCapacity","dataTextureWidth","stubResourceRegisters","lightConstantBuffer","lightPackedTexture","define","source","join","Emit","bytes","sourceName","raw","CjsDxbcFormat","read","emit","OUTPUT_RAW","program","WebglReadError","programTypeName","state","isPixel","isCompute","decoder","isgn","inputSignature","osgn","outputSignature","inputNames","Map","outputNames","resourceDimensions","resourceNames","comparisonResources","_analyzeComparisonResources","constantBufferNames","structuredBuffers","_normalizeLightConstantBufferProfile","lightConstantBufferDeclared","_normalizeLightPackedTextureProfile","lightPackedTextureDeclared","stubbedResources","inputMasks","outputMasks","bindings","declarationLines","earlyMainLines","bodyLines","indent","warnings","inputs","outputs","icbName","threadGroup","uavNames","uavReturnTypes","uavDimensions","uavSlicePlan","uavSliceNames","uavOutputCount","dispatchOriginUniform","computeInputsUsed","threadId","groupId","tig","flattened","reset","_assertMapStyleCompute","_analyzeUavStores","integerVertexInputs","formatter","DxbcGlslOperandFormatter","integerInputs","componentMap","operand","type","get","registerIndex","names","input","index","output","constantBuffer","slot","constantBufferMember","resource","uav","immediateConstantBuffer","instruction","instructions","isDeclaration","_emitDeclaration","_emitComputeInputPrelude","Array","isArray","pairVaryings","has","name","set","push","width","semanticName","semanticIndex","_zeroFillUnwrittenOutputs","_emitInstruction","result","_assemble","computeFragment","uavOutputs","filter","binding","kind","map","slice","location","glslName","indexRegister","Number","dataRegister","isInteger","profileRegister","capacity","listBase","ordinaryResources","resourceOperand","operands","opcodeName","samplerRegister","samplers","add","keys","dataTexelBase","_ensureLightPackedTexture","strideBytes","format","cewgSemantic","lightIndexRegister","lightDataRegister","lightProfileRegister","_ensureLightConstantBuffer","rows","sizeInVec4","style","capacityLights","blocked","startsWith","offset","declaration","resourceDimension","constantTemps","storesByUav","controlFlowDepth","uavOperand","addressOperand","stores","_resolveSliceConstant","_trackTempConstants","length","throwNotMapStyle","shape","storeCount","slices","store","some","size","sort","a","b","sliceByOffset","isConstantMov","saturate","modifierName","selectionModeName","component","mask","key","value","componentCount","immediateValues","indexOf","uint32","delete","swizzle","_allocateUavOutputLocation","uavCount","tempCount","registerCount","mapped","returnTypes","returnType","returnTypeNames","comparisonSamplers","samplerType","dimensionName","resourceDimensionName","comparison","samplerRegisterIndices","structureStride","strideDwords","Math","max","ceil","capacityElements","_declareComputeInput","_declareVertexInput","threadGroupX","threadGroupY","threadGroupZ","plan","sliceNames","_declarePixelInput","_declareSystemInput","_declareOutput","_declareImmediateConstantBuffer","_signatureElement","signature","elements","find","element","_maskWidth","componentTypeName","_maskChars","_vecType","systemValueName","flat","componentType","interpolationModeName","operandTypeName","used","nx","ny","nz","_threadGroupSizeOrThrow","customData","literals","row","toString","literal","written","lower","LOWERINGS","call","_line","text","repeat","bit","_","_destComponentRef","destOperand","target","remapped","remapComponents","ref","_destText","_vecArg","destMask","as","expression","sourceExpression","ctor","float","int","uint","_destMask","operandIndex","destination","registerMask","_isScalarSource","_assign","valueExpression","statement","assignment","undefined","_infixBinary","operator","expressionWidth","_assignWidened","rhsIsScalar","_helperUnary","src","_helperBinary","_dotProduct","sourceMask","dot","_comparison","intrinsic","_bitwiseBinary","_intBinary","wrap","_condition","scalar","test","testBoolean","_movc","aliases","condition","ifTrue","ifFalse","lvalue","_sincos","sinDest","cosDest","angle","emitOne","fn","sinAliasesAngle","_resourceDimension","texOperand","dimension","_textureSample","lodOperandIndex","biasOperandIndex","gradOperandIndexes","comparisonRefOperandIndex","forceLodZero","coordOperand","oneSwizzle","zeroSwizzle","coordMask","coord","texName","registerReference","returnSwizzle","reference","comparisonCoord","comparisonCall","gradMask","gradX","gradY","lod","bias","_texelFetch","widthMask","widthShift","log2","mip","mov","mad","c","mul","div","dp2","dp3","dp4","min","sqrt","rsq","exp","log","frc","round_ne","round_ni","round_pi","round_z","rcp","one","sincos","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","and","or","xor","not","movc","if","else","endif","loop","endloop","break","breakc","continue","continuec","switch","selector","case","label","default","endswitch","ret","retc","discard","iadd","imad","imul","destLow","ineg","imax","_intMinMax","imin","umax","umin","ishl","ishr","ushr","ftoi","ftou","itof","utof","sample","sample_c","sample_c_lz","sample_l","sample_b","sample_d","udiv","quotient","remainder","left","right","ld","deriv_rtx","deriv_rtx_coarse","deriv_rtx_fine","deriv_rty","deriv_rty_coarse","deriv_rty_fine","resinfo","_resinfo","ld_structured","_ldStructured","f16tof32","f32tof16","nop","ibfe","helper","require","ubfe","bfi","insert","base","countbits","gather4","_gather4","store_uav_typed","valueOperand","sliceName","prototype","info","offsetOperand","offsetDwords","aligned","channel","channelIndex","dword","texel","mipExpression","axisCount","resinfoReturnTypeName","sizeExpression","destElem","channelChar","axis","samplerOperand","typeName","channelLetter","_gather4Channel","selected","lines","helperSource","writesPosition","values","includes","early"],"mappings":"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"}
|