@carbonenginejs/runtime 0.1.0-alpha.6 → 0.1.0-alpha.7
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.
Potentially problematic release.
This version of @carbonenginejs/runtime might be problematic. Click here for more details.
- package/dist/global/consts/effectPaths.js +4 -1
- package/dist/global/consts/effectPaths.js.map +1 -1
- package/dist/global/consts/index.js +1 -1
- package/dist/global/index.js +1 -1
- package/dist/index.js +3 -3
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +19 -2
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonTypedViews.js +121 -65
- package/dist/resource/formats/hlsl/core/carbonTypedViews.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +10 -7
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgpu/core/effectBackendBodySet.js +3 -1
- package/dist/resource/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/packageEffect.js +5 -0
- package/dist/resource/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js +20 -0
- package/dist/resource/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js +93 -4
- package/dist/resource/formats/webgpu/core/wgsl/emulatedAddressing.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +74 -64
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js +16 -7
- package/dist/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js +69 -27
- package/dist/resource/formats/webgpu/core/wgsl/wgslTypedViews.js.map +1 -1
- package/dist/resource/geometry/registerGeometryResources.js +10 -1
- package/dist/resource/geometry/registerGeometryResources.js.map +1 -1
- package/dist/sof/EveSOFDNA.js +4 -2
- package/dist/sof/EveSOFDNA.js.map +1 -1
- package/dist/sof/EveSOFDataMgr.js +83 -69
- package/dist/sof/EveSOFDataMgr.js.map +1 -1
- package/dist/trinity/core/Tr2Denoiser.js +6 -1
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +7 -2
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +43 -0
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js +134 -0
- package/dist/trinity/core/device/Tr2GpuStructuredBuffer.js.map +1 -0
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +410 -124
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js +303 -312
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveOccluder.js +117 -0
- package/dist/trinity/eve/effect/lensflare/EveOccluder.js.map +1 -0
- package/dist/trinity/eve/index.js +1 -0
- package/dist/trinity/eve/index.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +286 -6
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +212 -32
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/generated/eve/effect/index.js +0 -1
- package/dist/trinity/generated/eve/effect/index.js.map +1 -1
- package/dist/trinity/generated/eve/index.js +0 -1
- package/dist/trinity/generated/eve/index.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -2
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +2 -2
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -1
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
- package/dist/trinity/postProcess/Tr2SSAO.js +282 -21
- package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +71 -53
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +81 -18
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +46 -4
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +32 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +27 -0
- package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +29 -4
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js +32 -2
- package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +57 -5
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js +111 -5
- package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -1
- package/docs/trinity/reference/classes/generated.md +20 -20
- package/docs/trinity/reference/classes/post-process.md +1 -1
- package/package.json +1 -1
- package/dist/trinity/generated/eve/effect/EveOccluder.js +0 -38
- package/dist/trinity/generated/eve/effect/EveOccluder.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +0 -48
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowerFragmentProgram.js","sources":["../../../../../../../src/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js"],"sourcesContent":["import {\n ADDRESS_BORDER_2,\n ADDRESS_BORDER_3,\n ADDRESS_COORD_2,\n ADDRESS_COORD_3,\n BorderColorLiteral,\n ModesExpression,\n ShouldEmulate\n} from \"./emulatedAddressing.js\";\nimport { fixedSourceLanes } from \"../ir/sourceLanes.js\";\nimport {\n validateIndexableTempOperand,\n validateIndexableTempRead,\n validateIndexableTempWrite\n} from \"../ir/indexableTemps.js\";\nimport { hoistEscapingValues } from \"./hoistEscapingValues.js\";\nimport { lowerBindingLayout } from \"./lowerBindingLayout.js\";\nimport { normalizeResourceTransformPlan } from \"./buildResourceTransformPlan.js\";\nimport { requireRefactoringAllowed, validatePreciseInstruction } from \"./precisionControls.js\";\nimport { buildSelectionPlans, cloneWritten, terminatesAllPaths } from \"./selectionPlans.js\";\nimport { computeVaryingValues, conditionIsUniform } from \"./uniformity.js\";\nimport { validateFixedHandleBinding, validateFixedHandleOperand } from \"./validateHandleOperand.js\";\nimport { TYPED_VIEW_FORMATS, typedBufferLoad } from \"./wgslTypedViews.js\";\n\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\nconst SUPPORTED_OPCODES = new Set([\n \"add\", \"and\", \"atomic_iadd\", \"bfi\", \"deriv_rtx\", \"deriv_rty\", \"deriv_rtx_coarse\",\n \"deriv_rty_coarse\", \"deriv_rtx_fine\", \"deriv_rty_fine\", \"discard\", \"div\",\n \"dp2\", \"dp3\", \"dp4\", \"eq\", \"exp\", \"f16tof32\", \"f32tof16\", \"frc\", \"ftoi\", \"gather4\",\n \"ftou\", \"ge\", \"iadd\", \"ieq\", \"ige\", \"ilt\", \"imad\", \"imax\", \"imin\", \"imul\",\n \"ine\", \"ineg\", \"ishl\", \"ishr\", \"if\", \"itof\", \"ld\", \"ld_structured\", \"ld_uav_typed\", \"log\", \"lt\",\n \"mad\", \"max\", \"min\", \"mov\", \"movc\", \"mul\", \"ne\", \"or\", \"rcp\", \"resinfo\",\n \"round_ne\", \"round_ni\", \"round_pi\", \"round_z\", \"rsq\", \"sample\", \"sample_b\", \"sample_d\",\n \"sample_l\", \"sincos\", \"sqrt\", \"store_structured\", \"sync\", \"udiv\", \"uge\", \"ubfe\", \"ibfe\", \"countbits\", \"ult\", \"umax\", \"umin\", \"ushr\",\n \"utof\", \"xor\", \"endif\", \"ret\", \"store_uav_typed\"\n]);\nconst METADATA_OPCODE_EXTENSIONS = new Set([ \"resource_dimension\", \"resource_return_type\" ]);\n\n/**\n * The compute thread-ID registers as WGSL entry-point builtins, for compute\n * programs lowered here (see `lowerGeneralComputeProgram`). Names match the\n * signatures `computeEntryPointParameters` accepts.\n */\nconst COMPUTE_BUILTINS = Object.freeze({\n \"input_thread_id[]\": Object.freeze({ builtin: \"global_invocation_id\", name: \"dispatch_thread_id\", type: \"vec3<u32>\" }),\n \"input_thread_id_in_group[]\": Object.freeze({ builtin: \"local_invocation_id\", name: \"local_invocation_id\", type: \"vec3<u32>\" }),\n \"input_thread_group_id[]\": Object.freeze({ builtin: \"workgroup_id\", name: \"workgroup_id\", type: \"vec3<u32>\" }),\n // SV_GroupIndex, a scalar: read without a component suffix.\n \"input_thread_id_in_group_flattened[]\": Object.freeze({ builtin: \"local_invocation_index\", name: \"local_invocation_index\", type: \"u32\" })\n});\nconst SAMPLE_OFFSET_OPCODES = new Set([ \"sample\", \"sample_b\", \"sample_d\", \"sample_l\" ]);\nconst NUMERIC_CONVERSIONS = Object.freeze({\n itof: [ \"int32\", \"float32\" ],\n utof: [ \"uint32\", \"float32\" ],\n ftoi: [ \"float32\", \"int32\" ],\n ftou: [ \"float32\", \"uint32\" ]\n});\n\nconst INPUT_BUILTINS = Object.freeze({\n SV_POSITION: { name: \"position\" },\n SV_ISFRONTFACE: { name: \"front_facing\", scalarType: \"bool\" }\n});\nconst DERIVATIVES = Object.freeze({\n deriv_rtx: \"dpdx\", deriv_rty: \"dpdy\",\n deriv_rtx_coarse: \"dpdxCoarse\", deriv_rty_coarse: \"dpdyCoarse\",\n deriv_rtx_fine: \"dpdxFine\", deriv_rty_fine: \"dpdyFine\"\n});\n// Operations that compute screen-space derivatives (the dpdx*/dpdy* family) or\n// derive them internally (implicit-LOD textureSample / textureSampleBias). WGSL\n// forbids these inside non-uniform control flow; see uniformity.js.\nconst REQUIRES_UNIFORM_CONTROL_FLOW = new Set([\n ...Object.keys(DERIVATIVES), \"sample\", \"sample_b\"\n]);\n\nfunction componentsFromMask(mask)\n{\n return COMPONENTS.filter((_, index) => (mask & (1 << index)) !== 0);\n}\n\nfunction sampleOffsetArgument(instruction, viewDimension)\n{\n const controls = instruction.extensions?.filter((extension) => extension.typeName === \"sample_controls\") || [];\n if (!controls.length) return \"\";\n if (controls.length !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has duplicate sample_controls extensions`);\n }\n if (viewDimension !== \"2d\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} immediate sample offsets support only 2d textures`);\n }\n const offsets = controls[0].sampleOffsets;\n if (![ offsets?.u, offsets?.v, offsets?.w ].every((value) =>\n Number.isInteger(value) && value >= -8 && value <= 7))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has invalid immediate sample offsets`);\n }\n // D3D ignores the w offset for Texture2D. WGSL takes the same signed,\n // texel-space u/v constants as the final sampling argument.\n return `, vec2<i32>(${offsets.u}, ${offsets.v})`;\n}\n\nfunction scalarTypeName(type)\n{\n return ({ float32: \"f32\", int32: \"i32\", uint32: \"u32\", bool: \"bool\", bitpattern32: \"u32\" })[type] || null;\n}\n\n/**\n * A compiler-emitted dead store to a local temp whose value nothing reads, and\n * whose type is therefore unresolvable, is skipped rather than failing the\n * module.\n */\nfunction isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)\n{\n if (!localSsaDestination || readValueIds.has(write.valueId)) return false;\n const value = program.values.find((entry) => entry.id === write.valueId);\n return Array.from(write.mask).some((component) => !scalarTypeName(value?.componentTypes?.[component]));\n}\n\nfunction mixedImmediateTypes(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n if (!value || write.mask.length < 2) return null;\n const types = Array.from(write.mask).map((component) => value.componentTypes?.[component]);\n if (types.some((type) => !scalarTypeName(type)) || new Set(types).size === 1) return null;\n return types;\n}\n\n\nfunction valueType(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n const types = Array.from(write.mask).map((component) => value?.componentTypes?.[component]);\n if (!types.length || types.some((type) => !scalarTypeName(type)) || new Set(types).size !== 1)\n {\n throw new Error(`WGSL fragment value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n const scalarType = types[0];\n return {\n scalarType,\n wgslType: types.length === 1 ? scalarTypeName(scalarType) : `vec${types.length}<${scalarTypeName(scalarType)}>`\n };\n}\n\nfunction fieldType(scalarType, count)\n{\n const scalar = scalarTypeName(scalarType);\n if (!scalar) throw new Error(`WGSL fragment interface cannot use ${scalarType}`);\n return count === 1 ? scalar : `vec${count}<${scalar}>`;\n}\n\nfunction packedComponent(mask, component)\n{\n const index = Array.from(mask).indexOf(component);\n if (index < 0) throw new Error(`WGSL value mask ${mask} does not contain component ${component}`);\n return COMPONENTS[index];\n}\n\nfunction interfaceField(rows, direction)\n{\n const registerIndex = rows[0].registerIndex;\n const mask = rows.reduce((accumulator, signature) => accumulator | signature.mask, 0);\n const components = componentsFromMask(mask);\n if (!components.length || !components.every((component, index) => component === COMPONENTS[index]))\n {\n throw new Error(`WGSL fragment ${direction} register ${registerIndex} requires a prefix signature mask`);\n }\n const semantic = String(rows[0].semanticName || \"\").toUpperCase();\n if (direction === \"output\" && semantic !== \"SV_TARGET\")\n {\n throw new Error(`WGSL fragment output semantic ${semantic} is not supported`);\n }\n const builtin = direction === \"input\" ? INPUT_BUILTINS[semantic] || null : null;\n if (direction === \"input\" && rows.some((signature) => String(signature.semanticName || \"\").toUpperCase().startsWith(\"SV_\")) && !builtin)\n {\n throw new Error(`WGSL fragment live system input ${semantic} is not supported`);\n }\n const componentTypeName = rows[0].componentTypeName;\n if (rows.some((signature) => signature.componentTypeName !== componentTypeName))\n {\n throw new Error(`WGSL fragment ${direction} register ${registerIndex} packs mixed component types`);\n }\n const scalarType = builtin?.scalarType || componentTypeName;\n return {\n kind: \"interface-field\",\n id: `${direction}:r${registerIndex}`,\n direction,\n registerIndex,\n semanticName: rows[0].semanticName,\n semanticIndex: rows[0].semanticIndex,\n components,\n scalarType,\n type: builtin?.scalarType ? builtin.scalarType : fieldType(componentTypeName, components.length),\n name: builtin?.name || `${direction}${registerIndex}`,\n attribute: builtin\n ? { kind: \"builtin\", name: builtin.name }\n : { kind: \"location\", index: direction === \"output\" ? rows[0].semanticIndex : registerIndex }\n };\n}\n\n/**\n * Groups signature rows by register. DXBC can emit several rows for one\n * interpolant register when semantics occupy different lanes (three TEXCOORDs\n * packed into x/y/z); each row alone has a non-prefix mask. Grouping unions\n * the masks so `interfaceField` emits one field per register with the\n * register's true lane occupancy (prefix mask, one component type).\n */\nfunction groupSignaturesByRegister(signatures)\n{\n const groups = new Map();\n for (const signature of signatures)\n {\n if (!groups.has(signature.registerIndex)) groups.set(signature.registerIndex, []);\n groups.get(signature.registerIndex).push(signature);\n }\n return Array.from(groups.values());\n}\n\nfunction liveInputRegisters(program)\n{\n const values = new Map(program.values.map((value) => [ value.id, value ]));\n const registers = new Set();\n for (const instruction of program.instructions)\n {\n for (const ref of instruction.dataflow.reads.flatMap((read) => read.refs))\n {\n const value = values.get(ref.valueId);\n if (value?.origin === \"undefined-register\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} reads undefined ${value.register}.${ref.component}`);\n }\n const match = value?.origin === \"program-input\" && /^input\\[(\\d+)\\]$/.exec(value.register);\n if (match) registers.add(Number(match[1]));\n }\n }\n return registers;\n}\n\nfunction validateInterpolation(program, input)\n{\n if (input.attribute.kind === \"builtin\") return;\n // A merged location field may pack several signature rows onto one register\n // (component-packed varyings). WGSL interpolation is per-location, not per-\n // component, so EVERY dcl_input_ps covering this register must agree on one\n // supported mode — checking only the first row would let a differing lane\n // render with the wrong interpolation, which the browser gate cannot detect.\n // DXBC \"linear\" is perspective-correct (the WGSL default); DXBC\n // \"linear_noperspective\" maps exactly to `@interpolate(linear)` (center\n // sampling on both sides). Everything else fails closed.\n const declarations = program.declarations.filter((entry) =>\n entry.opcodeName === \"dcl_input_ps\" && entry.data?.registerIndex === input.registerIndex);\n const modes = new Set(declarations.map((entry) => entry.data?.interpolationModeName).filter(Boolean));\n if (modes.size > 1)\n {\n throw new Error(`WGSL fragment input r${input.registerIndex} packs mixed interpolation modes`);\n }\n const mode = modes.values().next().value;\n if (!mode || mode === \"linear\") return;\n if (mode === \"linear_noperspective\")\n {\n input.interpolation = \"linear\";\n return;\n }\n throw new Error(`WGSL fragment input r${input.registerIndex} has unsupported interpolation ${mode}`);\n}\n\nfunction sourceRead(instruction, operandIndex)\n{\n return instruction.dataflow.reads.find((entry) =>\n entry.kind !== \"index-read\" && entry.operandIndex === operandIndex) || null;\n}\n\nfunction vectorCode(parts, scalarType)\n{\n if (parts.length === 1) return parts[0];\n return `vec${parts.length}<${scalarTypeName(scalarType)}>(${parts.join(\", \")})`;\n}\n\nfunction reinterpretCode(code, fromType, toType, count, context)\n{\n const from = scalarTypeName(fromType);\n const to = scalarTypeName(toType);\n if (!from || !to) throw new Error(`WGSL fragment cannot resolve ${context} type ${fromType} to ${toType}`);\n if (from === to) return code;\n if (![ \"f32\", \"i32\", \"u32\" ].includes(from) || ![ \"f32\", \"i32\", \"u32\" ].includes(to))\n {\n throw new Error(`WGSL fragment cannot reinterpret ${context} from ${fromType} to ${toType}`);\n }\n return `bitcast<${fieldType(toType, count)}>(${code})`;\n}\n\nfunction valueReference(program, ref, inputs)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n if (!value) throw new Error(`WGSL fragment references missing value ${ref.valueId}`);\n if (value.origin === \"undefined-register\") throw new Error(`WGSL fragment reads undefined ${value.register}.${ref.component}`);\n if (value.origin === \"program-input\" && COMPUTE_BUILTINS[value.register])\n {\n const builtin = COMPUTE_BUILTINS[value.register];\n const target = value.componentTypes?.[ref.component];\n const code = builtin.type === \"u32\" ? builtin.name : `${builtin.name}.${ref.component}`;\n return reinterpretCode(code, \"uint32\", target, 1, `${value.register}.${ref.component}`);\n }\n if (value.origin === \"program-input\")\n {\n const registerIndex = Number(/^input\\[(\\d+)\\]$/.exec(value.register)?.[1]);\n const field = inputs.find((entry) => entry.registerIndex === registerIndex);\n if (!field) throw new Error(`WGSL fragment has no live input field for ${value.register}`);\n const packed = packedComponent(field.components.join(\"\"), ref.component);\n const code = field.components.length === 1 ? `input.${field.name}` : `input.${field.name}.${packed}`;\n const target = value.componentTypes?.[ref.component];\n if (field.scalarType === \"bool\")\n {\n // SV_IsFrontFace: DXBC reads a 0xFFFFFFFF/0 mask, WGSL's\n // front_facing is bool.\n if (target === \"bool\") return code;\n if (target === \"uint32\" || target === \"bitpattern32\") return `select(0u, 0xffffffffu, ${code})`;\n if (target === \"int32\") return `select(0i, -1i, ${code})`;\n throw new Error(`WGSL fragment cannot consume boolean ${value.register}.${ref.component} as ${target}`);\n }\n return reinterpretCode(code, field.scalarType, target, 1, `${value.register}.${ref.component}`);\n }\n if (value.origin === \"instruction-write\" && value.writeMask.length > 1)\n {\n const componentTypes = Array.from(value.writeMask).map((component) => value.componentTypes?.[component]);\n if (new Set(componentTypes).size > 1) return `${value.id}_${ref.component}`;\n }\n const packed = packedComponent(value.writeMask, ref.component);\n return value.writeMask.length === 1 ? value.id : `${value.id}.${packed}`;\n}\n\nfunction rawSelectedComponents(operand, destinationMask, count, activeComponents = null)\n{\n const selected = operand.selected || \"\";\n if (selected) return Array.from({ length: count }, () => selected);\n const swizzle = operand.swizzle || \"xyzw\";\n const mask = activeComponents || Array.from(destinationMask);\n return mask.slice(0, count).map((component) => swizzle[COMPONENTS.indexOf(component)] || swizzle[0]);\n}\n\nfunction immediateRawBits(operand, destinationMask, count, activeComponents = null)\n{\n const values = operand.immediateValues || [];\n const components = rawSelectedComponents(operand, destinationMask, count, activeComponents);\n return components.map((component, index) =>\n {\n const sourceIndex = values.length === 1 ? 0 : COMPONENTS.indexOf(component);\n const bits = values[sourceIndex]?.uint32 ?? values[index]?.uint32;\n if (!Number.isInteger(bits)) throw new Error(\"WGSL fragment immediate has no raw uint32 bits\");\n return bits >>> 0;\n });\n}\n\nfunction immediateParts(operand, destinationMask, count, expectedType, activeComponents = null)\n{\n return immediateRawBits(operand, destinationMask, count, activeComponents).map((bits) =>\n {\n const hex = `0x${(bits >>> 0).toString(16).padStart(8, \"0\")}u`;\n if (expectedType === \"float32\") return `bitcast<f32>(${hex})`;\n if (expectedType === \"int32\") return `bitcast<i32>(${hex})`;\n return hex;\n });\n}\n\nfunction validateRcpImmediate(program, instruction, write)\n{\n const operand = instruction.operands[1];\n if (operand?.typeName !== \"immediate32\") return;\n const activeComponents = fixedSourceLanes(instruction, 1, program);\n const bits = immediateRawBits(operand, write.mask, write.mask.length, activeComponents);\n if (bits.some((value) =>\n {\n const exponent = (value >>> 23) & 0xff;\n return exponent === 0 || exponent === 0xff;\n }))\n {\n throw new Error(`WGSL fragment rcp instruction ${instruction.index} requires finite normal immediate source lanes`);\n }\n}\n\nfunction bindingForOperand(bindings, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n if (Number.isInteger(rangeId))\n {\n const matches = bindings.filter((entry) => entry.resourceKind === resourceKind && entry.rangeId === rangeId);\n if (matches.length > 1)\n {\n throw new Error(`WGSL fragment ${resourceKind} range ${rangeId} is ambiguous`);\n }\n const binding = matches[0] || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"fragment\");\n }\n const binding = bindings.find((entry) =>\n entry.resourceKind === resourceKind && entry.registerIndex === operand.registerIndex) || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"fragment\");\n}\n\nfunction originalBindingForOperand(program, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n const candidates = program.bindings.filter((entry) =>\n entry.resourceKind === resourceKind);\n const matches = Number.isInteger(rangeId)\n ? candidates.filter((entry) => entry.range?.rangeId === rangeId)\n : candidates.filter((entry) =>\n (entry.range?.lowerBound ?? entry.registerIndex) === operand.registerIndex);\n if (matches.length > 1)\n {\n throw new Error(`WGSL fragment ${resourceKind} source identity is ambiguous`);\n }\n const binding = matches[0] || null;\n if (!binding) return null;\n const absoluteIndex = operand.resourceReference?.absoluteIndex;\n const registerIndex = binding.range?.lowerBound ?? binding.registerIndex;\n if (absoluteIndex !== undefined\n && (absoluteIndex?.relative\n || absoluteIndex?.values?.length !== 1\n || absoluteIndex.values[0] !== registerIndex))\n {\n throw new Error(`WGSL fragment ${resourceKind} source identity is out of range`);\n }\n const registerSpace = binding.range?.registerSpace ?? 0;\n return {\n binding,\n identity: `${resourceKind}:${registerSpace}:${registerIndex}`\n };\n}\n\nfunction transformedSampleForOperand(program, operand, bindings, context)\n{\n if (!context?.transformedInputs?.size) return null;\n const original = originalBindingForOperand(program, \"sampled-resource\", operand);\n const input = original ? context.transformedInputs.get(original.identity) : null;\n if (!input) return null;\n const textureBinding = bindings.find((binding) =>\n binding.resourceKind === \"sampled-resource\"\n && binding.identity === input.transform.output.identity\n && binding.transformId === input.transform.id) || null;\n if (!textureBinding)\n {\n throw new Error(`WGSL fragment resource transform ${input.transform.id} has no physical binding`);\n }\n return { textureBinding, layer: input.layer };\n}\n\nfunction cbufferVectorIndex(program, instruction, operandIndex, operand, inputs)\n{\n const indices = operand.indices || [];\n for (let dimension = 0; dimension < indices.length - 1; dimension += 1)\n {\n if (indices[dimension].relative) throw new Error(\"WGSL fragment does not support dynamic cbuffer register selection\");\n }\n const last = indices.at(-1);\n const base = last?.values?.length ? last.values[0] : (last?.relative ? 0 : undefined);\n if (!Number.isInteger(base) || base < 0) throw new Error(\"WGSL fragment cbuffer operand has no immediate vector index\");\n if (!last.relative) return `${base}`;\n const read = instruction.dataflow.reads.find((entry) => entry.kind === \"index-read\"\n && entry.operandIndex === operandIndex && entry.dimension === indices.length - 1);\n if (!read || read.refs.length !== 1) throw new Error(\"WGSL fragment dynamic cbuffer index has no resolved register\");\n if (last.relative?.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(program, last.relative, read, rawSelectedComponents(last.relative, \"x\", 1));\n }\n const ref = read.refs[0];\n const storage = valueStorageType(program, ref);\n let indexCode = valueReference(program, ref, inputs);\n if (storage === \"uint32\" || storage === \"bitpattern32\") indexCode = `i32(${indexCode})`;\n else if (storage !== \"int32\") throw new Error(`WGSL fragment dynamic cbuffer index has unsupported type ${storage}`);\n return base === 0 ? indexCode : `${base} + ${indexCode}`;\n}\n\nfunction cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedType, inputs, activeComponents = null)\n{\n const binding = bindingForOperand(bindings, \"uniform-buffer\", operand);\n if (!binding) throw new Error(`WGSL fragment cannot resolve cb${operand.registerIndex}`);\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${binding.generatedSymbol}[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret cbuffer lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents = null)\n{\n if (!program.immediateConstantBuffer?.length)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has no immediate constant buffer`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `icb[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret icb lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents = null)\n{\n if (validateIndexableTempOperand(program, operand, \"source\") !== null)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} fixed indexable temp has no resolved SSA read`);\n }\n const registerIndex = operand.indices?.[0]?.values?.[0];\n const table = (program.constTables || []).find((entry) => entry.registerIndex === registerIndex);\n if (!table)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} indexable temp x${registerIndex} is not a supported constant table`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${table.symbol}[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret constant-table lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\n// DXBC float source modifiers are selected by the consuming opcode. Integer\n// consumers admit two's-complement negation only. Bit-preserving movers\n// (unknown expected type) apply the FLOAT semantics to raw lane bits\n// (\"modifiers assume float data\"), represented as sign-bit arithmetic.\nfunction modifierOnStorage(part, storage, modifier)\n{\n if (storage === \"float32\")\n {\n if (modifier === \"neg\") return `-(${part})`;\n if (modifier === \"abs\") return `abs(${part})`;\n return `-(abs(${part}))`;\n }\n const bit = modifier === \"neg\" ? \"^ 0x80000000u\" : modifier === \"abs\" ? \"& 0x7fffffffu\" : \"| 0x80000000u\";\n const raw = storage === \"int32\" ? `bitcast<u32>(${part})` : part;\n const masked = `(${raw} ${bit})`;\n return storage === \"int32\" ? `bitcast<i32>(${masked})` : masked;\n}\n\nconst MODIFIER_STORAGE_TYPES = new Set([ \"float32\", \"int32\", \"uint32\", \"bitpattern32\" ]);\n\n/**\n * Applies a DXBC source modifier according to the consuming instruction's\n * type: float consumers get IEEE negate/abs; `int32` `neg` is `-(x)` and\n * `uint32` `neg` the wrapping `(0u - x)` (WGSL has no unary minus on u32);\n * integer `abs`/`absneg` fail closed because the absolute modifier is\n * defined only for float instructions. Bit-preserving movers apply float\n * semantics to the raw lane bits through `modifierOnStorage`. Float operators\n * match D3D for finite non-zero inputs; signed-zero and non-finite cases keep\n * WGSL's latitude.\n */\nfunction applyModifier(parts, operand, expected, storageTypes, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return parts;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier))\n {\n throw new Error(`WGSL fragment operand modifier ${modifier} is not supported`);\n }\n if (expected === \"float32\")\n {\n if (modifier === \"neg\") return parts.map((part) => `-(${part})`);\n if (modifier === \"abs\") return parts.map((part) => `abs(${part})`);\n return parts.map((part) => `-(abs(${part}))`);\n }\n if (expected === \"int32\" && modifier === \"neg\")\n {\n return parts.map((part) => `-(${part})`);\n }\n if (expected === \"uint32\" && modifier === \"neg\")\n {\n return parts.map((part) => `(0u - ${part})`);\n }\n if (expected === \"bitpattern32\")\n {\n return parts.map((part) => modifierOnStorage(part, \"bitpattern32\", modifier));\n }\n if (expected === \"unknown\" && storageTypes?.length === parts.length\n && storageTypes.every((storage) => MODIFIER_STORAGE_TYPES.has(storage)))\n {\n return parts.map((part, index) => modifierOnStorage(part, storageTypes[index], modifier));\n }\n throw new Error(`WGSL fragment instruction ${instruction?.index} operand ${operandIndex} uses an unsupported ${modifier} modifier for ${expected}`);\n}\n\n\nfunction applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return code;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier) || !MODIFIER_STORAGE_TYPES.has(targetType))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} lane operand ${operandIndex} uses an unsupported ${modifier} modifier for ${targetType}`);\n }\n // The per-lane path is reached only from bit-preserving movc lanes, where\n // DXBC applies the float modifier semantics to the raw lane bits; the lane\n // code is already reinterpreted to targetType.\n return modifierOnStorage(code, targetType, modifier);\n}\n\nfunction unsupportedMinPrecision(operand)\n{\n // D3D minimum precision is a floor, not a format: computing float_16\n // operands at full 32-bit is a conforming implementation, so they promote\n // to ordinary f32 lanes (registers are 32-bit either way). Other kinds\n // stay fail-closed until a shader needs them.\n const name = operand.minPrecisionName || \"default\";\n return name !== \"default\" && name !== \"float_16\";\n}\n\nfunction operandLaneExpression(program, instruction, operandIndex, destinationMask, laneIndex, targetType, inputs, bindings,\n moverData = false)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL fragment instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n rawSelectedComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n if (read)\n {\n const replicated = read.refs.length === 1 && Boolean(operand.selected);\n if (!replicated && laneIndex >= read.refs.length)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has too few source lanes`);\n }\n const ref = replicated ? read.refs[0] : read.refs[laneIndex];\n const storage = valueStorageType(program, ref);\n const code = reinterpretCode(valueReference(program, ref, inputs), storage, targetType, 1,\n `instruction ${instruction.index} lane read`);\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n const component = destinationMask[laneIndex];\n if (operand.typeName === \"immediate32\")\n {\n const code = immediateParts(operand, component, 1, targetType)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n if (operand.typeName === \"constant_buffer\")\n {\n const code = cbufferParts(program, instruction, operandIndex, operand, component, 1, bindings, targetType, inputs)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n throw new Error(`WGSL fragment instruction ${instruction.index} cannot lower ${operand.typeName} lane operand ${operandIndex}`);\n}\n\nfunction operandExpression(program, instruction, operandIndex, destinationMask, count, expectedType, inputs, bindings)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL fragment instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n rawSelectedComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n let parts;\n if (read)\n {\n if (read.refs.length < count) throw new Error(`WGSL fragment instruction ${instruction.index} has too few source lanes`);\n parts = read.refs.slice(0, count).map((ref, componentIndex) =>\n {\n let part = valueReference(program, ref, inputs);\n const bitcast = instruction.typeInfo.bitcasts.find((entry) => entry.kind === \"read-bitcast\"\n && entry.operandIndex === operandIndex && entry.componentIndex === componentIndex\n && entry.valueId === ref.valueId && entry.component === ref.component);\n if (bitcast)\n {\n part = reinterpretCode(part, bitcast.from, bitcast.to, 1, `instruction ${instruction.index} read`);\n }\n return part;\n });\n }\n else if (operand.typeName === \"immediate32\")\n {\n parts = immediateParts(operand, destinationMask, count, expectedType, activeComponents);\n }\n else if (operand.typeName === \"constant_buffer\")\n {\n parts = cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedType, inputs, activeComponents);\n }\n else if (operand.typeName === \"indexable_temp\")\n {\n parts = constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents);\n }\n else if (operand.typeName === \"immediate_constant_buffer\")\n {\n parts = icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents);\n }\n else\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} cannot lower ${operand.typeName} operand ${operandIndex}`);\n }\n const storageTypes = (operand.modifierName || \"none\") !== \"none\" && expectedType === \"unknown\" && read\n ? read.refs.slice(0, count).map((ref) => valueStorageType(program, ref))\n : null;\n return vectorCode(applyModifier(parts, operand, expectedType, storageTypes, instruction, operandIndex), expectedType);\n}\n\nfunction expectedType(instruction, operandIndex)\n{\n return instruction.typeInfo.operandTypes.find((entry) => entry.operandIndex === operandIndex)?.expectedType || \"unknown\";\n}\n\nfunction valueStorageType(program, ref)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n return value?.componentTypes?.[ref.component] || \"unknown\";\n}\n\nfunction bitcastKey(entry)\n{\n if (entry.kind === \"read-bitcast\")\n {\n return [ entry.kind, entry.operandIndex, entry.componentIndex, entry.valueId, entry.component,\n entry.from, entry.to ].join(\":\");\n }\n return [ entry.kind, entry.operandIndex, entry.valueId, entry.component, entry.from, entry.to ].join(\":\");\n}\n\nfunction validateRegisterBitcasts(program, instruction)\n{\n const required = [];\n for (const read of instruction.dataflow.reads)\n {\n if (read.kind === \"index-read\") continue;\n const expected = expectedType(instruction, read.operandIndex);\n if (expected === \"unknown\") continue;\n read.refs.forEach((ref, componentIndex) =>\n {\n const storage = valueStorageType(program, ref);\n if (storage !== \"unknown\" && storage !== expected)\n {\n required.push({\n kind: \"read-bitcast\",\n operandIndex: read.operandIndex,\n componentIndex,\n valueId: ref.valueId,\n component: ref.component,\n from: storage,\n to: expected\n });\n }\n });\n }\n const intrinsicResult = instruction.typeInfo.resultType;\n if (intrinsicResult !== \"unknown\")\n {\n for (const write of instruction.dataflow.writes)\n {\n for (const component of write.mask)\n {\n const storage = valueStorageType(program, { valueId: write.valueId, component });\n if (storage !== \"unknown\" && storage !== intrinsicResult)\n {\n required.push({\n kind: \"result-bitcast\",\n operandIndex: write.operandIndex,\n valueId: write.valueId,\n component,\n from: intrinsicResult,\n to: storage\n });\n }\n }\n }\n }\n const actual = instruction.typeInfo.bitcasts.filter((entry) =>\n entry.kind === \"read-bitcast\" || entry.kind === \"result-bitcast\");\n const requiredKeys = required.map(bitcastKey).sort();\n const actualKeys = actual.map(bitcastKey).sort();\n if (new Set(actualKeys).size !== actualKeys.length\n || requiredKeys.length !== actualKeys.length\n || requiredKeys.some((entry, index) => entry !== actualKeys[index]))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has inconsistent register bitcast metadata`);\n }\n}\n\nfunction zeroMask(count)\n{\n return count === 1 ? \"0u\" : `vec${count}<u32>(0u)`;\n}\n\nfunction fullMask(count)\n{\n return count === 1 ? \"0xffffffffu\" : `vec${count}<u32>(0xffffffffu)`;\n}\n\nfunction oneMask(count)\n{\n return count === 1 ? \"1u\" : `vec${count}<u32>(1u)`;\n}\n\nfunction floatBound(count, value)\n{\n return count === 1 ? value : `vec${count}<f32>(${value})`;\n}\n\nfunction splatScalar(code, count)\n{\n return count === 1 ? code : `vec${count}<f32>(${code})`;\n}\n\n/**\n * `ld_structured` with one unmodified scalar address, an immediate DWORD byte\n * offset and a fixed resource. Every word fetch is clamped into the storage\n * array and selected to zero when the structure index is outside\n * `arrayLength / stride`, reproducing D3D's zero result without an invalid\n * access. Offset plus swizzle beyond the declared stride fails closed, so\n * D3D's undefined byte-offset overrun is never emitted.\n */\nfunction structuredLoadExpression(program, instruction, write, type, inputs, bindings)\n{\n const count = write.mask.length;\n if (instruction.operands.length !== 4)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires four operands`);\n }\n const addressOperand = instruction.operands[1];\n // A literal structure index (`ld_structured r0.y, l(1), l(0), g0.x`) is as\n // scalar as a selected register component; occludermanagement's\n // CopyCounters reads its four group-shared words that way.\n const immediateAddress = addressOperand?.typeName === \"immediate32\" && addressOperand.immediateValues?.length === 1;\n if ((!immediateAddress && !COMPONENTS.includes(addressOperand?.selected)) || (addressOperand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires one unmodified scalar address`);\n }\n const address = operandExpression(program, instruction, 1, write.mask, 1, \"uint32\", inputs, bindings);\n const byteOffsetOperand = instruction.operands[2];\n const byteOffset = byteOffsetOperand?.immediateValues?.[0]?.uint32;\n if (byteOffsetOperand?.typeName !== \"immediate32\" || byteOffsetOperand.immediateValues?.length !== 1\n || (byteOffsetOperand.modifierName || \"none\") !== \"none\"\n || !Number.isInteger(byteOffset) || byteOffset % 4 !== 0)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires an immediate DWORD byte offset`);\n }\n let resource;\n let strideBytes;\n let symbol;\n let wordCount;\n if (instruction.operands[3]?.typeName === \"thread_group_shared_memory\")\n {\n // Group-shared memory: a fixed-size workgroup array, so its length is\n // a constant rather than arrayLength.\n resource = instruction.operands[3];\n const shared = groupSharedMemory(program, resource.registerIndex, instruction);\n strideBytes = shared.strideBytes;\n symbol = shared.name;\n wordCount = `${shared.elementCount}u`;\n }\n else\n {\n resource = validateFixedHandleOperand(instruction, 3, \"resource\", \"fragment\");\n const binding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!binding?.buffer || !Number.isInteger(binding.structureStride))\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} has no structured buffer binding`);\n }\n strideBytes = binding.structureStride;\n symbol = binding.generatedSymbol;\n wordCount = `arrayLength(&${symbol})`;\n }\n const strideWords = strideBytes / 4;\n const firstWord = byteOffset / 4;\n const addressInRange = `${address} < (${wordCount} / ${strideWords}u)`;\n const swizzle = rawSelectedComponents(resource, write.mask, count);\n const selected = swizzle.map((component) =>\n {\n const index = COMPONENTS.indexOf(component);\n const word = firstWord + index;\n if (index < 0 || word >= strideWords)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} exceeds its ${strideBytes}-byte stride`);\n }\n const wordAddress = `((${address}) * ${strideWords}u) + ${word}u`;\n const safeWordAddress = `min(${wordAddress}, ${wordCount} - 1u)`;\n return `select(0u, ${symbol}[${safeWordAddress}], ${addressInRange})`;\n });\n if (type === null) return selected;\n const parts = selected.map((part) => reinterpretCode(part, \"uint32\", type.scalarType, 1,\n `structured load ${instruction.index}`));\n return vectorCode(parts, type.scalarType);\n}\n\n/**\n * Lowers one result-writing instruction to a WGSL expression. The vertex\n * lowerer's `expressionFor` follows the same rules for the opcodes it admits.\n *\n * Mappings and deliberate adaptations (ordinary WGSL float operations keep\n * WGSL's rounding, denormal, zero-sign and finite-math latitude, so D3D's\n * NaN/infinity tables are not portable on edge inputs):\n * - comparisons produce D3D's 0xFFFFFFFF/0 masks as\n * `select(0u, 0xffffffffu, a OP b)`, keeping mask arithmetic bit-faithful;\n * - `rcp` is `1.0 / x`. WGSL's 2.5 ULP division meets DXBC's 2^-21 relative\n * error for finite normal `abs(x)` in [2^-126, 2^126]; signed-zero,\n * subnormal and non-finite results are not portable, so immediate lanes\n * with exponent 0 or 255 are rejected (`validateRcpImmediate`). `div`\n * shares the dynamic caveats;\n * - `udiv` keeps direct `/`/`%` for all-non-zero immediate divisors, else\n * `select(0xffffffffu, a / max(b, 1u), b != 0u)`: D3D defines x/0 as\n * UINT_MAX and WGSL evaluates both `select` arms eagerly. Two destinations\n * need matching masks (also for `sincos`);\n * - `imul`/`umul`: only the low-half destination; WGSL has no 32x32->64;\n * - `ishl`/`ishr` cast the count to `u32`; `round_ne` is `round` (ties to\n * even), `round_pi` `ceil`, `round_ni` `floor`, `round_z` `trunc`;\n * - `ftoi`/`ftou` are `i32(x)`/`u32(x)`: exact for in-range finite input; NaN\n * is indeterminate and positive overflow clamps to 2147483520/4294967040\n * where D3D gives 0 and the integer maximum;\n * - `f16tof32`/`f32tof16` use `unpack2x16float`/`pack2x16float` per lane,\n * exact for finite normal binary16 values; subnormals may flush, zero sign\n * may be lost, and D3D's round-toward-zero and signed-max overflow are not\n * reproduced;\n * - `resinfo`: 2D/3D textures, immediate mip; a non-zero mip queries a\n * clamped level and selects zero dimensions when out of range (D3D's\n * defined result). `_rcpFloat` reciprocates dimensions only; saturation is\n * unsupported. D3D's zero result for an unbound resource is out of scope:\n * WebGPU requires every declared binding;\n * - `ld` on a 2D texture clamps coordinates and mip for the eager\n * `textureLoad`, then selects zero unless the original address was in\n * range. The zero vector is exact only for four-component views; a\n * one- or two-component view would need D3D's missing-channel defaults;\n * - 2D-array sampling passes the layer as `i32(round(layer))`: D3D rounds\n * ties to even and clamps, as WGSL `round` and sampling do. `sample_d`\n * gradients use xy for 2d/2d-array and xyz otherwise.\n */\nfunction expressionFor(program, instruction, write, inputs, bindings, context = null)\n{\n const mask = write.mask;\n const count = mask.length;\n const source = (index, forcedCount = count) => operandExpression(\n program, instruction, index, mask, forcedCount, expectedType(instruction, index), inputs, bindings);\n const op = instruction.opcodeName;\n if ([ \"add\", \"div\", \"iadd\", \"mul\" ].includes(op))\n {\n const operator = { add: \"+\", div: \"/\", iadd: \"+\", mul: \"*\" }[op];\n return `(${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mad\" || op === \"imad\" || op === \"umad\") return `((${source(1)} * ${source(2)}) + ${source(3)})`;\n if (op === \"f16tof32\" || op === \"f32tof16\")\n {\n const src = source(1);\n const lane = (index) => (count === 1 ? `(${src})` : `(${src})[${index}]`);\n const parts = Array.from({ length: count }, (_, index) => (op === \"f16tof32\"\n ? `unpack2x16float(${lane(index)}).x`\n : `(pack2x16float(vec2<f32>(${lane(index)}, 0.0)) & 0xffffu)`));\n return vectorCode(parts, op === \"f16tof32\" ? \"float32\" : \"uint32\");\n }\n if (op === \"bfi\")\n {\n // D3D11 masks width and offset to five bits and truncates the\n // insertion mask at bit 32; insertBits clamps count to 32 - offset,\n // which is the same truncation. WGSL takes a scalar offset and count,\n // so each lane is lowered on its own.\n const lanes = [ source(1), source(2), source(3), source(4) ].map((code) =>\n (index) => (count === 1 ? `(${code})` : `(${code})[${index}]`));\n const [ width, offset, insert, base ] = lanes;\n const parts = Array.from({ length: count }, (_, index) =>\n `insertBits(${base(index)}, ${insert(index)}, ${offset(index)} & 31u, ${width(index)} & 31u)`);\n return vectorCode(parts, \"uint32\");\n }\n if (op === \"ubfe\")\n {\n // D3D11 masks width and offset to five bits, yields 0 for width 0 and\n // stops at bit 31; extractBits clamps count to 32 - offset and yields\n // 0 for count 0, which is the same field. Scalar offset and count, so\n // lowered per lane.\n const lanes = [ source(1), source(2), source(3) ].map((code) =>\n (index) => (count === 1 ? `(${code})` : `(${code})[${index}]`));\n const [ width, offset, value ] = lanes;\n const parts = Array.from({ length: count }, (_, index) =>\n `extractBits(${value(index)}, ${offset(index)} & 31u, ${width(index)} & 31u)`);\n return vectorCode(parts, \"uint32\");\n }\n // D3D countbits is WGSL countOneBits, component-wise on u32.\n if (op === \"countbits\") return `countOneBits(${source(1)})`;\n if (op === \"ibfe\")\n {\n // ubfe's signed twin. D3D11 masks width and offset to five bits, yields\n // 0 for width 0, sign-extends the field from its top bit, and when the\n // field runs past bit 31 is an arithmetic shift right by offset. WGSL's\n // i32 extractBits clamps count to 32 - offset and sign-extends from\n // the last extracted bit: the same field.\n // All three sources are signed here (inferValueTypes' INT_OPS); width\n // and offset become the u32 counts extractBits takes.\n const lanes = [ source(1), source(2), source(3) ].map((code) =>\n (index) => (count === 1 ? `(${code})` : `(${code})[${index}]`));\n const [ width, offset, value ] = lanes;\n const parts = Array.from({ length: count }, (_, index) =>\n `extractBits(${value(index)}, u32(${offset(index)}) & 31u, u32(${width(index)}) & 31u)`);\n return vectorCode(parts, \"int32\");\n }\n if (op === \"imul\" || op === \"umul\")\n {\n if (write.operandIndex !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} does not support the ${op} high result`);\n }\n return `(${source(2)} * ${source(3)})`;\n }\n if (op === \"udiv\")\n {\n const divisor = instruction.operands[3];\n const lanes = (divisor?.immediateValues || []).map((value) => value.uint32);\n const operator = write.operandIndex === 0 ? \"/\" : write.operandIndex === 1 ? \"%\" : null;\n if (!operator) throw new Error(`WGSL fragment udiv instruction ${instruction.index} has an unexpected destination operand`);\n if (divisor?.typeName === \"immediate32\" && (divisor.modifierName ?? \"none\") === \"none\" && lanes.length\n && lanes.every((value) => Number.isInteger(value) && value !== 0))\n {\n return `(${source(2)} ${operator} ${source(3)})`;\n }\n const dividendCode = source(2);\n const divisorCode = source(3);\n return `select(${fullMask(count)}, (${dividendCode} ${operator} max(${divisorCode}, ${oneMask(count)})), ${divisorCode} != ${zeroMask(count)})`;\n }\n if ([ \"max\", \"imax\", \"umax\" ].includes(op)) return `max(${source(1)}, ${source(2)})`;\n if ([ \"min\", \"imin\", \"umin\" ].includes(op)) return `min(${source(1)}, ${source(2)})`;\n if (op === \"ishl\") return `(${source(1)} << u32(${source(2)}))`;\n if (op === \"ishr\") return `(${source(1)} >> u32(${source(2)}))`;\n if (op === \"and\") return `(${source(1)} & ${source(2)})`;\n if (op === \"or\") return `(${source(1)} | ${source(2)})`;\n if (op === \"xor\") return `(${source(1)} ^ ${source(2)})`;\n if (op === \"ushr\") return `(${source(1)} >> ${source(2)})`;\n if ([ \"lt\", \"ge\", \"eq\", \"ne\", \"ilt\", \"ige\", \"ieq\", \"ine\", \"ult\", \"uge\" ].includes(op))\n {\n const operator = { lt: \"<\", ge: \">=\", eq: \"==\", ne: \"!=\", ilt: \"<\", ige: \">=\", ieq: \"==\", ine: \"!=\", ult: \"<\", uge: \">=\" }[op];\n return `select(${zeroMask(count)}, ${fullMask(count)}, ${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mov\") return source(1);\n if (op === \"movc\") return `select(${source(3)}, ${source(2)}, ${source(1)} != ${zeroMask(count)})`;\n if (op === \"ineg\") return `(-${source(1)})`;\n if (op === \"exp\") return `exp2(${source(1)})`;\n if (op === \"frc\") return `fract(${source(1)})`;\n if (op === \"log\") return `log2(${source(1)})`;\n if (op === \"round_ne\") return `round(${source(1)})`;\n if (op === \"round_ni\") return `floor(${source(1)})`;\n if (op === \"round_pi\") return `ceil(${source(1)})`;\n if (op === \"round_z\") return `trunc(${source(1)})`;\n if (DERIVATIVES[op]) return `${DERIVATIVES[op]}(${source(1)})`;\n if (op === \"rcp\")\n {\n validateRcpImmediate(program, instruction, write);\n return `(${floatBound(count, \"1.0\")} / ${source(1)})`;\n }\n if (op === \"rsq\") return `inverseSqrt(${source(1)})`;\n if (op === \"sqrt\") return `sqrt(${source(1)})`;\n if (NUMERIC_CONVERSIONS[op])\n {\n const conversion = instruction.typeInfo.conversion;\n const [ from, to ] = NUMERIC_CONVERSIONS[op];\n if (conversion?.from !== from || conversion?.to !== to)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has invalid ${op} conversion metadata`);\n }\n return `${fieldType(to, count)}(${source(1)})`;\n }\n if (op === \"dp2\") return splatScalar(`dot(${source(1, 2)}, ${source(2, 2)})`, count);\n if (op === \"dp3\") return splatScalar(`dot(${source(1, 3)}, ${source(2, 3)})`, count);\n if (op === \"dp4\") return splatScalar(`dot(${source(1, 4)}, ${source(2, 4)})`, count);\n if (op === \"sincos\")\n {\n const fn = write.operandIndex === 0 ? \"sin\" : write.operandIndex === 1 ? \"cos\" : null;\n if (!fn) throw new Error(`WGSL fragment sincos instruction ${instruction.index} has an unexpected destination operand`);\n return `${fn}(${source(2)})`;\n }\n if (op === \"resinfo\")\n {\n if (instruction.saturate)\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} cannot saturate`);\n }\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!textureBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has an unresolved resinfo resource`);\n const viewDimension = textureBinding.texture?.viewDimension;\n if (viewDimension !== \"2d\" && viewDimension !== \"3d\")\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} supports only 2d and 3d textures`);\n }\n const mipOperand = instruction.operands[1];\n const mipBits = mipOperand?.immediateValues?.[0]?.uint32;\n if (mipOperand?.typeName !== \"immediate32\" || mipOperand.immediateValues?.length !== 1\n || (mipOperand.modifierName || \"none\") !== \"none\"\n || (mipOperand.minPrecisionName || \"default\") !== \"default\"\n || !Number.isInteger(mipBits))\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} requires an immediate mip level`);\n }\n const modifier = instruction.resinfoReturnTypeName || \"float\";\n if (![ \"float\", \"rcpfloat\", \"uint\" ].includes(modifier))\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} has unsupported return type ${modifier}`);\n }\n const symbol = textureBinding.generatedSymbol;\n const mipCount = `textureNumLevels(${symbol})`;\n // Every WebGPU sampled texture has at least one mip. Query a valid level\n // and select zero for a non-zero immediate beyond the bound view so D3D's\n // defined out-of-range resinfo dimensions do not inherit WGSL's\n // indeterminate textureDimensions result. Mip zero is always valid.\n const level = mipBits === 0 ? \"0\" : `min(${mipBits}u, ${mipCount} - 1u)`;\n const levelInRange = mipBits === 0 ? null : `${mipBits}u < ${mipCount}`;\n const dims = `textureDimensions(${symbol}, ${level})`;\n const parts = rawSelectedComponents(resource, mask, count).map((component) =>\n {\n let value;\n let dimension = true;\n if (component === \"x\") value = `${dims}.x`;\n else if (component === \"y\") value = `${dims}.y`;\n else if (component === \"z\" && viewDimension === \"3d\") value = `${dims}.z`;\n else if (component === \"w\")\n {\n value = mipCount;\n dimension = false;\n }\n else throw new Error(`WGSL fragment resinfo instruction ${instruction.index} cannot report component ${component} for a ${viewDimension} texture`);\n if (dimension && levelInRange) value = `select(0u, ${value}, ${levelInRange})`;\n if (modifier === \"uint\") return value;\n return modifier === \"rcpfloat\" && dimension ? `(1.0 / f32(${value}))` : `f32(${value})`;\n });\n return vectorCode(parts, modifier === \"uint\" ? \"uint32\" : \"float32\");\n }\n if (op === \"ld_uav_typed\")\n {\n // A read-write storage texture load. D3D returns zero for an\n // out-of-bounds typed UAV read; the address is clamped before the load\n // so WGSL never forms an invalid access, then zero is selected.\n const uav = validateFixedHandleOperand(instruction, 2, \"uav\", \"fragment\");\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n const bufferView = binding?.buffer ? TYPED_VIEW_FORMATS[binding.typedView] : null;\n if (bufferView)\n {\n // A typed buffer of a known view: the element expanded to D3D's four\n // components, zero out of bounds.\n const address = source(1, 1);\n const symbol = binding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n const element = bufferView.expand(`${symbol}[min(${address}, ${length} - 1u)]`);\n const loaded = `select(vec4<${bufferView.element}>(), ${element}, ${address} < ${length})`;\n const components = rawSelectedComponents(uav, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (binding?.type === \"array<atomic<u32>>\")\n {\n // A raw-word typed buffer UAV (lowerBindingLayout's atomic layout,\n // e.g. the lensflare FlareOcclusionBuffer in compute). WGSL reads an\n // atomic element only through atomicLoad; the word is D3D's single\n // R32_UINT component, (x, 0, 0, 1), zero out of bounds.\n const address = source(1, 1);\n const symbol = binding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n const loaded = `select(vec4<u32>(), vec4<u32>(atomicLoad(&${symbol}[min(${address}, ${length} - 1u)]), 0u, 0u, 1u), ${address} < ${length})`;\n const components = rawSelectedComponents(uav, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (binding?.storageTexture?.access !== \"read-write\" || binding.storageTexture.viewDimension !== \"2d\")\n {\n throw new Error(`WGSL ld_uav_typed instruction ${instruction.index} requires a read-write 2d storage texture`);\n }\n const element = TYPED_VIEW_FORMATS[binding.typedView].element;\n const address = source(1, 2);\n const symbol = binding.generatedSymbol;\n const dimensions = `textureDimensions(${symbol})`;\n const loaded = `select(vec4<${element}>(), textureLoad(${symbol}, min(${address}, ${dimensions} - vec2<u32>(1u))), all(${address} < ${dimensions}))`;\n const components = rawSelectedComponents(uav, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (op === \"ld_structured\") return structuredLoadExpression(program, instruction, write, valueType(program, write), inputs, bindings);\n if (op === \"ld\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!textureBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has an unresolved load resource`);\n let loaded;\n const view = TYPED_VIEW_FORMATS[textureBinding.typedView];\n if (view)\n {\n // A typed buffer of a known view format: D3D returns the format's\n // four components in bounds (missing channels 0, alpha 1) and all\n // zeros out of bounds.\n const address = source(1, 1);\n const symbol = textureBinding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n loaded = `select(vec4<${view.element}>(), ${view.expand(`${symbol}[min(${address}, ${length} - 1u)]`)}, ${address} < ${length})`;\n }\n else if (textureBinding.buffer && !Number.isInteger(textureBinding.structureStride))\n {\n // Typed Buffer SRV: storage-array element fetch. D3D ld returns\n // zero out of bounds. Clamp the eagerly evaluated WGSL load itself\n // before selecting zero so no invalid memory reference is formed.\n const element = textureBinding.type.slice(\"array<\".length, -1);\n const address = source(1, 1);\n const symbol = textureBinding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n loaded = typedBufferLoad(element, symbol, address, length);\n }\n else if (textureBinding.texture?.viewDimension === \"2d\")\n {\n const address = source(1, 3);\n const symbol = textureBinding.generatedSymbol;\n const mipCount = `textureNumLevels(${symbol})`;\n const safeLevel = `min(${address}.z, ${mipCount} - 1u)`;\n const dimensions = `textureDimensions(${symbol}, ${safeLevel})`;\n const safeCoordinates = `min(${address}.xy, ${dimensions} - vec2<u32>(1u))`;\n const inBounds = `${address}.z < ${mipCount} && all(${address}.xy < ${dimensions})`;\n loaded = `select(vec4<f32>(), textureLoad(${symbol}, ${safeCoordinates}, ${safeLevel}), ${inBounds})`;\n }\n else\n {\n throw new Error(`WGSL fragment load instruction ${instruction.index} resource shape is not supported; only 2d textures and typed buffers are supported`);\n }\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (op === \"gather4\")\n {\n // D3D11 gathers the channel the sampler operand selects (s0.y gathers\n // green) from the four texels in (umin,vmax), (umax,vmax),\n // (umax,vmin), (umin,vmin) order, which is textureGather's order; the\n // resource swizzle then applies to that vec4. No derivatives are\n // involved, so compute may gather. Only 2D textures, and not under\n // emulated addressing, are admitted.\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const sampler = validateFixedHandleOperand(instruction, 3, \"sampler\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n const samplerBinding = bindingForOperand(bindings, \"sampler\", sampler);\n if (!textureBinding || !samplerBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has unresolved gather bindings`);\n if (textureBinding.texture?.viewDimension !== \"2d\")\n {\n throw new Error(`WGSL gather4 instruction ${instruction.index} supports only 2d textures`);\n }\n if (program.emulatedAddressing?.samplerModes?.[sampler.registerIndex])\n {\n throw new Error(`WGSL gather4 instruction ${instruction.index} cannot gather under emulated sampler addressing`);\n }\n const channel = COMPONENTS.indexOf(sampler.selected || \"x\");\n if (channel < 0) throw new Error(`WGSL gather4 instruction ${instruction.index} has no gather channel`);\n const offsetArg = sampleOffsetArgument(instruction, \"2d\");\n const gathered = `textureGather(${channel}, ${textureBinding.generatedSymbol}, ${samplerBinding.generatedSymbol}, ${source(1, 2)}${offsetArg})`;\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? gathered : `${gathered}.${components.join(\"\")}`;\n }\n if (op === \"sample\" || op === \"sample_b\" || op === \"sample_l\" || op === \"sample_d\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const sampler = validateFixedHandleOperand(instruction, 3, \"sampler\", \"fragment\");\n const transformed = transformedSampleForOperand(\n program,\n resource,\n bindings,\n context\n );\n const textureBinding = transformed?.textureBinding\n || bindingForOperand(bindings, \"sampled-resource\", resource);\n const samplerBinding = bindingForOperand(bindings, \"sampler\", sampler);\n if (!textureBinding || !samplerBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has unresolved sample bindings`);\n const viewDimension = textureBinding.texture?.viewDimension;\n const coordComponents = viewDimension === \"2d\" ? 2 : 3;\n const gradientComponents = [ \"2d\", \"2d-array\" ].includes(viewDimension) ? 2 : 3;\n let coord;\n let arrayArg = \"\";\n if (transformed)\n {\n if (viewDimension !== \"2d-array\")\n {\n throw new Error(`WGSL fragment resource transform ${textureBinding.transformId} is not a 2d-array binding`);\n }\n coord = source(1, 2);\n arrayArg = `, ${transformed.layer}i`;\n }\n else if (viewDimension === \"2d-array\")\n {\n const coord3 = source(1, 3);\n coord = `${coord3}.xy`;\n arrayArg = `, i32(round(${coord3}.z))`;\n }\n else\n {\n coord = source(1, coordComponents);\n }\n const tex = `${textureBinding.generatedSymbol}, ${samplerBinding.generatedSymbol}`;\n const offsetArg = sampleOffsetArgument(instruction, viewDimension);\n\n // WebGPU has no border and no mirror-once address mode, and no feature\n // adds them, so a sampler declaring either is honoured here instead.\n // The mapping from resource to sampler exists only in the DXBC, which\n // is why this must happen in the emitter: the caller knows the modes\n // and not the mapping, and DXBC carries no sampler state.\n const profile = program.emulatedAddressing ?? null;\n const declared = profile?.samplerModes?.[sampler] ?? null;\n const axes = [ declared?.u, declared?.v, declared?.w ];\n const forced = profile?.textures?.find((entry) => entry.registerIndex === resource) ?? null;\n const emulated = Boolean(profile) && !transformed && ShouldEmulate(axes, forced);\n let modes = null;\n\n if (emulated)\n {\n const modesBuffer = bindingForOperand(bindings, \"uniform-buffer\", profile.bufferRegister ?? 8);\n\n if (!modesBuffer)\n {\n throw new Error(\n `WGSL fragment instruction ${instruction.index} needs emulated addressing but the `\n + `modes buffer at register ${profile.bufferRegister ?? 8} is not bound`\n );\n }\n\n modes = ModesExpression(modesBuffer.generatedSymbol, resource, coordComponents);\n coord = `${coordComponents === 2 ? ADDRESS_COORD_2 : ADDRESS_COORD_3}(${coord}, ${modes})`;\n }\n\n const sampled = op === \"sample_b\"\n ? `textureSampleBias(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : op === \"sample_l\"\n ? `textureSampleLevel(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : op === \"sample_d\"\n ? `textureSampleGrad(${tex}, ${coord}${arrayArg}, ${source(4, gradientComponents)}, ${source(5, gradientComponents)}${offsetArg})`\n : `textureSample(${tex}, ${coord}${arrayArg}${offsetArg})`;\n // Applied to the already sampled value so it composes with every sample\n // form above rather than needing a variant of each.\n const bordered = emulated\n ? `${coordComponents === 2 ? ADDRESS_BORDER_2 : ADDRESS_BORDER_3}(${sampled}, ${coord}, `\n + `${modes}, ${BorderColorLiteral(forced?.borderColor)})`\n : sampled;\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? bordered : `${bordered}.${components.join(\"\")}`;\n }\n throw new Error(`WGSL fragment opcode ${op} at instruction ${instruction.index} is not supported`);\n}\n\nfunction applyResultBitcast(instruction, write, expression, type)\n{\n const bitcasts = instruction.typeInfo.bitcasts.filter((entry) => entry.kind === \"result-bitcast\"\n && entry.operandIndex === write.operandIndex && entry.valueId === write.valueId);\n if (!bitcasts.length) return expression;\n const components = Array.from(write.mask);\n const intrinsicType = instruction.typeInfo.resultType;\n if (bitcasts.length !== components.length || bitcasts.some((entry) =>\n entry.from !== intrinsicType || entry.to !== type.scalarType)\n || components.some((component) => !bitcasts.some((entry) => entry.component === component)))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has unsupported partial result bitcasts`);\n }\n return reinterpretCode(expression, intrinsicType, type.scalarType, components.length,\n `instruction ${instruction.index} result`);\n}\n\n/**\n * A structured group-shared memory declaration (`dcl_thread_group_shared_memory_structured`)\n * as the workgroup array it lowers to: `g<register>`, one u32 per DWORD.\n */\nfunction groupSharedMemory(program, registerIndex, instruction)\n{\n const declaration = program.declarations.find((entry) =>\n entry.opcodeName === \"dcl_thread_group_shared_memory_structured\"\n && entry.data?.registerIndex === registerIndex);\n const stride = declaration?.data?.structureStride;\n const count = declaration?.data?.structureCount;\n if (!Number.isInteger(stride) || stride < 4 || stride % 4 !== 0 || !Number.isInteger(count) || count < 1)\n {\n throw new Error(`WGSL instruction ${instruction.index} uses group-shared memory g${registerIndex} with no structured declaration`);\n }\n return { name: `g${registerIndex}`, strideBytes: stride, elementCount: (stride / 4) * count };\n}\n\n/** The workgroup arrays a compute program's group-shared declarations need. */\nfunction computeWorkgroupVariables(program)\n{\n const variables = program.declarations\n .filter((entry) => entry.opcodeName === \"dcl_thread_group_shared_memory_structured\")\n .map((entry) =>\n {\n const shared = groupSharedMemory(program, entry.data?.registerIndex, entry);\n return { name: shared.name, elementType: \"u32\", elementCount: shared.elementCount };\n });\n if (program.declarations.some((entry) => entry.opcodeName === \"dcl_thread_group_shared_memory_raw\"))\n {\n throw new Error(\"WGSL compute lowering supports only structured group-shared memory\");\n }\n return variables.length ? { workgroupVariables: variables } : {};\n}\n\n/**\n * `store_structured` into group-shared memory: one u32 word per written lane,\n * the value's bits unchanged. The whole store is skipped when the structure\n * index is out of range, where D3D leaves the result undefined; an offset plus\n * lane beyond the stride fails closed.\n */\nfunction lowerGroupSharedStore(program, instruction, inputs, bindings)\n{\n const target = instruction.operands[0];\n if (target?.typeName !== \"thread_group_shared_memory\" || instruction.operands.length !== 4)\n {\n throw new Error(`WGSL store_structured instruction ${instruction.index} supports only group-shared memory`);\n }\n const shared = groupSharedMemory(program, target.registerIndex, instruction);\n const byteOffset = instruction.operands[2]?.immediateValues?.[0]?.uint32;\n if (instruction.operands[2]?.typeName !== \"immediate32\" || !Number.isInteger(byteOffset) || byteOffset % 4 !== 0)\n {\n throw new Error(`WGSL store_structured instruction ${instruction.index} requires an immediate DWORD byte offset`);\n }\n const strideWords = shared.strideBytes / 4;\n const mask = target.mask || \"x\";\n const name = `store_index${instruction.index}`;\n const writes = Array.from(mask).map((component, laneIndex) =>\n {\n const word = (byteOffset / 4) + COMPONENTS.indexOf(component);\n if (word >= strideWords)\n {\n throw new Error(`WGSL store_structured instruction ${instruction.index} exceeds its ${shared.strideBytes}-byte stride`);\n }\n return {\n kind: \"value-assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${shared.name}[(${name} * ${strideWords}u) + ${word}u]`,\n expression: {\n code: operandLaneExpression(program, instruction, 3, mask, laneIndex, \"uint32\", inputs, bindings, true),\n type: \"u32\"\n }\n };\n });\n return [\n {\n kind: \"let\",\n name,\n type: \"u32\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings), type: \"u32\" }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${name} < ${shared.elementCount / strideWords}u`, type: \"bool\" },\n statements: writes\n }\n ];\n}\n\n/**\n * `store_uav_typed` into a storage texture: `textureStore` at the address's\n * texel (and layer), guarded, because D3D drops an out-of-bounds typed-UAV\n * write and WGSL does not promise to.\n */\nfunction lowerStorageTextureStore(program, instruction, inputs, bindings)\n{\n const uav = validateFixedHandleOperand(instruction, 0, \"uav\", \"fragment\");\n if (instruction.operands.length !== 3 || instruction.saturate)\n {\n throw new Error(`WGSL store_uav_typed instruction ${instruction.index} has an unsupported operand shape`);\n }\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n const bufferView = binding?.buffer ? TYPED_VIEW_FORMATS[binding.typedView] : null;\n if (bufferView)\n {\n // A typed buffer of a known single-channel view: D3D writes the first\n // component converted to the view format, and drops an out-of-bounds\n // write, which WGSL does not promise to.\n const name = `store_address${instruction.index}`;\n const symbol = binding.generatedSymbol;\n const valueType = bufferView.returnType === \"uint\" ? \"uint32\" : \"float32\";\n return [\n {\n kind: \"let\",\n name,\n type: \"u32\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings), type: \"u32\" }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${name} < arrayLength(&${symbol})`, type: \"bool\" },\n statements: [ {\n kind: \"value-assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${symbol}[${name}]`,\n expression: {\n code: operandLaneExpression(program, instruction, 2, \"xyzw\", 0, valueType, inputs, bindings, true),\n type: bufferView.element\n }\n } ]\n }\n ];\n }\n if (binding?.type === \"array<atomic<u32>>\")\n {\n // A raw-word typed buffer UAV: the first component's 32 bits stored\n // with atomicStore (the only write WGSL allows on an atomic element),\n // dropped out of bounds as D3D drops it. The bits are stored as they\n // are: Carbon writes float 1.0 and integer counters into the same\n // R32_UINT buffer (occludermanagement Clear/CopyCounters).\n const name = `store_address${instruction.index}`;\n const symbol = binding.generatedSymbol;\n return [\n {\n kind: \"let\",\n name,\n type: \"u32\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings), type: \"u32\" }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${name} < arrayLength(&${symbol})`, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: {\n code: `atomicStore(&${symbol}[${name}], ${operandLaneExpression(program, instruction, 2, \"xyzw\", 0, \"uint32\", inputs, bindings, true)})`,\n type: \"void\"\n }\n } ]\n }\n ];\n }\n if (!binding?.storageTexture)\n {\n throw new Error(`WGSL store_uav_typed instruction ${instruction.index} requires a storage-texture UAV`);\n }\n const arrayed = binding.storageTexture.viewDimension === \"2d-array\";\n const lanes = arrayed ? 3 : 2;\n const address = operandExpression(program, instruction, 1, arrayed ? \"xyz\" : \"xy\", lanes, \"uint32\", inputs, bindings);\n // A Carbon-named format stores its own component type (r32uint takes\n // vec4<u32>); an unnamed storage texture is rgba16float.\n const valueType = TYPED_VIEW_FORMATS[binding.typedView]?.returnType === \"uint\" ? \"uint32\" : \"float32\";\n const value = operandExpression(program, instruction, 2, \"xyzw\", 4, valueType, inputs, bindings);\n const name = `store_address${instruction.index}`;\n const symbol = binding.generatedSymbol;\n const inBounds = arrayed\n ? `all(${name}.xy < textureDimensions(${symbol})) && ${name}.z < textureNumLayers(${symbol})`\n : `all(${name} < textureDimensions(${symbol}))`;\n const call = arrayed\n ? `textureStore(${symbol}, ${name}.xy, ${name}.z, ${value})`\n : `textureStore(${symbol}, ${name}, ${value})`;\n return [\n {\n kind: \"let\",\n name,\n type: `vec${lanes}<u32>`,\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: address, type: `vec${lanes}<u32>` }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: inBounds, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: call, type: \"void\" }\n } ]\n }\n ];\n}\n\nfunction lowerInstruction(program, instruction, inputs, outputs, bindings, written, readValueIds, nonUniform = false, context = null)\n{\n if (!SUPPORTED_OPCODES.has(instruction.opcodeName))\n {\n throw new Error(`WGSL fragment opcode ${instruction.opcodeName} at instruction ${instruction.index} is not supported`);\n }\n const unsupportedExtension = instruction.extensions?.find((extension) =>\n !METADATA_OPCODE_EXTENSIONS.has(extension.typeName)\n && !(extension.typeName === \"sample_controls\"\n && SAMPLE_OFFSET_OPCODES.has(instruction.opcodeName)));\n if (unsupportedExtension)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} opcode extension ${unsupportedExtension.typeName} is not supported`);\n }\n if (context?.compute && REQUIRES_UNIFORM_CONTROL_FLOW.has(instruction.opcodeName))\n {\n // WGSL has no derivatives in compute; D3D's compute has none either.\n throw new Error(`WGSL compute instruction ${instruction.index} (${instruction.opcodeName}) needs screen-space derivatives`);\n }\n if (nonUniform && REQUIRES_UNIFORM_CONTROL_FLOW.has(instruction.opcodeName) && context)\n {\n // Screen-space derivative / implicit-LOD sample under non-uniform control\n // flow. Rather than reject, record that the module needs the WGSL\n // derivative-uniformity opt-out (emitted at module top); this reproduces\n // D3D11's permissive behavior. See uniformity.js and the directive\n // comment in emitWgsl.js.\n context.requiresDerivativeUniformityOptOut = true;\n }\n validatePreciseInstruction(instruction, \"fragment\");\n const imprecise = instruction.operands.find(unsupportedMinPrecision);\n if (imprecise)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${imprecise.minPrecisionName} is not supported`);\n }\n validateRegisterBitcasts(program, instruction);\n if (instruction.opcodeName === \"ret\")\n {\n for (const field of outputs)\n {\n // Unlike the vertex stage, an unwritten SV_Target lane fails\n // closed: an undefined render-target lane feeds blending and is\n // not a safe zero.\n const missing = field.components.filter((component) => !written.get(field.id).has(component));\n if (missing.length) throw new Error(`WGSL fragment output ${field.semanticName}${field.semanticIndex} leaves ${missing.join(\"\")} unwritten before return`);\n }\n return { kind: \"return\", instructionIndex: instruction.index, dxbcOffset: instruction.dxbcOffset };\n }\n if (instruction.opcodeName === \"discard\")\n {\n const projection = instruction.testBoolean;\n const operand = instruction.operands[0];\n const read = sourceRead(instruction, 0);\n if (![ \"zero\", \"nonzero\" ].includes(projection))\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} has no supported condition projection`);\n }\n const scalarShape = operand?.typeName === \"immediate32\"\n ? operand.immediateValues?.length === 1\n : COMPONENTS.includes(operand?.selected);\n if (instruction.operands.length !== 1 || !operand || !scalarShape || (read && read.refs.length !== 1))\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} requires one scalar condition`);\n }\n if ((operand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} cannot modify its condition`);\n }\n if (instruction.saturate)\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} cannot saturate its condition`);\n }\n const condition = operandExpression(program, instruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n return {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${condition} ${projection === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"discard\" } ]\n };\n }\n if (instruction.opcodeName === \"sync\")\n {\n // D3D's sync flags to WGSL's barriers, compute only. Every WGSL barrier\n // also synchronizes the workgroup's invocations, so a memory-only\n // fence (no threads_in_group) has no equivalent and is refused rather\n // than turned into a barrier the shader did not ask for.\n // workgroupBarrier covers group-shared memory, storageBarrier UAV\n // memory; D3D's device-wide UAV scope is wider than WGSL can express\n // within one dispatch.\n const flags = instruction.syncFlagNames ?? [];\n if (program.stage !== \"compute\" || !flags.includes(\"threads_in_group\"))\n {\n throw new Error(`WGSL sync instruction ${instruction.index} (${flags.join(\"|\") || \"no flags\"}) has no WGSL barrier equivalent in the ${program.stage} stage`);\n }\n const uav = flags.includes(\"thread_group_uav_memory\") || flags.includes(\"global_uav_memory\");\n const shared = flags.includes(\"thread_group_shared_memory\") || !uav;\n return [\n ...(shared ? [ \"workgroupBarrier()\" ] : []),\n ...(uav ? [ \"storageBarrier()\" ] : [])\n ].map(code => ({\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code, type: \"void\" }\n }));\n }\n if (instruction.opcodeName === \"atomic_iadd\")\n {\n const uav = validateFixedHandleOperand(instruction, 0, \"uav\", \"fragment\");\n if (instruction.operands.length !== 3 || instruction.saturate)\n {\n throw new Error(`WGSL fragment atomic instruction ${instruction.index} has an unsupported operand shape`);\n }\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n if (!binding) throw new Error(`WGSL fragment atomic instruction ${instruction.index} has an unresolved UAV binding`);\n if (binding.type !== \"array<atomic<u32>>\")\n {\n throw new Error(`WGSL fragment atomic instruction ${instruction.index} UAV layout ${binding.type} is not supported`);\n }\n const address = operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings);\n const value = operandExpression(program, instruction, 2, \"x\", 1, \"uint32\", inputs, bindings);\n // D3D defines out-of-bounds typed-UAV atomics as dropped writes; the\n // bounds guard reproduces that (WGSL could redirect to a live element).\n // Only the non-returning form exists here; a result-returning\n // imm_atomic_iadd would also need a synthesized zero old value.\n return {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${address} < arrayLength(&${binding.generatedSymbol})`, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: `atomicAdd(&${binding.generatedSymbol}[${address}], ${value})`, type: \"void\" }\n } ]\n };\n }\n if (instruction.opcodeName === \"store_uav_typed\")\n {\n return lowerStorageTextureStore(program, instruction, inputs, bindings);\n }\n if (instruction.opcodeName === \"store_structured\")\n {\n return lowerGroupSharedStore(program, instruction, inputs, bindings);\n }\n const writes = instruction.dataflow.writes;\n if (!writes.length) throw new Error(`WGSL fragment instruction ${instruction.index} has no result write`);\n if (instruction.opcodeName === \"sincos\" || instruction.opcodeName === \"udiv\")\n {\n const destinationOperands = writes.map((write) => write.operandIndex);\n if (writes.length > 2 || new Set(destinationOperands).size !== writes.length\n || destinationOperands.some((operandIndex) => ![ 0, 1 ].includes(operandIndex)))\n {\n throw new Error(`WGSL fragment ${instruction.opcodeName} instruction ${instruction.index} has unsupported result writes`);\n }\n if (writes.length === 2 && writes[0].mask !== writes[1].mask)\n {\n throw new Error(`WGSL fragment ${instruction.opcodeName} instruction ${instruction.index} requires matching destination masks`);\n }\n }\n else if (writes.length !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has unsupported multiple result writes`);\n }\n const lowerWrite = (write) =>\n {\n const destination = instruction.operands[write.operandIndex];\n const indexableAddress = destination?.typeName === \"indexable_temp\"\n ? validateIndexableTempWrite(program, destination, write)\n : null;\n const localSsaDestination = destination?.typeName === \"temp\" || Boolean(indexableAddress);\n if (isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)) return [];\n const mixedTypes = mixedImmediateTypes(program, write);\n if (mixedTypes)\n {\n // One instruction writing lanes of different resolved storage\n // types cannot be one WGSL vector: split into per-lane lets\n // (valueN_x, ...) for structured loads, packed intrinsic results,\n // immediate movs and per-lane movc selects. The movc path is\n // bounded to unsaturated temps with register, immediate or cbuffer\n // lane sources; its condition follows u32 modifier rules and its\n // value operands the raw float-data mover rules.\n if (instruction.opcodeName === \"ld_structured\" && localSsaDestination && !instruction.saturate)\n {\n const words = structuredLoadExpression(program, instruction, write, null, inputs, bindings);\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: reinterpretCode(words[laneIndex], \"uint32\", mixedTypes[laneIndex], 1, `structured load ${instruction.index}`),\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const intrinsic = instruction.typeInfo.resultType;\n if (localSsaDestination && scalarTypeName(intrinsic) && instruction.opcodeName !== \"mov\")\n {\n let packedCode = expressionFor(program, instruction, write, inputs, bindings, context);\n if (instruction.saturate)\n {\n if (intrinsic !== \"float32\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} saturates a non-float result`);\n }\n packedCode = `clamp(${packedCode}, ${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")})`;\n }\n const packedName = `${write.valueId}_p`;\n const packedType = fieldType(intrinsic, write.mask.length);\n const statements = [ {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: packedName,\n type: packedType,\n expression: { code: packedCode, type: packedType }\n } ];\n Array.from(write.mask).forEach((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const access = write.mask.length === 1 ? packedName : `${packedName}.${COMPONENTS[laneIndex]}`;\n statements.push({\n kind: \"let\",\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: reinterpretCode(access, intrinsic, laneType, 1, `mixed write ${instruction.index}`),\n type: scalarTypeName(laneType)\n }\n });\n });\n return statements;\n }\n if (instruction.opcodeName === \"movc\" && localSsaDestination && !instruction.saturate)\n {\n return Array.from(write.mask).map((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const condition = operandLaneExpression(program, instruction, 1, write.mask, laneIndex, \"uint32\", inputs, bindings);\n const whenTrue = operandLaneExpression(program, instruction, 2, write.mask, laneIndex, laneType, inputs, bindings, true);\n const whenFalse = operandLaneExpression(program, instruction, 3, write.mask, laneIndex, laneType, inputs, bindings, true);\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: `select(${whenFalse}, ${whenTrue}, ${condition} != 0u)`,\n type: scalarTypeName(laneType)\n }\n };\n });\n }\n const immediateSource = instruction.operands[1];\n if (instruction.opcodeName === \"mov\" && localSsaDestination && !instruction.saturate\n && immediateSource?.typeName !== \"immediate32\")\n {\n // A register mov moves bits, so each lane reads its source\n // component as its own resolved type (a float bit pattern\n // beside uint lanes in FidelityFX CAS, for one).\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: operandLaneExpression(program, instruction, 1, write.mask, laneIndex, mixedTypes[laneIndex], inputs, bindings, true),\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n if (instruction.opcodeName !== \"mov\" || instruction.saturate\n || !localSsaDestination || immediateSource?.typeName !== \"immediate32\")\n {\n throw new Error(`WGSL fragment value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: immediateParts(immediateSource, component, 1, mixedTypes[laneIndex])[0],\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const type = valueType(program, write);\n let expression = expressionFor(program, instruction, write, inputs, bindings, context);\n if (instruction.saturate)\n {\n const clampBounds = `${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")}`;\n if (instruction.typeInfo.resultType === \"float32\")\n {\n expression = `clamp(${expression}, ${clampBounds})`;\n }\n else if ([ \"mov\", \"movc\" ].includes(instruction.opcodeName)\n && [ \"int32\", \"uint32\", \"bitpattern32\" ].includes(type.scalarType))\n {\n // D3D saturate assumes float data (like source modifiers); on a\n // bit-preserving mover whose lanes resolved to integer storage,\n // clamp the float interpretation of the bits and keep the storage.\n const floatType = fieldType(\"float32\", write.mask.length);\n expression = `bitcast<${type.wgslType}>(clamp(bitcast<${floatType}>(${expression}), ${clampBounds}))`;\n }\n else\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} saturates a non-float result`);\n }\n }\n expression = applyResultBitcast(instruction, write, expression, type);\n if (destination.typeName === \"output\")\n {\n const field = outputs.find((entry) => entry.registerIndex === destination.registerIndex);\n if (!field) throw new Error(`WGSL fragment instruction ${instruction.index} references undeclared output r${destination.registerIndex}`);\n const components = Array.from(write.mask).map((component) => packedComponent(field.components.join(\"\"), component));\n Array.from(write.mask).forEach((component) => written.get(field.id).add(component));\n const outputType = fieldType(field.scalarType, write.mask.length);\n const assignmentExpression = reinterpretCode(\n expression,\n type.scalarType,\n field.scalarType,\n write.mask.length,\n `output ${field.semanticName}${field.semanticIndex}`\n );\n const assignment = {\n kind: \"assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n target: { fieldId: field.id, components, type: outputType },\n expression: { code: assignmentExpression, type: outputType }\n };\n if (!readValueIds.has(write.valueId)) return assignment;\n return [\n {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n },\n {\n ...assignment,\n instructionIndex: undefined,\n dxbcOffset: undefined,\n expression: {\n code: reinterpretCode(write.valueId, type.scalarType, field.scalarType, write.mask.length,\n `output ${field.semanticName}${field.semanticIndex}`),\n type: outputType\n }\n }\n ];\n }\n if (!localSsaDestination)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} writes unsupported ${destination.typeName}`);\n }\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n };\n };\n const statements = writes.flatMap((write) =>\n {\n const lowered = lowerWrite(write);\n return Array.isArray(lowered) ? lowered : [ lowered ];\n });\n return statements.length === 1 ? statements[0] : statements;\n}\n\nfunction containsOutputAssignment(statements)\n{\n return statements.some((statement) => statement.kind === \"assignment\"\n || (statement.kind === \"if\" && (containsOutputAssignment(statement.statements)\n || (statement.elseStatements ? containsOutputAssignment(statement.elseStatements) : false)))\n || (statement.kind === \"switch\" && statement.clauses.some((clause) => containsOutputAssignment(clause.statements)))\n || (statement.kind === \"loop\" && containsOutputAssignment(statement.statements)));\n}\n\n/**\n * Whether a loop can be exited through NON-UNIFORM control flow: a `breakc`/\n * `continuec` with a varying condition, or an unconditional `break`/`continue`\n * lexically guarded by a varying `if`/`switch`. Per the WGSL uniformity rules a\n * `break` reached from non-uniform control flow taints the loop body AND the code\n * after the loop (the break edges carry non-uniformity to the merge). Nested\n * loops are skipped — their breaks belong to the inner loop, not this one.\n *\n * @param {object} program Frozen CJS shader IR.\n * @param {object} region Loop control-flow region.\n * @param {Set<string>} varying Varying value ids from computeVaryingValues.\n * @returns {boolean} True when at least one exit is non-uniform.\n */\nfunction loopHasNonUniformExit(program, region, varying)\n{\n const regions = program.controlFlow.regions;\n const insideNestedLoop = (index) => regions.some((candidate) =>\n candidate.kind === \"loop\" && candidate !== region\n && candidate.startInstruction > region.startInstruction\n && candidate.endInstruction < region.endInstruction\n && index >= candidate.startInstruction && index <= candidate.endInstruction);\n for (let index = region.startInstruction; index <= region.endInstruction; index += 1)\n {\n const instruction = program.instructions[index];\n if (!instruction || insideNestedLoop(index)) continue;\n const op = instruction.opcodeName;\n if ((op === \"breakc\" || op === \"continuec\") && !conditionIsUniform(instruction, varying)) return true;\n if (op === \"break\" || op === \"continue\")\n {\n const varyingGuard = regions.some((candidate) =>\n (candidate.kind === \"selection\" || candidate.kind === \"switch\")\n && candidate.startInstruction >= region.startInstruction\n && candidate.endInstruction <= region.endInstruction\n && candidate.startInstruction < index && index <= candidate.endInstruction\n && !conditionIsUniform(program.instructions[candidate.startInstruction], varying));\n if (varyingGuard) return true;\n }\n }\n return false;\n}\n\n/**\n * Lowers the bounded copyblit-style fragment slice with structured no-else\n * selections and scalar component merges.\n *\n * @param {object} program Frozen CJS shader IR.\n * @param {object} [options] Binding-plan and lowering options.\n * @returns {object} Frozen typed fragment program.\n */\nexport function lowerFragmentProgram(program, options = {})\n{\n if (program?.format !== \"CJS_SHADER_IR\") throw new TypeError(\"WGSL fragment lowering expects CJS_SHADER_IR input\");\n if (program.stage !== \"pixel\") throw new Error(`WGSL fragment lowering cannot lower ${program.stage}`);\n return lowerProgramBody(program, options, false);\n}\n\n/**\n * A compute program no hand-matched profile claims, lowered with the fragment\n * lowering's general instruction set: no interface, the thread-ID registers\n * as entry-point builtins, typed texture UAVs as storage textures.\n *\n * @param {object} program CJS_SHADER_IR compute program.\n * @param {object} [options] Lowering options.\n * @returns {object} Typed compute program.\n */\nexport function lowerGeneralComputeProgram(program, options = {})\n{\n if (program?.format !== \"CJS_SHADER_IR\") throw new TypeError(\"WGSL compute lowering expects CJS_SHADER_IR input\");\n if (program.stage !== \"compute\") throw new Error(`WGSL general compute lowering cannot lower ${program.stage}`);\n return lowerProgramBody(program, options, true);\n}\n\n/** `dcl_thread_group` as a three-component workgroup size. */\nfunction computeThreadGroupSize(program)\n{\n const group = program.declarations.find((entry) => entry.opcodeName === \"dcl_thread_group\")?.data;\n const size = [ group?.threadGroupX, group?.threadGroupY, group?.threadGroupZ ];\n if (size.some((value) => !Number.isSafeInteger(value) || value < 1))\n {\n throw new Error(\"WGSL compute lowering requires a dcl_thread_group declaration\");\n }\n return size;\n}\n\n/** The entry-point builtins this program reads, in `computeEntryPointParameters` order. */\nfunction computeBuiltinInputs(program)\n{\n const used = new Set(program.values\n .filter((value) => value.origin === \"program-input\" && COMPUTE_BUILTINS[value.register])\n .map((value) => value.register));\n const order = [ \"input_thread_group_id[]\", \"input_thread_id_in_group[]\", \"input_thread_id[]\", \"input_thread_id_in_group_flattened[]\" ];\n const builtinInputs = order.filter((register) => used.has(register))\n .map((register) => ({ ...COMPUTE_BUILTINS[register] }));\n return builtinInputs.length ? { builtinInputs } : {};\n}\n\nfunction lowerProgramBody(program, options, compute)\n{\n if (program.shaderModel.major !== 5 || ![ 0, 1 ].includes(program.shaderModel.minor))\n {\n throw new Error(\"WGSL fragment body slice currently supports only SM5.0/SM5.1\");\n }\n requireRefactoringAllowed(program, \"fragment\");\n const liveRegisters = compute ? new Set() : liveInputRegisters(program);\n const inputs = compute ? [] : groupSignaturesByRegister(\n program.signatures.input.filter((entry) => liveRegisters.has(entry.registerIndex)))\n .map((rows) => interfaceField(rows, \"input\"));\n const outputs = compute ? [] : program.signatures.output.map((entry) => interfaceField([ entry ], \"output\"));\n if (!compute && !outputs.length) throw new Error(\"WGSL fragment body slice requires output signatures\");\n inputs.forEach((input) => validateInterpolation(program, input));\n const planFromBinding = options.bindingPlan?.resourceTransforms === undefined\n ? null\n : normalizeResourceTransformPlan({\n format: \"CJS_WGSL_RESOURCE_TRANSFORM_PLAN\",\n formatVersion: 1,\n resourceTransforms: options.bindingPlan.resourceTransforms\n });\n const explicitPlan = normalizeResourceTransformPlan(options.resourceTransformPlan);\n if (planFromBinding && explicitPlan\n && JSON.stringify(planFromBinding) !== JSON.stringify(explicitPlan))\n {\n throw new Error(\"WGSL fragment binding and resource transform plans disagree\");\n }\n const resourceTransformPlan = planFromBinding || explicitPlan;\n const bindings = lowerBindingLayout(\n program,\n options.bindingPlan,\n null,\n resourceTransformPlan\n );\n const plans = buildSelectionPlans(program, \"fragment\");\n const varying = computeVaryingValues(program);\n const transformedInputs = new Map();\n for (const transform of resourceTransformPlan?.resourceTransforms || [])\n {\n if (transform.stage !== \"fragment\") continue;\n for (const input of transform.inputs)\n {\n transformedInputs.set(input.identity, {\n transform,\n layer: input.layer\n });\n }\n }\n const context = {\n requiresDerivativeUniformityOptOut: false,\n transformedInputs,\n compute\n };\n const written = new Map(outputs.map((field) => [ field.id, new Set() ]));\n const readValueIds = new Set([\n ...program.instructions.flatMap((instruction) =>\n instruction.dataflow.reads.flatMap((read) => read.refs.map((ref) => ref.valueId))),\n ...program.values.flatMap((value) => (value.incoming || []).map((incoming) => incoming.valueId))\n ]);\n\n function exitMergeAssignments(loopExit, breakIndex)\n {\n return (loopExit?.get(breakIndex) || []).map((assign) => ({\n kind: \"value-assignment\", name: assign.id, type: assign.type,\n expression: { code: valueReference(program, assign.ref, inputs), type: assign.type }\n }));\n }\n\n function lowerRange(start, end, rangeWritten, inLoop = false, nonUniform = false, loopExit = null)\n {\n const statements = [];\n // Non-uniformity accumulates within a range: once a loop with a non-uniform\n // exit is lowered, every subsequent statement in this range is non-uniform\n // (WGSL propagates the break-edge non-uniformity past the loop merge).\n let flowNonUniform = nonUniform;\n for (let index = start; index < end; index += 1)\n {\n const plan = plans.get(index);\n if (!plan)\n {\n const marker = program.instructions[index].opcodeName;\n if (marker === \"break\" || marker === \"breakc\")\n {\n if (!inLoop) throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n const breakInstruction = program.instructions[index];\n if (marker === \"break\")\n {\n statements.push(...exitMergeAssignments(loopExit, breakInstruction.index));\n statements.push({ kind: \"break\", instructionIndex: breakInstruction.index, dxbcOffset: breakInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(breakInstruction, \"fragment\");\n validateRegisterBitcasts(program, breakInstruction);\n const conditionOperand = breakInstruction.operands[0];\n const conditionRead = sourceRead(breakInstruction, 0);\n if (breakInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(breakInstruction.testBoolean))\n {\n throw new Error(`WGSL fragment breakc instruction ${breakInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, breakInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: breakInstruction.index,\n dxbcOffset: breakInstruction.dxbcOffset,\n condition: { code: `${condition} ${breakInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ ...exitMergeAssignments(loopExit, breakInstruction.index), { kind: \"break\" } ]\n });\n continue;\n }\n if (marker === \"continue\" || marker === \"continuec\")\n {\n if (!inLoop) throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n const continueInstruction = program.instructions[index];\n if (marker === \"continue\")\n {\n statements.push({ kind: \"continue\", instructionIndex: continueInstruction.index, dxbcOffset: continueInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(continueInstruction, \"fragment\");\n validateRegisterBitcasts(program, continueInstruction);\n const conditionOperand = continueInstruction.operands[0];\n const conditionRead = sourceRead(continueInstruction, 0);\n if (continueInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(continueInstruction.testBoolean))\n {\n throw new Error(`WGSL fragment continuec instruction ${continueInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, continueInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: continueInstruction.index,\n dxbcOffset: continueInstruction.dxbcOffset,\n condition: { code: `${condition} ${continueInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"continue\" } ]\n });\n continue;\n }\n if ([ \"endif\", \"else\", \"case\", \"default\", \"endswitch\", \"endloop\" ].includes(marker))\n {\n throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n }\n const lowered = lowerInstruction(\n program, program.instructions[index], inputs, outputs, bindings, rangeWritten, readValueIds, flowNonUniform, context);\n statements.push(...(Array.isArray(lowered) ? lowered : [ lowered ]));\n continue;\n }\n if (plan.kind === \"loop\")\n {\n const loopInstruction = program.instructions[index];\n if (loopInstruction.opcodeName !== \"loop\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endloop\")\n {\n throw new Error(\"WGSL fragment loop boundaries are malformed\");\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.entryIncoming, inputs), type: merge.type } });\n }\n for (const merge of plan.exitMerges || [])\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: merge.zeroCode, type: merge.type } });\n }\n const bodyWritten = cloneWritten(rangeWritten);\n // A non-uniform loop exit makes both the body and everything after\n // the loop non-uniform. Fold that into the running flow flag so a\n // requires-uniform op (sample/derivative) below picks up the\n // derivative-uniformity opt-out (D3D11-permissive; see emitWgsl.js).\n const loopNonUniform = loopHasNonUniformExit(program, plan.region, varying);\n const body = lowerRange(index + 1, plan.region.endInstruction, bodyWritten, true,\n flowNonUniform || loopNonUniform, plan.exitEdges);\n if (body.at(-1)?.kind === \"return\")\n {\n throw new Error(`WGSL fragment loop at ${index} terminates before latch assignments`);\n }\n if (loopNonUniform) flowNonUniform = true;\n // Latch phi updates go in a `continuing` block so they run on both\n // fall-through and `continue` paths (a body `continue` would skip\n // updates appended to the body).\n const latch = plan.merges.map((merge) => ({ kind: \"value-assignment\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.backedgeIncoming, inputs), type: merge.type } }));\n statements.push({ kind: \"loop\", instructionIndex: loopInstruction.index, dxbcOffset: loopInstruction.dxbcOffset,\n statements: body, continuing: latch });\n index = plan.region.endInstruction;\n continue;\n }\n if (plan.kind === \"switch\")\n {\n const switchInstruction = program.instructions[index];\n if (switchInstruction.opcodeName !== \"switch\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endswitch\")\n {\n throw new Error(\"WGSL fragment switch boundaries are malformed\");\n }\n validatePreciseInstruction(switchInstruction, \"fragment\");\n validateRegisterBitcasts(program, switchInstruction);\n const selectorOperand = switchInstruction.operands[0];\n const selectorRead = sourceRead(switchInstruction, 0);\n if (switchInstruction.saturate || (selectorOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(selectorOperand?.selected) || selectorRead?.refs.length !== 1)\n {\n throw new Error(`WGSL fragment switch instruction ${switchInstruction.index} requires one unmodified scalar selector`);\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: merge.zeroCode, type: merge.type } });\n }\n const selector = operandExpression(program, switchInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n const clauseNonUniform = flowNonUniform || !conditionIsUniform(switchInstruction, varying);\n const clauses = [];\n const clauseResults = [];\n for (let clauseIndex = 0; clauseIndex < plan.clauses.length; clauseIndex += 1)\n {\n const clause = plan.clauses[clauseIndex];\n const clauseWritten = cloneWritten(rangeWritten);\n const body = lowerRange(clause.bodyStart, clause.bodyEnd, clauseWritten, false, clauseNonUniform, loopExit);\n if ((plan.merges.length || plan.outerMerges?.length) && containsOutputAssignment(body))\n {\n throw new Error(`WGSL fragment switch at ${index} writes output before a live merge`);\n }\n if (body.at(-1)?.kind === \"return\" && (plan.merges.length || plan.outerMerges?.length))\n {\n throw new Error(`WGSL fragment switch at ${index} terminates before merge assignments`);\n }\n for (const merge of [ ...plan.merges, ...(plan.outerMerges || []) ])\n {\n body.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.perClause[clauseIndex], inputs), type: merge.type }\n });\n }\n clauses.push({ selectors: clause.selectors, isDefault: clause.isDefault, statements: body });\n clauseResults.push({ clauseWritten, returns: body.at(-1)?.kind === \"return\" });\n }\n statements.push({\n kind: \"switch\",\n instructionIndex: switchInstruction.index,\n dxbcOffset: switchInstruction.dxbcOffset,\n selector: { code: selector, type: \"u32\" },\n clauses\n });\n if (plan.region.defaultInstruction !== null)\n {\n const continuing = clauseResults.filter((entry) => !entry.returns);\n for (const [ fieldId, target ] of rangeWritten)\n {\n if (!continuing.length) break;\n const sets = continuing.map((entry) => entry.clauseWritten.get(fieldId) || new Set());\n for (const component of sets[0])\n {\n if (sets.every((set) => set.has(component))) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n continue;\n }\n const ifInstruction = program.instructions[index];\n const endInstruction = program.instructions[plan.region.endInstruction];\n if (ifInstruction.opcodeName !== \"if\" || endInstruction.opcodeName !== \"endif\"\n || (plan.hasElse && program.instructions[plan.region.elseInstruction].opcodeName !== \"else\"))\n {\n throw new Error(\"WGSL fragment selection boundaries are malformed\");\n }\n validatePreciseInstruction(ifInstruction, \"fragment\");\n validateRegisterBitcasts(program, ifInstruction);\n const conditionOperand = ifInstruction.operands[0];\n const conditionRead = sourceRead(ifInstruction, 0);\n if (ifInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1)\n {\n throw new Error(`WGSL fragment if instruction ${ifInstruction.index} requires one unmodified scalar condition`);\n }\n // Arms may write shader outputs alongside live merges: merge vars\n // are declared here and assigned at each arm's end, while output\n // completeness comes from the post-branch intersection below and\n // the reachable-return check. Only an arm that returns ahead of\n // its merge assignment is rejected.\n for (const merge of plan.merges)\n {\n const expression = plan.hasElse\n ? merge.zeroCode\n : (merge.falseCode || valueReference(program, merge.falseIncoming, inputs));\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: expression, type: merge.type } });\n }\n const condition = operandExpression(program, ifInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n const comparison = ifInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\";\n const branchNonUniform = flowNonUniform || !conditionIsUniform(ifInstruction, varying);\n const trueBodyEnd = plan.hasElse ? plan.region.elseInstruction : plan.region.endInstruction;\n const trueWritten = cloneWritten(rangeWritten);\n const trueStatements = lowerRange(index + 1, trueBodyEnd, trueWritten, inLoop, branchNonUniform, loopExit);\n if (trueStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL fragment selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n if (merge.viaSwitch) continue;\n trueStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.trueIncoming, inputs), type: merge.type }\n });\n }\n let falseStatements = null;\n let falseWritten = null;\n if (plan.hasElse)\n {\n falseWritten = cloneWritten(rangeWritten);\n falseStatements = lowerRange(plan.region.elseInstruction + 1, plan.region.endInstruction, falseWritten, inLoop, branchNonUniform, loopExit);\n if (falseStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL fragment selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n falseStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: merge.falseCode || valueReference(program, merge.falseIncoming, inputs), type: merge.type }\n });\n }\n }\n statements.push({\n kind: \"if\",\n instructionIndex: ifInstruction.index,\n dxbcOffset: ifInstruction.dxbcOffset,\n condition: { code: `${condition} ${comparison} 0u`, type: \"bool\" },\n statements: trueStatements,\n ...(falseStatements ? { elseStatements: falseStatements } : {})\n });\n if (plan.hasElse)\n {\n const trueReturns = trueStatements.at(-1)?.kind === \"return\";\n const falseReturns = falseStatements.at(-1)?.kind === \"return\";\n for (const [ fieldId, target ] of rangeWritten)\n {\n const fromTrue = trueWritten.get(fieldId) || new Set();\n const fromFalse = falseWritten.get(fieldId) || new Set();\n if (trueReturns && !falseReturns) for (const component of fromFalse) target.add(component);\n else if (falseReturns && !trueReturns) for (const component of fromTrue) target.add(component);\n else if (!trueReturns && !falseReturns)\n {\n for (const component of fromTrue) if (fromFalse.has(component)) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n }\n return statements;\n }\n\n const lowered = lowerRange(0, program.instructions.length, written);\n if (!terminatesAllPaths(lowered)) throw new Error(\"WGSL fragment path must end in return\");\n const statements = hoistEscapingValues(lowered);\n if (compute)\n {\n if (context.requiresDerivativeUniformityOptOut)\n {\n throw new Error(\"WGSL compute cannot take screen-space derivatives or implicit-LOD samples\");\n }\n return {\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"compute\",\n entryPoint: \"main\",\n threadGroupSize: computeThreadGroupSize(program),\n ...computeBuiltinInputs(program),\n ...computeWorkgroupVariables(program),\n bindings,\n immediateConstantBuffer: program.immediateConstantBuffer || null,\n constTables: program.constTables || null,\n statements\n };\n }\n return {\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"fragment\",\n entryPoint: \"main\",\n interface: { inputs, outputs },\n bindings,\n ...(resourceTransformPlan\n ? { resourceTransforms: resourceTransformPlan.resourceTransforms }\n : {}),\n immediateConstantBuffer: program.immediateConstantBuffer || null,\n constTables: program.constTables || null,\n requiresDerivativeUniformityOptOut: context.requiresDerivativeUniformityOptOut,\n statements\n };\n}\n"],"names":["COMPONENTS","SUPPORTED_OPCODES","Set","METADATA_OPCODE_EXTENSIONS","COMPUTE_BUILTINS","Object","freeze","builtin","name","type","SAMPLE_OFFSET_OPCODES","NUMERIC_CONVERSIONS","itof","utof","ftoi","ftou","INPUT_BUILTINS","SV_POSITION","SV_ISFRONTFACE","scalarType","DERIVATIVES","deriv_rtx","deriv_rty","deriv_rtx_coarse","deriv_rty_coarse","deriv_rtx_fine","deriv_rty_fine","REQUIRES_UNIFORM_CONTROL_FLOW","keys","componentsFromMask","mask","filter","_","index","sampleOffsetArgument","instruction","viewDimension","controls","extensions","extension","typeName","length","Error","offsets","sampleOffsets","u","v","w","every","value","Number","isInteger","scalarTypeName","float32","int32","uint32","bool","bitpattern32","isDeadUntypedWrite","program","write","readValueIds","localSsaDestination","has","valueId","values","find","entry","id","Array","from","some","component","componentTypes","mixedImmediateTypes","types","map","size","valueType","wgslType","fieldType","count","scalar","packedComponent","indexOf","interfaceField","rows","direction","registerIndex","reduce","accumulator","signature","components","semantic","String","semanticName","toUpperCase","startsWith","componentTypeName","kind","semanticIndex","attribute","groupSignaturesByRegister","signatures","groups","Map","set","get","push","liveInputRegisters","registers","instructions","ref","dataflow","reads","flatMap","read","refs","origin","register","match","exec","add","validateInterpolation","input","declarations","opcodeName","data","modes","interpolationModeName","Boolean","mode","next","interpolation","sourceRead","operandIndex","vectorCode","parts","join","reinterpretCode","code","fromType","toType","context","to","includes","valueReference","inputs","target","field","packed","writeMask","rawSelectedComponents","operand","destinationMask","activeComponents","selected","swizzle","slice","immediateRawBits","immediateValues","sourceIndex","bits","immediateParts","expectedType","hex","toString","padStart","validateRcpImmediate","operands","fixedSourceLanes","exponent","bindingForOperand","bindings","resourceKind","rangeId","resourceReference","matches","binding","validateFixedHandleBinding","originalBindingForOperand","candidates","range","lowerBound","absoluteIndex","undefined","relative","registerSpace","identity","transformedSampleForOperand","transformedInputs","original","textureBinding","transform","output","transformId","layer","cbufferVectorIndex","indices","dimension","last","at","base","validateIndexableTempRead","storage","valueStorageType","indexCode","cbufferParts","vectorIndex","generatedSymbol","part","icbParts","immediateConstantBuffer","constTableParts","validateIndexableTempOperand","table","constTables","symbol","modifierOnStorage","modifier","bit","raw","masked","MODIFIER_STORAGE_TYPES","applyModifier","expected","storageTypes","modifierName","applyLaneModifier","targetType","unsupportedMinPrecision","minPrecisionName","operandLaneExpression","laneIndex","moverData","replicated","operandExpression","componentIndex","bitcast","typeInfo","bitcasts","operandTypes","bitcastKey","validateRegisterBitcasts","required","forEach","intrinsicResult","resultType","writes","actual","requiredKeys","sort","actualKeys","zeroMask","fullMask","oneMask","floatBound","splatScalar","structuredLoadExpression","addressOperand","immediateAddress","address","byteOffsetOperand","byteOffset","resource","strideBytes","wordCount","shared","groupSharedMemory","elementCount","validateFixedHandleOperand","buffer","structureStride","strideWords","firstWord","addressInRange","word","wordAddress","safeWordAddress","expressionFor","source","forcedCount","op","operator","div","iadd","mul","src","lane","lanes","width","offset","insert","divisor","dividendCode","divisorCode","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","conversion","fn","saturate","texture","mipOperand","mipBits","resinfoReturnTypeName","mipCount","level","levelInRange","dims","uav","bufferView","TYPED_VIEW_FORMATS","typedView","element","expand","loaded","storageTexture","access","dimensions","view","typedBufferLoad","safeLevel","safeCoordinates","inBounds","sampler","samplerBinding","emulatedAddressing","samplerModes","channel","offsetArg","gathered","transformed","coordComponents","gradientComponents","coord","arrayArg","coord3","tex","profile","declared","axes","forced","textures","emulated","ShouldEmulate","modesBuffer","bufferRegister","ModesExpression","ADDRESS_COORD_2","ADDRESS_COORD_3","sampled","bordered","ADDRESS_BORDER_2","ADDRESS_BORDER_3","BorderColorLiteral","borderColor","applyResultBitcast","expression","intrinsicType","declaration","stride","structureCount","computeWorkgroupVariables","variables","elementType","workgroupVariables","lowerGroupSharedStore","instructionIndex","dxbcOffset","condition","statements","lowerStorageTextureStore","returnType","arrayed","call","lowerInstruction","outputs","written","nonUniform","unsupportedExtension","compute","requiresDerivativeUniformityOptOut","validatePreciseInstruction","imprecise","missing","projection","testBoolean","scalarShape","flags","syncFlagNames","stage","destinationOperands","lowerWrite","destination","indexableAddress","validateIndexableTempWrite","mixedTypes","words","intrinsic","packedCode","packedName","packedType","laneType","whenTrue","whenFalse","immediateSource","clampBounds","floatType","outputType","assignmentExpression","assignment","fieldId","lowered","isArray","containsOutputAssignment","statement","elseStatements","clauses","clause","loopHasNonUniformExit","region","varying","regions","controlFlow","insideNestedLoop","candidate","startInstruction","endInstruction","conditionIsUniform","varyingGuard","lowerFragmentProgram","options","format","TypeError","lowerProgramBody","lowerGeneralComputeProgram","computeThreadGroupSize","group","threadGroupX","threadGroupY","threadGroupZ","isSafeInteger","computeBuiltinInputs","used","order","builtinInputs","shaderModel","major","minor","requireRefactoringAllowed","liveRegisters","planFromBinding","bindingPlan","resourceTransforms","normalizeResourceTransformPlan","formatVersion","explicitPlan","resourceTransformPlan","JSON","stringify","lowerBindingLayout","plans","buildSelectionPlans","computeVaryingValues","incoming","exitMergeAssignments","loopExit","breakIndex","assign","lowerRange","start","end","rangeWritten","inLoop","flowNonUniform","plan","marker","breakInstruction","conditionOperand","conditionRead","continueInstruction","loopInstruction","merge","merges","entryIncoming","exitMerges","zeroCode","bodyWritten","cloneWritten","loopNonUniform","body","exitEdges","latch","backedgeIncoming","continuing","switchInstruction","selectorOperand","selectorRead","selector","clauseNonUniform","clauseResults","clauseIndex","clauseWritten","bodyStart","bodyEnd","outerMerges","perClause","selectors","isDefault","returns","defaultInstruction","sets","terminatesAllPaths","ifInstruction","hasElse","elseInstruction","falseCode","falseIncoming","comparison","branchNonUniform","trueBodyEnd","trueWritten","trueStatements","viaSwitch","trueIncoming","falseStatements","falseWritten","trueReturns","falseReturns","fromTrue","fromFalse","hoistEscapingValues","entryPoint","threadGroupSize","interface"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lowerFragmentProgram.js","sources":["../../../../../../../src/resource/formats/webgpu/core/wgsl/lowerFragmentProgram.js"],"sourcesContent":["import {\n ADDRESS_BORDER_2,\n ADDRESS_BORDER_3,\n ADDRESS_COORD_2,\n ADDRESS_COORD_3,\n BorderColorLiteral,\n ModesExpression,\n ShouldEmulate\n} from \"./emulatedAddressing.js\";\nimport { fixedSourceLanes } from \"../ir/sourceLanes.js\";\nimport {\n validateIndexableTempOperand,\n validateIndexableTempRead,\n validateIndexableTempWrite\n} from \"../ir/indexableTemps.js\";\nimport { hoistEscapingValues } from \"./hoistEscapingValues.js\";\nimport { lowerBindingLayout } from \"./lowerBindingLayout.js\";\nimport { normalizeResourceTransformPlan } from \"./buildResourceTransformPlan.js\";\nimport { requireRefactoringAllowed, validatePreciseInstruction } from \"./precisionControls.js\";\nimport { buildSelectionPlans, cloneWritten, terminatesAllPaths } from \"./selectionPlans.js\";\nimport { computeVaryingValues, conditionIsUniform } from \"./uniformity.js\";\nimport { validateFixedHandleBinding, validateFixedHandleOperand } from \"./validateHandleOperand.js\";\nimport { TYPED_VIEW_FORMATS, typedBufferLoad } from \"./wgslTypedViews.js\";\n\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\nconst SUPPORTED_OPCODES = new Set([\n \"add\", \"and\", \"atomic_iadd\", \"bfi\", \"deriv_rtx\", \"deriv_rty\", \"deriv_rtx_coarse\",\n \"deriv_rty_coarse\", \"deriv_rtx_fine\", \"deriv_rty_fine\", \"discard\", \"div\",\n \"dp2\", \"dp3\", \"dp4\", \"eq\", \"exp\", \"f16tof32\", \"f32tof16\", \"frc\", \"ftoi\", \"gather4\",\n \"ftou\", \"ge\", \"iadd\", \"ieq\", \"ige\", \"ilt\", \"imad\", \"imax\", \"imin\", \"imul\",\n \"ine\", \"ineg\", \"ishl\", \"ishr\", \"if\", \"itof\", \"ld\", \"ld_structured\", \"ld_uav_typed\", \"log\", \"lt\",\n \"mad\", \"max\", \"min\", \"mov\", \"movc\", \"mul\", \"ne\", \"or\", \"rcp\", \"resinfo\",\n \"round_ne\", \"round_ni\", \"round_pi\", \"round_z\", \"rsq\", \"sample\", \"sample_b\", \"sample_d\",\n \"sample_l\", \"sincos\", \"sqrt\", \"store_structured\", \"sync\", \"udiv\", \"uge\", \"ubfe\", \"ibfe\", \"countbits\", \"ult\", \"umax\", \"umin\", \"ushr\",\n \"utof\", \"xor\", \"endif\", \"ret\", \"store_uav_typed\"\n]);\nconst METADATA_OPCODE_EXTENSIONS = new Set([ \"resource_dimension\", \"resource_return_type\" ]);\n\n/**\n * The compute thread-ID registers as WGSL entry-point builtins, for compute\n * programs lowered here (see `lowerGeneralComputeProgram`). Names match the\n * signatures `computeEntryPointParameters` accepts.\n */\nconst COMPUTE_BUILTINS = Object.freeze({\n \"input_thread_id[]\": Object.freeze({ builtin: \"global_invocation_id\", name: \"dispatch_thread_id\", type: \"vec3<u32>\" }),\n \"input_thread_id_in_group[]\": Object.freeze({ builtin: \"local_invocation_id\", name: \"local_invocation_id\", type: \"vec3<u32>\" }),\n \"input_thread_group_id[]\": Object.freeze({ builtin: \"workgroup_id\", name: \"workgroup_id\", type: \"vec3<u32>\" }),\n // SV_GroupIndex, a scalar: read without a component suffix.\n \"input_thread_id_in_group_flattened[]\": Object.freeze({ builtin: \"local_invocation_index\", name: \"local_invocation_index\", type: \"u32\" })\n});\nconst SAMPLE_OFFSET_OPCODES = new Set([ \"sample\", \"sample_b\", \"sample_d\", \"sample_l\" ]);\nconst NUMERIC_CONVERSIONS = Object.freeze({\n itof: [ \"int32\", \"float32\" ],\n utof: [ \"uint32\", \"float32\" ],\n ftoi: [ \"float32\", \"int32\" ],\n ftou: [ \"float32\", \"uint32\" ]\n});\n\nconst INPUT_BUILTINS = Object.freeze({\n SV_POSITION: { name: \"position\" },\n SV_ISFRONTFACE: { name: \"front_facing\", scalarType: \"bool\" }\n});\nconst DERIVATIVES = Object.freeze({\n deriv_rtx: \"dpdx\", deriv_rty: \"dpdy\",\n deriv_rtx_coarse: \"dpdxCoarse\", deriv_rty_coarse: \"dpdyCoarse\",\n deriv_rtx_fine: \"dpdxFine\", deriv_rty_fine: \"dpdyFine\"\n});\n// Operations that compute screen-space derivatives (the dpdx*/dpdy* family) or\n// derive them internally (implicit-LOD textureSample / textureSampleBias). WGSL\n// forbids these inside non-uniform control flow; see uniformity.js.\nconst REQUIRES_UNIFORM_CONTROL_FLOW = new Set([\n ...Object.keys(DERIVATIVES), \"sample\", \"sample_b\"\n]);\n\nfunction componentsFromMask(mask)\n{\n return COMPONENTS.filter((_, index) => (mask & (1 << index)) !== 0);\n}\n\nfunction sampleOffsetArgument(instruction, viewDimension)\n{\n const controls = instruction.extensions?.filter((extension) => extension.typeName === \"sample_controls\") || [];\n if (!controls.length) return \"\";\n if (controls.length !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has duplicate sample_controls extensions`);\n }\n if (viewDimension !== \"2d\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} immediate sample offsets support only 2d textures`);\n }\n const offsets = controls[0].sampleOffsets;\n if (![ offsets?.u, offsets?.v, offsets?.w ].every((value) =>\n Number.isInteger(value) && value >= -8 && value <= 7))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has invalid immediate sample offsets`);\n }\n // D3D ignores the w offset for Texture2D. WGSL takes the same signed,\n // texel-space u/v constants as the final sampling argument.\n return `, vec2<i32>(${offsets.u}, ${offsets.v})`;\n}\n\nfunction scalarTypeName(type)\n{\n return ({ float32: \"f32\", int32: \"i32\", uint32: \"u32\", bool: \"bool\", bitpattern32: \"u32\" })[type] || null;\n}\n\n/**\n * A compiler-emitted dead store to a local temp whose value nothing reads, and\n * whose type is therefore unresolvable, is skipped rather than failing the\n * module.\n */\nfunction isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)\n{\n if (!localSsaDestination || readValueIds.has(write.valueId)) return false;\n const value = program.values.find((entry) => entry.id === write.valueId);\n return Array.from(write.mask).some((component) => !scalarTypeName(value?.componentTypes?.[component]));\n}\n\nfunction mixedImmediateTypes(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n if (!value || write.mask.length < 2) return null;\n const types = Array.from(write.mask).map((component) => value.componentTypes?.[component]);\n if (types.some((type) => !scalarTypeName(type)) || new Set(types).size === 1) return null;\n return types;\n}\n\n\nfunction valueType(program, write)\n{\n const value = program.values.find((entry) => entry.id === write.valueId);\n const types = Array.from(write.mask).map((component) => value?.componentTypes?.[component]);\n if (!types.length || types.some((type) => !scalarTypeName(type)) || new Set(types).size !== 1)\n {\n throw new Error(`WGSL fragment value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n const scalarType = types[0];\n return {\n scalarType,\n wgslType: types.length === 1 ? scalarTypeName(scalarType) : `vec${types.length}<${scalarTypeName(scalarType)}>`\n };\n}\n\nfunction fieldType(scalarType, count)\n{\n const scalar = scalarTypeName(scalarType);\n if (!scalar) throw new Error(`WGSL fragment interface cannot use ${scalarType}`);\n return count === 1 ? scalar : `vec${count}<${scalar}>`;\n}\n\nfunction packedComponent(mask, component)\n{\n const index = Array.from(mask).indexOf(component);\n if (index < 0) throw new Error(`WGSL value mask ${mask} does not contain component ${component}`);\n return COMPONENTS[index];\n}\n\nfunction interfaceField(rows, direction)\n{\n const registerIndex = rows[0].registerIndex;\n const mask = rows.reduce((accumulator, signature) => accumulator | signature.mask, 0);\n const components = componentsFromMask(mask);\n if (!components.length || !components.every((component, index) => component === COMPONENTS[index]))\n {\n throw new Error(`WGSL fragment ${direction} register ${registerIndex} requires a prefix signature mask`);\n }\n const semantic = String(rows[0].semanticName || \"\").toUpperCase();\n if (direction === \"output\" && semantic !== \"SV_TARGET\")\n {\n throw new Error(`WGSL fragment output semantic ${semantic} is not supported`);\n }\n const builtin = direction === \"input\" ? INPUT_BUILTINS[semantic] || null : null;\n if (direction === \"input\" && rows.some((signature) => String(signature.semanticName || \"\").toUpperCase().startsWith(\"SV_\")) && !builtin)\n {\n throw new Error(`WGSL fragment live system input ${semantic} is not supported`);\n }\n const componentTypeName = rows[0].componentTypeName;\n if (rows.some((signature) => signature.componentTypeName !== componentTypeName))\n {\n throw new Error(`WGSL fragment ${direction} register ${registerIndex} packs mixed component types`);\n }\n const scalarType = builtin?.scalarType || componentTypeName;\n return {\n kind: \"interface-field\",\n id: `${direction}:r${registerIndex}`,\n direction,\n registerIndex,\n semanticName: rows[0].semanticName,\n semanticIndex: rows[0].semanticIndex,\n components,\n scalarType,\n type: builtin?.scalarType ? builtin.scalarType : fieldType(componentTypeName, components.length),\n name: builtin?.name || `${direction}${registerIndex}`,\n attribute: builtin\n ? { kind: \"builtin\", name: builtin.name }\n : { kind: \"location\", index: direction === \"output\" ? rows[0].semanticIndex : registerIndex }\n };\n}\n\n/**\n * Groups signature rows by register. DXBC can emit several rows for one\n * interpolant register when semantics occupy different lanes (three TEXCOORDs\n * packed into x/y/z); each row alone has a non-prefix mask. Grouping unions\n * the masks so `interfaceField` emits one field per register with the\n * register's true lane occupancy (prefix mask, one component type).\n */\nfunction groupSignaturesByRegister(signatures)\n{\n const groups = new Map();\n for (const signature of signatures)\n {\n if (!groups.has(signature.registerIndex)) groups.set(signature.registerIndex, []);\n groups.get(signature.registerIndex).push(signature);\n }\n return Array.from(groups.values());\n}\n\nfunction liveInputRegisters(program)\n{\n const values = new Map(program.values.map((value) => [ value.id, value ]));\n const registers = new Set();\n for (const instruction of program.instructions)\n {\n for (const ref of instruction.dataflow.reads.flatMap((read) => read.refs))\n {\n const value = values.get(ref.valueId);\n if (value?.origin === \"undefined-register\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} reads undefined ${value.register}.${ref.component}`);\n }\n const match = value?.origin === \"program-input\" && /^input\\[(\\d+)\\]$/.exec(value.register);\n if (match) registers.add(Number(match[1]));\n }\n }\n return registers;\n}\n\nfunction validateInterpolation(program, input)\n{\n if (input.attribute.kind === \"builtin\") return;\n // A merged location field may pack several signature rows onto one register\n // (component-packed varyings). WGSL interpolation is per-location, not per-\n // component, so EVERY dcl_input_ps covering this register must agree on one\n // supported mode — checking only the first row would let a differing lane\n // render with the wrong interpolation, which the browser gate cannot detect.\n // DXBC \"linear\" is perspective-correct (the WGSL default); DXBC\n // \"linear_noperspective\" maps exactly to `@interpolate(linear)` (center\n // sampling on both sides). Everything else fails closed.\n const declarations = program.declarations.filter((entry) =>\n entry.opcodeName === \"dcl_input_ps\" && entry.data?.registerIndex === input.registerIndex);\n const modes = new Set(declarations.map((entry) => entry.data?.interpolationModeName).filter(Boolean));\n if (modes.size > 1)\n {\n throw new Error(`WGSL fragment input r${input.registerIndex} packs mixed interpolation modes`);\n }\n const mode = modes.values().next().value;\n if (!mode || mode === \"linear\") return;\n if (mode === \"linear_noperspective\")\n {\n input.interpolation = \"linear\";\n return;\n }\n throw new Error(`WGSL fragment input r${input.registerIndex} has unsupported interpolation ${mode}`);\n}\n\nfunction sourceRead(instruction, operandIndex)\n{\n return instruction.dataflow.reads.find((entry) =>\n entry.kind !== \"index-read\" && entry.operandIndex === operandIndex) || null;\n}\n\nfunction vectorCode(parts, scalarType)\n{\n if (parts.length === 1) return parts[0];\n return `vec${parts.length}<${scalarTypeName(scalarType)}>(${parts.join(\", \")})`;\n}\n\nfunction reinterpretCode(code, fromType, toType, count, context)\n{\n const from = scalarTypeName(fromType);\n const to = scalarTypeName(toType);\n if (!from || !to) throw new Error(`WGSL fragment cannot resolve ${context} type ${fromType} to ${toType}`);\n if (from === to) return code;\n if (![ \"f32\", \"i32\", \"u32\" ].includes(from) || ![ \"f32\", \"i32\", \"u32\" ].includes(to))\n {\n throw new Error(`WGSL fragment cannot reinterpret ${context} from ${fromType} to ${toType}`);\n }\n return `bitcast<${fieldType(toType, count)}>(${code})`;\n}\n\nfunction valueReference(program, ref, inputs)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n if (!value) throw new Error(`WGSL fragment references missing value ${ref.valueId}`);\n if (value.origin === \"undefined-register\") throw new Error(`WGSL fragment reads undefined ${value.register}.${ref.component}`);\n if (value.origin === \"program-input\" && COMPUTE_BUILTINS[value.register])\n {\n const builtin = COMPUTE_BUILTINS[value.register];\n const target = value.componentTypes?.[ref.component];\n const code = builtin.type === \"u32\" ? builtin.name : `${builtin.name}.${ref.component}`;\n return reinterpretCode(code, \"uint32\", target, 1, `${value.register}.${ref.component}`);\n }\n if (value.origin === \"program-input\")\n {\n const registerIndex = Number(/^input\\[(\\d+)\\]$/.exec(value.register)?.[1]);\n const field = inputs.find((entry) => entry.registerIndex === registerIndex);\n if (!field) throw new Error(`WGSL fragment has no live input field for ${value.register}`);\n const packed = packedComponent(field.components.join(\"\"), ref.component);\n const code = field.components.length === 1 ? `input.${field.name}` : `input.${field.name}.${packed}`;\n const target = value.componentTypes?.[ref.component];\n if (field.scalarType === \"bool\")\n {\n // SV_IsFrontFace: DXBC reads a 0xFFFFFFFF/0 mask, WGSL's\n // front_facing is bool.\n if (target === \"bool\") return code;\n if (target === \"uint32\" || target === \"bitpattern32\") return `select(0u, 0xffffffffu, ${code})`;\n if (target === \"int32\") return `select(0i, -1i, ${code})`;\n throw new Error(`WGSL fragment cannot consume boolean ${value.register}.${ref.component} as ${target}`);\n }\n return reinterpretCode(code, field.scalarType, target, 1, `${value.register}.${ref.component}`);\n }\n if (value.origin === \"instruction-write\" && value.writeMask.length > 1)\n {\n const componentTypes = Array.from(value.writeMask).map((component) => value.componentTypes?.[component]);\n if (new Set(componentTypes).size > 1) return `${value.id}_${ref.component}`;\n }\n const packed = packedComponent(value.writeMask, ref.component);\n return value.writeMask.length === 1 ? value.id : `${value.id}.${packed}`;\n}\n\nfunction rawSelectedComponents(operand, destinationMask, count, activeComponents = null)\n{\n const selected = operand.selected || \"\";\n if (selected) return Array.from({ length: count }, () => selected);\n const swizzle = operand.swizzle || \"xyzw\";\n const mask = activeComponents || Array.from(destinationMask);\n return mask.slice(0, count).map((component) => swizzle[COMPONENTS.indexOf(component)] || swizzle[0]);\n}\n\nfunction immediateRawBits(operand, destinationMask, count, activeComponents = null)\n{\n const values = operand.immediateValues || [];\n const components = rawSelectedComponents(operand, destinationMask, count, activeComponents);\n return components.map((component, index) =>\n {\n const sourceIndex = values.length === 1 ? 0 : COMPONENTS.indexOf(component);\n const bits = values[sourceIndex]?.uint32 ?? values[index]?.uint32;\n if (!Number.isInteger(bits)) throw new Error(\"WGSL fragment immediate has no raw uint32 bits\");\n return bits >>> 0;\n });\n}\n\nfunction immediateParts(operand, destinationMask, count, expectedType, activeComponents = null)\n{\n return immediateRawBits(operand, destinationMask, count, activeComponents).map((bits) =>\n {\n const hex = `0x${(bits >>> 0).toString(16).padStart(8, \"0\")}u`;\n if (expectedType === \"float32\") return `bitcast<f32>(${hex})`;\n if (expectedType === \"int32\") return `bitcast<i32>(${hex})`;\n return hex;\n });\n}\n\nfunction validateRcpImmediate(program, instruction, write)\n{\n const operand = instruction.operands[1];\n if (operand?.typeName !== \"immediate32\") return;\n const activeComponents = fixedSourceLanes(instruction, 1, program);\n const bits = immediateRawBits(operand, write.mask, write.mask.length, activeComponents);\n if (bits.some((value) =>\n {\n const exponent = (value >>> 23) & 0xff;\n return exponent === 0 || exponent === 0xff;\n }))\n {\n throw new Error(`WGSL fragment rcp instruction ${instruction.index} requires finite normal immediate source lanes`);\n }\n}\n\nfunction bindingForOperand(bindings, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n if (Number.isInteger(rangeId))\n {\n const matches = bindings.filter((entry) => entry.resourceKind === resourceKind && entry.rangeId === rangeId);\n if (matches.length > 1)\n {\n throw new Error(`WGSL fragment ${resourceKind} range ${rangeId} is ambiguous`);\n }\n const binding = matches[0] || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"fragment\");\n }\n const binding = bindings.find((entry) =>\n entry.resourceKind === resourceKind && entry.registerIndex === operand.registerIndex) || null;\n return resourceKind === \"uniform-buffer\"\n ? binding\n : validateFixedHandleBinding(operand, binding, \"fragment\");\n}\n\nfunction originalBindingForOperand(program, resourceKind, operand)\n{\n const rangeId = operand.resourceReference?.rangeId;\n const candidates = program.bindings.filter((entry) =>\n entry.resourceKind === resourceKind);\n const matches = Number.isInteger(rangeId)\n ? candidates.filter((entry) => entry.range?.rangeId === rangeId)\n : candidates.filter((entry) =>\n (entry.range?.lowerBound ?? entry.registerIndex) === operand.registerIndex);\n if (matches.length > 1)\n {\n throw new Error(`WGSL fragment ${resourceKind} source identity is ambiguous`);\n }\n const binding = matches[0] || null;\n if (!binding) return null;\n const absoluteIndex = operand.resourceReference?.absoluteIndex;\n const registerIndex = binding.range?.lowerBound ?? binding.registerIndex;\n if (absoluteIndex !== undefined\n && (absoluteIndex?.relative\n || absoluteIndex?.values?.length !== 1\n || absoluteIndex.values[0] !== registerIndex))\n {\n throw new Error(`WGSL fragment ${resourceKind} source identity is out of range`);\n }\n const registerSpace = binding.range?.registerSpace ?? 0;\n return {\n binding,\n identity: `${resourceKind}:${registerSpace}:${registerIndex}`\n };\n}\n\nfunction transformedSampleForOperand(program, operand, bindings, context)\n{\n if (!context?.transformedInputs?.size) return null;\n const original = originalBindingForOperand(program, \"sampled-resource\", operand);\n const input = original ? context.transformedInputs.get(original.identity) : null;\n if (!input) return null;\n const textureBinding = bindings.find((binding) =>\n binding.resourceKind === \"sampled-resource\"\n && binding.identity === input.transform.output.identity\n && binding.transformId === input.transform.id) || null;\n if (!textureBinding)\n {\n throw new Error(`WGSL fragment resource transform ${input.transform.id} has no physical binding`);\n }\n return { textureBinding, layer: input.layer };\n}\n\nfunction cbufferVectorIndex(program, instruction, operandIndex, operand, inputs)\n{\n const indices = operand.indices || [];\n for (let dimension = 0; dimension < indices.length - 1; dimension += 1)\n {\n if (indices[dimension].relative) throw new Error(\"WGSL fragment does not support dynamic cbuffer register selection\");\n }\n const last = indices.at(-1);\n const base = last?.values?.length ? last.values[0] : (last?.relative ? 0 : undefined);\n if (!Number.isInteger(base) || base < 0) throw new Error(\"WGSL fragment cbuffer operand has no immediate vector index\");\n if (!last.relative) return `${base}`;\n const read = instruction.dataflow.reads.find((entry) => entry.kind === \"index-read\"\n && entry.operandIndex === operandIndex && entry.dimension === indices.length - 1);\n if (!read || read.refs.length !== 1) throw new Error(\"WGSL fragment dynamic cbuffer index has no resolved register\");\n if (last.relative?.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(program, last.relative, read, rawSelectedComponents(last.relative, \"x\", 1));\n }\n const ref = read.refs[0];\n const storage = valueStorageType(program, ref);\n let indexCode = valueReference(program, ref, inputs);\n if (storage === \"uint32\" || storage === \"bitpattern32\") indexCode = `i32(${indexCode})`;\n else if (storage !== \"int32\") throw new Error(`WGSL fragment dynamic cbuffer index has unsupported type ${storage}`);\n return base === 0 ? indexCode : `${base} + ${indexCode}`;\n}\n\nfunction cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedType, inputs, activeComponents = null)\n{\n const binding = bindingForOperand(bindings, \"uniform-buffer\", operand);\n if (!binding) throw new Error(`WGSL fragment cannot resolve cb${operand.registerIndex}`);\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${binding.generatedSymbol}[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret cbuffer lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents = null)\n{\n if (!program.immediateConstantBuffer?.length)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has no immediate constant buffer`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `icb[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret icb lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\nfunction constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents = null)\n{\n if (validateIndexableTempOperand(program, operand, \"source\") !== null)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} fixed indexable temp has no resolved SSA read`);\n }\n const registerIndex = operand.indices?.[0]?.values?.[0];\n const table = (program.constTables || []).find((entry) => entry.registerIndex === registerIndex);\n if (!table)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} indexable temp x${registerIndex} is not a supported constant table`);\n }\n const vectorIndex = cbufferVectorIndex(program, instruction, operandIndex, operand, inputs);\n const parts = rawSelectedComponents(operand, destinationMask, count, activeComponents)\n .map((component) => `${table.symbol}[${vectorIndex}].${component}`);\n if (expectedType === \"float32\") return parts;\n if (![ \"int32\", \"uint32\", \"bitpattern32\" ].includes(expectedType))\n {\n throw new Error(`WGSL fragment cannot reinterpret constant-table lanes as ${expectedType}`);\n }\n const target = scalarTypeName(expectedType);\n return parts.map((part) => `bitcast<${target}>(${part})`);\n}\n\n// DXBC float source modifiers are selected by the consuming opcode. Integer\n// consumers admit two's-complement negation only. Bit-preserving movers\n// (unknown expected type) apply the FLOAT semantics to raw lane bits\n// (\"modifiers assume float data\"), represented as sign-bit arithmetic.\nfunction modifierOnStorage(part, storage, modifier)\n{\n if (storage === \"float32\")\n {\n if (modifier === \"neg\") return `-(${part})`;\n if (modifier === \"abs\") return `abs(${part})`;\n return `-(abs(${part}))`;\n }\n const bit = modifier === \"neg\" ? \"^ 0x80000000u\" : modifier === \"abs\" ? \"& 0x7fffffffu\" : \"| 0x80000000u\";\n const raw = storage === \"int32\" ? `bitcast<u32>(${part})` : part;\n const masked = `(${raw} ${bit})`;\n return storage === \"int32\" ? `bitcast<i32>(${masked})` : masked;\n}\n\nconst MODIFIER_STORAGE_TYPES = new Set([ \"float32\", \"int32\", \"uint32\", \"bitpattern32\" ]);\n\n/**\n * Applies a DXBC source modifier according to the consuming instruction's\n * type: float consumers get IEEE negate/abs; `int32` `neg` is `-(x)` and\n * `uint32` `neg` the wrapping `(0u - x)` (WGSL has no unary minus on u32);\n * integer `abs`/`absneg` fail closed because the absolute modifier is\n * defined only for float instructions. Bit-preserving movers apply float\n * semantics to the raw lane bits through `modifierOnStorage`. Float operators\n * match D3D for finite non-zero inputs; signed-zero and non-finite cases keep\n * WGSL's latitude.\n */\nfunction applyModifier(parts, operand, expected, storageTypes, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return parts;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier))\n {\n throw new Error(`WGSL fragment operand modifier ${modifier} is not supported`);\n }\n if (expected === \"float32\")\n {\n if (modifier === \"neg\") return parts.map((part) => `-(${part})`);\n if (modifier === \"abs\") return parts.map((part) => `abs(${part})`);\n return parts.map((part) => `-(abs(${part}))`);\n }\n if (expected === \"int32\" && modifier === \"neg\")\n {\n return parts.map((part) => `-(${part})`);\n }\n if (expected === \"uint32\" && modifier === \"neg\")\n {\n return parts.map((part) => `(0u - ${part})`);\n }\n if (expected === \"bitpattern32\")\n {\n return parts.map((part) => modifierOnStorage(part, \"bitpattern32\", modifier));\n }\n if (expected === \"unknown\" && storageTypes?.length === parts.length\n && storageTypes.every((storage) => MODIFIER_STORAGE_TYPES.has(storage)))\n {\n return parts.map((part, index) => modifierOnStorage(part, storageTypes[index], modifier));\n }\n throw new Error(`WGSL fragment instruction ${instruction?.index} operand ${operandIndex} uses an unsupported ${modifier} modifier for ${expected}`);\n}\n\n\nfunction applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n{\n const modifier = operand.modifierName || \"none\";\n if (modifier === \"none\") return code;\n if (![ \"neg\", \"abs\", \"absneg\" ].includes(modifier) || !MODIFIER_STORAGE_TYPES.has(targetType))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} lane operand ${operandIndex} uses an unsupported ${modifier} modifier for ${targetType}`);\n }\n // The per-lane path is reached only from bit-preserving movc lanes, where\n // DXBC applies the float modifier semantics to the raw lane bits; the lane\n // code is already reinterpreted to targetType.\n return modifierOnStorage(code, targetType, modifier);\n}\n\nfunction unsupportedMinPrecision(operand)\n{\n // D3D minimum precision is a floor, not a format: computing float_16\n // operands at full 32-bit is a conforming implementation, so they promote\n // to ordinary f32 lanes (registers are 32-bit either way). Other kinds\n // stay fail-closed until a shader needs them.\n const name = operand.minPrecisionName || \"default\";\n return name !== \"default\" && name !== \"float_16\";\n}\n\nfunction operandLaneExpression(program, instruction, operandIndex, destinationMask, laneIndex, targetType, inputs, bindings,\n moverData = false)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL fragment instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n rawSelectedComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n if (read)\n {\n const replicated = read.refs.length === 1 && Boolean(operand.selected);\n if (!replicated && laneIndex >= read.refs.length)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has too few source lanes`);\n }\n const ref = replicated ? read.refs[0] : read.refs[laneIndex];\n const storage = valueStorageType(program, ref);\n const code = reinterpretCode(valueReference(program, ref, inputs), storage, targetType, 1,\n `instruction ${instruction.index} lane read`);\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n const component = destinationMask[laneIndex];\n if (operand.typeName === \"immediate32\")\n {\n const code = immediateParts(operand, component, 1, targetType)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n if (operand.typeName === \"constant_buffer\")\n {\n const code = cbufferParts(program, instruction, operandIndex, operand, component, 1, bindings, targetType, inputs)[0];\n return moverData\n ? applyLaneModifier(code, operand, targetType, instruction, operandIndex)\n : applyModifier([ code ], operand, targetType, null, instruction, operandIndex)[0];\n }\n throw new Error(`WGSL fragment instruction ${instruction.index} cannot lower ${operand.typeName} lane operand ${operandIndex}`);\n}\n\nfunction operandExpression(program, instruction, operandIndex, destinationMask, count, expectedType, inputs, bindings)\n{\n const operand = instruction.operands[operandIndex];\n if (!operand) throw new Error(`WGSL fragment instruction ${instruction.index} has no operand ${operandIndex}`);\n if (unsupportedMinPrecision(operand))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${operand.minPrecisionName} is not supported`);\n }\n const read = sourceRead(instruction, operandIndex);\n const activeComponents = fixedSourceLanes(instruction, operandIndex, program);\n if (read && operand.typeName === \"indexable_temp\")\n {\n validateIndexableTempRead(\n program, operand, read,\n rawSelectedComponents(operand, destinationMask, read.refs.length, activeComponents));\n }\n let parts;\n if (read)\n {\n if (read.refs.length < count) throw new Error(`WGSL fragment instruction ${instruction.index} has too few source lanes`);\n parts = read.refs.slice(0, count).map((ref, componentIndex) =>\n {\n let part = valueReference(program, ref, inputs);\n const bitcast = instruction.typeInfo.bitcasts.find((entry) => entry.kind === \"read-bitcast\"\n && entry.operandIndex === operandIndex && entry.componentIndex === componentIndex\n && entry.valueId === ref.valueId && entry.component === ref.component);\n if (bitcast)\n {\n part = reinterpretCode(part, bitcast.from, bitcast.to, 1, `instruction ${instruction.index} read`);\n }\n return part;\n });\n }\n else if (operand.typeName === \"immediate32\")\n {\n parts = immediateParts(operand, destinationMask, count, expectedType, activeComponents);\n }\n else if (operand.typeName === \"constant_buffer\")\n {\n parts = cbufferParts(program, instruction, operandIndex, operand, destinationMask, count, bindings, expectedType, inputs, activeComponents);\n }\n else if (operand.typeName === \"indexable_temp\")\n {\n parts = constTableParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents);\n }\n else if (operand.typeName === \"immediate_constant_buffer\")\n {\n parts = icbParts(program, instruction, operandIndex, operand, destinationMask, count, expectedType, inputs, activeComponents);\n }\n else\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} cannot lower ${operand.typeName} operand ${operandIndex}`);\n }\n const storageTypes = (operand.modifierName || \"none\") !== \"none\" && expectedType === \"unknown\" && read\n ? read.refs.slice(0, count).map((ref) => valueStorageType(program, ref))\n : null;\n return vectorCode(applyModifier(parts, operand, expectedType, storageTypes, instruction, operandIndex), expectedType);\n}\n\nfunction expectedType(instruction, operandIndex)\n{\n return instruction.typeInfo.operandTypes.find((entry) => entry.operandIndex === operandIndex)?.expectedType || \"unknown\";\n}\n\nfunction valueStorageType(program, ref)\n{\n const value = program.values.find((entry) => entry.id === ref.valueId);\n return value?.componentTypes?.[ref.component] || \"unknown\";\n}\n\nfunction bitcastKey(entry)\n{\n if (entry.kind === \"read-bitcast\")\n {\n return [ entry.kind, entry.operandIndex, entry.componentIndex, entry.valueId, entry.component,\n entry.from, entry.to ].join(\":\");\n }\n return [ entry.kind, entry.operandIndex, entry.valueId, entry.component, entry.from, entry.to ].join(\":\");\n}\n\nfunction validateRegisterBitcasts(program, instruction)\n{\n const required = [];\n for (const read of instruction.dataflow.reads)\n {\n if (read.kind === \"index-read\") continue;\n const expected = expectedType(instruction, read.operandIndex);\n if (expected === \"unknown\") continue;\n read.refs.forEach((ref, componentIndex) =>\n {\n const storage = valueStorageType(program, ref);\n if (storage !== \"unknown\" && storage !== expected)\n {\n required.push({\n kind: \"read-bitcast\",\n operandIndex: read.operandIndex,\n componentIndex,\n valueId: ref.valueId,\n component: ref.component,\n from: storage,\n to: expected\n });\n }\n });\n }\n const intrinsicResult = instruction.typeInfo.resultType;\n if (intrinsicResult !== \"unknown\")\n {\n for (const write of instruction.dataflow.writes)\n {\n for (const component of write.mask)\n {\n const storage = valueStorageType(program, { valueId: write.valueId, component });\n if (storage !== \"unknown\" && storage !== intrinsicResult)\n {\n required.push({\n kind: \"result-bitcast\",\n operandIndex: write.operandIndex,\n valueId: write.valueId,\n component,\n from: intrinsicResult,\n to: storage\n });\n }\n }\n }\n }\n const actual = instruction.typeInfo.bitcasts.filter((entry) =>\n entry.kind === \"read-bitcast\" || entry.kind === \"result-bitcast\");\n const requiredKeys = required.map(bitcastKey).sort();\n const actualKeys = actual.map(bitcastKey).sort();\n if (new Set(actualKeys).size !== actualKeys.length\n || requiredKeys.length !== actualKeys.length\n || requiredKeys.some((entry, index) => entry !== actualKeys[index]))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has inconsistent register bitcast metadata`);\n }\n}\n\nfunction zeroMask(count)\n{\n return count === 1 ? \"0u\" : `vec${count}<u32>(0u)`;\n}\n\nfunction fullMask(count)\n{\n return count === 1 ? \"0xffffffffu\" : `vec${count}<u32>(0xffffffffu)`;\n}\n\nfunction oneMask(count)\n{\n return count === 1 ? \"1u\" : `vec${count}<u32>(1u)`;\n}\n\nfunction floatBound(count, value)\n{\n return count === 1 ? value : `vec${count}<f32>(${value})`;\n}\n\nfunction splatScalar(code, count)\n{\n return count === 1 ? code : `vec${count}<f32>(${code})`;\n}\n\n/**\n * `ld_structured` with one unmodified scalar address, an immediate DWORD byte\n * offset and a fixed resource. Every word fetch is clamped into the storage\n * array and selected to zero when the structure index is outside\n * `arrayLength / stride`, reproducing D3D's zero result without an invalid\n * access. Offset plus swizzle beyond the declared stride fails closed, so\n * D3D's undefined byte-offset overrun is never emitted.\n */\nfunction structuredLoadExpression(program, instruction, write, type, inputs, bindings)\n{\n const count = write.mask.length;\n if (instruction.operands.length !== 4)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires four operands`);\n }\n const addressOperand = instruction.operands[1];\n // A literal structure index (`ld_structured r0.y, l(1), l(0), g0.x`) is as\n // scalar as a selected register component; occludermanagement's\n // CopyCounters reads its four group-shared words that way.\n const immediateAddress = addressOperand?.typeName === \"immediate32\" && addressOperand.immediateValues?.length === 1;\n if ((!immediateAddress && !COMPONENTS.includes(addressOperand?.selected)) || (addressOperand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires one unmodified scalar address`);\n }\n const address = operandExpression(program, instruction, 1, write.mask, 1, \"uint32\", inputs, bindings);\n const byteOffsetOperand = instruction.operands[2];\n const byteOffset = byteOffsetOperand?.immediateValues?.[0]?.uint32;\n if (byteOffsetOperand?.typeName !== \"immediate32\" || byteOffsetOperand.immediateValues?.length !== 1\n || (byteOffsetOperand.modifierName || \"none\") !== \"none\"\n || !Number.isInteger(byteOffset) || byteOffset % 4 !== 0)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} requires an immediate DWORD byte offset`);\n }\n let resource;\n let strideBytes;\n let symbol;\n let wordCount;\n if (instruction.operands[3]?.typeName === \"thread_group_shared_memory\")\n {\n // Group-shared memory: a fixed-size workgroup array, so its length is\n // a constant rather than arrayLength.\n resource = instruction.operands[3];\n const shared = groupSharedMemory(program, resource.registerIndex, instruction);\n strideBytes = shared.strideBytes;\n symbol = shared.name;\n wordCount = `${shared.elementCount}u`;\n }\n else\n {\n resource = validateFixedHandleOperand(instruction, 3, \"resource\", \"fragment\");\n const binding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!binding?.buffer || !Number.isInteger(binding.structureStride))\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} has no structured buffer binding`);\n }\n strideBytes = binding.structureStride;\n symbol = binding.generatedSymbol;\n wordCount = `arrayLength(&${symbol})`;\n }\n const strideWords = strideBytes / 4;\n const firstWord = byteOffset / 4;\n const addressInRange = `${address} < (${wordCount} / ${strideWords}u)`;\n const swizzle = rawSelectedComponents(resource, write.mask, count);\n const selected = swizzle.map((component) =>\n {\n const index = COMPONENTS.indexOf(component);\n const word = firstWord + index;\n if (index < 0 || word >= strideWords)\n {\n throw new Error(`WGSL fragment structured load ${instruction.index} exceeds its ${strideBytes}-byte stride`);\n }\n const wordAddress = `((${address}) * ${strideWords}u) + ${word}u`;\n const safeWordAddress = `min(${wordAddress}, ${wordCount} - 1u)`;\n return `select(0u, ${symbol}[${safeWordAddress}], ${addressInRange})`;\n });\n if (type === null) return selected;\n const parts = selected.map((part) => reinterpretCode(part, \"uint32\", type.scalarType, 1,\n `structured load ${instruction.index}`));\n return vectorCode(parts, type.scalarType);\n}\n\n/**\n * Lowers one result-writing instruction to a WGSL expression. The vertex\n * lowerer's `expressionFor` follows the same rules for the opcodes it admits.\n *\n * Mappings and deliberate adaptations (ordinary WGSL float operations keep\n * WGSL's rounding, denormal, zero-sign and finite-math latitude, so D3D's\n * NaN/infinity tables are not portable on edge inputs):\n * - comparisons produce D3D's 0xFFFFFFFF/0 masks as\n * `select(0u, 0xffffffffu, a OP b)`, keeping mask arithmetic bit-faithful;\n * - `rcp` is `1.0 / x`. WGSL's 2.5 ULP division meets DXBC's 2^-21 relative\n * error for finite normal `abs(x)` in [2^-126, 2^126]; signed-zero,\n * subnormal and non-finite results are not portable, so immediate lanes\n * with exponent 0 or 255 are rejected (`validateRcpImmediate`). `div`\n * shares the dynamic caveats;\n * - `udiv` keeps direct `/`/`%` for all-non-zero immediate divisors, else\n * `select(0xffffffffu, a / max(b, 1u), b != 0u)`: D3D defines x/0 as\n * UINT_MAX and WGSL evaluates both `select` arms eagerly. Two destinations\n * need matching masks (also for `sincos`);\n * - `imul`/`umul`: only the low-half destination; WGSL has no 32x32->64;\n * - `ishl`/`ishr` cast the count to `u32`; `round_ne` is `round` (ties to\n * even), `round_pi` `ceil`, `round_ni` `floor`, `round_z` `trunc`;\n * - `ftoi`/`ftou` are `i32(x)`/`u32(x)`: exact for in-range finite input; NaN\n * is indeterminate and positive overflow clamps to 2147483520/4294967040\n * where D3D gives 0 and the integer maximum;\n * - `f16tof32`/`f32tof16` use `unpack2x16float`/`pack2x16float` per lane,\n * exact for finite normal binary16 values; subnormals may flush, zero sign\n * may be lost, and D3D's round-toward-zero and signed-max overflow are not\n * reproduced;\n * - `resinfo`: 2D/3D textures, immediate mip; a non-zero mip queries a\n * clamped level and selects zero dimensions when out of range (D3D's\n * defined result). `_rcpFloat` reciprocates dimensions only; saturation is\n * unsupported. D3D's zero result for an unbound resource is out of scope:\n * WebGPU requires every declared binding;\n * - `ld` on a 2D texture clamps coordinates and mip for the eager\n * `textureLoad`, then selects zero unless the original address was in\n * range. The zero vector is exact only for four-component views; a\n * one- or two-component view would need D3D's missing-channel defaults;\n * - 2D-array sampling passes the layer as `i32(round(layer))`: D3D rounds\n * ties to even and clamps, as WGSL `round` and sampling do. `sample_d`\n * gradients use xy for 2d/2d-array and xyz otherwise.\n */\nfunction expressionFor(program, instruction, write, inputs, bindings, context = null)\n{\n const mask = write.mask;\n const count = mask.length;\n const source = (index, forcedCount = count) => operandExpression(\n program, instruction, index, mask, forcedCount, expectedType(instruction, index), inputs, bindings);\n const op = instruction.opcodeName;\n if ([ \"add\", \"div\", \"iadd\", \"mul\" ].includes(op))\n {\n const operator = { add: \"+\", div: \"/\", iadd: \"+\", mul: \"*\" }[op];\n return `(${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mad\" || op === \"imad\" || op === \"umad\") return `((${source(1)} * ${source(2)}) + ${source(3)})`;\n if (op === \"f16tof32\" || op === \"f32tof16\")\n {\n const src = source(1);\n const lane = (index) => (count === 1 ? `(${src})` : `(${src})[${index}]`);\n const parts = Array.from({ length: count }, (_, index) => (op === \"f16tof32\"\n ? `unpack2x16float(${lane(index)}).x`\n : `(pack2x16float(vec2<f32>(${lane(index)}, 0.0)) & 0xffffu)`));\n return vectorCode(parts, op === \"f16tof32\" ? \"float32\" : \"uint32\");\n }\n if (op === \"bfi\")\n {\n // D3D11 masks width and offset to five bits and truncates the\n // insertion mask at bit 32; insertBits clamps count to 32 - offset,\n // which is the same truncation. WGSL takes a scalar offset and count,\n // so each lane is lowered on its own.\n const lanes = [ source(1), source(2), source(3), source(4) ].map((code) =>\n (index) => (count === 1 ? `(${code})` : `(${code})[${index}]`));\n const [ width, offset, insert, base ] = lanes;\n const parts = Array.from({ length: count }, (_, index) =>\n `insertBits(${base(index)}, ${insert(index)}, ${offset(index)} & 31u, ${width(index)} & 31u)`);\n return vectorCode(parts, \"uint32\");\n }\n if (op === \"ubfe\")\n {\n // D3D11 masks width and offset to five bits, yields 0 for width 0 and\n // stops at bit 31; extractBits clamps count to 32 - offset and yields\n // 0 for count 0, which is the same field. Scalar offset and count, so\n // lowered per lane.\n const lanes = [ source(1), source(2), source(3) ].map((code) =>\n (index) => (count === 1 ? `(${code})` : `(${code})[${index}]`));\n const [ width, offset, value ] = lanes;\n const parts = Array.from({ length: count }, (_, index) =>\n `extractBits(${value(index)}, ${offset(index)} & 31u, ${width(index)} & 31u)`);\n return vectorCode(parts, \"uint32\");\n }\n // D3D countbits is WGSL countOneBits, component-wise on u32.\n if (op === \"countbits\") return `countOneBits(${source(1)})`;\n if (op === \"ibfe\")\n {\n // ubfe's signed twin. D3D11 masks width and offset to five bits, yields\n // 0 for width 0, sign-extends the field from its top bit, and when the\n // field runs past bit 31 is an arithmetic shift right by offset. WGSL's\n // i32 extractBits clamps count to 32 - offset and sign-extends from\n // the last extracted bit: the same field.\n // All three sources are signed here (inferValueTypes' INT_OPS); width\n // and offset become the u32 counts extractBits takes.\n const lanes = [ source(1), source(2), source(3) ].map((code) =>\n (index) => (count === 1 ? `(${code})` : `(${code})[${index}]`));\n const [ width, offset, value ] = lanes;\n const parts = Array.from({ length: count }, (_, index) =>\n `extractBits(${value(index)}, u32(${offset(index)}) & 31u, u32(${width(index)}) & 31u)`);\n return vectorCode(parts, \"int32\");\n }\n if (op === \"imul\" || op === \"umul\")\n {\n if (write.operandIndex !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} does not support the ${op} high result`);\n }\n return `(${source(2)} * ${source(3)})`;\n }\n if (op === \"udiv\")\n {\n const divisor = instruction.operands[3];\n const lanes = (divisor?.immediateValues || []).map((value) => value.uint32);\n const operator = write.operandIndex === 0 ? \"/\" : write.operandIndex === 1 ? \"%\" : null;\n if (!operator) throw new Error(`WGSL fragment udiv instruction ${instruction.index} has an unexpected destination operand`);\n if (divisor?.typeName === \"immediate32\" && (divisor.modifierName ?? \"none\") === \"none\" && lanes.length\n && lanes.every((value) => Number.isInteger(value) && value !== 0))\n {\n return `(${source(2)} ${operator} ${source(3)})`;\n }\n const dividendCode = source(2);\n const divisorCode = source(3);\n return `select(${fullMask(count)}, (${dividendCode} ${operator} max(${divisorCode}, ${oneMask(count)})), ${divisorCode} != ${zeroMask(count)})`;\n }\n if ([ \"max\", \"imax\", \"umax\" ].includes(op)) return `max(${source(1)}, ${source(2)})`;\n if ([ \"min\", \"imin\", \"umin\" ].includes(op)) return `min(${source(1)}, ${source(2)})`;\n if (op === \"ishl\") return `(${source(1)} << u32(${source(2)}))`;\n if (op === \"ishr\") return `(${source(1)} >> u32(${source(2)}))`;\n if (op === \"and\") return `(${source(1)} & ${source(2)})`;\n if (op === \"or\") return `(${source(1)} | ${source(2)})`;\n if (op === \"xor\") return `(${source(1)} ^ ${source(2)})`;\n if (op === \"ushr\") return `(${source(1)} >> ${source(2)})`;\n if ([ \"lt\", \"ge\", \"eq\", \"ne\", \"ilt\", \"ige\", \"ieq\", \"ine\", \"ult\", \"uge\" ].includes(op))\n {\n const operator = { lt: \"<\", ge: \">=\", eq: \"==\", ne: \"!=\", ilt: \"<\", ige: \">=\", ieq: \"==\", ine: \"!=\", ult: \"<\", uge: \">=\" }[op];\n return `select(${zeroMask(count)}, ${fullMask(count)}, ${source(1)} ${operator} ${source(2)})`;\n }\n if (op === \"mov\") return source(1);\n if (op === \"movc\") return `select(${source(3)}, ${source(2)}, ${source(1)} != ${zeroMask(count)})`;\n if (op === \"ineg\") return `(-${source(1)})`;\n if (op === \"exp\") return `exp2(${source(1)})`;\n if (op === \"frc\") return `fract(${source(1)})`;\n if (op === \"log\") return `log2(${source(1)})`;\n if (op === \"round_ne\") return `round(${source(1)})`;\n if (op === \"round_ni\") return `floor(${source(1)})`;\n if (op === \"round_pi\") return `ceil(${source(1)})`;\n if (op === \"round_z\") return `trunc(${source(1)})`;\n if (DERIVATIVES[op]) return `${DERIVATIVES[op]}(${source(1)})`;\n if (op === \"rcp\")\n {\n validateRcpImmediate(program, instruction, write);\n return `(${floatBound(count, \"1.0\")} / ${source(1)})`;\n }\n if (op === \"rsq\") return `inverseSqrt(${source(1)})`;\n if (op === \"sqrt\") return `sqrt(${source(1)})`;\n if (NUMERIC_CONVERSIONS[op])\n {\n const conversion = instruction.typeInfo.conversion;\n const [ from, to ] = NUMERIC_CONVERSIONS[op];\n if (conversion?.from !== from || conversion?.to !== to)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has invalid ${op} conversion metadata`);\n }\n return `${fieldType(to, count)}(${source(1)})`;\n }\n if (op === \"dp2\") return splatScalar(`dot(${source(1, 2)}, ${source(2, 2)})`, count);\n if (op === \"dp3\") return splatScalar(`dot(${source(1, 3)}, ${source(2, 3)})`, count);\n if (op === \"dp4\") return splatScalar(`dot(${source(1, 4)}, ${source(2, 4)})`, count);\n if (op === \"sincos\")\n {\n const fn = write.operandIndex === 0 ? \"sin\" : write.operandIndex === 1 ? \"cos\" : null;\n if (!fn) throw new Error(`WGSL fragment sincos instruction ${instruction.index} has an unexpected destination operand`);\n return `${fn}(${source(2)})`;\n }\n if (op === \"resinfo\")\n {\n if (instruction.saturate)\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} cannot saturate`);\n }\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!textureBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has an unresolved resinfo resource`);\n const viewDimension = textureBinding.texture?.viewDimension;\n if (viewDimension !== \"2d\" && viewDimension !== \"3d\")\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} supports only 2d and 3d textures`);\n }\n const mipOperand = instruction.operands[1];\n const mipBits = mipOperand?.immediateValues?.[0]?.uint32;\n if (mipOperand?.typeName !== \"immediate32\" || mipOperand.immediateValues?.length !== 1\n || (mipOperand.modifierName || \"none\") !== \"none\"\n || (mipOperand.minPrecisionName || \"default\") !== \"default\"\n || !Number.isInteger(mipBits))\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} requires an immediate mip level`);\n }\n const modifier = instruction.resinfoReturnTypeName || \"float\";\n if (![ \"float\", \"rcpfloat\", \"uint\" ].includes(modifier))\n {\n throw new Error(`WGSL fragment resinfo instruction ${instruction.index} has unsupported return type ${modifier}`);\n }\n const symbol = textureBinding.generatedSymbol;\n const mipCount = `textureNumLevels(${symbol})`;\n // Every WebGPU sampled texture has at least one mip. Query a valid level\n // and select zero for a non-zero immediate beyond the bound view so D3D's\n // defined out-of-range resinfo dimensions do not inherit WGSL's\n // indeterminate textureDimensions result. Mip zero is always valid.\n const level = mipBits === 0 ? \"0\" : `min(${mipBits}u, ${mipCount} - 1u)`;\n const levelInRange = mipBits === 0 ? null : `${mipBits}u < ${mipCount}`;\n const dims = `textureDimensions(${symbol}, ${level})`;\n const parts = rawSelectedComponents(resource, mask, count).map((component) =>\n {\n let value;\n let dimension = true;\n if (component === \"x\") value = `${dims}.x`;\n else if (component === \"y\") value = `${dims}.y`;\n else if (component === \"z\" && viewDimension === \"3d\") value = `${dims}.z`;\n else if (component === \"w\")\n {\n value = mipCount;\n dimension = false;\n }\n else throw new Error(`WGSL fragment resinfo instruction ${instruction.index} cannot report component ${component} for a ${viewDimension} texture`);\n if (dimension && levelInRange) value = `select(0u, ${value}, ${levelInRange})`;\n if (modifier === \"uint\") return value;\n return modifier === \"rcpfloat\" && dimension ? `(1.0 / f32(${value}))` : `f32(${value})`;\n });\n return vectorCode(parts, modifier === \"uint\" ? \"uint32\" : \"float32\");\n }\n if (op === \"ld_uav_typed\")\n {\n // A read-write storage texture load. D3D returns zero for an\n // out-of-bounds typed UAV read; the address is clamped before the load\n // so WGSL never forms an invalid access, then zero is selected.\n const uav = validateFixedHandleOperand(instruction, 2, \"uav\", \"fragment\");\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n const bufferView = binding?.buffer ? TYPED_VIEW_FORMATS[binding.typedView] : null;\n if (bufferView)\n {\n // A typed buffer of a known view: the element expanded to D3D's four\n // components, zero out of bounds.\n const address = source(1, 1);\n const symbol = binding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n const element = bufferView.expand(`${symbol}[min(${address}, ${length} - 1u)]`);\n const loaded = `select(vec4<${bufferView.element}>(), ${element}, ${address} < ${length})`;\n const components = rawSelectedComponents(uav, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (binding?.type === \"array<atomic<u32>>\")\n {\n // A raw-word typed buffer UAV (lowerBindingLayout's atomic layout,\n // e.g. the lensflare FlareOcclusionBuffer in compute). WGSL reads an\n // atomic element only through atomicLoad; the word is D3D's single\n // R32_UINT component, (x, 0, 0, 1), zero out of bounds.\n const address = source(1, 1);\n const symbol = binding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n const loaded = `select(vec4<u32>(), vec4<u32>(atomicLoad(&${symbol}[min(${address}, ${length} - 1u)]), 0u, 0u, 1u), ${address} < ${length})`;\n const components = rawSelectedComponents(uav, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (binding?.storageTexture?.access !== \"read-write\" || binding.storageTexture.viewDimension !== \"2d\")\n {\n throw new Error(`WGSL ld_uav_typed instruction ${instruction.index} requires a read-write 2d storage texture`);\n }\n const element = TYPED_VIEW_FORMATS[binding.typedView].element;\n const address = source(1, 2);\n const symbol = binding.generatedSymbol;\n const dimensions = `textureDimensions(${symbol})`;\n const loaded = `select(vec4<${element}>(), textureLoad(${symbol}, min(${address}, ${dimensions} - vec2<u32>(1u))), all(${address} < ${dimensions}))`;\n const components = rawSelectedComponents(uav, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (op === \"ld_structured\") return structuredLoadExpression(program, instruction, write, valueType(program, write), inputs, bindings);\n if (op === \"ld\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n if (!textureBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has an unresolved load resource`);\n let loaded;\n const view = TYPED_VIEW_FORMATS[textureBinding.typedView];\n if (view)\n {\n // A typed buffer of a known view format: D3D returns the format's\n // four components in bounds (missing channels 0, alpha 1) and all\n // zeros out of bounds.\n const address = source(1, 1);\n const symbol = textureBinding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n loaded = `select(vec4<${view.element}>(), ${view.expand(`${symbol}[min(${address}, ${length} - 1u)]`)}, ${address} < ${length})`;\n }\n else if (textureBinding.buffer && !Number.isInteger(textureBinding.structureStride))\n {\n // Typed Buffer SRV: storage-array element fetch. D3D ld returns\n // zero out of bounds. Clamp the eagerly evaluated WGSL load itself\n // before selecting zero so no invalid memory reference is formed.\n const element = textureBinding.type.slice(\"array<\".length, -1);\n const address = source(1, 1);\n const symbol = textureBinding.generatedSymbol;\n const length = `arrayLength(&${symbol})`;\n loaded = typedBufferLoad(element, symbol, address, length);\n }\n else if (textureBinding.texture?.viewDimension === \"2d\")\n {\n const address = source(1, 3);\n const symbol = textureBinding.generatedSymbol;\n const mipCount = `textureNumLevels(${symbol})`;\n const safeLevel = `min(${address}.z, ${mipCount} - 1u)`;\n const dimensions = `textureDimensions(${symbol}, ${safeLevel})`;\n const safeCoordinates = `min(${address}.xy, ${dimensions} - vec2<u32>(1u))`;\n const inBounds = `${address}.z < ${mipCount} && all(${address}.xy < ${dimensions})`;\n loaded = `select(vec4<f32>(), textureLoad(${symbol}, ${safeCoordinates}, ${safeLevel}), ${inBounds})`;\n }\n else\n {\n throw new Error(`WGSL fragment load instruction ${instruction.index} resource shape is not supported; only 2d textures and typed buffers are supported`);\n }\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? loaded : `${loaded}.${components.join(\"\")}`;\n }\n if (op === \"gather4\")\n {\n // D3D11 gathers the channel the sampler operand selects (s0.y gathers\n // green) from the four texels in (umin,vmax), (umax,vmax),\n // (umax,vmin), (umin,vmin) order, which is textureGather's order; the\n // resource swizzle then applies to that vec4. No derivatives are\n // involved, so compute may gather. Only 2D textures, and not under\n // emulated addressing, are admitted.\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const sampler = validateFixedHandleOperand(instruction, 3, \"sampler\", \"fragment\");\n const textureBinding = bindingForOperand(bindings, \"sampled-resource\", resource);\n const samplerBinding = bindingForOperand(bindings, \"sampler\", sampler);\n if (!textureBinding || !samplerBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has unresolved gather bindings`);\n if (textureBinding.texture?.viewDimension !== \"2d\")\n {\n throw new Error(`WGSL gather4 instruction ${instruction.index} supports only 2d textures`);\n }\n if (program.emulatedAddressing?.samplerModes?.[sampler.registerIndex])\n {\n throw new Error(`WGSL gather4 instruction ${instruction.index} cannot gather under emulated sampler addressing`);\n }\n const channel = COMPONENTS.indexOf(sampler.selected || \"x\");\n if (channel < 0) throw new Error(`WGSL gather4 instruction ${instruction.index} has no gather channel`);\n const offsetArg = sampleOffsetArgument(instruction, \"2d\");\n const gathered = `textureGather(${channel}, ${textureBinding.generatedSymbol}, ${samplerBinding.generatedSymbol}, ${source(1, 2)}${offsetArg})`;\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? gathered : `${gathered}.${components.join(\"\")}`;\n }\n if (op === \"sample\" || op === \"sample_b\" || op === \"sample_l\" || op === \"sample_d\")\n {\n const resource = validateFixedHandleOperand(instruction, 2, \"resource\", \"fragment\");\n const sampler = validateFixedHandleOperand(instruction, 3, \"sampler\", \"fragment\");\n const transformed = transformedSampleForOperand(\n program,\n resource,\n bindings,\n context\n );\n const textureBinding = transformed?.textureBinding\n || bindingForOperand(bindings, \"sampled-resource\", resource);\n const samplerBinding = bindingForOperand(bindings, \"sampler\", sampler);\n if (!textureBinding || !samplerBinding) throw new Error(`WGSL fragment instruction ${instruction.index} has unresolved sample bindings`);\n const viewDimension = textureBinding.texture?.viewDimension;\n const coordComponents = viewDimension === \"2d\" ? 2 : 3;\n const gradientComponents = [ \"2d\", \"2d-array\" ].includes(viewDimension) ? 2 : 3;\n let coord;\n let arrayArg = \"\";\n if (transformed)\n {\n if (viewDimension !== \"2d-array\")\n {\n throw new Error(`WGSL fragment resource transform ${textureBinding.transformId} is not a 2d-array binding`);\n }\n coord = source(1, 2);\n arrayArg = `, ${transformed.layer}i`;\n }\n else if (viewDimension === \"2d-array\")\n {\n const coord3 = source(1, 3);\n coord = `${coord3}.xy`;\n arrayArg = `, i32(round(${coord3}.z))`;\n }\n else\n {\n coord = source(1, coordComponents);\n }\n const tex = `${textureBinding.generatedSymbol}, ${samplerBinding.generatedSymbol}`;\n const offsetArg = sampleOffsetArgument(instruction, viewDimension);\n\n // WebGPU has no border and no mirror-once address mode, and no feature\n // adds them, so a sampler declaring either is honoured here instead.\n // The mapping from resource to sampler exists only in the DXBC, which\n // is why this must happen in the emitter: the caller knows the modes\n // and not the mapping, and DXBC carries no sampler state.\n const profile = program.emulatedAddressing ?? null;\n const declared = profile?.samplerModes?.[sampler.registerIndex] ?? null;\n const axes = [ declared?.u, declared?.v, declared?.w ];\n const forced = profile?.textures?.find((entry) => entry.registerIndex === resource.registerIndex) ?? null;\n // Not a cube: its coordinate is a direction, where a [0, 1] border test\n // is meaningless (decalholev5 samples its interior cube through the\n // decals' bordered sampler). The WebGL2 emitter refuses it the same way.\n const emulated = Boolean(profile) && !transformed && viewDimension !== \"cube\" && ShouldEmulate(axes, forced);\n let modes = null;\n\n if (emulated)\n {\n const modesBuffer = bindings.find((entry) => entry.resourceKind === \"uniform-buffer\"\n && entry.registerIndex === (profile.bufferRegister ?? 8)) ?? null;\n\n if (!modesBuffer)\n {\n throw new Error(\n `WGSL fragment instruction ${instruction.index} needs emulated addressing but the `\n + `modes buffer at register ${profile.bufferRegister ?? 8} is not bound`\n );\n }\n\n // By sampler register, as withEmulatedAddressing lays the buffer out.\n modes = ModesExpression(modesBuffer.generatedSymbol, sampler.registerIndex, coordComponents);\n coord = `${coordComponents === 2 ? ADDRESS_COORD_2 : ADDRESS_COORD_3}(${coord}, ${modes})`;\n }\n\n const sampled = op === \"sample_b\"\n ? `textureSampleBias(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : op === \"sample_l\"\n ? `textureSampleLevel(${tex}, ${coord}${arrayArg}, ${source(4, 1)}${offsetArg})`\n : op === \"sample_d\"\n ? `textureSampleGrad(${tex}, ${coord}${arrayArg}, ${source(4, gradientComponents)}, ${source(5, gradientComponents)}${offsetArg})`\n : `textureSample(${tex}, ${coord}${arrayArg}${offsetArg})`;\n // Applied to the already sampled value so it composes with every sample\n // form above rather than needing a variant of each.\n const bordered = emulated\n ? `${coordComponents === 2 ? ADDRESS_BORDER_2 : ADDRESS_BORDER_3}(${sampled}, ${coord}, `\n + `${modes}, ${BorderColorLiteral(forced?.borderColor ?? declared?.borderColor)})`\n : sampled;\n const components = rawSelectedComponents(resource, mask, count);\n return count === 4 && components.join(\"\") === \"xyzw\" ? bordered : `${bordered}.${components.join(\"\")}`;\n }\n throw new Error(`WGSL fragment opcode ${op} at instruction ${instruction.index} is not supported`);\n}\n\nfunction applyResultBitcast(instruction, write, expression, type)\n{\n const bitcasts = instruction.typeInfo.bitcasts.filter((entry) => entry.kind === \"result-bitcast\"\n && entry.operandIndex === write.operandIndex && entry.valueId === write.valueId);\n if (!bitcasts.length) return expression;\n const components = Array.from(write.mask);\n const intrinsicType = instruction.typeInfo.resultType;\n if (bitcasts.length !== components.length || bitcasts.some((entry) =>\n entry.from !== intrinsicType || entry.to !== type.scalarType)\n || components.some((component) => !bitcasts.some((entry) => entry.component === component)))\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has unsupported partial result bitcasts`);\n }\n return reinterpretCode(expression, intrinsicType, type.scalarType, components.length,\n `instruction ${instruction.index} result`);\n}\n\n/**\n * A structured group-shared memory declaration (`dcl_thread_group_shared_memory_structured`)\n * as the workgroup array it lowers to: `g<register>`, one u32 per DWORD.\n */\nfunction groupSharedMemory(program, registerIndex, instruction)\n{\n const declaration = program.declarations.find((entry) =>\n entry.opcodeName === \"dcl_thread_group_shared_memory_structured\"\n && entry.data?.registerIndex === registerIndex);\n const stride = declaration?.data?.structureStride;\n const count = declaration?.data?.structureCount;\n if (!Number.isInteger(stride) || stride < 4 || stride % 4 !== 0 || !Number.isInteger(count) || count < 1)\n {\n throw new Error(`WGSL instruction ${instruction.index} uses group-shared memory g${registerIndex} with no structured declaration`);\n }\n return { name: `g${registerIndex}`, strideBytes: stride, elementCount: (stride / 4) * count };\n}\n\n/** The workgroup arrays a compute program's group-shared declarations need. */\nfunction computeWorkgroupVariables(program)\n{\n const variables = program.declarations\n .filter((entry) => entry.opcodeName === \"dcl_thread_group_shared_memory_structured\")\n .map((entry) =>\n {\n const shared = groupSharedMemory(program, entry.data?.registerIndex, entry);\n return { name: shared.name, elementType: \"u32\", elementCount: shared.elementCount };\n });\n if (program.declarations.some((entry) => entry.opcodeName === \"dcl_thread_group_shared_memory_raw\"))\n {\n throw new Error(\"WGSL compute lowering supports only structured group-shared memory\");\n }\n return variables.length ? { workgroupVariables: variables } : {};\n}\n\n/**\n * `store_structured` into group-shared memory: one u32 word per written lane,\n * the value's bits unchanged. The whole store is skipped when the structure\n * index is out of range, where D3D leaves the result undefined; an offset plus\n * lane beyond the stride fails closed.\n */\nfunction lowerGroupSharedStore(program, instruction, inputs, bindings)\n{\n const target = instruction.operands[0];\n if (target?.typeName !== \"thread_group_shared_memory\" || instruction.operands.length !== 4)\n {\n throw new Error(`WGSL store_structured instruction ${instruction.index} supports only group-shared memory`);\n }\n const shared = groupSharedMemory(program, target.registerIndex, instruction);\n const byteOffset = instruction.operands[2]?.immediateValues?.[0]?.uint32;\n if (instruction.operands[2]?.typeName !== \"immediate32\" || !Number.isInteger(byteOffset) || byteOffset % 4 !== 0)\n {\n throw new Error(`WGSL store_structured instruction ${instruction.index} requires an immediate DWORD byte offset`);\n }\n const strideWords = shared.strideBytes / 4;\n const mask = target.mask || \"x\";\n const name = `store_index${instruction.index}`;\n const writes = Array.from(mask).map((component, laneIndex) =>\n {\n const word = (byteOffset / 4) + COMPONENTS.indexOf(component);\n if (word >= strideWords)\n {\n throw new Error(`WGSL store_structured instruction ${instruction.index} exceeds its ${shared.strideBytes}-byte stride`);\n }\n return {\n kind: \"value-assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${shared.name}[(${name} * ${strideWords}u) + ${word}u]`,\n expression: {\n code: operandLaneExpression(program, instruction, 3, mask, laneIndex, \"uint32\", inputs, bindings, true),\n type: \"u32\"\n }\n };\n });\n return [\n {\n kind: \"let\",\n name,\n type: \"u32\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings), type: \"u32\" }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${name} < ${shared.elementCount / strideWords}u`, type: \"bool\" },\n statements: writes\n }\n ];\n}\n\n/**\n * `store_uav_typed` into a storage texture: `textureStore` at the address's\n * texel (and layer), guarded, because D3D drops an out-of-bounds typed-UAV\n * write and WGSL does not promise to.\n */\nfunction lowerStorageTextureStore(program, instruction, inputs, bindings)\n{\n const uav = validateFixedHandleOperand(instruction, 0, \"uav\", \"fragment\");\n if (instruction.operands.length !== 3 || instruction.saturate)\n {\n throw new Error(`WGSL store_uav_typed instruction ${instruction.index} has an unsupported operand shape`);\n }\n // A UAV Carbon never binds (withoutUnboundUavs): D3D11 drops the write.\n if (!Number.isInteger(uav.resourceReference?.rangeId) && program.unboundUavRegisters?.includes(uav.registerIndex))\n {\n return [];\n }\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n const bufferView = binding?.buffer ? TYPED_VIEW_FORMATS[binding.typedView] : null;\n if (bufferView)\n {\n // A typed buffer of a known single-channel view: D3D writes the first\n // component converted to the view format, and drops an out-of-bounds\n // write, which WGSL does not promise to.\n const name = `store_address${instruction.index}`;\n const symbol = binding.generatedSymbol;\n const valueType = bufferView.returnType === \"uint\" ? \"uint32\" : \"float32\";\n return [\n {\n kind: \"let\",\n name,\n type: \"u32\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings), type: \"u32\" }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${name} < arrayLength(&${symbol})`, type: \"bool\" },\n statements: [ {\n kind: \"value-assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${symbol}[${name}]`,\n expression: {\n code: operandLaneExpression(program, instruction, 2, \"xyzw\", 0, valueType, inputs, bindings, true),\n type: bufferView.element\n }\n } ]\n }\n ];\n }\n if (binding?.type === \"array<atomic<u32>>\")\n {\n // A raw-word typed buffer UAV: the first component's 32 bits stored\n // with atomicStore (the only write WGSL allows on an atomic element),\n // dropped out of bounds as D3D drops it. The bits are stored as they\n // are: Carbon writes float 1.0 and integer counters into the same\n // R32_UINT buffer (occludermanagement Clear/CopyCounters).\n const name = `store_address${instruction.index}`;\n const symbol = binding.generatedSymbol;\n return [\n {\n kind: \"let\",\n name,\n type: \"u32\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings), type: \"u32\" }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${name} < arrayLength(&${symbol})`, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: {\n code: `atomicStore(&${symbol}[${name}], ${operandLaneExpression(program, instruction, 2, \"xyzw\", 0, \"uint32\", inputs, bindings, true)})`,\n type: \"void\"\n }\n } ]\n }\n ];\n }\n if (!binding?.storageTexture)\n {\n throw new Error(`WGSL store_uav_typed instruction ${instruction.index} requires a storage-texture UAV`);\n }\n const arrayed = binding.storageTexture.viewDimension === \"2d-array\";\n const lanes = arrayed ? 3 : 2;\n const address = operandExpression(program, instruction, 1, arrayed ? \"xyz\" : \"xy\", lanes, \"uint32\", inputs, bindings);\n // A Carbon-named format stores its own component type (r32uint takes\n // vec4<u32>); an unnamed storage texture is rgba16float.\n const valueType = TYPED_VIEW_FORMATS[binding.typedView]?.returnType === \"uint\" ? \"uint32\" : \"float32\";\n const value = operandExpression(program, instruction, 2, \"xyzw\", 4, valueType, inputs, bindings);\n const name = `store_address${instruction.index}`;\n const symbol = binding.generatedSymbol;\n const inBounds = arrayed\n ? `all(${name}.xy < textureDimensions(${symbol})) && ${name}.z < textureNumLayers(${symbol})`\n : `all(${name} < textureDimensions(${symbol}))`;\n const call = arrayed\n ? `textureStore(${symbol}, ${name}.xy, ${name}.z, ${value})`\n : `textureStore(${symbol}, ${name}, ${value})`;\n return [\n {\n kind: \"let\",\n name,\n type: `vec${lanes}<u32>`,\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: address, type: `vec${lanes}<u32>` }\n },\n {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: inBounds, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: call, type: \"void\" }\n } ]\n }\n ];\n}\n\nfunction lowerInstruction(program, instruction, inputs, outputs, bindings, written, readValueIds, nonUniform = false, context = null)\n{\n if (!SUPPORTED_OPCODES.has(instruction.opcodeName))\n {\n throw new Error(`WGSL fragment opcode ${instruction.opcodeName} at instruction ${instruction.index} is not supported`);\n }\n const unsupportedExtension = instruction.extensions?.find((extension) =>\n !METADATA_OPCODE_EXTENSIONS.has(extension.typeName)\n && !(extension.typeName === \"sample_controls\"\n && SAMPLE_OFFSET_OPCODES.has(instruction.opcodeName)));\n if (unsupportedExtension)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} opcode extension ${unsupportedExtension.typeName} is not supported`);\n }\n if (context?.compute && REQUIRES_UNIFORM_CONTROL_FLOW.has(instruction.opcodeName))\n {\n // WGSL has no derivatives in compute; D3D's compute has none either.\n throw new Error(`WGSL compute instruction ${instruction.index} (${instruction.opcodeName}) needs screen-space derivatives`);\n }\n if (nonUniform && REQUIRES_UNIFORM_CONTROL_FLOW.has(instruction.opcodeName) && context)\n {\n // Screen-space derivative / implicit-LOD sample under non-uniform control\n // flow. Rather than reject, record that the module needs the WGSL\n // derivative-uniformity opt-out (emitted at module top); this reproduces\n // D3D11's permissive behavior. See uniformity.js and the directive\n // comment in emitWgsl.js.\n context.requiresDerivativeUniformityOptOut = true;\n }\n validatePreciseInstruction(instruction, \"fragment\");\n const imprecise = instruction.operands.find(unsupportedMinPrecision);\n if (imprecise)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} minimum-precision kind ${imprecise.minPrecisionName} is not supported`);\n }\n validateRegisterBitcasts(program, instruction);\n if (instruction.opcodeName === \"ret\")\n {\n for (const field of outputs)\n {\n // Unlike the vertex stage, an unwritten SV_Target lane fails\n // closed: an undefined render-target lane feeds blending and is\n // not a safe zero.\n const missing = field.components.filter((component) => !written.get(field.id).has(component));\n if (missing.length) throw new Error(`WGSL fragment output ${field.semanticName}${field.semanticIndex} leaves ${missing.join(\"\")} unwritten before return`);\n }\n return { kind: \"return\", instructionIndex: instruction.index, dxbcOffset: instruction.dxbcOffset };\n }\n if (instruction.opcodeName === \"discard\")\n {\n const projection = instruction.testBoolean;\n const operand = instruction.operands[0];\n const read = sourceRead(instruction, 0);\n if (![ \"zero\", \"nonzero\" ].includes(projection))\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} has no supported condition projection`);\n }\n const scalarShape = operand?.typeName === \"immediate32\"\n ? operand.immediateValues?.length === 1\n : COMPONENTS.includes(operand?.selected);\n if (instruction.operands.length !== 1 || !operand || !scalarShape || (read && read.refs.length !== 1))\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} requires one scalar condition`);\n }\n if ((operand.modifierName || \"none\") !== \"none\")\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} cannot modify its condition`);\n }\n if (instruction.saturate)\n {\n throw new Error(`WGSL fragment discard instruction ${instruction.index} cannot saturate its condition`);\n }\n const condition = operandExpression(program, instruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n return {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${condition} ${projection === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"discard\" } ]\n };\n }\n if (instruction.opcodeName === \"sync\")\n {\n // D3D's sync flags to WGSL's barriers, compute only. Every WGSL barrier\n // also synchronizes the workgroup's invocations, so a memory-only\n // fence (no threads_in_group) has no equivalent and is refused rather\n // than turned into a barrier the shader did not ask for.\n // workgroupBarrier covers group-shared memory, storageBarrier UAV\n // memory; D3D's device-wide UAV scope is wider than WGSL can express\n // within one dispatch.\n const flags = instruction.syncFlagNames ?? [];\n if (program.stage !== \"compute\" || !flags.includes(\"threads_in_group\"))\n {\n throw new Error(`WGSL sync instruction ${instruction.index} (${flags.join(\"|\") || \"no flags\"}) has no WGSL barrier equivalent in the ${program.stage} stage`);\n }\n const uav = flags.includes(\"thread_group_uav_memory\") || flags.includes(\"global_uav_memory\");\n const shared = flags.includes(\"thread_group_shared_memory\") || !uav;\n return [\n ...(shared ? [ \"workgroupBarrier()\" ] : []),\n ...(uav ? [ \"storageBarrier()\" ] : [])\n ].map(code => ({\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code, type: \"void\" }\n }));\n }\n if (instruction.opcodeName === \"atomic_iadd\")\n {\n const uav = validateFixedHandleOperand(instruction, 0, \"uav\", \"fragment\");\n if (instruction.operands.length !== 3 || instruction.saturate)\n {\n throw new Error(`WGSL fragment atomic instruction ${instruction.index} has an unsupported operand shape`);\n }\n const binding = bindingForOperand(bindings, \"storage-resource\", uav);\n if (!binding) throw new Error(`WGSL fragment atomic instruction ${instruction.index} has an unresolved UAV binding`);\n if (binding.type !== \"array<atomic<u32>>\")\n {\n throw new Error(`WGSL fragment atomic instruction ${instruction.index} UAV layout ${binding.type} is not supported`);\n }\n const address = operandExpression(program, instruction, 1, \"x\", 1, \"uint32\", inputs, bindings);\n const value = operandExpression(program, instruction, 2, \"x\", 1, \"uint32\", inputs, bindings);\n // D3D defines out-of-bounds typed-UAV atomics as dropped writes; the\n // bounds guard reproduces that (WGSL could redirect to a live element).\n // Only the non-returning form exists here; a result-returning\n // imm_atomic_iadd would also need a synthesized zero old value.\n return {\n kind: \"if\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n condition: { code: `${address} < arrayLength(&${binding.generatedSymbol})`, type: \"bool\" },\n statements: [ {\n kind: \"call\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n expression: { code: `atomicAdd(&${binding.generatedSymbol}[${address}], ${value})`, type: \"void\" }\n } ]\n };\n }\n if (instruction.opcodeName === \"store_uav_typed\")\n {\n return lowerStorageTextureStore(program, instruction, inputs, bindings);\n }\n if (instruction.opcodeName === \"store_structured\")\n {\n return lowerGroupSharedStore(program, instruction, inputs, bindings);\n }\n const writes = instruction.dataflow.writes;\n if (!writes.length) throw new Error(`WGSL fragment instruction ${instruction.index} has no result write`);\n if (instruction.opcodeName === \"sincos\" || instruction.opcodeName === \"udiv\")\n {\n const destinationOperands = writes.map((write) => write.operandIndex);\n if (writes.length > 2 || new Set(destinationOperands).size !== writes.length\n || destinationOperands.some((operandIndex) => ![ 0, 1 ].includes(operandIndex)))\n {\n throw new Error(`WGSL fragment ${instruction.opcodeName} instruction ${instruction.index} has unsupported result writes`);\n }\n if (writes.length === 2 && writes[0].mask !== writes[1].mask)\n {\n throw new Error(`WGSL fragment ${instruction.opcodeName} instruction ${instruction.index} requires matching destination masks`);\n }\n }\n else if (writes.length !== 1)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} has unsupported multiple result writes`);\n }\n const lowerWrite = (write) =>\n {\n const destination = instruction.operands[write.operandIndex];\n const indexableAddress = destination?.typeName === \"indexable_temp\"\n ? validateIndexableTempWrite(program, destination, write)\n : null;\n const localSsaDestination = destination?.typeName === \"temp\" || Boolean(indexableAddress);\n if (isDeadUntypedWrite(program, write, readValueIds, localSsaDestination)) return [];\n const mixedTypes = mixedImmediateTypes(program, write);\n if (mixedTypes)\n {\n // One instruction writing lanes of different resolved storage\n // types cannot be one WGSL vector: split into per-lane lets\n // (valueN_x, ...) for structured loads, packed intrinsic results,\n // immediate movs and per-lane movc selects. The movc path is\n // bounded to unsaturated temps with register, immediate or cbuffer\n // lane sources; its condition follows u32 modifier rules and its\n // value operands the raw float-data mover rules.\n if (instruction.opcodeName === \"ld_structured\" && localSsaDestination && !instruction.saturate)\n {\n const words = structuredLoadExpression(program, instruction, write, null, inputs, bindings);\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: reinterpretCode(words[laneIndex], \"uint32\", mixedTypes[laneIndex], 1, `structured load ${instruction.index}`),\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const intrinsic = instruction.typeInfo.resultType;\n if (localSsaDestination && scalarTypeName(intrinsic) && instruction.opcodeName !== \"mov\")\n {\n let packedCode = expressionFor(program, instruction, write, inputs, bindings, context);\n if (instruction.saturate)\n {\n if (intrinsic !== \"float32\")\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} saturates a non-float result`);\n }\n packedCode = `clamp(${packedCode}, ${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")})`;\n }\n const packedName = `${write.valueId}_p`;\n const packedType = fieldType(intrinsic, write.mask.length);\n const statements = [ {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: packedName,\n type: packedType,\n expression: { code: packedCode, type: packedType }\n } ];\n Array.from(write.mask).forEach((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const access = write.mask.length === 1 ? packedName : `${packedName}.${COMPONENTS[laneIndex]}`;\n statements.push({\n kind: \"let\",\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: reinterpretCode(access, intrinsic, laneType, 1, `mixed write ${instruction.index}`),\n type: scalarTypeName(laneType)\n }\n });\n });\n return statements;\n }\n if (instruction.opcodeName === \"movc\" && localSsaDestination && !instruction.saturate)\n {\n return Array.from(write.mask).map((component, laneIndex) =>\n {\n const laneType = mixedTypes[laneIndex];\n const condition = operandLaneExpression(program, instruction, 1, write.mask, laneIndex, \"uint32\", inputs, bindings);\n const whenTrue = operandLaneExpression(program, instruction, 2, write.mask, laneIndex, laneType, inputs, bindings, true);\n const whenFalse = operandLaneExpression(program, instruction, 3, write.mask, laneIndex, laneType, inputs, bindings, true);\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(laneType),\n expression: {\n code: `select(${whenFalse}, ${whenTrue}, ${condition} != 0u)`,\n type: scalarTypeName(laneType)\n }\n };\n });\n }\n const immediateSource = instruction.operands[1];\n if (instruction.opcodeName === \"mov\" && localSsaDestination && !instruction.saturate\n && immediateSource?.typeName !== \"immediate32\")\n {\n // A register mov moves bits, so each lane reads its source\n // component as its own resolved type (a float bit pattern\n // beside uint lanes in FidelityFX CAS, for one).\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: operandLaneExpression(program, instruction, 1, write.mask, laneIndex, mixedTypes[laneIndex], inputs, bindings, true),\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n if (instruction.opcodeName !== \"mov\" || instruction.saturate\n || !localSsaDestination || immediateSource?.typeName !== \"immediate32\")\n {\n throw new Error(`WGSL fragment value ${write.valueId} has an unresolved or mixed result type that is not supported`);\n }\n return Array.from(write.mask).map((component, laneIndex) => ({\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: `${write.valueId}_${component}`,\n type: scalarTypeName(mixedTypes[laneIndex]),\n expression: {\n code: immediateParts(immediateSource, component, 1, mixedTypes[laneIndex])[0],\n type: scalarTypeName(mixedTypes[laneIndex])\n }\n }));\n }\n const type = valueType(program, write);\n let expression = expressionFor(program, instruction, write, inputs, bindings, context);\n if (instruction.saturate)\n {\n const clampBounds = `${floatBound(write.mask.length, \"0.0\")}, ${floatBound(write.mask.length, \"1.0\")}`;\n if (instruction.typeInfo.resultType === \"float32\")\n {\n expression = `clamp(${expression}, ${clampBounds})`;\n }\n else if ([ \"mov\", \"movc\" ].includes(instruction.opcodeName)\n && [ \"int32\", \"uint32\", \"bitpattern32\" ].includes(type.scalarType))\n {\n // D3D saturate assumes float data (like source modifiers); on a\n // bit-preserving mover whose lanes resolved to integer storage,\n // clamp the float interpretation of the bits and keep the storage.\n const floatType = fieldType(\"float32\", write.mask.length);\n expression = `bitcast<${type.wgslType}>(clamp(bitcast<${floatType}>(${expression}), ${clampBounds}))`;\n }\n else\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} saturates a non-float result`);\n }\n }\n expression = applyResultBitcast(instruction, write, expression, type);\n if (destination.typeName === \"output\")\n {\n const field = outputs.find((entry) => entry.registerIndex === destination.registerIndex);\n if (!field) throw new Error(`WGSL fragment instruction ${instruction.index} references undeclared output r${destination.registerIndex}`);\n const components = Array.from(write.mask).map((component) => packedComponent(field.components.join(\"\"), component));\n Array.from(write.mask).forEach((component) => written.get(field.id).add(component));\n const outputType = fieldType(field.scalarType, write.mask.length);\n const assignmentExpression = reinterpretCode(\n expression,\n type.scalarType,\n field.scalarType,\n write.mask.length,\n `output ${field.semanticName}${field.semanticIndex}`\n );\n const assignment = {\n kind: \"assignment\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n target: { fieldId: field.id, components, type: outputType },\n expression: { code: assignmentExpression, type: outputType }\n };\n if (!readValueIds.has(write.valueId)) return assignment;\n return [\n {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n },\n {\n ...assignment,\n instructionIndex: undefined,\n dxbcOffset: undefined,\n expression: {\n code: reinterpretCode(write.valueId, type.scalarType, field.scalarType, write.mask.length,\n `output ${field.semanticName}${field.semanticIndex}`),\n type: outputType\n }\n }\n ];\n }\n if (!localSsaDestination)\n {\n throw new Error(`WGSL fragment instruction ${instruction.index} writes unsupported ${destination.typeName}`);\n }\n return {\n kind: \"let\",\n instructionIndex: instruction.index,\n dxbcOffset: instruction.dxbcOffset,\n name: write.valueId,\n type: type.wgslType,\n expression: { code: expression, type: type.wgslType }\n };\n };\n const statements = writes.flatMap((write) =>\n {\n const lowered = lowerWrite(write);\n return Array.isArray(lowered) ? lowered : [ lowered ];\n });\n return statements.length === 1 ? statements[0] : statements;\n}\n\nfunction containsOutputAssignment(statements)\n{\n return statements.some((statement) => statement.kind === \"assignment\"\n || (statement.kind === \"if\" && (containsOutputAssignment(statement.statements)\n || (statement.elseStatements ? containsOutputAssignment(statement.elseStatements) : false)))\n || (statement.kind === \"switch\" && statement.clauses.some((clause) => containsOutputAssignment(clause.statements)))\n || (statement.kind === \"loop\" && containsOutputAssignment(statement.statements)));\n}\n\n/**\n * Whether a loop can be exited through NON-UNIFORM control flow: a `breakc`/\n * `continuec` with a varying condition, or an unconditional `break`/`continue`\n * lexically guarded by a varying `if`/`switch`. Per the WGSL uniformity rules a\n * `break` reached from non-uniform control flow taints the loop body AND the code\n * after the loop (the break edges carry non-uniformity to the merge). Nested\n * loops are skipped — their breaks belong to the inner loop, not this one.\n *\n * @param {object} program Frozen CJS shader IR.\n * @param {object} region Loop control-flow region.\n * @param {Set<string>} varying Varying value ids from computeVaryingValues.\n * @returns {boolean} True when at least one exit is non-uniform.\n */\nfunction loopHasNonUniformExit(program, region, varying)\n{\n const regions = program.controlFlow.regions;\n const insideNestedLoop = (index) => regions.some((candidate) =>\n candidate.kind === \"loop\" && candidate !== region\n && candidate.startInstruction > region.startInstruction\n && candidate.endInstruction < region.endInstruction\n && index >= candidate.startInstruction && index <= candidate.endInstruction);\n for (let index = region.startInstruction; index <= region.endInstruction; index += 1)\n {\n const instruction = program.instructions[index];\n if (!instruction || insideNestedLoop(index)) continue;\n const op = instruction.opcodeName;\n if ((op === \"breakc\" || op === \"continuec\") && !conditionIsUniform(instruction, varying)) return true;\n if (op === \"break\" || op === \"continue\")\n {\n const varyingGuard = regions.some((candidate) =>\n (candidate.kind === \"selection\" || candidate.kind === \"switch\")\n && candidate.startInstruction >= region.startInstruction\n && candidate.endInstruction <= region.endInstruction\n && candidate.startInstruction < index && index <= candidate.endInstruction\n && !conditionIsUniform(program.instructions[candidate.startInstruction], varying));\n if (varyingGuard) return true;\n }\n }\n return false;\n}\n\n/**\n * Lowers the bounded copyblit-style fragment slice with structured no-else\n * selections and scalar component merges.\n *\n * @param {object} program Frozen CJS shader IR.\n * @param {object} [options] Binding-plan and lowering options.\n * @returns {object} Frozen typed fragment program.\n */\nexport function lowerFragmentProgram(program, options = {})\n{\n if (program?.format !== \"CJS_SHADER_IR\") throw new TypeError(\"WGSL fragment lowering expects CJS_SHADER_IR input\");\n if (program.stage !== \"pixel\") throw new Error(`WGSL fragment lowering cannot lower ${program.stage}`);\n return lowerProgramBody(program, options, false);\n}\n\n/**\n * A compute program no hand-matched profile claims, lowered with the fragment\n * lowering's general instruction set: no interface, the thread-ID registers\n * as entry-point builtins, typed texture UAVs as storage textures.\n *\n * @param {object} program CJS_SHADER_IR compute program.\n * @param {object} [options] Lowering options.\n * @returns {object} Typed compute program.\n */\nexport function lowerGeneralComputeProgram(program, options = {})\n{\n if (program?.format !== \"CJS_SHADER_IR\") throw new TypeError(\"WGSL compute lowering expects CJS_SHADER_IR input\");\n if (program.stage !== \"compute\") throw new Error(`WGSL general compute lowering cannot lower ${program.stage}`);\n return lowerProgramBody(program, options, true);\n}\n\n/** `dcl_thread_group` as a three-component workgroup size. */\nfunction computeThreadGroupSize(program)\n{\n const group = program.declarations.find((entry) => entry.opcodeName === \"dcl_thread_group\")?.data;\n const size = [ group?.threadGroupX, group?.threadGroupY, group?.threadGroupZ ];\n if (size.some((value) => !Number.isSafeInteger(value) || value < 1))\n {\n throw new Error(\"WGSL compute lowering requires a dcl_thread_group declaration\");\n }\n return size;\n}\n\n/** The entry-point builtins this program reads, in `computeEntryPointParameters` order. */\nfunction computeBuiltinInputs(program)\n{\n const used = new Set(program.values\n .filter((value) => value.origin === \"program-input\" && COMPUTE_BUILTINS[value.register])\n .map((value) => value.register));\n const order = [ \"input_thread_group_id[]\", \"input_thread_id_in_group[]\", \"input_thread_id[]\", \"input_thread_id_in_group_flattened[]\" ];\n const builtinInputs = order.filter((register) => used.has(register))\n .map((register) => ({ ...COMPUTE_BUILTINS[register] }));\n return builtinInputs.length ? { builtinInputs } : {};\n}\n\nfunction lowerProgramBody(program, options, compute)\n{\n if (program.shaderModel.major !== 5 || ![ 0, 1 ].includes(program.shaderModel.minor))\n {\n throw new Error(\"WGSL fragment body slice currently supports only SM5.0/SM5.1\");\n }\n requireRefactoringAllowed(program, \"fragment\");\n const liveRegisters = compute ? new Set() : liveInputRegisters(program);\n const inputs = compute ? [] : groupSignaturesByRegister(\n program.signatures.input.filter((entry) => liveRegisters.has(entry.registerIndex)))\n .map((rows) => interfaceField(rows, \"input\"));\n const outputs = compute ? [] : program.signatures.output.map((entry) => interfaceField([ entry ], \"output\"));\n if (!compute && !outputs.length) throw new Error(\"WGSL fragment body slice requires output signatures\");\n inputs.forEach((input) => validateInterpolation(program, input));\n const planFromBinding = options.bindingPlan?.resourceTransforms === undefined\n ? null\n : normalizeResourceTransformPlan({\n format: \"CJS_WGSL_RESOURCE_TRANSFORM_PLAN\",\n formatVersion: 1,\n resourceTransforms: options.bindingPlan.resourceTransforms\n });\n const explicitPlan = normalizeResourceTransformPlan(options.resourceTransformPlan);\n if (planFromBinding && explicitPlan\n && JSON.stringify(planFromBinding) !== JSON.stringify(explicitPlan))\n {\n throw new Error(\"WGSL fragment binding and resource transform plans disagree\");\n }\n const resourceTransformPlan = planFromBinding || explicitPlan;\n const bindings = lowerBindingLayout(\n program,\n options.bindingPlan,\n null,\n resourceTransformPlan\n );\n const plans = buildSelectionPlans(program, \"fragment\");\n const varying = computeVaryingValues(program);\n const transformedInputs = new Map();\n for (const transform of resourceTransformPlan?.resourceTransforms || [])\n {\n if (transform.stage !== \"fragment\") continue;\n for (const input of transform.inputs)\n {\n transformedInputs.set(input.identity, {\n transform,\n layer: input.layer\n });\n }\n }\n const context = {\n requiresDerivativeUniformityOptOut: false,\n transformedInputs,\n compute\n };\n const written = new Map(outputs.map((field) => [ field.id, new Set() ]));\n const readValueIds = new Set([\n ...program.instructions.flatMap((instruction) =>\n instruction.dataflow.reads.flatMap((read) => read.refs.map((ref) => ref.valueId))),\n ...program.values.flatMap((value) => (value.incoming || []).map((incoming) => incoming.valueId))\n ]);\n\n function exitMergeAssignments(loopExit, breakIndex)\n {\n return (loopExit?.get(breakIndex) || []).map((assign) => ({\n kind: \"value-assignment\", name: assign.id, type: assign.type,\n expression: { code: valueReference(program, assign.ref, inputs), type: assign.type }\n }));\n }\n\n function lowerRange(start, end, rangeWritten, inLoop = false, nonUniform = false, loopExit = null)\n {\n const statements = [];\n // Non-uniformity accumulates within a range: once a loop with a non-uniform\n // exit is lowered, every subsequent statement in this range is non-uniform\n // (WGSL propagates the break-edge non-uniformity past the loop merge).\n let flowNonUniform = nonUniform;\n for (let index = start; index < end; index += 1)\n {\n const plan = plans.get(index);\n if (!plan)\n {\n const marker = program.instructions[index].opcodeName;\n if (marker === \"break\" || marker === \"breakc\")\n {\n if (!inLoop) throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n const breakInstruction = program.instructions[index];\n if (marker === \"break\")\n {\n statements.push(...exitMergeAssignments(loopExit, breakInstruction.index));\n statements.push({ kind: \"break\", instructionIndex: breakInstruction.index, dxbcOffset: breakInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(breakInstruction, \"fragment\");\n validateRegisterBitcasts(program, breakInstruction);\n const conditionOperand = breakInstruction.operands[0];\n const conditionRead = sourceRead(breakInstruction, 0);\n if (breakInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(breakInstruction.testBoolean))\n {\n throw new Error(`WGSL fragment breakc instruction ${breakInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, breakInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: breakInstruction.index,\n dxbcOffset: breakInstruction.dxbcOffset,\n condition: { code: `${condition} ${breakInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ ...exitMergeAssignments(loopExit, breakInstruction.index), { kind: \"break\" } ]\n });\n continue;\n }\n if (marker === \"continue\" || marker === \"continuec\")\n {\n if (!inLoop) throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n const continueInstruction = program.instructions[index];\n if (marker === \"continue\")\n {\n statements.push({ kind: \"continue\", instructionIndex: continueInstruction.index, dxbcOffset: continueInstruction.dxbcOffset });\n continue;\n }\n validatePreciseInstruction(continueInstruction, \"fragment\");\n validateRegisterBitcasts(program, continueInstruction);\n const conditionOperand = continueInstruction.operands[0];\n const conditionRead = sourceRead(continueInstruction, 0);\n if (continueInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1\n || ![ \"zero\", \"nonzero\" ].includes(continueInstruction.testBoolean))\n {\n throw new Error(`WGSL fragment continuec instruction ${continueInstruction.index} requires one unmodified scalar condition`);\n }\n const condition = operandExpression(program, continueInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n statements.push({\n kind: \"if\",\n instructionIndex: continueInstruction.index,\n dxbcOffset: continueInstruction.dxbcOffset,\n condition: { code: `${condition} ${continueInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\"} 0u`, type: \"bool\" },\n statements: [ { kind: \"continue\" } ]\n });\n continue;\n }\n if ([ \"endif\", \"else\", \"case\", \"default\", \"endswitch\", \"endloop\" ].includes(marker))\n {\n throw new Error(`WGSL fragment has an unmatched ${marker} at instruction ${index}`);\n }\n const lowered = lowerInstruction(\n program, program.instructions[index], inputs, outputs, bindings, rangeWritten, readValueIds, flowNonUniform, context);\n statements.push(...(Array.isArray(lowered) ? lowered : [ lowered ]));\n continue;\n }\n if (plan.kind === \"loop\")\n {\n const loopInstruction = program.instructions[index];\n if (loopInstruction.opcodeName !== \"loop\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endloop\")\n {\n throw new Error(\"WGSL fragment loop boundaries are malformed\");\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.entryIncoming, inputs), type: merge.type } });\n }\n for (const merge of plan.exitMerges || [])\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type,\n expression: { code: merge.zeroCode, type: merge.type } });\n }\n const bodyWritten = cloneWritten(rangeWritten);\n // A non-uniform loop exit makes both the body and everything after\n // the loop non-uniform. Fold that into the running flow flag so a\n // requires-uniform op (sample/derivative) below picks up the\n // derivative-uniformity opt-out (D3D11-permissive; see emitWgsl.js).\n const loopNonUniform = loopHasNonUniformExit(program, plan.region, varying);\n const body = lowerRange(index + 1, plan.region.endInstruction, bodyWritten, true,\n flowNonUniform || loopNonUniform, plan.exitEdges);\n if (body.at(-1)?.kind === \"return\")\n {\n throw new Error(`WGSL fragment loop at ${index} terminates before latch assignments`);\n }\n if (loopNonUniform) flowNonUniform = true;\n // Latch phi updates go in a `continuing` block so they run on both\n // fall-through and `continue` paths (a body `continue` would skip\n // updates appended to the body).\n const latch = plan.merges.map((merge) => ({ kind: \"value-assignment\", name: merge.id, type: merge.type,\n expression: { code: valueReference(program, merge.backedgeIncoming, inputs), type: merge.type } }));\n statements.push({ kind: \"loop\", instructionIndex: loopInstruction.index, dxbcOffset: loopInstruction.dxbcOffset,\n statements: body, continuing: latch });\n index = plan.region.endInstruction;\n continue;\n }\n if (plan.kind === \"switch\")\n {\n const switchInstruction = program.instructions[index];\n if (switchInstruction.opcodeName !== \"switch\"\n || program.instructions[plan.region.endInstruction].opcodeName !== \"endswitch\")\n {\n throw new Error(\"WGSL fragment switch boundaries are malformed\");\n }\n validatePreciseInstruction(switchInstruction, \"fragment\");\n validateRegisterBitcasts(program, switchInstruction);\n const selectorOperand = switchInstruction.operands[0];\n const selectorRead = sourceRead(switchInstruction, 0);\n if (switchInstruction.saturate || (selectorOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(selectorOperand?.selected) || selectorRead?.refs.length !== 1)\n {\n throw new Error(`WGSL fragment switch instruction ${switchInstruction.index} requires one unmodified scalar selector`);\n }\n for (const merge of plan.merges)\n {\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: merge.zeroCode, type: merge.type } });\n }\n const selector = operandExpression(program, switchInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n const clauseNonUniform = flowNonUniform || !conditionIsUniform(switchInstruction, varying);\n const clauses = [];\n const clauseResults = [];\n for (let clauseIndex = 0; clauseIndex < plan.clauses.length; clauseIndex += 1)\n {\n const clause = plan.clauses[clauseIndex];\n const clauseWritten = cloneWritten(rangeWritten);\n const body = lowerRange(clause.bodyStart, clause.bodyEnd, clauseWritten, false, clauseNonUniform, loopExit);\n if ((plan.merges.length || plan.outerMerges?.length) && containsOutputAssignment(body))\n {\n throw new Error(`WGSL fragment switch at ${index} writes output before a live merge`);\n }\n if (body.at(-1)?.kind === \"return\" && (plan.merges.length || plan.outerMerges?.length))\n {\n throw new Error(`WGSL fragment switch at ${index} terminates before merge assignments`);\n }\n for (const merge of [ ...plan.merges, ...(plan.outerMerges || []) ])\n {\n body.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.perClause[clauseIndex], inputs), type: merge.type }\n });\n }\n clauses.push({ selectors: clause.selectors, isDefault: clause.isDefault, statements: body });\n clauseResults.push({ clauseWritten, returns: body.at(-1)?.kind === \"return\" });\n }\n statements.push({\n kind: \"switch\",\n instructionIndex: switchInstruction.index,\n dxbcOffset: switchInstruction.dxbcOffset,\n selector: { code: selector, type: \"u32\" },\n clauses\n });\n if (plan.region.defaultInstruction !== null)\n {\n const continuing = clauseResults.filter((entry) => !entry.returns);\n for (const [ fieldId, target ] of rangeWritten)\n {\n if (!continuing.length) break;\n const sets = continuing.map((entry) => entry.clauseWritten.get(fieldId) || new Set());\n for (const component of sets[0])\n {\n if (sets.every((set) => set.has(component))) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n continue;\n }\n const ifInstruction = program.instructions[index];\n const endInstruction = program.instructions[plan.region.endInstruction];\n if (ifInstruction.opcodeName !== \"if\" || endInstruction.opcodeName !== \"endif\"\n || (plan.hasElse && program.instructions[plan.region.elseInstruction].opcodeName !== \"else\"))\n {\n throw new Error(\"WGSL fragment selection boundaries are malformed\");\n }\n validatePreciseInstruction(ifInstruction, \"fragment\");\n validateRegisterBitcasts(program, ifInstruction);\n const conditionOperand = ifInstruction.operands[0];\n const conditionRead = sourceRead(ifInstruction, 0);\n if (ifInstruction.saturate || (conditionOperand?.modifierName || \"none\") !== \"none\"\n || !COMPONENTS.includes(conditionOperand?.selected) || conditionRead?.refs.length !== 1)\n {\n throw new Error(`WGSL fragment if instruction ${ifInstruction.index} requires one unmodified scalar condition`);\n }\n // Arms may write shader outputs alongside live merges: merge vars\n // are declared here and assigned at each arm's end, while output\n // completeness comes from the post-branch intersection below and\n // the reachable-return check. Only an arm that returns ahead of\n // its merge assignment is rejected.\n for (const merge of plan.merges)\n {\n const expression = plan.hasElse\n ? merge.zeroCode\n : (merge.falseCode || valueReference(program, merge.falseIncoming, inputs));\n statements.push({ kind: \"var\", name: merge.id, type: merge.type, expression: { code: expression, type: merge.type } });\n }\n const condition = operandExpression(program, ifInstruction, 0, \"x\", 1, \"uint32\", inputs, bindings);\n const comparison = ifInstruction.testBoolean === \"zero\" ? \"==\" : \"!=\";\n const branchNonUniform = flowNonUniform || !conditionIsUniform(ifInstruction, varying);\n const trueBodyEnd = plan.hasElse ? plan.region.elseInstruction : plan.region.endInstruction;\n const trueWritten = cloneWritten(rangeWritten);\n const trueStatements = lowerRange(index + 1, trueBodyEnd, trueWritten, inLoop, branchNonUniform, loopExit);\n if (trueStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL fragment selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n if (merge.viaSwitch) continue;\n trueStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: valueReference(program, merge.trueIncoming, inputs), type: merge.type }\n });\n }\n let falseStatements = null;\n let falseWritten = null;\n if (plan.hasElse)\n {\n falseWritten = cloneWritten(rangeWritten);\n falseStatements = lowerRange(plan.region.elseInstruction + 1, plan.region.endInstruction, falseWritten, inLoop, branchNonUniform, loopExit);\n if (falseStatements.at(-1)?.kind === \"return\" && plan.merges.length)\n {\n throw new Error(`WGSL fragment selection at ${index} terminates before merge assignments`);\n }\n for (const merge of plan.merges)\n {\n falseStatements.push({\n kind: \"value-assignment\",\n name: merge.id,\n type: merge.type,\n expression: { code: merge.falseCode || valueReference(program, merge.falseIncoming, inputs), type: merge.type }\n });\n }\n }\n statements.push({\n kind: \"if\",\n instructionIndex: ifInstruction.index,\n dxbcOffset: ifInstruction.dxbcOffset,\n condition: { code: `${condition} ${comparison} 0u`, type: \"bool\" },\n statements: trueStatements,\n ...(falseStatements ? { elseStatements: falseStatements } : {})\n });\n if (plan.hasElse)\n {\n const trueReturns = trueStatements.at(-1)?.kind === \"return\";\n const falseReturns = falseStatements.at(-1)?.kind === \"return\";\n for (const [ fieldId, target ] of rangeWritten)\n {\n const fromTrue = trueWritten.get(fieldId) || new Set();\n const fromFalse = falseWritten.get(fieldId) || new Set();\n if (trueReturns && !falseReturns) for (const component of fromFalse) target.add(component);\n else if (falseReturns && !trueReturns) for (const component of fromTrue) target.add(component);\n else if (!trueReturns && !falseReturns)\n {\n for (const component of fromTrue) if (fromFalse.has(component)) target.add(component);\n }\n }\n }\n if (terminatesAllPaths(statements))\n {\n return statements;\n }\n index = plan.region.endInstruction;\n }\n return statements;\n }\n\n const lowered = lowerRange(0, program.instructions.length, written);\n if (!terminatesAllPaths(lowered)) throw new Error(\"WGSL fragment path must end in return\");\n const statements = hoistEscapingValues(lowered);\n if (compute)\n {\n if (context.requiresDerivativeUniformityOptOut)\n {\n throw new Error(\"WGSL compute cannot take screen-space derivatives or implicit-LOD samples\");\n }\n return {\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"compute\",\n entryPoint: \"main\",\n threadGroupSize: computeThreadGroupSize(program),\n ...computeBuiltinInputs(program),\n ...computeWorkgroupVariables(program),\n bindings,\n immediateConstantBuffer: program.immediateConstantBuffer || null,\n constTables: program.constTables || null,\n statements\n };\n }\n return {\n kind: \"typed-shader-program\",\n format: \"CJS_TYPED_SHADER\",\n formatVersion: 1,\n source: program.source,\n stage: \"fragment\",\n entryPoint: \"main\",\n interface: { inputs, outputs },\n bindings,\n ...(resourceTransformPlan\n ? { resourceTransforms: resourceTransformPlan.resourceTransforms }\n : {}),\n immediateConstantBuffer: program.immediateConstantBuffer || null,\n constTables: program.constTables || null,\n requiresDerivativeUniformityOptOut: context.requiresDerivativeUniformityOptOut,\n statements\n };\n}\n"],"names":["COMPONENTS","SUPPORTED_OPCODES","Set","METADATA_OPCODE_EXTENSIONS","COMPUTE_BUILTINS","Object","freeze","builtin","name","type","SAMPLE_OFFSET_OPCODES","NUMERIC_CONVERSIONS","itof","utof","ftoi","ftou","INPUT_BUILTINS","SV_POSITION","SV_ISFRONTFACE","scalarType","DERIVATIVES","deriv_rtx","deriv_rty","deriv_rtx_coarse","deriv_rty_coarse","deriv_rtx_fine","deriv_rty_fine","REQUIRES_UNIFORM_CONTROL_FLOW","keys","componentsFromMask","mask","filter","_","index","sampleOffsetArgument","instruction","viewDimension","controls","extensions","extension","typeName","length","Error","offsets","sampleOffsets","u","v","w","every","value","Number","isInteger","scalarTypeName","float32","int32","uint32","bool","bitpattern32","isDeadUntypedWrite","program","write","readValueIds","localSsaDestination","has","valueId","values","find","entry","id","Array","from","some","component","componentTypes","mixedImmediateTypes","types","map","size","valueType","wgslType","fieldType","count","scalar","packedComponent","indexOf","interfaceField","rows","direction","registerIndex","reduce","accumulator","signature","components","semantic","String","semanticName","toUpperCase","startsWith","componentTypeName","kind","semanticIndex","attribute","groupSignaturesByRegister","signatures","groups","Map","set","get","push","liveInputRegisters","registers","instructions","ref","dataflow","reads","flatMap","read","refs","origin","register","match","exec","add","validateInterpolation","input","declarations","opcodeName","data","modes","interpolationModeName","Boolean","mode","next","interpolation","sourceRead","operandIndex","vectorCode","parts","join","reinterpretCode","code","fromType","toType","context","to","includes","valueReference","inputs","target","field","packed","writeMask","rawSelectedComponents","operand","destinationMask","activeComponents","selected","swizzle","slice","immediateRawBits","immediateValues","sourceIndex","bits","immediateParts","expectedType","hex","toString","padStart","validateRcpImmediate","operands","fixedSourceLanes","exponent","bindingForOperand","bindings","resourceKind","rangeId","resourceReference","matches","binding","validateFixedHandleBinding","originalBindingForOperand","candidates","range","lowerBound","absoluteIndex","undefined","relative","registerSpace","identity","transformedSampleForOperand","transformedInputs","original","textureBinding","transform","output","transformId","layer","cbufferVectorIndex","indices","dimension","last","at","base","validateIndexableTempRead","storage","valueStorageType","indexCode","cbufferParts","vectorIndex","generatedSymbol","part","icbParts","immediateConstantBuffer","constTableParts","validateIndexableTempOperand","table","constTables","symbol","modifierOnStorage","modifier","bit","raw","masked","MODIFIER_STORAGE_TYPES","applyModifier","expected","storageTypes","modifierName","applyLaneModifier","targetType","unsupportedMinPrecision","minPrecisionName","operandLaneExpression","laneIndex","moverData","replicated","operandExpression","componentIndex","bitcast","typeInfo","bitcasts","operandTypes","bitcastKey","validateRegisterBitcasts","required","forEach","intrinsicResult","resultType","writes","actual","requiredKeys","sort","actualKeys","zeroMask","fullMask","oneMask","floatBound","splatScalar","structuredLoadExpression","addressOperand","immediateAddress","address","byteOffsetOperand","byteOffset","resource","strideBytes","wordCount","shared","groupSharedMemory","elementCount","validateFixedHandleOperand","buffer","structureStride","strideWords","firstWord","addressInRange","word","wordAddress","safeWordAddress","expressionFor","source","forcedCount","op","operator","div","iadd","mul","src","lane","lanes","width","offset","insert","divisor","dividendCode","divisorCode","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","conversion","fn","saturate","texture","mipOperand","mipBits","resinfoReturnTypeName","mipCount","level","levelInRange","dims","uav","bufferView","TYPED_VIEW_FORMATS","typedView","element","expand","loaded","storageTexture","access","dimensions","view","typedBufferLoad","safeLevel","safeCoordinates","inBounds","sampler","samplerBinding","emulatedAddressing","samplerModes","channel","offsetArg","gathered","transformed","coordComponents","gradientComponents","coord","arrayArg","coord3","tex","profile","declared","axes","forced","textures","emulated","ShouldEmulate","modesBuffer","bufferRegister","ModesExpression","ADDRESS_COORD_2","ADDRESS_COORD_3","sampled","bordered","ADDRESS_BORDER_2","ADDRESS_BORDER_3","BorderColorLiteral","borderColor","applyResultBitcast","expression","intrinsicType","declaration","stride","structureCount","computeWorkgroupVariables","variables","elementType","workgroupVariables","lowerGroupSharedStore","instructionIndex","dxbcOffset","condition","statements","lowerStorageTextureStore","unboundUavRegisters","returnType","arrayed","call","lowerInstruction","outputs","written","nonUniform","unsupportedExtension","compute","requiresDerivativeUniformityOptOut","validatePreciseInstruction","imprecise","missing","projection","testBoolean","scalarShape","flags","syncFlagNames","stage","destinationOperands","lowerWrite","destination","indexableAddress","validateIndexableTempWrite","mixedTypes","words","intrinsic","packedCode","packedName","packedType","laneType","whenTrue","whenFalse","immediateSource","clampBounds","floatType","outputType","assignmentExpression","assignment","fieldId","lowered","isArray","containsOutputAssignment","statement","elseStatements","clauses","clause","loopHasNonUniformExit","region","varying","regions","controlFlow","insideNestedLoop","candidate","startInstruction","endInstruction","conditionIsUniform","varyingGuard","lowerFragmentProgram","options","format","TypeError","lowerProgramBody","lowerGeneralComputeProgram","computeThreadGroupSize","group","threadGroupX","threadGroupY","threadGroupZ","isSafeInteger","computeBuiltinInputs","used","order","builtinInputs","shaderModel","major","minor","requireRefactoringAllowed","liveRegisters","planFromBinding","bindingPlan","resourceTransforms","normalizeResourceTransformPlan","formatVersion","explicitPlan","resourceTransformPlan","JSON","stringify","lowerBindingLayout","plans","buildSelectionPlans","computeVaryingValues","incoming","exitMergeAssignments","loopExit","breakIndex","assign","lowerRange","start","end","rangeWritten","inLoop","flowNonUniform","plan","marker","breakInstruction","conditionOperand","conditionRead","continueInstruction","loopInstruction","merge","merges","entryIncoming","exitMerges","zeroCode","bodyWritten","cloneWritten","loopNonUniform","body","exitEdges","latch","backedgeIncoming","continuing","switchInstruction","selectorOperand","selectorRead","selector","clauseNonUniform","clauseResults","clauseIndex","clauseWritten","bodyStart","bodyEnd","outerMerges","perClause","selectors","isDefault","returns","defaultInstruction","sets","terminatesAllPaths","ifInstruction","hasElse","elseInstruction","falseCode","falseIncoming","comparison","branchNonUniform","trueBodyEnd","trueWritten","trueStatements","viaSwitch","trueIncoming","falseStatements","falseWritten","trueReturns","falseReturns","fromTrue","fromFalse","hoistEscapingValues","entryPoint","threadGroupSize","interface"],"mappings":"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"}
|