@carbonenginejs/runtime-resource 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/format/CjsFormat.js +84 -83
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsResourceProbe.js +87 -86
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/format/carbonEffect/backendEngineId.js +100 -0
- package/dist/format/carbonEffect/backendEngineId.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +23 -23
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/format/index.js +1 -1
- package/dist/formats/png/core/helpers.js +27 -8
- package/dist/formats/png/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/effectPackage.js +141 -53
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +799 -456
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/formats/webgl/core/glslBackendBlock.js +70 -27
- package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/formats/webgl/core/helpers.js +53 -53
- package/dist/formats/webgl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/readGlslEffectContainer.js +82 -67
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js +10 -1
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +121 -121
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/resolve.js +8 -8
- package/dist/formats/wem/core/resolve.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +102 -60
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/docs/concepts/format-type-resolution.md +79 -0
- package/docs/formats/README.md +11 -0
- package/docs/formats/wwise.md +25 -0
- package/docs/roadmap.md +19 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DxbcGlslEmitter.js","sources":["../../../../../../src/formats/webgl/core/glsl/DxbcGlslEmitter.js"],"sourcesContent":["import CjsDxbcFormat from \"../../../dxbc/index.js\";\nimport { WebglReadError } from \"../errors.js\";\nimport { DxbcGlslOperandFormatter } from \"./DxbcGlslOperandFormatter.js\";\nimport { DxbcGlslHelperRegistry } from \"./DxbcGlslHelpers.js\";\n\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\n\n/**\n * Map-style compute lowering caps simultaneous UAV writes to this many\n * fragment color outputs. WebGL2 only guarantees `MAX_DRAW_BUFFERS >= 4`\n * (real implementations commonly expose up to 8); a compute kernel that\n * writes more UAVs than fit in one draw call's attachment set (e.g. a\n * hierarchical mip-chain \"Pack\" pass writing 16 mip levels per dispatch)\n * cannot become a single map-style fragment pass at all.\n */\nconst MAX_MAP_STYLE_UAV_OUTPUTS = 8;\n\n/**\n * GLSL sampler type per DXBC resource-dimension id (float return types; the\n * stripped-RDEF corpus reflects everything as float).\n */\nconst SAMPLER_TYPE_BY_DIMENSION = {\n 2: \"sampler2D\",\n 3: \"sampler2D\",\n 5: \"sampler3D\",\n 6: \"samplerCube\",\n 8: \"sampler2DArray\"\n};\n\n/**\n * Shadow-sampler type per WebGL2-supported DXBC resource dimension.\n * Comparison sampling changes both the call signature and the uniform type;\n * keeping this separate from the ordinary sampler table guarantees shaders\n * without comparison opcodes retain their existing declarations verbatim.\n */\nconst SHADOW_SAMPLER_TYPE_BY_DIMENSION = {\n 3: \"sampler2DShadow\",\n 6: \"samplerCubeShadow\",\n 8: \"sampler2DArrayShadow\"\n};\n\nconst COMPARISON_SAMPLE_OPCODES = new Set([ \"sample_c\", \"sample_c_lz\" ]);\nconst NON_COMPARISON_TEXTURE_OPCODES = new Set([\n \"sample\", \"sample_l\", \"sample_b\", \"sample_d\",\n \"gather4\", \"gather4_po\", \"ld\", \"ld_ms\", \"lod\"\n]);\n\n/**\n * Filtered-sample coordinate mask per resource dimension\n * (HLSLcc `TranslateTexCoord`, toGLSLInstruction.cpp:985-1031).\n */\n/** GLSL symbol for the merged detail-map array. */\nconst DETAIL_MAP_ARRAY_SYMBOL = \"sDetailArrayMap\";\n\nconst COORD_MASK_BY_DIMENSION = {\n 2: \"x\",\n 3: \"xy\",\n 5: \"xyz\",\n 6: \"xyz\",\n 7: \"xy\",\n 8: \"xyz\",\n 10: \"xyzw\"\n};\n\n/**\n * DXBC -> GLSL ES 3.00 emitter for vertex and pixel stages.\n *\n * Implements the lowering rules in `docs/dxbc-lowering/*.md`, which pin every\n * template to HLSLcc's `toGLSLInstruction.cpp`/`toGLSLDeclaration.cpp`.\n * Registers are stored as float vec4s with bitcasts at use sites, comparison\n * results are 0xFFFFFFFF/0 masks (never bools), and register-stable symbols\n * (`cb#.data[]`, `t#`, `in_SEMANTIC#`, `vs_SEMANTIC#`) form the ABI surface.\n *\n * Emitter-wide policy: Adreno-3xx driver hygiene from HLSLcc (per-component\n * bitwise splits, `op_not`, `uint(0)` literals, `uvecN()` ctor wraps) is NOT\n * ported; the target is ANGLE-backed WebGL2 and the plain spec-legal forms\n * are emitted instead.\n */\nexport class DxbcGlslEmitter\n{\n /**\n * @param {object} [options] Emitter options.\n * @param {object} [options.profile] Target-runtime profile overrides.\n * @param {\"array\"|\"std140\"} [options.profile.constantBufferStyle] `uniform vec4 cbN[]`\n * arrays for ccpwgl's uniform4fv path, or std140 blocks.\n * @param {Object.<number,number>} [options.profile.pixelConstantBufferRemap] Pixel-stage\n * cb slot renames (ccpwgl keeps PS effect constants at cb7).\n * @param {function(number,string):string} [options.profile.samplerName] Texture uniform\n * naming per register and stage.\n * @param {number} [options.profile.vertexStructuredCapacity] Element capacity for\n * vertex-stage structured-buffer UBOs (bones; Carbon max is 69 joints).\n */\n constructor(options = {})\n {\n this.helpers = new DxbcGlslHelperRegistry();\n this._defineHelpers();\n this.profile = {\n constantBufferStyle: \"array\",\n pixelConstantBufferRemap: { 0: 7 },\n samplerName: (register, stageName) => (stageName === \"vertex\" ? `vs${register}` : `s${register}`),\n vertexStructuredCapacity: 69,\n dataTextureWidth: 2048,\n // Resource (t#) registers to lower to a compile-time zero instead of\n // declaring a sampler / structured-buffer texture for them. Empty by\n // default (no behavior change); the packager fills this with the\n // tiled-lighting resources (LightBuffer/LightIndexBuffer/\n // LightProfileArray) when `--stub-light-resources` is set, so the\n // fragment sampler count drops under MAX_TEXTURE_IMAGE_UNITS.\n stubResourceRegisters: [],\n // Resource (t#) registers whose declaration is dropped and whose\n // samples lower to `vec4(1.0)` rather than `vec4(0.0)`.\n //\n // Separate from `stubResourceRegisters` because the two are not\n // interchangeable: a stubbed sampler reads as zero, which is right\n // for a term that is added and wrong for one that is multiplied.\n // `LightProfileArray` is multiplied into a light's attenuation, so\n // stubbing it would drive every profiled light to black, whereas\n // 1.0 is exactly what the shader's own no-profile path yields.\n neutralResourceRegisters: [],\n lightConstantBuffer: null,\n lightPackedTexture: null,\n // Resource (t#) registers to merge into one `sampler2DArray`, in\n // layer order. Empty by default; the packager fills it from the\n // backend-neutral detail-map recogniser. Merging three 2D textures\n // into one array binding frees two texture units on shaders that\n // sit exactly on WebGL2's 16-unit limit.\n detailMapArrayRegisters: [],\n ...options.profile\n };\n }\n\n /**\n * Registers the GLSL helper functions this emitter's lowerings can require.\n * GLSL ES 3.00 has no `bitfieldExtract`/`bitfieldInsert`/`bitCount`/\n * `textureGather` (all ES 3.10+), so `ibfe`/`ubfe`/`bfi`/`countbits`/\n * `gather4` lower to these hand-written equivalents instead.\n */\n _defineHelpers()\n {\n // D3D11 IBFE pseudocode: width = src0 & 0x1f, offset = src1 & 0x1f;\n // width == 0 -> 0; width + offset < 32 -> a left/right arithmetic-shift\n // pair that sign-extends from bit (width-1); else an arithmetic shift by\n // offset alone. `w`/`o` are masked to [0,31] first so no shift amount\n // here can ever reach 32 (GLSL shift-by-bit-width is undefined).\n this.helpers.define(\"hlslcc_ibfe\", {\n source: [\n \"int hlslcc_ibfe(int width, int offset, int value) {\",\n \" int w = width & 31;\",\n \" int o = offset & 31;\",\n \" if (w == 0) return 0;\",\n \" if (w + o < 32) {\",\n \" return (value << (32 - w - o)) >> (32 - w);\",\n \" }\",\n \" return value >> o;\",\n \"}\"\n ].join(\"\\n\")\n });\n // Same shape as `hlslcc_ibfe` with logical (unsigned) shifts.\n this.helpers.define(\"hlslcc_ubfe\", {\n source: [\n \"uint hlslcc_ubfe(uint width, uint offset, uint value) {\",\n \" uint w = width & 31u;\",\n \" uint o = offset & 31u;\",\n \" if (w == 0u) return 0u;\",\n \" if (w + o < 32u) {\",\n \" return (value << (32u - w - o)) >> (32u - w);\",\n \" }\",\n \" return value >> o;\",\n \"}\"\n ].join(\"\\n\")\n });\n // D3D11 BFI pseudocode: bits = (((1 << width) - 1) << offset);\n // ((insert << offset) & bits) | (base & ~bits). `w` is masked to [0,31]\n // (per-spec \"width&31\") so `1u << w` never shifts by 32.\n this.helpers.define(\"hlslcc_bfi\", {\n source: [\n \"uint hlslcc_bfi(uint width, uint offset, uint insert, uint base) {\",\n \" uint w = width & 31u;\",\n \" uint o = offset & 31u;\",\n \" uint bits = ((1u << w) - 1u) << o;\",\n \" return ((insert << o) & bits) | (base & ~bits);\",\n \"}\"\n ].join(\"\\n\")\n });\n // Parallel (SWAR) popcount over a 32-bit uint.\n this.helpers.define(\"hlslcc_countbits\", {\n source: [\n \"uint hlslcc_countbits(uint value) {\",\n \" uint v = value;\",\n \" v = v - ((v >> 1u) & 0x55555555u);\",\n \" v = (v & 0x33333333u) + ((v >> 2u) & 0x33333333u);\",\n \" v = (v + (v >> 4u)) & 0x0F0F0F0Fu;\",\n \" return (v * 0x01010101u) >> 24u;\",\n \"}\"\n ].join(\"\\n\")\n });\n // GLSL ES 3.00 has no `textureGather` (ES 3.10+/desktop 4.0+ only, see\n // docs/dxbc-lowering/texture-sample.md section 5). Emulated with four\n // `texelFetch` taps at the bilinear neighborhood, matching D3D Gather4 /\n // GL textureGather's neighbor order (top-left, top-right, bottom-right,\n // bottom-left -> .x/.y/.z/.w), clamped to the texture's edge.\n this.helpers.define(\"hlslcc_textureGather4Emulated\", {\n source: [\n \"vec4 hlslcc_textureGather4Emulated(sampler2D samp, vec2 uv, int channel) {\",\n \" ivec2 size = textureSize(samp, 0);\",\n \" ivec2 maxCoord = size - ivec2(1);\",\n \" vec2 texel = uv * vec2(size) - vec2(0.5);\",\n \" ivec2 base = ivec2(floor(texel));\",\n \" ivec2 c0 = clamp(base + ivec2(0, 1), ivec2(0), maxCoord);\",\n \" ivec2 c1 = clamp(base + ivec2(1, 1), ivec2(0), maxCoord);\",\n \" ivec2 c2 = clamp(base + ivec2(1, 0), ivec2(0), maxCoord);\",\n \" ivec2 c3 = clamp(base + ivec2(0, 0), ivec2(0), maxCoord);\",\n \" return vec4(\",\n \" texelFetch(samp, c0, 0)[channel],\",\n \" texelFetch(samp, c1, 0)[channel],\",\n \" texelFetch(samp, c2, 0)[channel],\",\n \" texelFetch(samp, c3, 0)[channel]\",\n \" );\",\n \"}\"\n ].join(\"\\n\")\n });\n // texture2darray variant of the gather4 emulation (ASSAO-style passes\n // gather from the deinterleaved depth/AO slice arrays constantly).\n // Same four-tap bilinear neighborhood and neighbor order as the 2D\n // helper; the layer index rides in uvw.z and rounds to the nearest\n // slice, matching D3D's array-coordinate rounding for Gather4. Unlike\n // sampler2D (default lowp), sampler2DArray has NO default precision\n // in GLSL ES 3.00, so the parameter must be qualified explicitly.\n this.helpers.define(\"hlslcc_textureGather4ArrayEmulated\", {\n source: [\n \"vec4 hlslcc_textureGather4ArrayEmulated(mediump sampler2DArray samp, vec3 uvw, int channel) {\",\n \" ivec2 size = textureSize(samp, 0).xy;\",\n \" ivec2 maxCoord = size - ivec2(1);\",\n \" int layer = int(uvw.z + 0.5);\",\n \" vec2 texel = uvw.xy * vec2(size) - vec2(0.5);\",\n \" ivec2 base = ivec2(floor(texel));\",\n \" ivec2 c0 = clamp(base + ivec2(0, 1), ivec2(0), maxCoord);\",\n \" ivec2 c1 = clamp(base + ivec2(1, 1), ivec2(0), maxCoord);\",\n \" ivec2 c2 = clamp(base + ivec2(1, 0), ivec2(0), maxCoord);\",\n \" ivec2 c3 = clamp(base + ivec2(0, 0), ivec2(0), maxCoord);\",\n \" return vec4(\",\n \" texelFetch(samp, ivec3(c0, layer), 0)[channel],\",\n \" texelFetch(samp, ivec3(c1, layer), 0)[channel],\",\n \" texelFetch(samp, ivec3(c2, layer), 0)[channel],\",\n \" texelFetch(samp, ivec3(c3, layer), 0)[channel]\",\n \" );\",\n \"}\"\n ].join(\"\\n\")\n });\n }\n\n /**\n * Translates one DXBC stage into GLSL ES 3.00 source.\n *\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes DXBC container bytes.\n * @param {object} [options] Emit options.\n * @param {string} [options.source] Source name used in error details.\n * @returns {{source:string,stageName:string,inputs:object[],outputs:object[],bindings:object[],warnings:string[],computeFragment:(object|undefined)}}\n * GLSL text plus the IO contract the packaging layer records; compute\n * stages add a `computeFragment` host contract (thread group,\n * dispatch-origin uniform, per-output UAV slice routing).\n */\n Emit(bytes, options = {})\n {\n const sourceName = options.source || \"memory\";\n const raw = CjsDxbcFormat.read(bytes, { source: sourceName, emit: CjsDxbcFormat.OUTPUT_RAW });\n if (!raw.program)\n {\n throw new WebglReadError(\"DXBC container has no shader program chunk\", { source: sourceName });\n }\n const program = raw.program;\n if (program.programTypeName !== \"vertex\" && program.programTypeName !== \"pixel\" && program.programTypeName !== \"compute\")\n {\n throw new WebglReadError(\"Only vertex, pixel, and compute stages target WebGL2\", {\n source: sourceName,\n programTypeName: program.programTypeName\n });\n }\n\n const state = {\n sourceName,\n stageName: program.programTypeName,\n isPixel: program.programTypeName === \"pixel\",\n isCompute: program.programTypeName === \"compute\",\n decoder: raw.decoder,\n isgn: raw.inputSignature,\n osgn: raw.outputSignature,\n inputNames: new Map(),\n outputNames: new Map(),\n resourceDimensions: new Map(),\n resourceNames: new Map(),\n comparisonResources: this._analyzeComparisonResources(raw.decoder, sourceName),\n constantBufferNames: new Map(),\n structuredBuffers: new Map(),\n lightConstantBuffer: this._normalizeLightConstantBufferProfile(),\n lightConstantBufferDeclared: false,\n lightPackedTexture: this._normalizeLightPackedTextureProfile(),\n lightPackedTextureDeclared: false,\n // Resource (t#) registers stubbed to a compile-time zero: their\n // declarations/bindings are dropped and every read of them lowers\n // to `uintBitsToFloat(0u)` (structured) / `vec4(0.0)` (sampled).\n stubbedResources: new Set(this.profile.stubResourceRegisters || []),\n // Resource (t#) registers dropped to a compile-time *one*: same\n // declaration handling as `stubbedResources`, but reads lower to\n // `vec4(1.0)` so a multiplied term degrades to neutral instead of\n // to black. See `neutralResourceRegisters` on the profile.\n neutralResources: new Set(this.profile.neutralResourceRegisters || []),\n // Resource register -> array layer for the merged detail maps, and\n // whether the one shared array declaration has been emitted yet.\n detailMapArrayLayers: new Map(\n (this.profile.detailMapArrayRegisters || [])\n .map((register, layer) => [ register, layer ])\n ),\n detailMapArrayDeclared: false,\n inputMasks: new Map(),\n outputMasks: new Map(),\n bindings: [],\n declarationLines: [],\n earlyMainLines: [],\n bodyLines: [],\n indent: 1,\n warnings: [],\n inputs: [],\n outputs: [],\n icbName: \"ImmCB_0\",\n // Compute (map-style) state: workgroup size, UAV register->name map,\n // UAV declared-return-types (for the non-float-format warning),\n // the `_analyzeUavStores` pre-pass results (register->dimension,\n // register->slice plan, register->per-slice output names, running\n // output-location count), the dispatch-origin uniform name once\n // declared, and which of the four thread-id pseudo-inputs this\n // shader declares.\n threadGroup: null,\n uavNames: new Map(),\n uavReturnTypes: new Map(),\n uavDimensions: new Map(),\n uavSlicePlan: new Map(),\n uavSliceNames: new Map(),\n uavOutputCount: 0,\n dispatchOriginUniform: null,\n computeInputsUsed: { threadId: false, groupId: false, tig: false, flattened: false }\n };\n this.helpers.reset();\n\n if (state.isCompute)\n {\n this._assertMapStyleCompute(state);\n this._analyzeUavStores(state);\n }\n\n state.integerVertexInputs = new Map();\n\n state.formatter = new DxbcGlslOperandFormatter({\n // Populated during vertex-input declaration (the declaration loop\n // runs before any body emission, so the map is complete before the\n // first operand is formatted). Integer reads of these registers\n // value-convert instead of bitcast - see _declareVertexInput.\n integerInputs: state.integerVertexInputs,\n componentMap: (operand) =>\n {\n if (operand.type === 1) return state.inputMasks.get(operand.registerIndex) || null;\n if (operand.type === 2) return state.outputMasks.get(operand.registerIndex) || null;\n return null;\n },\n names: {\n input: (index) => state.inputNames.get(index) || `v${index}`,\n output: (index) => state.outputNames.get(index) || `o${index}`,\n constantBuffer: (slot) => state.constantBufferNames.get(slot) || `cb${slot}`,\n constantBufferMember: this.profile.constantBufferStyle === \"std140\" ? \"data\" : \"\",\n resource: (index) => state.resourceNames.get(index) || `t${index}`,\n uav: (index) => state.uavNames.get(index) || `cjsUav${index}`,\n immediateConstantBuffer: state.icbName\n }\n });\n\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration)\n {\n this._emitDeclaration(state, instruction);\n }\n }\n if (state.isCompute)\n {\n this._emitComputeInputPrelude(state);\n }\n // Pair-aware varyings: declare and zero-fill any varying register the\n // paired pixel stage reads but this vertex stage never declares (DX11\n // tolerates such signature mismatches; GLSL linking does not).\n if (!state.isPixel && !state.isCompute && Array.isArray(options.pairVaryings))\n {\n for (const register of options.pairVaryings)\n {\n if (state.outputNames.has(register)) continue;\n const name = `vs_r${register}`;\n state.outputNames.set(register, name);\n state.declarationLines.push(`out vec4 ${name};`);\n state.outputs.push({ register, name, width: 4, semanticName: null, semanticIndex: 0 });\n state.warnings.push(`varying ${name} is read by the paired pixel stage but never produced; zero-filled`);\n }\n }\n this._zeroFillUnwrittenOutputs(state);\n for (const instruction of state.decoder.instructions)\n {\n if (!instruction.isDeclaration)\n {\n this._emitInstruction(state, instruction);\n }\n }\n if (state.indent !== 1)\n {\n throw new WebglReadError(\"Unbalanced control-flow blocks\", {\n source: sourceName,\n indent: state.indent\n });\n }\n\n const result = {\n source: this._assemble(state),\n stageName: state.stageName,\n inputs: state.inputs,\n outputs: state.outputs,\n bindings: state.bindings,\n warnings: state.warnings\n };\n if (state.isCompute)\n {\n // Host contract for one map-style draw: viewport = target size,\n // `uavOutputs[i].location` = color attachment index, and `slice`\n // (when non-null) = the texture2darray layer to attach there via\n // framebufferTextureLayer. `threadGroup` documents the original\n // dispatch granularity (fragment execution does not need it).\n result.computeFragment = {\n threadGroup: state.threadGroup ? [ ...state.threadGroup ] : null,\n dispatchOriginUniform: state.dispatchOriginUniform,\n uavOutputs: state.bindings\n .filter((binding) => binding.kind === \"uavTexture\")\n .map((binding) => ({\n register: binding.registerIndex,\n slice: binding.slice,\n location: binding.location,\n glslName: binding.name\n }))\n };\n }\n return result;\n }\n\n /**\n * Normalizes the optional local-light constant-buffer lowering profile.\n *\n * @returns {object|null} Normalized profile, or null when disabled.\n */\n _normalizeLightConstantBufferProfile()\n {\n const profile = this.profile.lightConstantBuffer;\n if (!profile || typeof profile !== \"object\") return null;\n const indexRegister = Number(profile.indexRegister);\n const dataRegister = Number(profile.dataRegister);\n if (!Number.isInteger(indexRegister) || !Number.isInteger(dataRegister)) return null;\n return {\n indexRegister,\n dataRegister,\n profileRegister: Number.isInteger(Number(profile.profileRegister)) ? Number(profile.profileRegister) : null,\n registerIndex: Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : 6,\n name: profile.name || `cb${Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : 6}`,\n capacity: Number.isInteger(Number(profile.capacity)) ? Number(profile.capacity) : 40,\n listBase: Number.isInteger(Number(profile.listBase)) ? Number(profile.listBase) : 65536\n };\n }\n\n /**\n * Finds resources used by comparison-sample instructions before resource\n * declarations are emitted, so those declarations can use shadow sampler\n * types. A single GLSL uniform cannot be both a shadow and ordinary sampler;\n * reject that shape explicitly instead of producing invalid GLSL.\n *\n * @param {object} decoder Decoded DXBC instruction stream.\n * @param {string} sourceName Source name used in error details.\n * @returns {Map<number,Set<number>>} Resource register -> sampler registers.\n */\n _analyzeComparisonResources(decoder, sourceName)\n {\n const comparisonResources = new Map();\n const ordinaryResources = new Set();\n\n for (const instruction of decoder.instructions)\n {\n const resourceOperand = instruction.operands?.[2];\n if (!resourceOperand || !Number.isInteger(resourceOperand.registerIndex)) continue;\n\n if (COMPARISON_SAMPLE_OPCODES.has(instruction.opcodeName))\n {\n const register = resourceOperand.registerIndex;\n const samplerRegister = instruction.operands?.[3]?.registerIndex;\n const samplers = comparisonResources.get(register) || new Set();\n if (Number.isInteger(samplerRegister)) samplers.add(samplerRegister);\n comparisonResources.set(register, samplers);\n }\n else if (NON_COMPARISON_TEXTURE_OPCODES.has(instruction.opcodeName))\n {\n ordinaryResources.add(resourceOperand.registerIndex);\n }\n }\n\n for (const register of comparisonResources.keys())\n {\n if (ordinaryResources.has(register))\n {\n throw new WebglReadError(\n \"A resource sampled with comparison and non-comparison operations requires separate combined samplers\",\n { source: sourceName, registerIndex: register }\n );\n }\n }\n\n return comparisonResources;\n }\n\n /**\n * Normalizes the optional packed local-light texture lowering profile.\n *\n * @returns {object|null} Normalized profile, or null when disabled.\n */\n _normalizeLightPackedTextureProfile()\n {\n const profile = this.profile.lightPackedTexture;\n if (!profile || typeof profile !== \"object\") return null;\n const indexRegister = Number(profile.indexRegister);\n const dataRegister = Number(profile.dataRegister);\n if (!Number.isInteger(indexRegister) || !Number.isInteger(dataRegister)) return null;\n return {\n indexRegister,\n dataRegister,\n profileRegister: Number.isInteger(Number(profile.profileRegister)) ? Number(profile.profileRegister) : null,\n registerIndex: Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : indexRegister,\n name: profile.name || \"cjsLocalLightTexture\",\n dataTexelBase: Number.isInteger(Number(profile.dataTexelBase)) ? Number(profile.dataTexelBase) : 131072\n };\n }\n\n /**\n * Declares the packed local-light texture ABI used to replace the\n * LightIndexBuffer/LightBuffer/LightProfileArray trio with one RGBA32UI\n * data texture.\n *\n * @param {object} state Emit state.\n */\n _ensureLightPackedTexture(state)\n {\n const profile = state.lightPackedTexture;\n if (!profile || state.lightPackedTextureDeclared) return;\n state.lightPackedTextureDeclared = true;\n\n state.declarationLines.push(`uniform highp usampler2D ${profile.name};`);\n state.bindings.push({\n kind: \"structuredTexture\",\n registerIndex: profile.registerIndex,\n name: profile.name,\n strideBytes: 0,\n format: \"RGBA32UI\",\n width: this.profile.dataTextureWidth,\n cjsSemantic: \"packedLocalLights\",\n lightIndexRegister: profile.indexRegister,\n lightDataRegister: profile.dataRegister,\n lightProfileRegister: profile.profileRegister,\n dataTexelBase: profile.dataTexelBase\n });\n }\n\n /**\n * Declares the local-light constant-buffer ABI used to replace the two\n * tiled-light structured buffers without consuming sampler units.\n *\n * @param {object} state Emit state.\n */\n _ensureLightConstantBuffer(state)\n {\n const profile = state.lightConstantBuffer;\n if (!profile || state.lightConstantBufferDeclared) return;\n state.lightConstantBufferDeclared = true;\n\n const rows = 1 + profile.capacity * 3;\n state.constantBufferNames.set(profile.registerIndex, profile.name);\n state.declarationLines.push(\n `uniform vec4 ${profile.name}[${rows}];`,\n `uint cjsLocalLightCount() { return floatBitsToUint(${profile.name}[0].x); }`,\n \"uint cjsLocalLightIndexLoad(int element) {\",\n \" uint count = cjsLocalLightCount();\",\n \" if (count == 0u) return 0u;\",\n ` const int listBase = ${profile.listBase};`,\n \" if (element < listBase) return uint(listBase);\",\n \" int local = element - listBase;\",\n \" int node = local >> 1;\",\n \" if (node < 0 || uint(node) >= count) return 0u;\",\n \" if ((local & 1) == 0) return uint(node + 1);\",\n \" uint next = uint(node + 1);\",\n \" return next < count ? uint(listBase + int(next) * 2) : 0u;\",\n \"}\",\n \"vec4 cjsLocalLightRow(int lightIndex, int row) {\",\n \" int i = lightIndex - 1;\",\n \" if (i < 0 || uint(i) >= cjsLocalLightCount() || row < 0 || row >= 3) return vec4(0.0);\",\n ` return ${profile.name}[1 + i * 3 + row];`,\n \"}\"\n );\n state.bindings.push({\n kind: \"constantBuffer\",\n registerIndex: profile.registerIndex,\n name: profile.name,\n sizeInVec4: rows,\n style: \"array\",\n cjsSemantic: \"localLights\",\n capacityLights: profile.capacity,\n lightIndexRegister: profile.indexRegister,\n lightDataRegister: profile.dataRegister,\n lightProfileRegister: profile.profileRegister\n });\n }\n\n /**\n * Rejects compute shaders that need real compute-pipeline features (shared\n * memory, barriers, atomics, raw/structured/typed UAV reads) instead of the\n * \"map-style\" thread-per-fragment shape this emitter lowers. The message\n * intentionally contains \"not supported\" so packaging's kill-list\n * classifier regex (`/not supported|No GLSL lowering|unimplementable/i`)\n * routes these to the exclusion list rather than the failure list.\n *\n * @param {object} state Emit state.\n */\n _assertMapStyleCompute(state)\n {\n for (const instruction of state.decoder.instructions)\n {\n const name = instruction.opcodeName;\n const blocked = name.startsWith(\"dcl_thread_group_shared_memory\")\n || name === \"sync\"\n || name.startsWith(\"atomic_\")\n || name.startsWith(\"imm_atomic_\")\n || name === \"ld_uav_typed\"\n || name === \"store_raw\"\n || name === \"store_structured\";\n if (blocked)\n {\n throw new WebglReadError(\n \"compute stage is not map-style; WebGL2 fragment lowering is not supported for this instruction\",\n { source: state.sourceName, opcodeName: name, offset: instruction.offset }\n );\n }\n }\n }\n\n /**\n * Pre-scans a map-style compute shader's `store_uav_typed` instructions and\n * builds a per-UAV slice plan before any declaration is emitted.\n *\n * Straight-line constant propagation only: the address registers ASSAO-style\n * Prepare passes build are `mov rX.<c>, l(k)` immediates, so the tracker\n * records the last constant written to each temp component and treats every\n * other write as dynamic. Each stored-to UAV register resolves to either\n * `{ kind: \"single\" }` (at most one store; the array-slice coordinate, when\n * present, is dropped — the host attaches the target layer via\n * `framebufferTextureLayer`) or `{ kind: \"multiSlice\", slices, sliceByOffset }`\n * (several stores at statically distinct texture2darray slices, each routed\n * to its own fragment output — the host attaches those layers as sequential\n * color attachments).\n *\n * Anything outside those two shapes cannot become one fragment pass, so the\n * throw messages deliberately contain \"not supported\" for packaging's\n * kill-list classifier (see `_assertMapStyleCompute`).\n *\n * @param {object} state Emit state.\n */\n _analyzeUavStores(state)\n {\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration && instruction.opcodeName === \"dcl_unordered_access_view_typed\")\n {\n state.uavDimensions.set(instruction.declaration.registerIndex, instruction.declaration.resourceDimension);\n }\n }\n\n const constantTemps = new Map();\n const storesByUav = new Map();\n let controlFlowDepth = 0;\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration) continue;\n const name = instruction.opcodeName;\n if (name === \"if\" || name === \"loop\" || name === \"switch\")\n {\n controlFlowDepth += 1;\n continue;\n }\n if (name === \"endif\" || name === \"endloop\" || name === \"endswitch\")\n {\n controlFlowDepth -= 1;\n continue;\n }\n if (name === \"store_uav_typed\")\n {\n const [ uavOperand, addressOperand ] = instruction.operands;\n const register = uavOperand.registerIndex;\n const isArray = state.uavDimensions.get(register) === 8;\n const stores = storesByUav.get(register) || [];\n stores.push({\n offset: instruction.offset,\n slice: isArray ? this._resolveSliceConstant(addressOperand, constantTemps) : null,\n isArray,\n controlFlowDepth\n });\n storesByUav.set(register, stores);\n continue;\n }\n this._trackTempConstants(instruction, constantTemps);\n }\n\n for (const [ register, stores ] of storesByUav)\n {\n if (stores.length <= 1)\n {\n state.uavSlicePlan.set(register, { kind: \"single\" });\n continue;\n }\n const throwNotMapStyle = (shape) =>\n {\n throw new WebglReadError(\n `compute stage is not map-style; ${shape} are not supported by the WebGL2 emitter's fragment-output lowering`,\n { source: state.sourceName, registerIndex: register, storeCount: stores.length }\n );\n };\n const slices = stores.map((store) => store.slice);\n if (!stores[0].isArray)\n {\n throwNotMapStyle(\"multiple stores to one non-array UAV\");\n }\n if (slices.some((slice) => slice === null))\n {\n throwNotMapStyle(\"multiple UAV stores with a dynamic array slice\");\n }\n if (new Set(slices).size !== slices.length)\n {\n throwNotMapStyle(\"multiple UAV stores to the same array slice\");\n }\n if (stores.some((store) => store.controlFlowDepth > 0))\n {\n throwNotMapStyle(\"multi-slice UAV stores inside divergent control flow\");\n }\n state.uavSlicePlan.set(register, {\n kind: \"multiSlice\",\n slices: [ ...slices ].sort((a, b) => a - b),\n sliceByOffset: new Map(stores.map((store) => [ store.offset, store.slice ]))\n });\n }\n }\n\n /**\n * Updates the per-temp-component constant tracker for one instruction:\n * `mov rX.<mask>, l(...)` records each written component's immediate dword,\n * and any other write to a temp component invalidates it. Destination\n * operands are exactly the mask-selection temp operands (DXBC sources\n * always read through swizzle/select1), so this also handles multi-\n * destination opcodes like `sincos` and `udiv` conservatively.\n *\n * @param {object} instruction Decoded non-declaration instruction.\n * @param {Map<string, number>} constantTemps Constant tracker keyed `<register>.<component>`.\n */\n _trackTempConstants(instruction, constantTemps)\n {\n const source = instruction.operands[1];\n const isConstantMov = instruction.opcodeName === \"mov\"\n && !instruction.saturate\n && source?.type === 4\n && source.modifierName === \"none\";\n for (const operand of instruction.operands)\n {\n if (operand.type !== 0 || operand.selectionModeName !== \"mask\" || operand.registerIndex === null) continue;\n for (const component of operand.mask || \"xyzw\")\n {\n const key = `${operand.registerIndex}.${component}`;\n if (isConstantMov && operand.mask)\n {\n const value = source.componentCount === 1\n ? source.immediateValues[0]\n : source.immediateValues[\"xyzw\".indexOf(component)];\n constantTemps.set(key, value.uint32 | 0);\n }\n else\n {\n constantTemps.delete(key);\n }\n }\n }\n }\n\n /**\n * Resolves the array-slice (z) component of a `store_uav_typed` address\n * operand to a compile-time constant, or null when it is dynamic.\n *\n * @param {object} addressOperand Decoded address operand.\n * @param {Map<string, number>} constantTemps Constant tracker keyed `<register>.<component>`.\n * @returns {number|null} Constant slice index, or null.\n */\n _resolveSliceConstant(addressOperand, constantTemps)\n {\n if (addressOperand.type === 4)\n {\n const value = addressOperand.componentCount === 1\n ? addressOperand.immediateValues[0]\n : addressOperand.immediateValues[2];\n return value ? value.uint32 | 0 : null;\n }\n if (addressOperand.type !== 0)\n {\n return null;\n }\n const component = addressOperand.selectionModeName === \"swizzle\" && addressOperand.swizzle\n ? addressOperand.swizzle[2]\n : \"z\";\n const key = `${addressOperand.registerIndex}.${component}`;\n return constantTemps.has(key) ? constantTemps.get(key) : null;\n }\n\n /**\n * Allocates the next map-style UAV fragment-output location, enforcing the\n * `MAX_MAP_STYLE_UAV_OUTPUTS` attachment budget across single-output UAVs\n * and per-slice multi-output UAVs alike.\n *\n * @param {object} state Emit state.\n * @param {number} register UAV register index (error detail only).\n * @returns {number} Allocated output location.\n */\n _allocateUavOutputLocation(state, register)\n {\n const location = state.uavOutputCount;\n if (location >= MAX_MAP_STYLE_UAV_OUTPUTS)\n {\n throw new WebglReadError(\n \"compute stage is not map-style; too many simultaneous UAV writes are not supported by the WebGL2 emitter's fragment-output lowering\",\n { source: state.sourceName, registerIndex: register, uavCount: location + 1 }\n );\n }\n state.uavOutputCount += 1;\n return location;\n }\n\n // ------------------------------------------------------------------\n // Declarations\n // ------------------------------------------------------------------\n\n /**\n * Emits one decoded DXBC declaration into the GLSL interface and manifest.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC declaration instruction.\n * @private\n */\n _emitDeclaration(state, instruction)\n {\n const declaration = instruction.declaration;\n switch (instruction.opcodeName)\n {\n case \"dcl_global_flags\":\n // layout(early_fragment_tests) is not GLSL ES 3.00; suppressed by design.\n break;\n case \"dcl_temps\":\n for (let index = 0; index < declaration.tempCount; index += 1)\n {\n state.declarationLines.push(`vec4 r${index};`);\n }\n break;\n case \"dcl_indexable_temp\":\n state.declarationLines.push(\n `vec${declaration.componentCount} x${declaration.registerIndex}[${declaration.registerCount}];`\n );\n break;\n case \"dcl_constant_buffer\": {\n const slot = declaration.registerIndex;\n const mapped = state.isPixel ? (this.profile.pixelConstantBufferRemap[slot] ?? slot) : slot;\n const name = `cb${mapped}`;\n state.constantBufferNames.set(slot, name);\n if (this.profile.constantBufferStyle === \"std140\")\n {\n state.declarationLines.push(\n `layout(std140) uniform ConstantBuffer${mapped} {`,\n ` vec4 data[${declaration.sizeInVec4}];`,\n `} ${name};`\n );\n }\n else\n {\n state.declarationLines.push(`uniform vec4 ${name}[${declaration.sizeInVec4}];`);\n }\n state.bindings.push({\n kind: \"constantBuffer\",\n registerIndex: slot,\n name,\n sizeInVec4: declaration.sizeInVec4,\n style: this.profile.constantBufferStyle\n });\n break;\n }\n case \"dcl_sampler\":\n break;\n case \"dcl_resource\": {\n const register = declaration.registerIndex;\n if (state.lightPackedTexture?.profileRegister === register)\n {\n this._ensureLightPackedTexture(state);\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, `s${register}`);\n break;\n }\n if (state.lightConstantBuffer?.profileRegister === register)\n {\n this._ensureLightConstantBuffer(state);\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, `s${register}`);\n break;\n }\n if (state.stubbedResources.has(register))\n {\n // Stubbed tiled-lighting sampler (e.g. LightProfileArray):\n // drop the declaration + binding entirely; every sample of\n // this register lowers to vec4(0.0) in _textureSample.\n break;\n }\n if (state.neutralResources.has(register))\n {\n // Same as the stub above, but its samples lower to\n // vec4(1.0). Dropping the declaration is what frees the\n // sampler unit; the substitution is what keeps the result\n // correct for a multiplied term.\n //\n // Nothing is recorded as a binding, because nothing is\n // bound. The pass's resource-transform section carries the\n // statement that this resource was dropped deliberately;\n // see `localLightProfileNeutralTransformFor`.\n break;\n }\n if (declaration.resourceDimension === 1)\n {\n // Buffer<> texel buffers (post-processing) become float data textures\n // read via width-wrapped texelFetch; no samplerBuffer in WebGL2.\n const name = `bt${register}`;\n state.resourceDimensions.set(register, 1);\n state.resourceNames.set(register, name);\n state.declarationLines.push(`uniform highp sampler2D ${name};`);\n state.bindings.push({\n kind: \"bufferTexture\",\n registerIndex: register,\n name,\n format: \"RGBA32F\",\n width: this.profile.dataTextureWidth,\n returnTypes: declaration.returnType?.returnTypeNames || null\n });\n break;\n }\n const comparisonSamplers = state.comparisonResources.get(register) || null;\n const samplerType = comparisonSamplers\n ? SHADOW_SAMPLER_TYPE_BY_DIMENSION[declaration.resourceDimension]\n : SAMPLER_TYPE_BY_DIMENSION[declaration.resourceDimension];\n if (!samplerType)\n {\n throw new WebglReadError(\n comparisonSamplers\n ? \"Comparison sampling is not supported for this resource dimension by the WebGL2 emitter\"\n : \"Resource dimension is not supported by the WebGL2 emitter\",\n {\n source: state.sourceName,\n dimensionName: declaration.resourceDimensionName\n }\n );\n }\n if (state.detailMapArrayLayers.has(register))\n {\n this._declareDetailArrayMap(state, register, declaration, comparisonSamplers);\n break;\n }\n\n const name = this.profile.samplerName(register, state.stageName);\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, name);\n state.declarationLines.push(`uniform mediump ${samplerType} ${name};`);\n state.bindings.push({\n kind: \"resource\",\n registerIndex: register,\n name,\n samplerType,\n dimensionName: declaration.resourceDimensionName,\n ...(comparisonSamplers ? {\n comparison: true,\n samplerRegisterIndices: [ ...comparisonSamplers ].sort((a, b) => a - b)\n } : {})\n });\n break;\n }\n case \"dcl_resource_structured\": {\n const register = declaration.registerIndex;\n const strideBytes = declaration.structureStride || 4;\n const strideDwords = Math.max(1, strideBytes >> 2);\n if (state.lightPackedTexture?.indexRegister === register)\n {\n this._ensureLightPackedTexture(state);\n state.structuredBuffers.set(register, { kind: \"lightIndexPacked\", name: state.lightPackedTexture.name, strideDwords });\n break;\n }\n if (state.lightPackedTexture?.dataRegister === register)\n {\n this._ensureLightPackedTexture(state);\n state.structuredBuffers.set(register, {\n kind: \"lightDataPacked\",\n name: state.lightPackedTexture.name,\n strideDwords,\n dataTexelBase: state.lightPackedTexture.dataTexelBase\n });\n break;\n }\n if (state.lightConstantBuffer?.indexRegister === register)\n {\n this._ensureLightConstantBuffer(state);\n state.structuredBuffers.set(register, { kind: \"lightIndexCb\", name: state.lightConstantBuffer.name, strideDwords });\n break;\n }\n if (state.lightConstantBuffer?.dataRegister === register)\n {\n this._ensureLightConstantBuffer(state);\n state.structuredBuffers.set(register, { kind: \"lightDataCb\", name: state.lightConstantBuffer.name, strideDwords });\n break;\n }\n if (state.stubbedResources.has(register))\n {\n // Stubbed tiled-lighting structured buffer (LightBuffer /\n // LightIndexBuffer): drop the usampler2D declaration + binding;\n // ld_structured reads of it lower to uintBitsToFloat(0u), which\n // zeroes the per-tile light count and makes the light loop dead.\n state.structuredBuffers.set(register, { kind: \"stub\", name: `sb${register}`, strideDwords });\n break;\n }\n if (state.isPixel)\n {\n // Pixel-stage structured buffers (light lists) become RGBA32UI data\n // textures: exact bits, no SSBO, resolution-scalable tile tables.\n const name = `sb${register}`;\n state.structuredBuffers.set(register, { kind: \"texture\", name, strideDwords });\n state.declarationLines.push(`uniform highp usampler2D ${name};`);\n state.bindings.push({\n kind: \"structuredTexture\",\n registerIndex: register,\n name,\n strideBytes,\n format: \"RGBA32UI\",\n width: this.profile.dataTextureWidth\n });\n }\n else\n {\n // Vertex-stage structured buffers (BoneTransforms) become dedicated\n // std140 UBOs sized to the profile capacity (Carbon max 69 joints).\n const name = `CjsSb${register}`;\n const capacity = this.profile.vertexStructuredCapacity;\n const rows = capacity * Math.ceil(strideDwords / 4);\n state.structuredBuffers.set(register, { kind: \"ubo\", name, strideDwords });\n state.declarationLines.push(\n `layout(std140) uniform ${name}Block {`,\n ` vec4 data[${rows}];`,\n `} ${name};`\n );\n state.bindings.push({\n kind: \"structuredUbo\",\n registerIndex: register,\n name,\n strideBytes,\n capacityElements: capacity\n });\n }\n break;\n }\n case \"dcl_input\":\n if (state.isCompute)\n {\n this._declareComputeInput(state, instruction);\n }\n else\n {\n this._declareVertexInput(state, instruction);\n }\n break;\n case \"dcl_thread_group\":\n state.threadGroup = [ declaration.threadGroupX, declaration.threadGroupY, declaration.threadGroupZ ];\n break;\n case \"dcl_unordered_access_view_typed\": {\n const register = declaration.registerIndex;\n const returnTypes = declaration.returnType?.returnTypeNames || null;\n const plan = state.uavSlicePlan.get(register);\n state.uavReturnTypes.set(register, returnTypes);\n if (plan?.kind === \"multiSlice\")\n {\n // Statically distinct texture2darray slices each become their\n // own fragment output; the host attaches the matching array\n // layers as sequential color attachments (slice order) via\n // framebufferTextureLayer.\n const sliceNames = new Map();\n for (const slice of plan.slices)\n {\n const name = `cjsUav${register}_s${slice}`;\n const location = this._allocateUavOutputLocation(state, register);\n sliceNames.set(slice, name);\n state.declarationLines.push(`layout(location = ${location}) out highp vec4 ${name};`);\n state.bindings.push({\n kind: \"uavTexture\",\n registerIndex: register,\n name,\n slice,\n location,\n returnTypes\n });\n }\n state.uavSliceNames.set(register, sliceNames);\n break;\n }\n const name = `cjsUav${register}`;\n const location = this._allocateUavOutputLocation(state, register);\n state.uavNames.set(register, name);\n state.declarationLines.push(`layout(location = ${location}) out highp vec4 ${name};`);\n state.bindings.push({\n kind: \"uavTexture\",\n registerIndex: register,\n name,\n slice: null,\n location,\n returnTypes\n });\n break;\n }\n case \"dcl_input_ps\":\n case \"dcl_input_ps_siv\":\n case \"dcl_input_ps_sgv\":\n this._declarePixelInput(state, instruction);\n break;\n case \"dcl_input_sgv\":\n this._declareSystemInput(state, instruction);\n break;\n case \"dcl_output\":\n case \"dcl_output_siv\":\n this._declareOutput(state, instruction);\n break;\n case \"customdata\":\n this._declareImmediateConstantBuffer(state, instruction);\n break;\n default:\n throw new WebglReadError(\"Declaration is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n opcodeName: instruction.opcodeName\n });\n }\n }\n\n /**\n * Finds the signature element assigned to a register.\n *\n * @param {object|null} signature Decoded DXBC signature.\n * @param {number} registerIndex Register index.\n * @returns {object|null} Matching signature element.\n * @private\n */\n _signatureElement(signature, registerIndex)\n {\n return signature?.elements.find((element) => element.registerIndex === registerIndex) || null;\n }\n\n /**\n * Declares one vertex input using its Carbon semantic identity.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded input declaration.\n * @private\n */\n _declareVertexInput(state, instruction)\n {\n const register = instruction.declaration.registerIndex;\n if (state.isPixel)\n {\n return this._declarePixelInput(state, instruction);\n }\n const element = this._signatureElement(state.isgn, register);\n if (!element)\n {\n throw new WebglReadError(\"Vertex input register has no ISGN row\", {\n source: state.sourceName,\n register\n });\n }\n if (state.inputNames.has(register))\n {\n return;\n }\n const name = `in_${element.semanticName}${element.semanticIndex}`;\n const width = this._maskWidth(element.mask);\n // Integer semantics are float-lowered: ccpwgl binds all attributes with\n // vertexAttribPointer, so uvec/ivec declarations would break linking.\n // Because they're uploaded as plain float VALUES (e.g. bone index 5.0,\n // not the bit pattern of int 5 - confirmed by the legacy skinned VS\n // which does `3.0 * attr.x`), an integer read of one must VALUE-convert\n // (`int(attr)`) rather than bitcast (`floatBitsToInt(attr)`, which would\n // yield garbage). Record integer-typed inputs so the formatter knows.\n if (element.componentTypeName === \"uint32\" || element.componentTypeName === \"int32\")\n {\n state.integerVertexInputs.set(register, element.componentTypeName === \"uint32\" ? \"uint\" : \"int\");\n }\n state.inputNames.set(register, name);\n state.inputMasks.set(register, this._maskChars(element.mask));\n state.declarationLines.push(`in highp ${this._vecType(width)} ${name};`);\n state.inputs.push({\n register,\n name,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex,\n componentTypeName: element.componentTypeName,\n mask: element.mask\n });\n }\n\n /**\n * Declares one pixel-stage varying or system input.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded input declaration.\n * @private\n */\n _declarePixelInput(state, instruction)\n {\n const register = instruction.declaration.registerIndex;\n const declaration = instruction.declaration;\n\n if (instruction.opcodeName === \"dcl_input_ps_siv\" && declaration.systemValueName === \"position\")\n {\n state.inputNames.set(register, \"hlslcc_FragCoord\");\n state.earlyMainLines.push(\"vec4 hlslcc_FragCoord = vec4(gl_FragCoord.xyz, 1.0/gl_FragCoord.w);\");\n return;\n }\n if (instruction.opcodeName === \"dcl_input_ps_sgv\" || instruction.opcodeName === \"dcl_input_sgv\")\n {\n return this._declareSystemInput(state, instruction);\n }\n\n if (state.inputNames.has(register))\n {\n return;\n }\n const element = this._signatureElement(state.isgn, register);\n if (!element)\n {\n throw new WebglReadError(\"Pixel input register has no ISGN row\", {\n source: state.sourceName,\n register\n });\n }\n // Varyings are internal VS<->PS wires: named by register and always vec4,\n // so packed registers (two semantics sharing one register) and partial\n // reads can never produce cross-stage name/type mismatches.\n const name = `vs_r${register}`;\n const flat = element.componentType === 1 || element.componentType === 2\n || declaration.interpolationModeName === \"constant\";\n state.inputNames.set(register, name);\n state.declarationLines.push(`${flat ? \"flat \" : \"\"}in vec4 ${name};`);\n state.inputs.push({\n register,\n name,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex,\n componentTypeName: element.componentTypeName,\n mask: element.mask\n });\n }\n\n /**\n * Maps a supported system-generated input to its GLSL expression.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded system-input declaration.\n * @private\n */\n _declareSystemInput(state, instruction)\n {\n const declaration = instruction.declaration;\n const register = declaration.registerIndex;\n switch (declaration.systemValueName)\n {\n case \"is_front_face\":\n state.inputNames.set(register, \"vec4(uintBitsToFloat(gl_FrontFacing ? 0xffffffffu : 0u))\");\n break;\n case \"vertex_id\":\n state.inputNames.set(register, \"vec4(intBitsToFloat(gl_VertexID))\");\n break;\n case \"instance_id\":\n state.inputNames.set(register, \"vec4(intBitsToFloat(gl_InstanceID))\");\n break;\n default:\n throw new WebglReadError(\"System-generated input is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n systemValueName: declaration.systemValueName\n });\n }\n }\n\n /**\n * Records which compute pseudo-input(s) a `dcl_input` declaration exposes.\n * The actual GLSL (uniform + derived locals) is emitted once, after every\n * declaration has been seen, by `_emitComputeInputPrelude` — `dcl_input`\n * for a thread-id kind can appear before or after `dcl_thread_group` in the\n * bytecode stream, and the flattened/group-id forms need the workgroup\n * size regardless of declaration order.\n *\n * @param {object} state Emit state.\n * @param {object} instruction `dcl_input` instruction with a thread-id-kind operand.\n */\n _declareComputeInput(state, instruction)\n {\n const kind = instruction.declaration.operandTypeName;\n switch (kind)\n {\n case \"input_thread_id\":\n state.computeInputsUsed.threadId = true;\n break;\n case \"input_thread_group_id\":\n state.computeInputsUsed.groupId = true;\n break;\n case \"input_thread_id_in_group\":\n state.computeInputsUsed.tig = true;\n break;\n case \"input_thread_id_in_group_flattened\":\n state.computeInputsUsed.flattened = true;\n break;\n default:\n throw new WebglReadError(\"Compute input is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n operandTypeName: kind\n });\n }\n }\n\n /**\n * Emits the shared `gl_FragCoord`-derived thread-id prelude for map-style\n * compute shaders: a `cjsDispatchOrigin` uniform (so a dispatch can be\n * tiled across more than one draw/viewport), then only the intermediate\n * and final locals this shader actually declared inputs for.\n *\n * @param {object} state Emit state.\n */\n _emitComputeInputPrelude(state)\n {\n const used = state.computeInputsUsed;\n if (!used.threadId && !used.groupId && !used.tig && !used.flattened)\n {\n return;\n }\n state.dispatchOriginUniform = \"cjsDispatchOrigin\";\n state.declarationLines.push(\"uniform ivec3 cjsDispatchOrigin;\");\n state.bindings.push({ kind: \"dispatchUniform\", name: \"cjsDispatchOrigin\" });\n state.earlyMainLines.push(\"ivec3 cjsThreadId = ivec3(ivec2(gl_FragCoord.xy), 0) + cjsDispatchOrigin;\");\n if (used.threadId)\n {\n state.earlyMainLines.push(\"vec4 vThreadID = intBitsToFloat(ivec4(cjsThreadId, 0));\");\n }\n if (used.groupId || used.tig || used.flattened)\n {\n const [ nx, ny, nz ] = this._threadGroupSizeOrThrow(state);\n state.earlyMainLines.push(`ivec3 cjsGroupId = cjsThreadId / ivec3(${nx}, ${ny}, ${nz});`);\n if (used.groupId)\n {\n state.earlyMainLines.push(\"vec4 vThreadGroupID = intBitsToFloat(ivec4(cjsGroupId, 0));\");\n }\n if (used.tig || used.flattened)\n {\n state.earlyMainLines.push(`ivec3 cjsTig = cjsThreadId - cjsGroupId * ivec3(${nx}, ${ny}, ${nz});`);\n if (used.tig)\n {\n state.earlyMainLines.push(\"vec4 vThreadIDInGroup = intBitsToFloat(ivec4(cjsTig, 0));\");\n }\n if (used.flattened)\n {\n state.earlyMainLines.push(\n `vec4 vThreadIDInGroupFlattened = intBitsToFloat(ivec4(cjsTig.z*${nx}*${ny} + cjsTig.y*${nx} + cjsTig.x, 0, 0, 0));`\n );\n }\n }\n }\n }\n\n /**\n * Reads the workgroup size recorded by `dcl_thread_group`, required to\n * split the flat thread id back into group id / id-in-group components.\n *\n * @param {object} state Emit state.\n * @returns {[number,number,number]} Workgroup size.\n */\n _threadGroupSizeOrThrow(state)\n {\n if (!Array.isArray(state.threadGroup))\n {\n throw new WebglReadError(\"Compute shader reads a thread-group-relative input with no dcl_thread_group\", {\n source: state.sourceName\n });\n }\n return state.threadGroup;\n }\n\n /**\n * Declares one stage output and records its backend identity.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded output declaration.\n * @private\n */\n _declareOutput(state, instruction)\n {\n const declaration = instruction.declaration;\n const register = declaration.registerIndex;\n\n if (instruction.opcodeName === \"dcl_output_siv\")\n {\n if (declaration.systemValueName === \"position\")\n {\n state.outputNames.set(register, \"gl_Position\");\n state.outputs.push({ register, name: \"gl_Position\", semanticName: \"SV_Position\", semanticIndex: 0 });\n return;\n }\n throw new WebglReadError(\"Output system value is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n systemValueName: declaration.systemValueName\n });\n }\n\n if (state.outputNames.has(register))\n {\n return;\n }\n const element = this._signatureElement(state.osgn, register);\n if (!element)\n {\n throw new WebglReadError(\"Output register has no OSGN row\", {\n source: state.sourceName,\n register\n });\n }\n const width = this._maskWidth(element.mask);\n if (state.isPixel)\n {\n const name = `${element.semanticName}${element.semanticIndex}`;\n state.outputNames.set(register, name);\n state.outputMasks.set(register, this._maskChars(element.mask));\n state.declarationLines.push(`layout(location = ${element.semanticIndex}) out ${this._vecType(width)} ${name};`);\n state.outputs.push({\n register,\n name,\n width,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex\n });\n }\n else\n {\n const name = `vs_r${register}`;\n state.outputNames.set(register, name);\n state.declarationLines.push(`out vec4 ${name};`);\n state.outputs.push({\n register,\n name,\n width: 4,\n semanticName: element.semanticName,\n semanticIndex: element.semanticIndex\n });\n }\n }\n\n /**\n * Materializes an immediate constant-buffer declaration.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded custom-data declaration.\n * @private\n */\n _declareImmediateConstantBuffer(state, instruction)\n {\n const rows = instruction.customData?.immediateConstantBuffer;\n if (!rows)\n {\n return;\n }\n const literals = rows.map((row) =>\n `vec4(${row.map((value) => `uintBitsToFloat(0x${(value.uint32 >>> 0).toString(16)}u)`).join(\", \")})`\n );\n state.declarationLines.push(\n `const vec4 ${state.icbName}[${rows.length}] = vec4[${rows.length}](`,\n ...literals.map((literal, index) => ` ${literal}${index < literals.length - 1 ? \",\" : \"\"}`),\n \");\"\n );\n }\n\n /**\n * Initializes paired vertex outputs that the source shader does not write.\n *\n * @param {object} state Mutable emission state.\n * @private\n */\n _zeroFillUnwrittenOutputs(state)\n {\n const written = new Set();\n for (const instruction of state.decoder.instructions)\n {\n if (instruction.isDeclaration) continue;\n for (const operand of instruction.operands)\n {\n if (operand.type === 2 && operand.registerIndex !== null)\n {\n written.add(operand.registerIndex);\n }\n }\n }\n for (const [ register, name ] of state.outputNames)\n {\n if (!written.has(register) && name !== \"gl_Position\")\n {\n const width = state.outputs.find((output) => output.register === register)?.width || 4;\n state.earlyMainLines.push(`${name} = ${this._vecType(width)}(0.0);`);\n state.warnings.push(`output ${name} is declared but never written; zero-filled`);\n }\n }\n }\n\n // ------------------------------------------------------------------\n // Instructions\n // ------------------------------------------------------------------\n\n /**\n * Dispatches one decoded instruction to its GLSL lowering rule.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @private\n */\n _emitInstruction(state, instruction)\n {\n const lower = DxbcGlslEmitter.LOWERINGS[instruction.opcodeName];\n if (!lower)\n {\n throw new WebglReadError(\"No GLSL lowering for opcode\", {\n source: state.sourceName,\n opcodeName: instruction.opcodeName,\n offset: instruction.offset\n });\n }\n lower.call(this, state, instruction);\n }\n\n /**\n * Appends one correctly indented line to the emitted function body.\n *\n * @param {object} state Mutable emission state.\n * @param {string} text GLSL source line.\n * @private\n */\n _line(state, text)\n {\n state.bodyLines.push(`${\" \".repeat(state.indent)}${text}`);\n }\n\n /**\n * Counts the active components in a DXBC mask.\n *\n * @param {number} mask DXBC component bit mask.\n * @returns {number} Active component count.\n * @private\n */\n _maskWidth(mask)\n {\n let width = 0;\n for (let bit = 0; bit < 4; bit += 1)\n {\n if (mask & (1 << bit)) width += 1;\n }\n return width || 4;\n }\n\n /**\n * Converts a DXBC component bit mask to GLSL swizzle characters.\n *\n * @param {number} mask DXBC component bit mask.\n * @returns {string} GLSL component string.\n * @private\n */\n _maskChars(mask)\n {\n return COMPONENTS.filter((_, bit) => mask & (1 << bit)).join(\"\") || \"xyzw\";\n }\n\n /**\n * Builds the lvalue text for one register-space destination component,\n * remapped into the target variable's declared component space.\n */\n _destComponentRef(state, destOperand, target, component)\n {\n const remapped = state.formatter.remapComponents(destOperand, component);\n return `${target.ref}${remapped ? `.${remapped}` : \"\"}`;\n }\n\n /**\n * Formats a resolved destination reference and optional mask.\n *\n * @param {object} target Resolved destination.\n * @returns {string} GLSL lvalue text.\n * @private\n */\n _destText(target)\n {\n return `${target.ref}${target.mask ? `.${target.mask}` : \"\"}`;\n }\n\n /**\n * Selects the GLSL floating scalar or vector type for a width.\n *\n * @param {number} width Component width.\n * @returns {string} GLSL type name.\n * @private\n */\n _vecType(width)\n {\n return width === 1 ? \"float\" : `vec${width}`;\n }\n\n /**\n * Reads a source at the destination mask's width, wrapping in a matching\n * constructor so intrinsic arguments always type-check exactly.\n */\n _vecArg(state, operand, destMask, as = \"float\")\n {\n const expression = state.formatter.sourceExpression(operand, { destMask, as });\n if (destMask.length === 1)\n {\n return expression;\n }\n const ctor = { float: \"vec\", int: \"ivec\", uint: \"uvec\" }[as] + destMask.length;\n return `${ctor}(${expression})`;\n }\n\n /**\n * Resolves a destination operand and its register-space component mask.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {number} [operandIndex=0] Destination operand index.\n * @returns {{target: object|null, mask: string}} Destination and mask.\n * @private\n */\n _destMask(state, instruction, operandIndex = 0)\n {\n const target = state.formatter.destination(instruction.operands[operandIndex]);\n // `mask` stays in register space: source-swizzle pairing is positional\n // against the register components; `target.mask` carries the declared-space\n // display form used for lvalue text.\n return { target, mask: target?.registerMask || \"xyzw\" };\n }\n\n /**\n * Tests whether an operand produces one scalar component.\n *\n * @param {object} operand Decoded DXBC operand.\n * @returns {boolean} True when the source is scalar.\n * @private\n */\n _isScalarSource(operand)\n {\n return operand.selectionModeName === \"select1\"\n || (operand.type === 4 && operand.componentCount === 1)\n || operand.componentCount === 1;\n }\n\n /**\n * Emits an assignment and applies instruction saturation when required.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} valueExpression GLSL right-hand expression.\n * @param {object} [options={}] Assignment formatting options.\n * @private\n */\n _assign(state, instruction, valueExpression, options = {})\n {\n const statement = state.formatter.assignment(instruction.operands[0], valueExpression, options);\n if (statement)\n {\n this._line(state, statement);\n if (options.saturate === undefined && instruction.saturate)\n {\n const { target } = this._destMask(state, instruction);\n const text = this._destText(target);\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\n }\n }\n }\n\n /**\n * Emits a width-correct floating binary infix operation.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} operator GLSL infix operator.\n * @private\n */\n _infixBinary(state, instruction, operator)\n {\n const { mask } = this._destMask(state, instruction);\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask });\n const width = Math.max(\n state.formatter.expressionWidth(instruction.operands[1], mask),\n state.formatter.expressionWidth(instruction.operands[2], mask)\n );\n this._assignWidened(state, instruction, mask, `${a} ${operator} ${b}`, width === 1);\n }\n\n /**\n * Widens a scalar result when assigning it to a vector destination.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} mask Destination component mask.\n * @param {string} expression GLSL expression.\n * @param {boolean} rhsIsScalar Whether the expression is scalar.\n * @private\n */\n _assignWidened(state, instruction, mask, expression, rhsIsScalar)\n {\n const value = rhsIsScalar && mask.length > 1 ? `vec${mask.length}(${expression})` : expression;\n this._assign(state, instruction, value, { saturate: instruction.saturate });\n }\n\n /**\n * Emits a unary GLSL intrinsic with destination-width handling.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} glslName GLSL intrinsic name.\n * @private\n */\n _helperUnary(state, instruction, glslName)\n {\n const { mask } = this._destMask(state, instruction);\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n this._assignWidened(state, instruction, mask, `${glslName}(${src})`,\n state.formatter.expressionWidth(instruction.operands[1], mask) === 1);\n }\n\n /**\n * Emits a binary GLSL intrinsic with width-matched arguments.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} glslName GLSL intrinsic name.\n * @private\n */\n _helperBinary(state, instruction, glslName)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask);\n const b = this._vecArg(state, instruction.operands[2], mask);\n this._assign(state, instruction, `${glslName}(${a}, ${b})`, { saturate: instruction.saturate });\n }\n\n /**\n * Emits a dot product and replicates its scalar result when necessary.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} sourceMask Source component mask.\n * @private\n */\n _dotProduct(state, instruction, sourceMask)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], sourceMask);\n const b = this._vecArg(state, instruction.operands[2], sourceMask);\n const dot = `dot(${a}, ${b})`;\n this._assign(state, instruction, mask.length > 1 ? `vec${mask.length}(${dot})` : dot, {\n saturate: instruction.saturate\n });\n }\n\n /**\n * Emits scalar or vector comparison bits in the float register model.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {object} options Comparison options.\n * @param {string} options.intrinsic GLSL vector comparison intrinsic.\n * @param {string} options.operator GLSL scalar comparison operator.\n * @param {\"float\"|\"int\"|\"uint\"} options.as Operand interpretation.\n * @private\n */\n _comparison(state, instruction, { intrinsic, operator, as })\n {\n const { mask } = this._destMask(state, instruction);\n if (mask.length === 1)\n {\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask, as });\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask, as });\n this._assign(state, instruction, `uintBitsToFloat((${a} ${operator} ${b}) ? 0xFFFFFFFFu : 0u)`);\n return;\n }\n const a = this._vecArg(state, instruction.operands[1], mask, as);\n const b = this._vecArg(state, instruction.operands[2], mask, as);\n this._assign(\n state,\n instruction,\n `uintBitsToFloat(uvec${mask.length}(${intrinsic}(${a}, ${b})) * 0xFFFFFFFFu)`\n );\n }\n\n /**\n * Emits an unsigned bitwise operation through register bitcasts.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} operator GLSL bitwise operator.\n * @private\n */\n _bitwiseBinary(state, instruction, operator)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, \"uint\");\n const b = this._vecArg(state, instruction.operands[2], mask, \"uint\");\n this._assign(state, instruction, `uintBitsToFloat(${a} ${operator} ${b})`);\n }\n\n /**\n * Emits a signed or unsigned integer binary operation through bitcasts.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {string} operator GLSL integer operator.\n * @param {\"int\"|\"uint\"} [as=\"int\"] Integer interpretation.\n * @private\n */\n _intBinary(state, instruction, operator, as = \"int\")\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, as);\n const b = this._vecArg(state, instruction.operands[2], mask, as);\n const wrap = as === \"uint\" ? \"uintBitsToFloat\" : \"intBitsToFloat\";\n this._assign(state, instruction, `${wrap}(${a} ${operator} ${b})`);\n }\n\n /**\n * Formats the DXBC zero or nonzero control-flow condition.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @returns {string} GLSL boolean expression.\n * @private\n */\n _condition(state, instruction)\n {\n const scalar = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\" });\n const test = instruction.testBoolean === \"nonzero\" ? \"!=\" : \"==\";\n return `floatBitsToUint(${scalar}) ${test} 0u`;\n }\n\n /**\n * Emits component-wise conditional moves without aliasing destinations.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @private\n */\n _movc(state, instruction)\n {\n const destOperand = instruction.operands[0];\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n const aliases = instruction.operands.slice(1).some((operand) =>\n operand.type === destOperand.type && operand.registerIndex === destOperand.registerIndex);\n\n if (aliases)\n {\n this._line(state, \"{\");\n state.indent += 1;\n this._line(state, `vec4 hlslcc_movcTemp = ${target.ref};`);\n }\n for (const component of mask)\n {\n const condition = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"int\" });\n const ifTrue = state.formatter.sourceExpression(instruction.operands[2], { destMask: component });\n const ifFalse = state.formatter.sourceExpression(instruction.operands[3], { destMask: component });\n const lvalue = aliases\n ? `hlslcc_movcTemp.${component}`\n : this._destComponentRef(state, destOperand, target, component);\n this._line(state, `${lvalue} = (${condition} != 0) ? ${ifTrue} : ${ifFalse};`);\n }\n if (aliases)\n {\n this._line(state, `${target.ref} = hlslcc_movcTemp;`);\n state.indent -= 1;\n this._line(state, \"}\");\n }\n if (instruction.saturate)\n {\n const text = this._destText(target);\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\n }\n }\n\n /**\n * Emits the paired sine and cosine destinations in alias-safe order.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @private\n */\n _sincos(state, instruction)\n {\n const [ sinDest, cosDest, angle ] = instruction.operands;\n const emitOne = (destOperand, fn) =>\n {\n if (destOperand.type === 13) return;\n const target = state.formatter.destination(destOperand);\n const mask = target.registerMask || \"xyzw\";\n const src = state.formatter.sourceExpression(angle, { destMask: mask });\n const call = state.formatter.expressionWidth(angle, mask) === 1 && mask.length > 1\n ? `vec${mask.length}(${fn}(${src}))`\n : `${fn}(${src})`;\n const text = this._destText(target);\n this._line(state, `${text} = ${call};`);\n if (instruction.saturate)\n {\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\n }\n };\n const sinAliasesAngle = sinDest.type === angle.type && sinDest.registerIndex === angle.registerIndex;\n if (sinAliasesAngle)\n {\n emitOne(cosDest, \"cos\");\n emitOne(sinDest, \"sin\");\n }\n else\n {\n emitOne(sinDest, \"sin\");\n emitOne(cosDest, \"cos\");\n }\n }\n\n /**\n * Declares the merged detail-map array, once, on the first member seen.\n *\n * Each member keeps its own entry in `resourceNames` pointing at the shared\n * array, so every existing reference site resolves to it without knowing a\n * merge happened. The declared dimension deliberately stays 2D: the layer is\n * appended to the coordinate at each sample site rather than read out of the\n * shader's own operand, which has no third component to give.\n *\n * @param {object} state Mutable emission state.\n * @param {number} register Resource register being declared.\n * @param {object} declaration Decoded resource declaration.\n * @param {Set<number>|null} comparisonSamplers Comparison samplers, when any.\n * @private\n */\n _declareDetailArrayMap(state, register, declaration, comparisonSamplers)\n {\n // A comparison-sampled or non-2D detail map is not the family the\n // recogniser promised, so refuse rather than emit a wrong declaration.\n if (comparisonSamplers || declaration.resourceDimension !== 3)\n {\n throw new WebglReadError(\n \"Detail-map array merging requires plain 2D textures without comparison sampling\",\n {\n source: state.sourceName,\n register,\n dimensionName: declaration.resourceDimensionName\n }\n );\n }\n\n state.resourceDimensions.set(register, declaration.resourceDimension);\n state.resourceNames.set(register, DETAIL_MAP_ARRAY_SYMBOL);\n\n if (state.detailMapArrayDeclared) return;\n state.detailMapArrayDeclared = true;\n\n state.declarationLines.push(`uniform mediump sampler2DArray ${DETAIL_MAP_ARRAY_SYMBOL};`);\n state.bindings.push({\n kind: \"resource\",\n registerIndex: register,\n name: DETAIL_MAP_ARRAY_SYMBOL,\n samplerType: \"sampler2DArray\",\n dimensionName: \"texture2darray\",\n arrayLayerCount: state.detailMapArrayLayers.size,\n mergedFrom: [ ...state.detailMapArrayLayers.keys() ]\n });\n }\n\n /**\n * Returns the array layer a texture operand maps to, when it was merged.\n *\n * @param {object} state Mutable emission state.\n * @param {object} texOperand Texture resource operand.\n * @returns {number|null} Layer index, or null when the register was not merged.\n * @private\n */\n _detailMapArrayLayer(state, texOperand)\n {\n const layer = state.detailMapArrayLayers.get(texOperand.registerIndex);\n return layer === undefined ? null : layer;\n }\n\n /**\n * Refuses an operation that cannot be redirected at an array layer.\n *\n * Recognising the detail family proves the resources are mergeable; it does\n * not prove every *use* is. A texel fetch or a size query against a merged\n * register would silently mean something different once the register became\n * one layer of an array, so those fail the build instead.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {object} texOperand Texture resource operand.\n * @private\n */\n _rejectDetailArrayMapUse(state, instruction, texOperand)\n {\n if (!state.detailMapArrayLayers.has(texOperand.registerIndex)) return;\n\n throw new WebglReadError(\n `Detail map merged into an array is used by ${instruction.opcodeName}, `\n + \"which this emitter cannot redirect at an array layer\",\n {\n source: state.sourceName,\n register: texOperand.registerIndex,\n opcodeName: instruction.opcodeName\n }\n );\n }\n\n /**\n * Resolves and validates the declared dimension of a texture operand.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC instruction.\n * @param {object} texOperand Texture resource operand.\n * @returns {number} DXBC resource-dimension code.\n * @private\n */\n _resourceDimension(state, instruction, texOperand)\n {\n const dimension = state.resourceDimensions.get(texOperand.registerIndex);\n if (!dimension)\n {\n throw new WebglReadError(\"Texture instruction references an undeclared resource\", {\n source: state.sourceName,\n register: texOperand.registerIndex,\n opcodeName: instruction.opcodeName\n });\n }\n return dimension;\n }\n\n /**\n * Emits a regular, LOD, bias, gradient, or comparison texture sample.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC texture instruction.\n * @param {object} [options={}] Sampling-mode operand indexes.\n * @param {number|null} [options.lodOperandIndex=null] Explicit LOD operand.\n * @param {number|null} [options.biasOperandIndex=null] LOD bias operand.\n * @param {number[]|null} [options.gradOperandIndexes=null] Gradient operands.\n * @param {number|null} [options.comparisonRefOperandIndex=null] Comparison reference operand.\n * @param {boolean} [options.forceLodZero=false] Whether to force the LOD-zero adaptation.\n * @private\n */\n _textureSample(state, instruction, {\n lodOperandIndex = null,\n biasOperandIndex = null,\n gradOperandIndexes = null,\n comparisonRefOperandIndex = null,\n forceLodZero = false\n } = {})\n {\n const { mask } = this._destMask(state, instruction);\n const coordOperand = instruction.operands[1];\n const texOperand = instruction.operands[2];\n if (state.lightPackedTexture?.profileRegister === texOperand.registerIndex)\n {\n const oneSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n if (state.lightConstantBuffer?.profileRegister === texOperand.registerIndex)\n {\n // The constant-buffer local-light path carries the light rows but\n // not the texture profile array. Treat profile lookups as neutral\n // attenuation so profile-enabled lights degrade to unprofiled lights\n // instead of costing another sampler unit.\n const oneSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n if (state.stubbedResources.has(texOperand.registerIndex))\n {\n // Stubbed tiled-lighting sampler (LightProfileArray): its declaration\n // was dropped, so lower the sample to a compile-time zero of the\n // destination width instead of referencing the missing sampler.\n const zeroSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(0.0).${zeroSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n if (state.neutralResources.has(texOperand.registerIndex))\n {\n // Neutralised sampler (LightProfileArray): its declaration was\n // dropped, and the value it fed is a multiplier, so lower to one.\n // The shader's own no-profile path leaves attenuation untouched,\n // which is what multiplying by 1.0 reproduces exactly.\n const oneSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\n return;\n }\n const dimension = this._resourceDimension(state, instruction, texOperand);\n const coordMask = COORD_MASK_BY_DIMENSION[dimension];\n const detailLayer = this._detailMapArrayLayer(state, texOperand);\n const baseCoord = this._vecArg(state, coordOperand, coordMask);\n // A merged detail map keeps its 2D coordinate and gains the layer as a\n // literal third component; the register it came from is the layer.\n const coord = detailLayer === null\n ? baseCoord\n : `vec3(${baseCoord}, ${detailLayer}.0)`;\n const texName = state.formatter.registerReference(texOperand);\n const returnSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n\n if (comparisonRefOperandIndex !== null)\n {\n const reference = state.formatter.sourceExpression(\n instruction.operands[comparisonRefOperandIndex],\n { destMask: \"x\" }\n );\n const comparisonCoord = `vec${coordMask.length + 1}(${coord}, ${reference})`;\n let comparisonCall;\n\n if (!forceLodZero)\n {\n comparisonCall = `texture(${texName}, ${comparisonCoord})`;\n }\n else if (dimension === 3)\n {\n comparisonCall = `textureLod(${texName}, ${comparisonCoord}, 0.0)`;\n }\n else if (dimension === 6)\n {\n comparisonCall = `textureGrad(${texName}, ${comparisonCoord}, vec3(0.0), vec3(0.0))`;\n }\n else if (dimension === 8)\n {\n comparisonCall = `textureGrad(${texName}, ${comparisonCoord}, vec2(0.0), vec2(0.0))`;\n }\n else\n {\n throw new WebglReadError(\"Comparison LOD-zero sampling is not supported for this resource dimension\", {\n source: state.sourceName,\n opcodeName: instruction.opcodeName,\n dimension\n });\n }\n\n const value = mask.length === 1\n ? comparisonCall\n : `vec${mask.length}(${comparisonCall})`;\n this._assign(state, instruction, value, { saturate: instruction.saturate });\n return;\n }\n\n let call;\n if (gradOperandIndexes !== null)\n {\n const gradMask = coordMask === \"xyzw\" ? \"xyz\" : coordMask;\n const gradX = this._vecArg(state, instruction.operands[gradOperandIndexes[0]], gradMask);\n const gradY = this._vecArg(state, instruction.operands[gradOperandIndexes[1]], gradMask);\n call = `textureGrad(${texName}, ${coord}, ${gradX}, ${gradY})`;\n }\n else if (lodOperandIndex !== null)\n {\n const lod = state.formatter.sourceExpression(instruction.operands[lodOperandIndex], { destMask: \"x\" });\n call = `textureLod(${texName}, ${coord}, ${lod})`;\n }\n else if (biasOperandIndex !== null)\n {\n const bias = state.formatter.sourceExpression(instruction.operands[biasOperandIndex], { destMask: \"x\" });\n call = `texture(${texName}, ${coord}, ${bias})`;\n }\n else\n {\n call = `texture(${texName}, ${coord})`;\n }\n this._assign(state, instruction, `${call}.${returnSwizzle}`, { saturate: instruction.saturate });\n }\n\n /**\n * Emits an integer-coordinate texel fetch for a declared resource.\n *\n * @param {object} state Mutable emission state.\n * @param {object} instruction Decoded DXBC load instruction.\n * @private\n */\n _texelFetch(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const coordOperand = instruction.operands[1];\n const texOperand = instruction.operands[2];\n this._rejectDetailArrayMapUse(state, instruction, texOperand);\n const dimension = this._resourceDimension(state, instruction, texOperand);\n const texName = state.formatter.registerReference(texOperand);\n const returnSwizzle = [ ...mask ]\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\n .join(\"\");\n\n let call;\n if (dimension === 1)\n {\n const index = state.formatter.sourceExpression(coordOperand, { destMask: \"x\", as: \"int\" });\n const widthMask = this.profile.dataTextureWidth - 1;\n const widthShift = Math.log2(this.profile.dataTextureWidth);\n call = `texelFetch(${texName}, ivec2((${index}) & ${widthMask}, (${index}) >> ${widthShift}), 0)`;\n }\n else\n {\n const coordMask = dimension === 5 || dimension === 8 ? \"xyz\" : \"xy\";\n const coord = this._vecArg(state, coordOperand, coordMask, \"int\");\n const mip = state.formatter.sourceExpression(coordOperand, { destMask: \"w\", as: \"int\" });\n call = `texelFetch(${texName}, ${coord}, ${mip})`;\n }\n this._assign(state, instruction, `${call}.${returnSwizzle}`, { saturate: instruction.saturate });\n }\n}\n\n/**\n * Per-opcode lowering table. Every rule cites its family spec in\n * `docs/dxbc-lowering/`; templates are HLSLcc-derived, see each doc.\n */\nDxbcGlslEmitter.LOWERINGS = {\n // --- float-alu ---\n mov(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n this._assignWidened(state, instruction, mask, src,\n state.formatter.expressionWidth(instruction.operands[1], mask) === 1);\n },\n mad(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask });\n const c = state.formatter.sourceExpression(instruction.operands[3], { destMask: mask });\n const width = Math.max(...[ 1, 2, 3 ].map((index) =>\n state.formatter.expressionWidth(instruction.operands[index], mask)));\n this._assignWidened(state, instruction, mask, `${a} * ${b} + ${c}`, width === 1);\n },\n mul(state, instruction) { this._infixBinary(state, instruction, \"*\"); },\n add(state, instruction) { this._infixBinary(state, instruction, \"+\"); },\n div(state, instruction) { this._infixBinary(state, instruction, \"/\"); },\n dp2(state, instruction) { this._dotProduct(state, instruction, \"xy\"); },\n dp3(state, instruction) { this._dotProduct(state, instruction, \"xyz\"); },\n dp4(state, instruction) { this._dotProduct(state, instruction, \"xyzw\"); },\n max(state, instruction) { this._helperBinary(state, instruction, \"max\"); },\n min(state, instruction) { this._helperBinary(state, instruction, \"min\"); },\n sqrt(state, instruction) { this._helperUnary(state, instruction, \"sqrt\"); },\n rsq(state, instruction) { this._helperUnary(state, instruction, \"inversesqrt\"); },\n exp(state, instruction) { this._helperUnary(state, instruction, \"exp2\"); },\n log(state, instruction) { this._helperUnary(state, instruction, \"log2\"); },\n frc(state, instruction) { this._helperUnary(state, instruction, \"fract\"); },\n round_ne(state, instruction) { this._helperUnary(state, instruction, \"roundEven\"); },\n round_ni(state, instruction) { this._helperUnary(state, instruction, \"floor\"); },\n round_pi(state, instruction) { this._helperUnary(state, instruction, \"ceil\"); },\n round_z(state, instruction) { this._helperUnary(state, instruction, \"trunc\"); },\n rcp(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask);\n const one = mask.length > 1 ? `vec${mask.length}(1.0)` : \"1.0\";\n this._assign(state, instruction, `${one} / ${src}`, { saturate: instruction.saturate });\n },\n sincos(state, instruction) { this._sincos(state, instruction); },\n\n // --- cmp-controlflow ---\n lt(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"float\" }); },\n ge(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"float\" }); },\n eq(state, instruction) { this._comparison(state, instruction, { intrinsic: \"equal\", operator: \"==\", as: \"float\" }); },\n ne(state, instruction) { this._comparison(state, instruction, { intrinsic: \"notEqual\", operator: \"!=\", as: \"float\" }); },\n ilt(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"int\" }); },\n ige(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"int\" }); },\n ieq(state, instruction) { this._comparison(state, instruction, { intrinsic: \"equal\", operator: \"==\", as: \"int\" }); },\n ine(state, instruction) { this._comparison(state, instruction, { intrinsic: \"notEqual\", operator: \"!=\", as: \"int\" }); },\n ult(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"uint\" }); },\n uge(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"uint\" }); },\n and(state, instruction) { this._bitwiseBinary(state, instruction, \"&\"); },\n or(state, instruction) { this._bitwiseBinary(state, instruction, \"|\"); },\n xor(state, instruction) { this._bitwiseBinary(state, instruction, \"^\"); },\n not(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\n this._assign(state, instruction, `intBitsToFloat(~${src})`);\n },\n movc(state, instruction) { this._movc(state, instruction); },\n if(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {`);\n state.indent += 1;\n },\n else(state)\n {\n state.indent -= 1;\n this._line(state, \"} else {\");\n state.indent += 1;\n },\n endif(state)\n {\n state.indent -= 1;\n this._line(state, \"}\");\n },\n loop(state)\n {\n this._line(state, \"while(true){\");\n state.indent += 1;\n },\n endloop(state)\n {\n state.indent -= 1;\n this._line(state, \"}\");\n },\n break(state) { this._line(state, \"break;\"); },\n breakc(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {break;}`);\n },\n continue(state) { this._line(state, \"continue;\"); },\n continuec(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {continue;}`);\n },\n switch(state, instruction)\n {\n const selector = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\", as: \"int\" });\n this._line(state, `switch(${selector}){`);\n state.indent += 2;\n },\n case(state, instruction)\n {\n const label = instruction.operands[0].immediateValues[0].uint32 | 0;\n state.indent -= 1;\n this._line(state, `case ${label}:`);\n state.indent += 1;\n },\n default(state)\n {\n state.indent -= 1;\n this._line(state, \"default:\");\n state.indent += 1;\n },\n endswitch(state)\n {\n state.indent -= 2;\n this._line(state, \"}\");\n },\n ret(state) { this._line(state, \"return;\"); },\n retc(state, instruction)\n {\n this._line(state, `if (${this._condition(state, instruction)}) {return;}`);\n },\n discard(state, instruction)\n {\n const scalar = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\", as: \"int\" });\n const test = instruction.testBoolean === \"nonzero\" ? \"!=\" : \"==\";\n this._line(state, `if((${scalar})${test}0){discard;}`);\n },\n\n // --- integer-conv (corpus-common subset) ---\n iadd(state, instruction) { this._intBinary(state, instruction, \"+\"); },\n imad(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, \"int\");\n const b = this._vecArg(state, instruction.operands[2], mask, \"int\");\n const c = this._vecArg(state, instruction.operands[3], mask, \"int\");\n this._assign(state, instruction, `intBitsToFloat(${a} * ${b} + ${c})`);\n },\n imul(state, instruction)\n {\n if (instruction.operands[0].type !== 13)\n {\n throw new WebglReadError(\"imul with a live high-half destination is unimplementable in GLSL ES 3.00\", {\n source: state.sourceName\n });\n }\n const destLow = instruction.operands[1];\n const mask = state.formatter.destination(destLow)?.registerMask || \"xyzw\";\n const a = this._vecArg(state, instruction.operands[2], mask, \"int\");\n const b = this._vecArg(state, instruction.operands[3], mask, \"int\");\n const statement = state.formatter.assignment(destLow, `intBitsToFloat(${a} * ${b})`);\n if (statement) this._line(state, statement);\n },\n ineg(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\n this._assign(state, instruction, `intBitsToFloat(-${src})`);\n },\n imax(state, instruction) { this._intMinMax(state, instruction, \"max\", \"int\"); },\n imin(state, instruction) { this._intMinMax(state, instruction, \"min\", \"int\"); },\n umax(state, instruction) { this._intMinMax(state, instruction, \"max\", \"uint\"); },\n umin(state, instruction) { this._intMinMax(state, instruction, \"min\", \"uint\"); },\n ishl(state, instruction) { this._intBinary(state, instruction, \"<<\"); },\n ishr(state, instruction) { this._intBinary(state, instruction, \">>\"); },\n ushr(state, instruction) { this._intBinary(state, instruction, \">>\", \"uint\"); },\n ftoi(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask);\n const type = mask.length > 1 ? `ivec${mask.length}` : \"int\";\n this._assign(state, instruction, `intBitsToFloat(${type}(${src}))`);\n },\n ftou(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask);\n const type = mask.length > 1 ? `uvec${mask.length}` : \"uint\";\n this._assign(state, instruction, `uintBitsToFloat(${type}(${src}))`);\n },\n itof(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\n const type = mask.length > 1 ? `vec${mask.length}` : \"float\";\n this._assign(state, instruction, `${type}(${src})`, { saturate: instruction.saturate });\n },\n utof(state, instruction)\n {\n const { mask } = this._destMask(state, instruction);\n const src = this._vecArg(state, instruction.operands[1], mask, \"uint\");\n const type = mask.length > 1 ? `vec${mask.length}` : \"float\";\n this._assign(state, instruction, `${type}(${src})`, { saturate: instruction.saturate });\n },\n\n // --- texture-sample ---\n sample(state, instruction) { this._textureSample(state, instruction); },\n sample_c(state, instruction) { this._textureSample(state, instruction, { comparisonRefOperandIndex: 4 }); },\n sample_c_lz(state, instruction) { this._textureSample(state, instruction, { comparisonRefOperandIndex: 4, forceLodZero: true }); },\n sample_l(state, instruction) { this._textureSample(state, instruction, { lodOperandIndex: 4 }); },\n sample_b(state, instruction) { this._textureSample(state, instruction, { biasOperandIndex: 4 }); },\n sample_d(state, instruction) { this._textureSample(state, instruction, { gradOperandIndexes: [ 4, 5 ] }); },\n udiv(state, instruction)\n {\n // Quotient into operand 0, remainder into operand 1; either may be null.\n // Raw `/` and `%` match HLSLcc; divide-by-zero is GLSL-undefined (spec risk noted).\n const [ quotient, remainder, a, b ] = instruction.operands;\n for (const [ destOperand, operator ] of [ [ quotient, \"/\" ], [ remainder, \"%\" ] ])\n {\n if (destOperand.type === 13) continue;\n const mask = state.formatter.destination(destOperand)?.registerMask || \"xyzw\";\n const left = this._vecArg(state, a, mask, \"uint\");\n const right = this._vecArg(state, b, mask, \"uint\");\n const statement = state.formatter.assignment(destOperand, `uintBitsToFloat(${left} ${operator} ${right})`);\n if (statement) this._line(state, statement);\n }\n },\n ld(state, instruction) { this._texelFetch(state, instruction); },\n deriv_rtx(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\n deriv_rtx_coarse(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\n deriv_rtx_fine(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\n deriv_rty(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\n deriv_rty_coarse(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\n deriv_rty_fine(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\n resinfo(state, instruction) { this._resinfo(state, instruction); },\n\n // --- memory-structured ---\n ld_structured(state, instruction) { this._ldStructured(state, instruction); },\n\n // --- integer-conv: half-float packing (skinned vertex data unpacking) ---\n f16tof32(state, instruction)\n {\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = unpackHalf2x16(floatBitsToUint(${src}) & 0xffffu).x;`);\n }\n },\n f32tof16(state, instruction)\n {\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(packHalf2x16(vec2(${src}, 0.0)) & 0xffffu);`);\n }\n },\n nop() {},\n\n // --- bitfield (GLSL ES 3.00 has no bitfieldExtract/Insert/bitCount; ES 3.10+ only) ---\n ibfe(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_ibfe\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"int\" });\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"int\" });\n const src = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"int\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = intBitsToFloat(${helper}(${width}, ${offset}, ${src}));`);\n }\n },\n ubfe(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_ubfe\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"uint\" });\n const src = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"uint\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${width}, ${offset}, ${src}));`);\n }\n },\n bfi(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_bfi\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"uint\" });\n const insert = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"uint\" });\n const base = state.formatter.sourceExpression(instruction.operands[4], { destMask: component, as: \"uint\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${width}, ${offset}, ${insert}, ${base}));`);\n }\n },\n countbits(state, instruction)\n {\n const helper = this.helpers.require(\"hlslcc_countbits\");\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n for (const component of mask)\n {\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${src}));`);\n }\n },\n\n // --- texture-sample: gather4 (GLSL ES 3.00 has no textureGather; emulated via 4 texelFetch taps) ---\n gather4(state, instruction) { this._gather4(state, instruction); },\n\n // --- compute map-style: UAV write ---\n store_uav_typed(state, instruction)\n {\n // Map-style contract: the address operand's xy are assumed to equal the\n // current fragment's coordinate (the packaging pipeline only routes\n // map-style compute shaders through this lowering, where every UAV\n // write targets the invoking thread's own output texel) — they are\n // deliberately unread here. The z (array-slice) coordinate was resolved\n // by the `_analyzeUavStores` pre-pass: a multi-slice UAV routes each\n // store to its own per-slice fragment output, a single-store UAV drops\n // the slice entirely (the host attaches the target layer).\n const [ uavOperand, , valueOperand ] = instruction.operands;\n const target = state.formatter.destination(uavOperand);\n if (!target) return;\n const mask = target.registerMask || \"xyzw\";\n const value = this._vecArg(state, valueOperand, mask);\n // RGBA float render targets are assumed for every map-style UAV output;\n // uint/sint DXBC UAV formats still pass their bit patterns through as\n // float here (consistent with this emitter's float-vec4 register model),\n // so flag it as a warning rather than a hard failure.\n const returnTypes = state.uavReturnTypes.get(uavOperand.registerIndex);\n if (returnTypes && returnTypes.some((name) => name === \"uint\" || name === \"sint\"))\n {\n state.warnings.push(\n `store_uav_typed at offset ${instruction.offset} targets a non-float UAV (${returnTypes.join(\",\")}); output is treated as an RGBA float render target`\n );\n }\n const plan = state.uavSlicePlan.get(uavOperand.registerIndex);\n if (plan?.kind === \"multiSlice\")\n {\n const slice = plan.sliceByOffset.get(instruction.offset);\n const sliceName = state.uavSliceNames.get(uavOperand.registerIndex).get(slice);\n this._line(state, `${sliceName}${target.mask ? `.${target.mask}` : \"\"} = ${value};`);\n return;\n }\n this._line(state, `${this._destText(target)} = ${value};`);\n }\n};\n\n/**\n * `ld_structured` lowering. Vertex UBO path reads `name.data[row]` vec4 rows;\n * pixel data-texture path reads RGBA32UI texels (4 dwords per texel, fixed\n * 2048-texel row width). 16-byte-aligned reads use one static channel per\n * component; unaligned reads fall back to per-dword dynamic addressing.\n */\nDxbcGlslEmitter.prototype._ldStructured = function _ldStructured(state, instruction)\n{\n const target = state.formatter.destination(instruction.operands[0]);\n if (!target) return;\n const mask = target.registerMask || \"xyzw\";\n const resourceOperand = instruction.operands[3];\n const info = state.structuredBuffers.get(resourceOperand.registerIndex);\n if (!info)\n {\n throw new WebglReadError(\"ld_structured references an undeclared structured buffer\", {\n source: state.sourceName,\n register: resourceOperand.registerIndex\n });\n }\n if (info.kind === \"stub\")\n {\n // Stubbed tiled-lighting buffer: every component reads a compile-time\n // zero. floatBitsToUint of this is 0u, so the per-tile light count is 0\n // and the surrounding light loop is dead (no live sb#/s# references).\n for (const component of mask)\n {\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = uintBitsToFloat(0u);`);\n }\n return;\n }\n const offsetOperand = instruction.operands[2];\n if (offsetOperand.type !== 4)\n {\n throw new WebglReadError(\"ld_structured with a non-immediate byte offset is not supported\", {\n source: state.sourceName,\n offset: instruction.offset\n });\n }\n const offsetDwords = offsetOperand.immediateValues[0].uint32 >> 2;\n const element = state.formatter.sourceExpression(instruction.operands[1], { destMask: \"x\", as: \"int\" });\n const swizzle = resourceOperand.swizzle || \"xyzw\";\n const widthMask = this.profile.dataTextureWidth - 1;\n const widthShift = Math.log2(this.profile.dataTextureWidth);\n const aligned = info.strideDwords % 4 === 0 && offsetDwords % 4 === 0;\n\n for (const component of mask)\n {\n const channel = swizzle[\"xyzw\".indexOf(component)];\n const channelIndex = \"xyzw\".indexOf(channel);\n let value;\n if (info.kind === \"lightIndexPacked\")\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2(((${dword}) >> 2) & ${widthMask}, (${dword}) >> ${widthShift + 2}), 0)[(${dword}) & 3])`;\n }\n else if (info.kind === \"lightDataPacked\")\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n const texel = `(${info.dataTexelBase} + ((${dword}) >> 2))`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2((${texel}) & ${widthMask}, (${texel}) >> ${widthShift}), 0)[(${dword}) & 3])`;\n }\n else if (info.kind === \"lightIndexCb\")\n {\n value = `uintBitsToFloat(cjsLocalLightIndexLoad(${element}))`;\n }\n else if (info.kind === \"lightDataCb\")\n {\n if (!aligned)\n {\n throw new WebglReadError(\"local-light constant-buffer lowering requires aligned light rows\", {\n source: state.sourceName,\n offset: instruction.offset\n });\n }\n value = `cjsLocalLightRow(${element}, ${offsetDwords / 4}).${channel}`;\n }\n else if (info.kind === \"ubo\")\n {\n if (aligned)\n {\n const row = `(${element}) * ${info.strideDwords / 4}${offsetDwords ? ` + ${offsetDwords / 4}` : \"\"}`;\n value = `${info.name}.data[${row}].${channel}`;\n }\n else\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n value = `${info.name}.data[(${dword}) >> 2][(${dword}) & 3]`;\n }\n }\n else if (aligned)\n {\n const texel = `(${element}) * ${info.strideDwords / 4}${offsetDwords ? ` + ${offsetDwords / 4}` : \"\"}`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2((${texel}) & ${widthMask}, (${texel}) >> ${widthShift}), 0).${channel})`;\n }\n else\n {\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2(((${dword}) >> 2) & ${widthMask}, (${dword}) >> ${widthShift + 2}), 0)[(${dword}) & 3])`;\n }\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = ${value};`);\n }\n};\n\n/**\n * `resinfo` lowering: width/height/depth via textureSize per live destination\n * component; the 4th (mip-count) channel has no WebGL2 equivalent and throws\n * only when a shader actually reads it.\n */\nDxbcGlslEmitter.prototype._resinfo = function _resinfo(state, instruction)\n{\n const { target, mask } = this._destMask(state, instruction);\n if (!target) return;\n const mipExpression = state.formatter.sourceExpression(instruction.operands[1], { destMask: \"x\", as: \"int\" });\n const texOperand = instruction.operands[2];\n this._rejectDetailArrayMapUse(state, instruction, texOperand);\n const dimension = this._resourceDimension(state, instruction, texOperand);\n const axisCount = dimension === 5 || dimension === 8 ? 3 : 2;\n const returnType = instruction.resinfoReturnTypeName || \"float\";\n const sizeExpression = `textureSize(${state.formatter.registerReference(texOperand)}, ${mipExpression})`;\n\n for (const component of mask)\n {\n const destElem = \"xyzw\".indexOf(component);\n const channelChar = texOperand.swizzle ? texOperand.swizzle[destElem] : component;\n const channel = \"xyzw\".indexOf(channelChar);\n let value;\n if (channel >= 3)\n {\n throw new WebglReadError(\"resinfo mip-count component has no WebGL2 lowering\", {\n source: state.sourceName,\n offset: instruction.offset\n });\n }\n else if (channel >= axisCount)\n {\n value = returnType === \"uint\" ? \"uintBitsToFloat(0u)\" : \"0.0\";\n }\n else\n {\n const axis = COMPONENTS[channel];\n if (returnType === \"uint\")\n {\n value = `uintBitsToFloat(uint(${sizeExpression}.${axis}))`;\n }\n else if (returnType === \"rcpfloat\")\n {\n value = `1.0 / float(${sizeExpression}.${axis})`;\n }\n else\n {\n value = `float(${sizeExpression}.${axis})`;\n }\n }\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = ${value};`);\n }\n};\n\n/**\n * Shared int/uint min-max lowering used by imax/imin/umax/umin.\n */\nDxbcGlslEmitter.prototype._intMinMax = function _intMinMax(state, instruction, fn, as)\n{\n const { mask } = this._destMask(state, instruction);\n const a = this._vecArg(state, instruction.operands[1], mask, as);\n const b = this._vecArg(state, instruction.operands[2], mask, as);\n const wrap = as === \"uint\" ? \"uintBitsToFloat\" : \"intBitsToFloat\";\n this._assign(state, instruction, `${wrap}(${fn}(${a}, ${b}))`);\n};\n\n/**\n * `gather4` lowering: fetches one channel from each of the four texels a\n * bilinear sample would blend, via the `hlslcc_textureGather4Emulated` /\n * `hlslcc_textureGather4ArrayEmulated` helpers (GLSL ES 3.00 has no\n * `textureGather`). Only 2D and 2D-array resources are supported — the\n * dimensions the AO/blur/FSR/CAS map-style corpus this lowering targets is\n * known to use (ASSAO gathers from its deinterleaved texture2darray slices).\n *\n * @param {object} state Emit state.\n * @param {object} instruction `gather4` instruction.\n */\nDxbcGlslEmitter.prototype._gather4 = function _gather4(state, instruction)\n{\n const { mask } = this._destMask(state, instruction);\n const coordOperand = instruction.operands[1];\n const texOperand = instruction.operands[2];\n const samplerOperand = instruction.operands[3];\n const dimension = this._resourceDimension(state, instruction, texOperand);\n if (dimension !== 3 && dimension !== 8)\n {\n throw new WebglReadError(\"gather4 against this resource dimension is not supported by the WebGL2 emitter\", {\n source: state.sourceName,\n dimensionName: texOperand.typeName,\n offset: instruction.offset\n });\n }\n // A merged detail map is declared 2D but sampled through an array, so the\n // array helper and the layered coordinate are selected by the merge rather\n // than by the declared dimension.\n const detailLayer = this._detailMapArrayLayer(state, texOperand);\n const asArray = dimension === 8 || detailLayer !== null;\n const helper = this.helpers.require(\n asArray ? \"hlslcc_textureGather4ArrayEmulated\" : \"hlslcc_textureGather4Emulated\"\n );\n const baseCoord = this._vecArg(state, coordOperand, dimension === 8 ? \"xyz\" : \"xy\");\n const coord = detailLayer === null ? baseCoord : `vec3(${baseCoord}, ${detailLayer}.0)`;\n const texName = state.formatter.registerReference(texOperand);\n const channelLetter = this._gather4Channel(samplerOperand);\n const channelIndex = \"xyzw\".indexOf(channelLetter);\n const call = `${helper}(${texName}, ${coord}, ${channelIndex})`;\n this._assign(state, instruction, mask === \"xyzw\" ? call : `${call}.${mask}`, { saturate: instruction.saturate });\n};\n\n/**\n * Reads the gathered-channel selector `gather4`/`gather4_po` carry on their\n * sampler operand (a 1-component swizzle; red/`x` is the default when no\n * selection is encoded).\n *\n * @param {object} operand Decoded sampler operand.\n * @returns {string} Channel letter (`x`/`y`/`z`/`w`).\n */\nDxbcGlslEmitter.prototype._gather4Channel = function _gather4Channel(operand)\n{\n if (operand.selectionModeName === \"select1\" && operand.selected)\n {\n return operand.selected;\n }\n if (operand.selectionModeName === \"swizzle\" && operand.swizzle)\n {\n return operand.swizzle[0];\n }\n return \"x\";\n};\n\n/**\n * Assembles the final GLSL text.\n */\nDxbcGlslEmitter.prototype._assemble = function _assemble(state)\n{\n const lines = [ \"#version 300 es\" ];\n if (state.isPixel || state.isCompute)\n {\n lines.push(\"precision highp float;\", \"precision highp int;\");\n }\n lines.push(\"\", ...state.declarationLines);\n const helperSource = this.helpers.emit();\n if (helperSource)\n {\n lines.push(\"\", helperSource);\n }\n // Vertex stages get the standard DX->GL depth-range fixup: EVE's\n // projection matrices are D3D-style (z_clip in [0, w]), so the raw\n // DXBC position would land in GL NDC [0, 1] instead of [-1, 1] —\n // halving depth precision and breaking every pixel-stage read of\n // SV_Position.z (gl_FragCoord.z) and depth-encoding technique against\n // the DX-convention values the shaders were compiled for. Remapping\n // z after the translated body runs makes depth output, clipping and\n // gl_FragCoord.z all match D3D semantics exactly. The body is wrapped\n // in a helper so early `ret` (return) statements cannot skip the\n // fixup.\n const writesPosition = [ ...state.outputNames.values() ].includes(\"gl_Position\");\n if (!state.isPixel && !state.isCompute && writesPosition)\n {\n lines.push(\"\", \"void dxbc_main() {\");\n for (const early of state.earlyMainLines)\n {\n lines.push(` ${early}`);\n }\n lines.push(...state.bodyLines, \"}\");\n lines.push(\n \"\",\n \"void main() {\",\n \" dxbc_main();\",\n \" gl_Position.z = 2.0 * gl_Position.z - gl_Position.w;\",\n \"}\"\n );\n return `${lines.join(\"\\n\")}\\n`;\n }\n\n lines.push(\"\", \"void main() {\");\n for (const early of state.earlyMainLines)\n {\n lines.push(` ${early}`);\n }\n lines.push(...state.bodyLines, \"}\");\n return `${lines.join(\"\\n\")}\\n`;\n};\n"],"names":["COMPONENTS","MAX_MAP_STYLE_UAV_OUTPUTS","SAMPLER_TYPE_BY_DIMENSION","SHADOW_SAMPLER_TYPE_BY_DIMENSION","COMPARISON_SAMPLE_OPCODES","Set","NON_COMPARISON_TEXTURE_OPCODES","DETAIL_MAP_ARRAY_SYMBOL","COORD_MASK_BY_DIMENSION","DxbcGlslEmitter","constructor","options","helpers","DxbcGlslHelperRegistry","_defineHelpers","profile","constantBufferStyle","pixelConstantBufferRemap","samplerName","register","stageName","vertexStructuredCapacity","dataTextureWidth","stubResourceRegisters","neutralResourceRegisters","lightConstantBuffer","lightPackedTexture","detailMapArrayRegisters","define","source","join","Emit","bytes","sourceName","raw","CjsDxbcFormat","read","emit","OUTPUT_RAW","program","WebglReadError","programTypeName","state","isPixel","isCompute","decoder","isgn","inputSignature","osgn","outputSignature","inputNames","Map","outputNames","resourceDimensions","resourceNames","comparisonResources","_analyzeComparisonResources","constantBufferNames","structuredBuffers","_normalizeLightConstantBufferProfile","lightConstantBufferDeclared","_normalizeLightPackedTextureProfile","lightPackedTextureDeclared","stubbedResources","neutralResources","detailMapArrayLayers","map","layer","detailMapArrayDeclared","inputMasks","outputMasks","bindings","declarationLines","earlyMainLines","bodyLines","indent","warnings","inputs","outputs","icbName","threadGroup","uavNames","uavReturnTypes","uavDimensions","uavSlicePlan","uavSliceNames","uavOutputCount","dispatchOriginUniform","computeInputsUsed","threadId","groupId","tig","flattened","reset","_assertMapStyleCompute","_analyzeUavStores","integerVertexInputs","formatter","DxbcGlslOperandFormatter","integerInputs","componentMap","operand","type","get","registerIndex","names","input","index","output","constantBuffer","slot","constantBufferMember","resource","uav","immediateConstantBuffer","instruction","instructions","isDeclaration","_emitDeclaration","_emitComputeInputPrelude","Array","isArray","pairVaryings","has","name","set","push","width","semanticName","semanticIndex","_zeroFillUnwrittenOutputs","_emitInstruction","result","_assemble","computeFragment","uavOutputs","filter","binding","kind","slice","location","glslName","indexRegister","Number","dataRegister","isInteger","profileRegister","capacity","listBase","ordinaryResources","resourceOperand","operands","opcodeName","samplerRegister","samplers","add","keys","dataTexelBase","_ensureLightPackedTexture","strideBytes","format","cjsSemantic","lightIndexRegister","lightDataRegister","lightProfileRegister","_ensureLightConstantBuffer","rows","sizeInVec4","style","capacityLights","blocked","startsWith","offset","declaration","resourceDimension","constantTemps","storesByUav","controlFlowDepth","uavOperand","addressOperand","stores","_resolveSliceConstant","_trackTempConstants","length","throwNotMapStyle","shape","storeCount","slices","store","some","size","sort","a","b","sliceByOffset","isConstantMov","saturate","modifierName","selectionModeName","component","mask","key","value","componentCount","immediateValues","indexOf","uint32","delete","swizzle","_allocateUavOutputLocation","uavCount","tempCount","registerCount","mapped","returnTypes","returnType","returnTypeNames","comparisonSamplers","samplerType","dimensionName","resourceDimensionName","_declareDetailArrayMap","comparison","samplerRegisterIndices","structureStride","strideDwords","Math","max","ceil","capacityElements","_declareComputeInput","_declareVertexInput","threadGroupX","threadGroupY","threadGroupZ","plan","sliceNames","_declarePixelInput","_declareSystemInput","_declareOutput","_declareImmediateConstantBuffer","_signatureElement","signature","elements","find","element","_maskWidth","componentTypeName","_maskChars","_vecType","systemValueName","flat","componentType","interpolationModeName","operandTypeName","used","nx","ny","nz","_threadGroupSizeOrThrow","customData","literals","row","toString","literal","written","lower","LOWERINGS","call","_line","text","repeat","bit","_","_destComponentRef","destOperand","target","remapped","remapComponents","ref","_destText","_vecArg","destMask","as","expression","sourceExpression","ctor","float","int","uint","_destMask","operandIndex","destination","registerMask","_isScalarSource","_assign","valueExpression","statement","assignment","undefined","_infixBinary","operator","expressionWidth","_assignWidened","rhsIsScalar","_helperUnary","src","_helperBinary","_dotProduct","sourceMask","dot","_comparison","intrinsic","_bitwiseBinary","_intBinary","wrap","_condition","scalar","test","testBoolean","_movc","aliases","condition","ifTrue","ifFalse","lvalue","_sincos","sinDest","cosDest","angle","emitOne","fn","sinAliasesAngle","arrayLayerCount","mergedFrom","_detailMapArrayLayer","texOperand","_rejectDetailArrayMapUse","_resourceDimension","dimension","_textureSample","lodOperandIndex","biasOperandIndex","gradOperandIndexes","comparisonRefOperandIndex","forceLodZero","coordOperand","oneSwizzle","zeroSwizzle","coordMask","detailLayer","baseCoord","coord","texName","registerReference","returnSwizzle","reference","comparisonCoord","comparisonCall","gradMask","gradX","gradY","lod","bias","_texelFetch","widthMask","widthShift","log2","mip","mov","mad","c","mul","div","dp2","dp3","dp4","min","sqrt","rsq","exp","log","frc","round_ne","round_ni","round_pi","round_z","rcp","one","sincos","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","and","or","xor","not","movc","if","else","endif","loop","endloop","break","breakc","continue","continuec","switch","selector","case","label","default","endswitch","ret","retc","discard","iadd","imad","imul","destLow","ineg","imax","_intMinMax","imin","umax","umin","ishl","ishr","ushr","ftoi","ftou","itof","utof","sample","sample_c","sample_c_lz","sample_l","sample_b","sample_d","udiv","quotient","remainder","left","right","ld","deriv_rtx","deriv_rtx_coarse","deriv_rtx_fine","deriv_rty","deriv_rty_coarse","deriv_rty_fine","resinfo","_resinfo","ld_structured","_ldStructured","f16tof32","f32tof16","nop","ibfe","helper","require","ubfe","bfi","insert","base","countbits","gather4","_gather4","store_uav_typed","valueOperand","sliceName","prototype","info","offsetOperand","offsetDwords","aligned","channel","channelIndex","dword","texel","mipExpression","axisCount","resinfoReturnTypeName","sizeExpression","destElem","channelChar","axis","samplerOperand","typeName","asArray","channelLetter","_gather4Channel","selected","lines","helperSource","writesPosition","values","includes","early"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DxbcGlslEmitter.js","sources":["../../../../../../src/formats/webgl/core/glsl/DxbcGlslEmitter.js"],"sourcesContent":["import CjsDxbcFormat from \"../../../dxbc/index.js\";\r\nimport { WebglReadError } from \"../errors.js\";\r\nimport { DxbcGlslOperandFormatter } from \"./DxbcGlslOperandFormatter.js\";\r\nimport { DxbcGlslHelperRegistry } from \"./DxbcGlslHelpers.js\";\r\n\r\nconst COMPONENTS = [ \"x\", \"y\", \"z\", \"w\" ];\r\n\r\n/**\r\n * Map-style compute lowering caps simultaneous UAV writes to this many\r\n * fragment color outputs. WebGL2 only guarantees `MAX_DRAW_BUFFERS >= 4`\r\n * (real implementations commonly expose up to 8); a compute kernel that\r\n * writes more UAVs than fit in one draw call's attachment set (e.g. a\r\n * hierarchical mip-chain \"Pack\" pass writing 16 mip levels per dispatch)\r\n * cannot become a single map-style fragment pass at all.\r\n */\r\nconst MAX_MAP_STYLE_UAV_OUTPUTS = 8;\r\n\r\n/**\r\n * GLSL sampler type per DXBC resource-dimension id (float return types; the\r\n * stripped-RDEF corpus reflects everything as float).\r\n */\r\n/**\r\n * DXBC resource dimension for a cube map. Emulated addressing refuses it: a\r\n * cube coordinate is a direction, so a [0,1] range test is meaningless there.\r\n */\r\nconst CUBE_DIMENSION = 6;\r\n\r\nconst SAMPLER_TYPE_BY_DIMENSION = {\r\n 2: \"sampler2D\",\r\n 3: \"sampler2D\",\r\n 5: \"sampler3D\",\r\n 6: \"samplerCube\",\r\n 8: \"sampler2DArray\"\r\n};\r\n\r\n/**\r\n * Shadow-sampler type per WebGL2-supported DXBC resource dimension.\r\n * Comparison sampling changes both the call signature and the uniform type;\r\n * keeping this separate from the ordinary sampler table guarantees shaders\r\n * without comparison opcodes retain their existing declarations verbatim.\r\n */\r\nconst SHADOW_SAMPLER_TYPE_BY_DIMENSION = {\r\n 3: \"sampler2DShadow\",\r\n 6: \"samplerCubeShadow\",\r\n 8: \"sampler2DArrayShadow\"\r\n};\r\n\r\nconst COMPARISON_SAMPLE_OPCODES = new Set([ \"sample_c\", \"sample_c_lz\" ]);\r\nconst NON_COMPARISON_TEXTURE_OPCODES = new Set([\r\n \"sample\", \"sample_l\", \"sample_b\", \"sample_d\",\r\n \"gather4\", \"gather4_po\", \"ld\", \"ld_ms\", \"lod\"\r\n]);\r\n\r\n/**\r\n * Filtered-sample coordinate mask per resource dimension\r\n * (HLSLcc `TranslateTexCoord`, toGLSLInstruction.cpp:985-1031).\r\n */\r\n/** GLSL symbol for the merged detail-map array. */\r\nconst DETAIL_MAP_ARRAY_SYMBOL = \"sDetailArrayMap\";\r\n\r\nconst COORD_MASK_BY_DIMENSION = {\r\n 2: \"x\",\r\n 3: \"xy\",\r\n 5: \"xyz\",\r\n 6: \"xyz\",\r\n 7: \"xy\",\r\n 8: \"xyz\",\r\n 10: \"xyzw\"\r\n};\r\n\r\n/**\r\n * DXBC -> GLSL ES 3.00 emitter for vertex and pixel stages.\r\n *\r\n * Implements the lowering rules in `docs/dxbc-lowering/*.md`, which pin every\r\n * template to HLSLcc's `toGLSLInstruction.cpp`/`toGLSLDeclaration.cpp`.\r\n * Registers are stored as float vec4s with bitcasts at use sites, comparison\r\n * results are 0xFFFFFFFF/0 masks (never bools), and register-stable symbols\r\n * (`cb#.data[]`, `t#`, `in_SEMANTIC#`, `vs_SEMANTIC#`) form the ABI surface.\r\n *\r\n * Emitter-wide policy: Adreno-3xx driver hygiene from HLSLcc (per-component\r\n * bitwise splits, `op_not`, `uint(0)` literals, `uvecN()` ctor wraps) is NOT\r\n * ported; the target is ANGLE-backed WebGL2 and the plain spec-legal forms\r\n * are emitted instead.\r\n */\r\nexport class DxbcGlslEmitter\r\n{\r\n /**\r\n * @param {object} [options] Emitter options.\r\n * @param {object} [options.profile] Target-runtime profile overrides.\r\n * @param {\"array\"|\"std140\"} [options.profile.constantBufferStyle] `uniform vec4 cbN[]`\r\n * arrays for ccpwgl's uniform4fv path, or std140 blocks.\r\n * @param {Object.<number,number>} [options.profile.pixelConstantBufferRemap] Pixel-stage\r\n * cb slot renames (ccpwgl keeps PS effect constants at cb7).\r\n * @param {function(number,string):string} [options.profile.samplerName] Texture uniform\r\n * naming per register and stage.\r\n * @param {number} [options.profile.vertexStructuredCapacity] Element capacity for\r\n * vertex-stage structured-buffer UBOs (bones; Carbon max is 69 joints).\r\n */\r\n constructor(options = {})\r\n {\r\n this.helpers = new DxbcGlslHelperRegistry();\r\n this._defineHelpers();\r\n this.profile = {\r\n constantBufferStyle: \"array\",\r\n pixelConstantBufferRemap: { 0: 7 },\r\n samplerName: (register, stageName) => (stageName === \"vertex\" ? `vs${register}` : `s${register}`),\r\n vertexStructuredCapacity: 69,\r\n dataTextureWidth: 2048,\r\n // Resource (t#) registers to lower to a compile-time zero instead of\r\n // declaring a sampler / structured-buffer texture for them. Empty by\r\n // default (no behavior change); the packager fills this with the\r\n // tiled-lighting resources (LightBuffer/LightIndexBuffer/\r\n // LightProfileArray) when `--stub-light-resources` is set, so the\r\n // fragment sampler count drops under MAX_TEXTURE_IMAGE_UNITS.\r\n stubResourceRegisters: [],\r\n // Resource (t#) registers whose declaration is dropped and whose\r\n // samples lower to `vec4(1.0)` rather than `vec4(0.0)`.\r\n //\r\n // Separate from `stubResourceRegisters` because the two are not\r\n // interchangeable: a stubbed sampler reads as zero, which is right\r\n // for a term that is added and wrong for one that is multiplied.\r\n // `LightProfileArray` is multiplied into a light's attenuation, so\r\n // stubbing it would drive every profiled light to black, whereas\r\n // 1.0 is exactly what the shader's own no-profile path yields.\r\n neutralResourceRegisters: [],\r\n lightConstantBuffer: null,\r\n lightPackedTexture: null,\r\n // Resource (t#) registers to merge into one `sampler2DArray`, in\r\n // layer order. Empty by default; the packager fills it from the\r\n // backend-neutral detail-map recogniser. Merging three 2D textures\r\n // into one array binding frees two texture units on shaders that\r\n // sit exactly on WebGL2's 16-unit limit.\r\n detailMapArrayRegisters: [],\r\n ...options.profile\r\n };\r\n }\r\n\r\n /**\r\n * Registers the GLSL helper functions this emitter's lowerings can require.\r\n * GLSL ES 3.00 has no `bitfieldExtract`/`bitfieldInsert`/`bitCount`/\r\n * `textureGather` (all ES 3.10+), so `ibfe`/`ubfe`/`bfi`/`countbits`/\r\n * `gather4` lower to these hand-written equivalents instead.\r\n */\r\n _defineHelpers()\r\n {\r\n // Texture address modes WebGL2 cannot express, emulated in the shader.\r\n //\r\n // WebGL2 does REPEAT, MIRRORED_REPEAT and CLAMP_TO_EDGE natively. It has\r\n // no CLAMP_TO_BORDER (that needs EXT_texture_border_clamp, absent on our\r\n // desktop contexts) and no MIRROR_ONCE. Only those two are done here.\r\n //\r\n // The mode is a RUNTIME value, per axis, read from the address buffer.\r\n // It cannot be baked: ccpwgl resolves sampler overrides after\r\n // translation and caches one translated GLSL per resource path across\r\n // every instance, so a compile-time mode is wrong for any object whose\r\n // override differs from the container - in both directions.\r\n //\r\n // Modes are the Trinity enum as stored: 1 wrap, 2 mirror, 3 clamp-edge,\r\n // 4 border, 5 mirror-once. **0 means \"nothing to emulate\"**, which is\r\n // what every failure produces - a zeroed buffer, an absent upload, a\r\n // texture the consumer did not know about. Carbon's enum starts at 1 and\r\n // no shipped sampler carries 0, so 0 cannot swallow a real mode.\r\n //\r\n // Two arities rather than one vec3 form: a 2D sample has no third\r\n // coordinate, and its sampler may still declare a W mode - eight shipped\r\n // samplers declare border on W - which must not be tested against a\r\n // component that does not exist.\r\n this.helpers.define(\"cjsAddressCoord\", {\r\n source: [\r\n \"vec2 cjsAddressCoord(vec2 uv, vec2 modes) {\",\r\n \" if (int(modes.x) == 5) uv.x = clamp(abs(uv.x), 0.0, 1.0);\",\r\n \" if (int(modes.y) == 5) uv.y = clamp(abs(uv.y), 0.0, 1.0);\",\r\n \" return uv;\",\r\n \"}\",\r\n \"\",\r\n \"vec3 cjsAddressCoord(vec3 uv, vec3 modes) {\",\r\n \" if (int(modes.x) == 5) uv.x = clamp(abs(uv.x), 0.0, 1.0);\",\r\n \" if (int(modes.y) == 5) uv.y = clamp(abs(uv.y), 0.0, 1.0);\",\r\n \" if (int(modes.z) == 5) uv.z = clamp(abs(uv.z), 0.0, 1.0);\",\r\n \" return uv;\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n\r\n // Applied to the already sampled value, so it composes with every sample\r\n // form the emitter produces - texture, textureLod, textureGrad and the\r\n // bias variant - instead of needing an overload for each.\r\n //\r\n // The border colour is baked, not read from the buffer: Carbon's\r\n // AddSamplerOverride takes only U and V, so no override can change it.\r\n // It is NOT always transparent black - specialfx/cloud, cloudsimple and\r\n // volumetrichalfsphereglow use opaque white.\r\n //\r\n // Testing the post-transform coordinate is safe: an axis is either\r\n // mirror-once or border, never both, and mirror-once leaves other axes\r\n // untouched.\r\n this.helpers.define(\"cjsAddressBorder\", {\r\n source: [\r\n \"vec4 cjsAddressBorder(vec4 sampled, vec2 uv, vec2 modes, vec4 borderColor) {\",\r\n \" if (int(modes.x) == 4 && (uv.x < 0.0 || uv.x > 1.0)) return borderColor;\",\r\n \" if (int(modes.y) == 4 && (uv.y < 0.0 || uv.y > 1.0)) return borderColor;\",\r\n \" return sampled;\",\r\n \"}\",\r\n \"\",\r\n \"vec4 cjsAddressBorder(vec4 sampled, vec3 uv, vec3 modes, vec4 borderColor) {\",\r\n \" if (int(modes.x) == 4 && (uv.x < 0.0 || uv.x > 1.0)) return borderColor;\",\r\n \" if (int(modes.y) == 4 && (uv.y < 0.0 || uv.y > 1.0)) return borderColor;\",\r\n \" if (int(modes.z) == 4 && (uv.z < 0.0 || uv.z > 1.0)) return borderColor;\",\r\n \" return sampled;\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n // D3D11 IBFE pseudocode: width = src0 & 0x1f, offset = src1 & 0x1f;\r\n // width == 0 -> 0; width + offset < 32 -> a left/right arithmetic-shift\r\n // pair that sign-extends from bit (width-1); else an arithmetic shift by\r\n // offset alone. `w`/`o` are masked to [0,31] first so no shift amount\r\n // here can ever reach 32 (GLSL shift-by-bit-width is undefined).\r\n this.helpers.define(\"hlslcc_ibfe\", {\r\n source: [\r\n \"int hlslcc_ibfe(int width, int offset, int value) {\",\r\n \" int w = width & 31;\",\r\n \" int o = offset & 31;\",\r\n \" if (w == 0) return 0;\",\r\n \" if (w + o < 32) {\",\r\n \" return (value << (32 - w - o)) >> (32 - w);\",\r\n \" }\",\r\n \" return value >> o;\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n // Same shape as `hlslcc_ibfe` with logical (unsigned) shifts.\r\n this.helpers.define(\"hlslcc_ubfe\", {\r\n source: [\r\n \"uint hlslcc_ubfe(uint width, uint offset, uint value) {\",\r\n \" uint w = width & 31u;\",\r\n \" uint o = offset & 31u;\",\r\n \" if (w == 0u) return 0u;\",\r\n \" if (w + o < 32u) {\",\r\n \" return (value << (32u - w - o)) >> (32u - w);\",\r\n \" }\",\r\n \" return value >> o;\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n // D3D11 BFI pseudocode: bits = (((1 << width) - 1) << offset);\r\n // ((insert << offset) & bits) | (base & ~bits). `w` is masked to [0,31]\r\n // (per-spec \"width&31\") so `1u << w` never shifts by 32.\r\n this.helpers.define(\"hlslcc_bfi\", {\r\n source: [\r\n \"uint hlslcc_bfi(uint width, uint offset, uint insert, uint base) {\",\r\n \" uint w = width & 31u;\",\r\n \" uint o = offset & 31u;\",\r\n \" uint bits = ((1u << w) - 1u) << o;\",\r\n \" return ((insert << o) & bits) | (base & ~bits);\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n // Parallel (SWAR) popcount over a 32-bit uint.\r\n this.helpers.define(\"hlslcc_countbits\", {\r\n source: [\r\n \"uint hlslcc_countbits(uint value) {\",\r\n \" uint v = value;\",\r\n \" v = v - ((v >> 1u) & 0x55555555u);\",\r\n \" v = (v & 0x33333333u) + ((v >> 2u) & 0x33333333u);\",\r\n \" v = (v + (v >> 4u)) & 0x0F0F0F0Fu;\",\r\n \" return (v * 0x01010101u) >> 24u;\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n // GLSL ES 3.00 has no `textureGather` (ES 3.10+/desktop 4.0+ only, see\r\n // docs/dxbc-lowering/texture-sample.md section 5). Emulated with four\r\n // `texelFetch` taps at the bilinear neighborhood, matching D3D Gather4 /\r\n // GL textureGather's neighbor order (top-left, top-right, bottom-right,\r\n // bottom-left -> .x/.y/.z/.w), clamped to the texture's edge.\r\n this.helpers.define(\"hlslcc_textureGather4Emulated\", {\r\n source: [\r\n \"vec4 hlslcc_textureGather4Emulated(sampler2D samp, vec2 uv, int channel) {\",\r\n \" ivec2 size = textureSize(samp, 0);\",\r\n \" ivec2 maxCoord = size - ivec2(1);\",\r\n \" vec2 texel = uv * vec2(size) - vec2(0.5);\",\r\n \" ivec2 base = ivec2(floor(texel));\",\r\n \" ivec2 c0 = clamp(base + ivec2(0, 1), ivec2(0), maxCoord);\",\r\n \" ivec2 c1 = clamp(base + ivec2(1, 1), ivec2(0), maxCoord);\",\r\n \" ivec2 c2 = clamp(base + ivec2(1, 0), ivec2(0), maxCoord);\",\r\n \" ivec2 c3 = clamp(base + ivec2(0, 0), ivec2(0), maxCoord);\",\r\n \" return vec4(\",\r\n \" texelFetch(samp, c0, 0)[channel],\",\r\n \" texelFetch(samp, c1, 0)[channel],\",\r\n \" texelFetch(samp, c2, 0)[channel],\",\r\n \" texelFetch(samp, c3, 0)[channel]\",\r\n \" );\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n // texture2darray variant of the gather4 emulation (ASSAO-style passes\r\n // gather from the deinterleaved depth/AO slice arrays constantly).\r\n // Same four-tap bilinear neighborhood and neighbor order as the 2D\r\n // helper; the layer index rides in uvw.z and rounds to the nearest\r\n // slice, matching D3D's array-coordinate rounding for Gather4. Unlike\r\n // sampler2D (default lowp), sampler2DArray has NO default precision\r\n // in GLSL ES 3.00, so the parameter must be qualified explicitly.\r\n this.helpers.define(\"hlslcc_textureGather4ArrayEmulated\", {\r\n source: [\r\n \"vec4 hlslcc_textureGather4ArrayEmulated(mediump sampler2DArray samp, vec3 uvw, int channel) {\",\r\n \" ivec2 size = textureSize(samp, 0).xy;\",\r\n \" ivec2 maxCoord = size - ivec2(1);\",\r\n \" int layer = int(uvw.z + 0.5);\",\r\n \" vec2 texel = uvw.xy * vec2(size) - vec2(0.5);\",\r\n \" ivec2 base = ivec2(floor(texel));\",\r\n \" ivec2 c0 = clamp(base + ivec2(0, 1), ivec2(0), maxCoord);\",\r\n \" ivec2 c1 = clamp(base + ivec2(1, 1), ivec2(0), maxCoord);\",\r\n \" ivec2 c2 = clamp(base + ivec2(1, 0), ivec2(0), maxCoord);\",\r\n \" ivec2 c3 = clamp(base + ivec2(0, 0), ivec2(0), maxCoord);\",\r\n \" return vec4(\",\r\n \" texelFetch(samp, ivec3(c0, layer), 0)[channel],\",\r\n \" texelFetch(samp, ivec3(c1, layer), 0)[channel],\",\r\n \" texelFetch(samp, ivec3(c2, layer), 0)[channel],\",\r\n \" texelFetch(samp, ivec3(c3, layer), 0)[channel]\",\r\n \" );\",\r\n \"}\"\r\n ].join(\"\\n\")\r\n });\r\n }\r\n\r\n /**\r\n * Translates one DXBC stage into GLSL ES 3.00 source.\r\n *\r\n * @param {ArrayBuffer|ArrayBufferView|Uint8Array} bytes DXBC container bytes.\r\n * @param {object} [options] Emit options.\r\n * @param {string} [options.source] Source name used in error details.\r\n * @returns {{source:string,stageName:string,inputs:object[],outputs:object[],bindings:object[],warnings:string[],computeFragment:(object|undefined)}}\r\n * GLSL text plus the IO contract the packaging layer records; compute\r\n * stages add a `computeFragment` host contract (thread group,\r\n * dispatch-origin uniform, per-output UAV slice routing).\r\n */\r\n Emit(bytes, options = {})\r\n {\r\n const sourceName = options.source || \"memory\";\r\n const raw = CjsDxbcFormat.read(bytes, { source: sourceName, emit: CjsDxbcFormat.OUTPUT_RAW });\r\n if (!raw.program)\r\n {\r\n throw new WebglReadError(\"DXBC container has no shader program chunk\", { source: sourceName });\r\n }\r\n const program = raw.program;\r\n if (program.programTypeName !== \"vertex\" && program.programTypeName !== \"pixel\" && program.programTypeName !== \"compute\")\r\n {\r\n throw new WebglReadError(\"Only vertex, pixel, and compute stages target WebGL2\", {\r\n source: sourceName,\r\n programTypeName: program.programTypeName\r\n });\r\n }\r\n\r\n const state = {\r\n sourceName,\r\n stageName: program.programTypeName,\r\n isPixel: program.programTypeName === \"pixel\",\r\n isCompute: program.programTypeName === \"compute\",\r\n decoder: raw.decoder,\r\n isgn: raw.inputSignature,\r\n osgn: raw.outputSignature,\r\n inputNames: new Map(),\r\n outputNames: new Map(),\r\n resourceDimensions: new Map(),\r\n resourceNames: new Map(),\r\n ...(() =>\r\n {\r\n const analysed = this._analyzeComparisonResources(raw.decoder, sourceName);\r\n return {\r\n comparisonResources: analysed.comparison,\r\n pairedSamplers: analysed.paired\r\n };\r\n })(),\r\n constantBufferNames: new Map(),\r\n structuredBuffers: new Map(),\r\n lightConstantBuffer: this._normalizeLightConstantBufferProfile(),\r\n lightConstantBufferDeclared: false,\r\n lightPackedTexture: this._normalizeLightPackedTextureProfile(),\r\n emulatedAddressing: this._normalizeEmulatedAddressingProfile(),\r\n addressBufferDeclared: false,\r\n lightPackedTextureDeclared: false,\r\n // Resource (t#) registers stubbed to a compile-time zero: their\r\n // declarations/bindings are dropped and every read of them lowers\r\n // to `uintBitsToFloat(0u)` (structured) / `vec4(0.0)` (sampled).\r\n stubbedResources: new Set(this.profile.stubResourceRegisters || []),\r\n // Resource (t#) registers dropped to a compile-time *one*: same\r\n // declaration handling as `stubbedResources`, but reads lower to\r\n // `vec4(1.0)` so a multiplied term degrades to neutral instead of\r\n // to black. See `neutralResourceRegisters` on the profile.\r\n neutralResources: new Set(this.profile.neutralResourceRegisters || []),\r\n // Resource register -> array layer for the merged detail maps, and\r\n // whether the one shared array declaration has been emitted yet.\r\n detailMapArrayLayers: new Map(\r\n (this.profile.detailMapArrayRegisters || [])\r\n .map((register, layer) => [ register, layer ])\r\n ),\r\n detailMapArrayDeclared: false,\r\n inputMasks: new Map(),\r\n outputMasks: new Map(),\r\n bindings: [],\r\n declarationLines: [],\r\n earlyMainLines: [],\r\n bodyLines: [],\r\n indent: 1,\r\n warnings: [],\r\n inputs: [],\r\n outputs: [],\r\n icbName: \"ImmCB_0\",\r\n // Compute (map-style) state: workgroup size, UAV register->name map,\r\n // UAV declared-return-types (for the non-float-format warning),\r\n // the `_analyzeUavStores` pre-pass results (register->dimension,\r\n // register->slice plan, register->per-slice output names, running\r\n // output-location count), the dispatch-origin uniform name once\r\n // declared, and which of the four thread-id pseudo-inputs this\r\n // shader declares.\r\n threadGroup: null,\r\n uavNames: new Map(),\r\n uavReturnTypes: new Map(),\r\n uavDimensions: new Map(),\r\n uavSlicePlan: new Map(),\r\n uavSliceNames: new Map(),\r\n uavOutputCount: 0,\r\n dispatchOriginUniform: null,\r\n computeInputsUsed: { threadId: false, groupId: false, tig: false, flattened: false }\r\n };\r\n this.helpers.reset();\r\n\r\n if (state.isCompute)\r\n {\r\n this._assertMapStyleCompute(state);\r\n this._analyzeUavStores(state);\r\n }\r\n\r\n state.integerVertexInputs = new Map();\r\n\r\n state.formatter = new DxbcGlslOperandFormatter({\r\n // Populated during vertex-input declaration (the declaration loop\r\n // runs before any body emission, so the map is complete before the\r\n // first operand is formatted). Integer reads of these registers\r\n // value-convert instead of bitcast - see _declareVertexInput.\r\n integerInputs: state.integerVertexInputs,\r\n componentMap: (operand) =>\r\n {\r\n if (operand.type === 1) return state.inputMasks.get(operand.registerIndex) || null;\r\n if (operand.type === 2) return state.outputMasks.get(operand.registerIndex) || null;\r\n return null;\r\n },\r\n names: {\r\n input: (index) => state.inputNames.get(index) || `v${index}`,\r\n output: (index) => state.outputNames.get(index) || `o${index}`,\r\n constantBuffer: (slot) => state.constantBufferNames.get(slot) || `cb${slot}`,\r\n constantBufferMember: this.profile.constantBufferStyle === \"std140\" ? \"data\" : \"\",\r\n resource: (index) => state.resourceNames.get(index) || `t${index}`,\r\n uav: (index) => state.uavNames.get(index) || `cjsUav${index}`,\r\n immediateConstantBuffer: state.icbName\r\n }\r\n });\r\n\r\n for (const instruction of state.decoder.instructions)\r\n {\r\n if (instruction.isDeclaration)\r\n {\r\n this._emitDeclaration(state, instruction);\r\n }\r\n }\r\n if (state.isCompute)\r\n {\r\n this._emitComputeInputPrelude(state);\r\n }\r\n // Pair-aware varyings: declare and zero-fill any varying register the\r\n // paired pixel stage reads but this vertex stage never declares (DX11\r\n // tolerates such signature mismatches; GLSL linking does not).\r\n if (!state.isPixel && !state.isCompute && Array.isArray(options.pairVaryings))\r\n {\r\n for (const register of options.pairVaryings)\r\n {\r\n if (state.outputNames.has(register)) continue;\r\n const name = `vs_r${register}`;\r\n state.outputNames.set(register, name);\r\n state.declarationLines.push(`out vec4 ${name};`);\r\n state.outputs.push({ register, name, width: 4, semanticName: null, semanticIndex: 0 });\r\n state.warnings.push(`varying ${name} is read by the paired pixel stage but never produced; zero-filled`);\r\n }\r\n }\r\n this._zeroFillUnwrittenOutputs(state);\r\n for (const instruction of state.decoder.instructions)\r\n {\r\n if (!instruction.isDeclaration)\r\n {\r\n this._emitInstruction(state, instruction);\r\n }\r\n }\r\n if (state.indent !== 1)\r\n {\r\n throw new WebglReadError(\"Unbalanced control-flow blocks\", {\r\n source: sourceName,\r\n indent: state.indent\r\n });\r\n }\r\n\r\n const result = {\r\n source: this._assemble(state),\r\n stageName: state.stageName,\r\n inputs: state.inputs,\r\n outputs: state.outputs,\r\n bindings: state.bindings,\r\n warnings: state.warnings\r\n };\r\n if (state.isCompute)\r\n {\r\n // Host contract for one map-style draw: viewport = target size,\r\n // `uavOutputs[i].location` = color attachment index, and `slice`\r\n // (when non-null) = the texture2darray layer to attach there via\r\n // framebufferTextureLayer. `threadGroup` documents the original\r\n // dispatch granularity (fragment execution does not need it).\r\n result.computeFragment = {\r\n threadGroup: state.threadGroup ? [ ...state.threadGroup ] : null,\r\n dispatchOriginUniform: state.dispatchOriginUniform,\r\n uavOutputs: state.bindings\r\n .filter((binding) => binding.kind === \"uavTexture\")\r\n .map((binding) => ({\r\n register: binding.registerIndex,\r\n slice: binding.slice,\r\n location: binding.location,\r\n glslName: binding.name\r\n }))\r\n };\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Normalizes the optional local-light constant-buffer lowering profile.\r\n *\r\n * @returns {object|null} Normalized profile, or null when disabled.\r\n */\r\n _normalizeLightConstantBufferProfile()\r\n {\r\n const profile = this.profile.lightConstantBuffer;\r\n if (!profile || typeof profile !== \"object\") return null;\r\n const indexRegister = Number(profile.indexRegister);\r\n const dataRegister = Number(profile.dataRegister);\r\n if (!Number.isInteger(indexRegister) || !Number.isInteger(dataRegister)) return null;\r\n return {\r\n indexRegister,\r\n dataRegister,\r\n profileRegister: Number.isInteger(Number(profile.profileRegister)) ? Number(profile.profileRegister) : null,\r\n registerIndex: Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : 6,\r\n name: profile.name || `cb${Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : 6}`,\r\n capacity: Number.isInteger(Number(profile.capacity)) ? Number(profile.capacity) : 40,\r\n listBase: Number.isInteger(Number(profile.listBase)) ? Number(profile.listBase) : 65536\r\n };\r\n }\r\n\r\n /**\r\n * Finds resources used by comparison-sample instructions before resource\r\n * declarations are emitted, so those declarations can use shadow sampler\r\n * types. A single GLSL uniform cannot be both a shadow and ordinary sampler;\r\n * reject that shape explicitly instead of producing invalid GLSL.\r\n *\r\n * The same walk records the t#/s# pairing for EVERY sampled resource, not\r\n * only the comparison ones. D3D carries sampler state on a shared sampler\r\n * object and pairs it with a texture at the sample site; GLSL merges the two\r\n * into one uniform, so that pairing is the only place the pairing exists once\r\n * the shader is translated. Dropping it forces a consumer to guess, and the\r\n * available guess - \"the sampler whose register equals the texture's\" - is\r\n * numeric coincidence: with two pattern samplers declared, `NormalMap` at t3\r\n * collides with the clamp sampler at s3 and every hull's normal map is read\r\n * clamped instead of wrapped.\r\n *\r\n * @param {object} decoder Decoded DXBC instruction stream.\r\n * @param {string} sourceName Source name used in error details.\r\n * @returns {{comparison:Map<number,Set<number>>,paired:Map<number,Set<number>>}}\r\n * Resource register -> sampler registers, for comparison sampling and for\r\n * all sampling respectively.\r\n */\r\n _analyzeComparisonResources(decoder, sourceName)\r\n {\r\n const comparisonResources = new Map();\r\n const pairedSamplers = new Map();\r\n const ordinaryResources = new Set();\r\n\r\n const recordPair = (map, register, samplerRegister) =>\r\n {\r\n const samplers = map.get(register) || new Set();\r\n if (Number.isInteger(samplerRegister)) samplers.add(samplerRegister);\r\n map.set(register, samplers);\r\n };\r\n\r\n for (const instruction of decoder.instructions)\r\n {\r\n const resourceOperand = instruction.operands?.[2];\r\n if (!resourceOperand || !Number.isInteger(resourceOperand.registerIndex)) continue;\r\n\r\n const register = resourceOperand.registerIndex;\r\n const samplerRegister = instruction.operands?.[3]?.registerIndex;\r\n\r\n if (COMPARISON_SAMPLE_OPCODES.has(instruction.opcodeName))\r\n {\r\n recordPair(comparisonResources, register, samplerRegister);\r\n recordPair(pairedSamplers, register, samplerRegister);\r\n }\r\n else if (NON_COMPARISON_TEXTURE_OPCODES.has(instruction.opcodeName))\r\n {\r\n ordinaryResources.add(register);\r\n // `ld`-family fetches carry no sampler operand and legitimately\r\n // pair with nothing; only record a pair when one is present.\r\n if (Number.isInteger(samplerRegister))\r\n {\r\n recordPair(pairedSamplers, register, samplerRegister);\r\n }\r\n }\r\n }\r\n\r\n for (const register of comparisonResources.keys())\r\n {\r\n if (ordinaryResources.has(register))\r\n {\r\n throw new WebglReadError(\r\n \"A resource sampled with comparison and non-comparison operations requires separate combined samplers\",\r\n { source: sourceName, registerIndex: register }\r\n );\r\n }\r\n }\r\n\r\n return { comparison: comparisonResources, paired: pairedSamplers };\r\n }\r\n\r\n /**\r\n * Normalizes the emulated-addressing profile.\r\n *\r\n * Keyed by RESOURCE register, not sampler register, because that is what\r\n * every layer we touch keys on: GL stores wrap state on the texture object,\r\n * ccpwgl keys overrides by texture name, and the emitted GLSL declares one\r\n * sampler uniform per resource. Only D3D treats the mode as a property of a\r\n * shared sampler - in `decalv5` five textures share one bordered sampler and\r\n * each can resolve to a different mode, which a sampler-keyed scheme cannot\r\n * represent.\r\n *\r\n * It arrives as a profile option because it CANNOT be discovered here: DXBC\r\n * carries no sampler state, which lives in the Carbon container wrapping it.\r\n * The caller also chooses the SUPERSET - listing a texture whose container\r\n * mode needs no emulation is deliberate and cheap, because the runtime mode\r\n * decides, and it is what lets an override correct a container that is wrong.\r\n *\r\n * Shape: `{ bufferRegister, textures: [{ registerIndex, borderColor }] }`.\r\n *\r\n * @returns {{bufferRegister:number, textures:Map<number,{color:number[]}>}|null}\r\n * Null when disabled.\r\n */\r\n _normalizeEmulatedAddressingProfile()\r\n {\r\n const value = this.profile.emulatedAddressing;\r\n\r\n // Either input alone is a complete profile: `samplerModes` is the\r\n // ordinary case (container modes, mapped onto resources here), and\r\n // `textures` is for a caller gating something the container gives it no\r\n // reason to gate. Requiring both would reject the ordinary case.\r\n if (!value || typeof value !== \"object\") return null;\r\n if (!Array.isArray(value.textures) && !value.samplerModes) return null;\r\n\r\n const bufferRegister = Number(value.bufferRegister ?? 8);\r\n\r\n if (!Number.isInteger(bufferRegister) || bufferRegister < 0 || bufferRegister > 254)\r\n {\r\n throw new WebglReadError(\r\n \"Emulated-addressing buffer register must be an integer in 0..254\",\r\n { bufferRegister: value.bufferRegister }\r\n );\r\n }\r\n\r\n const colorOf = (raw) =>\r\n {\r\n if (raw === undefined || raw === null) return [ 0, 0, 0, 0 ];\r\n\r\n if (!Array.isArray(raw) || raw.length !== 4)\r\n {\r\n throw new WebglReadError(\"Border colour must be four components\", { color: raw });\r\n }\r\n\r\n const parsed = raw.map(Number);\r\n\r\n // A malformed colour must not become a plausible one: transparent\r\n // black is the common case, so silently defaulting to it would hide\r\n // the mistake in exactly the effects that differ from it.\r\n if (parsed.some((c) => !Number.isFinite(c)))\r\n {\r\n throw new WebglReadError(\"Border colour components must be finite numbers\", { color: raw });\r\n }\r\n\r\n return parsed;\r\n };\r\n\r\n // Container sampler modes, keyed by SAMPLER register. Supplied so the\r\n // emitter can derive which resources need a gate: only it knows, from\r\n // the DXBC, which resource is read through which sampler. The caller\r\n // knows the modes but not that mapping; the emitter knows the mapping\r\n // but not the modes, because DXBC carries no sampler state.\r\n const samplerModes = new Map();\r\n\r\n for (const [ key, modes ] of Object.entries(value.samplerModes ?? {}))\r\n {\r\n const registerIndex = Number(key);\r\n\r\n if (!Number.isInteger(registerIndex) || registerIndex < 0) continue;\r\n\r\n const axes = [ modes?.u, modes?.v, modes?.w ].map(Number);\r\n\r\n // Only the two modes WebGL2 cannot express need a gate. Everything\r\n // else is left to GL, so listing it would cost a branch for nothing.\r\n if (axes.some((m) => m === 4 || m === 5))\r\n {\r\n samplerModes.set(registerIndex, true);\r\n }\r\n }\r\n\r\n const textures = new Map();\r\n\r\n for (const entry of value.textures ?? [])\r\n {\r\n const registerIndex = Number.isInteger(entry) ? entry : Number(entry?.registerIndex);\r\n\r\n if (!Number.isInteger(registerIndex) || registerIndex < 0)\r\n {\r\n throw new WebglReadError(\r\n \"Emulated-addressing entries need an integer resource registerIndex\",\r\n { entry }\r\n );\r\n }\r\n\r\n textures.set(registerIndex, {\r\n color: colorOf(Number.isInteger(entry) ? null : entry?.borderColor)\r\n });\r\n }\r\n\r\n if (!textures.size && !samplerModes.size) return null;\r\n\r\n return { bufferRegister, textures, samplerModes, defaultColor: colorOf(value.borderColor) };\r\n }\r\n\r\n /**\r\n * Applies emulated address modes to one sample.\r\n *\r\n * Emits nothing for a texture the caller did not list, so a shader with no\r\n * emulated addressing is byte-identical to one emitted without the profile.\r\n *\r\n * @param {object} state Emit state.\r\n * @param {object} instruction Decoded texture instruction.\r\n * @param {string} call The GLSL sample expression built so far.\r\n * @param {string} coord The coordinate expression passed to that sample.\r\n * @param {string} coordMask Component mask of the coordinate.\r\n * @returns {string} The sample expression, addressed when the caller listed it.\r\n * @private\r\n */\r\n _applyEmulatedAddressing(state, instruction, call, coord, coordMask)\r\n {\r\n const profile = state.emulatedAddressing;\r\n\r\n if (!profile) return call;\r\n\r\n const resourceRegister = instruction.operands?.[2]?.registerIndex;\r\n\r\n if (!Number.isInteger(resourceRegister)) return call;\r\n\r\n // An explicit entry wins; otherwise derive from the sampler this\r\n // resource is read through. Deriving is the ordinary case - the caller\r\n // supplies container modes and the emitter maps them onto resources -\r\n // and the explicit list is for a caller that wants a texture gated the\r\n // container gives it no reason to gate. That is not redundant: a\r\n // sampler override can introduce an emulated mode the container never\r\n // declared, and overrides exist precisely to correct a wrong container.\r\n let entry = profile.textures.get(resourceRegister);\r\n\r\n if (!entry)\r\n {\r\n const samplerRegister = instruction.operands?.[3]?.registerIndex;\r\n\r\n if (!Number.isInteger(samplerRegister)) return call;\r\n if (!profile.samplerModes.has(samplerRegister)) return call;\r\n\r\n entry = { color: profile.defaultColor };\r\n }\r\n\r\n // A cube coordinate is a DIRECTION, not a texture coordinate, so a\r\n // [0,1] test has no meaning on it. Refuse rather than emit a test that\r\n // is silently nonsense - the caller must not list cube-target\r\n // resources. decalholev5's interior cube and cubetextureviewer are the\r\n // shipped cases that reach here.\r\n const dimension = state.resourceDimensions.get(resourceRegister);\r\n\r\n if (dimension === CUBE_DIMENSION)\r\n {\r\n // Reported and skipped, not fatal. `decalholev5` reads its interior\r\n // cube through a bordered sampler, so refusing would make a shipped\r\n // effect unbuildable over a mode that cannot apply to it anyway -\r\n // trading a missing border for no shader at all. Skipping silently\r\n // is the other wrong answer, so it goes in warnings.\r\n state.warnings.push(\r\n `emulated addressing skipped for cube resource t${resourceRegister}: `\r\n + \"a cube coordinate is a direction, so a [0,1] range test has no meaning\"\r\n );\r\n\r\n return call;\r\n }\r\n\r\n if (coordMask.length !== 2 && coordMask.length !== 3)\r\n {\r\n throw new WebglReadError(\r\n \"Emulated addressing supports two- and three-component sampling only\",\r\n { source: state.sourceName, registerIndex: resourceRegister, coordMask }\r\n );\r\n }\r\n\r\n const buffer = this._ensureAddressBuffer(state);\r\n const swizzle = coordMask.length === 2 ? \"xy\" : \"xyz\";\r\n const modes = `${buffer}[${resourceRegister}].${swizzle}`;\r\n const glslFloat = (n) => (Number.isInteger(n) ? `${n}.0` : String(n));\r\n const color = entry.color.map(glslFloat).join(\", \");\r\n\r\n // Mirror-once rewrites the coordinate BEFORE the fetch; border tests\r\n // after it. Both are emitted: an axis is only ever one of them, and the\r\n // unused one reads mode 0 or a native mode and does nothing.\r\n const coordHelper = this.helpers.require(\"cjsAddressCoord\");\r\n const borderHelper = this.helpers.require(\"cjsAddressBorder\");\r\n const addressedCoord = `${coordHelper}(${coord}, ${modes})`;\r\n const rewritten = call.split(coord).join(addressedCoord);\r\n\r\n return `${borderHelper}(${rewritten}, ${addressedCoord}, ${modes}, vec4(${color}))`;\r\n }\r\n\r\n /**\r\n * Declares the emulated-addressing constant buffer, once per shader.\r\n *\r\n * Sized to the highest listed resource register so the array stays compact,\r\n * the way Carbon emitters declare compact `cb` arrays. The register is\r\n * caller-chosen and defaults to 8: shipped effects declare only cb0-4, 6 and\r\n * 7, and ccpwgl already resolves `cb0`..`cb15` by name, so 8 needs no new\r\n * binding table.\r\n *\r\n * @param {object} state Emit state.\r\n * @returns {string} The buffer's GLSL name.\r\n * @private\r\n */\r\n _ensureAddressBuffer(state)\r\n {\r\n const { bufferRegister, textures } = state.emulatedAddressing;\r\n const name = `cb${bufferRegister}`;\r\n\r\n if (state.addressBufferDeclared) return name;\r\n\r\n // Two declarations of one cb name is a GLSL redefinition error that\r\n // nothing downstream checks, so catch it here, where the register is\r\n // still attributable to a caller's choice.\r\n //\r\n // Compared by NAME, not by register: `constantBufferNames` is keyed by\r\n // DXBC slot while the emitted name uses the remapped register, and on a\r\n // pixel stage slot 0 becomes `cb7`. Comparing register to slot would\r\n // miss exactly that case and emit two `cb7` declarations.\r\n if ([ ...state.constantBufferNames.values() ].includes(name))\r\n {\r\n throw new WebglReadError(\r\n \"Emulated-addressing buffer register collides with a declared constant buffer\",\r\n { source: state.sourceName, bufferRegister }\r\n );\r\n }\r\n\r\n // Sized from every resource the shader DECLARES, not from the addressed\r\n // set: with a derived set the addressed registers are not all known yet,\r\n // and the array is indexed by resource register, so it must be long\r\n // enough for any of them. DXBC puts declarations before instructions, so\r\n // resourceDimensions is complete by the first sample.\r\n const highest = Math.max(\r\n -1,\r\n ...state.resourceDimensions.keys(),\r\n ...textures.keys()\r\n );\r\n const rows = highest + 1;\r\n\r\n if (rows < 1)\r\n {\r\n throw new WebglReadError(\r\n \"Emulated addressing found no declared resource to size its buffer\",\r\n { source: state.sourceName }\r\n );\r\n }\r\n\r\n state.constantBufferNames.set(bufferRegister, name);\r\n state.addressBufferDeclared = true;\r\n state.declarationLines.push(`uniform vec4 ${name}[${rows}];`);\r\n // An ordinary constantBuffer binding, deliberately with no extra fields.\r\n // `cjsSemantic` is reserved vocabulary for the local-light family and\r\n // the block writer throws on any other value, and the wire drops fields\r\n // it does not encode - so an invented one would vanish for every effect\r\n // loaded from bytes, which is exactly how the packed-light branch came\r\n // to be silently dead.\r\n //\r\n // The consumer identifies it by register instead: Carbon declares only\r\n // cb0-4, 6 and 7 across all 537 shipped effects, so a constant buffer at\r\n // 8 or above is ours. That is a convention, and it is written down in\r\n // the addressing contract rather than left to be inferred.\r\n state.bindings.push({\r\n kind: \"constantBuffer\",\r\n registerIndex: bufferRegister,\r\n name,\r\n sizeInVec4: rows,\r\n style: \"array\"\r\n });\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * Normalizes the optional packed local-light texture lowering profile.\r\n *\r\n * @returns {object|null} Normalized profile, or null when disabled.\r\n */\r\n _normalizeLightPackedTextureProfile()\r\n {\r\n const profile = this.profile.lightPackedTexture;\r\n if (!profile || typeof profile !== \"object\") return null;\r\n const indexRegister = Number(profile.indexRegister);\r\n const dataRegister = Number(profile.dataRegister);\r\n if (!Number.isInteger(indexRegister) || !Number.isInteger(dataRegister)) return null;\r\n return {\r\n indexRegister,\r\n dataRegister,\r\n profileRegister: Number.isInteger(Number(profile.profileRegister)) ? Number(profile.profileRegister) : null,\r\n registerIndex: Number.isInteger(Number(profile.registerIndex)) ? Number(profile.registerIndex) : indexRegister,\r\n name: profile.name || \"cjsLocalLightTexture\",\r\n dataTexelBase: Number.isInteger(Number(profile.dataTexelBase)) ? Number(profile.dataTexelBase) : 131072\r\n };\r\n }\r\n\r\n /**\r\n * Declares the packed local-light texture ABI used to replace the\r\n * LightIndexBuffer/LightBuffer/LightProfileArray trio with one RGBA32UI\r\n * data texture.\r\n *\r\n * @param {object} state Emit state.\r\n */\r\n _ensureLightPackedTexture(state)\r\n {\r\n const profile = state.lightPackedTexture;\r\n if (!profile || state.lightPackedTextureDeclared) return;\r\n state.lightPackedTextureDeclared = true;\r\n\r\n state.declarationLines.push(`uniform highp usampler2D ${profile.name};`);\r\n state.bindings.push({\r\n kind: \"structuredTexture\",\r\n registerIndex: profile.registerIndex,\r\n name: profile.name,\r\n strideBytes: 0,\r\n format: \"RGBA32UI\",\r\n width: this.profile.dataTextureWidth,\r\n cjsSemantic: \"packedLocalLights\",\r\n lightIndexRegister: profile.indexRegister,\r\n lightDataRegister: profile.dataRegister,\r\n lightProfileRegister: profile.profileRegister,\r\n dataTexelBase: profile.dataTexelBase\r\n });\r\n }\r\n\r\n /**\r\n * Declares the local-light constant-buffer ABI used to replace the two\r\n * tiled-light structured buffers without consuming sampler units.\r\n *\r\n * @param {object} state Emit state.\r\n */\r\n _ensureLightConstantBuffer(state)\r\n {\r\n const profile = state.lightConstantBuffer;\r\n if (!profile || state.lightConstantBufferDeclared) return;\r\n state.lightConstantBufferDeclared = true;\r\n\r\n const rows = 1 + profile.capacity * 3;\r\n state.constantBufferNames.set(profile.registerIndex, profile.name);\r\n state.declarationLines.push(\r\n `uniform vec4 ${profile.name}[${rows}];`,\r\n `uint cjsLocalLightCount() { return floatBitsToUint(${profile.name}[0].x); }`,\r\n \"uint cjsLocalLightIndexLoad(int element) {\",\r\n \" uint count = cjsLocalLightCount();\",\r\n \" if (count == 0u) return 0u;\",\r\n ` const int listBase = ${profile.listBase};`,\r\n \" if (element < listBase) return uint(listBase);\",\r\n \" int local = element - listBase;\",\r\n \" int node = local >> 1;\",\r\n \" if (node < 0 || uint(node) >= count) return 0u;\",\r\n \" if ((local & 1) == 0) return uint(node + 1);\",\r\n \" uint next = uint(node + 1);\",\r\n \" return next < count ? uint(listBase + int(next) * 2) : 0u;\",\r\n \"}\",\r\n \"vec4 cjsLocalLightRow(int lightIndex, int row) {\",\r\n \" int i = lightIndex - 1;\",\r\n \" if (i < 0 || uint(i) >= cjsLocalLightCount() || row < 0 || row >= 3) return vec4(0.0);\",\r\n ` return ${profile.name}[1 + i * 3 + row];`,\r\n \"}\"\r\n );\r\n state.bindings.push({\r\n kind: \"constantBuffer\",\r\n registerIndex: profile.registerIndex,\r\n name: profile.name,\r\n sizeInVec4: rows,\r\n style: \"array\",\r\n cjsSemantic: \"localLights\",\r\n capacityLights: profile.capacity,\r\n lightIndexRegister: profile.indexRegister,\r\n lightDataRegister: profile.dataRegister,\r\n lightProfileRegister: profile.profileRegister\r\n });\r\n }\r\n\r\n /**\r\n * Rejects compute shaders that need real compute-pipeline features (shared\r\n * memory, barriers, atomics, raw/structured/typed UAV reads) instead of the\r\n * \"map-style\" thread-per-fragment shape this emitter lowers. The message\r\n * intentionally contains \"not supported\" so packaging's kill-list\r\n * classifier regex (`/not supported|No GLSL lowering|unimplementable/i`)\r\n * routes these to the exclusion list rather than the failure list.\r\n *\r\n * @param {object} state Emit state.\r\n */\r\n _assertMapStyleCompute(state)\r\n {\r\n for (const instruction of state.decoder.instructions)\r\n {\r\n const name = instruction.opcodeName;\r\n const blocked = name.startsWith(\"dcl_thread_group_shared_memory\")\r\n || name === \"sync\"\r\n || name.startsWith(\"atomic_\")\r\n || name.startsWith(\"imm_atomic_\")\r\n || name === \"ld_uav_typed\"\r\n || name === \"store_raw\"\r\n || name === \"store_structured\";\r\n if (blocked)\r\n {\r\n throw new WebglReadError(\r\n \"compute stage is not map-style; WebGL2 fragment lowering is not supported for this instruction\",\r\n { source: state.sourceName, opcodeName: name, offset: instruction.offset }\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Pre-scans a map-style compute shader's `store_uav_typed` instructions and\r\n * builds a per-UAV slice plan before any declaration is emitted.\r\n *\r\n * Straight-line constant propagation only: the address registers ASSAO-style\r\n * Prepare passes build are `mov rX.<c>, l(k)` immediates, so the tracker\r\n * records the last constant written to each temp component and treats every\r\n * other write as dynamic. Each stored-to UAV register resolves to either\r\n * `{ kind: \"single\" }` (at most one store; the array-slice coordinate, when\r\n * present, is dropped — the host attaches the target layer via\r\n * `framebufferTextureLayer`) or `{ kind: \"multiSlice\", slices, sliceByOffset }`\r\n * (several stores at statically distinct texture2darray slices, each routed\r\n * to its own fragment output — the host attaches those layers as sequential\r\n * color attachments).\r\n *\r\n * Anything outside those two shapes cannot become one fragment pass, so the\r\n * throw messages deliberately contain \"not supported\" for packaging's\r\n * kill-list classifier (see `_assertMapStyleCompute`).\r\n *\r\n * @param {object} state Emit state.\r\n */\r\n _analyzeUavStores(state)\r\n {\r\n for (const instruction of state.decoder.instructions)\r\n {\r\n if (instruction.isDeclaration && instruction.opcodeName === \"dcl_unordered_access_view_typed\")\r\n {\r\n state.uavDimensions.set(instruction.declaration.registerIndex, instruction.declaration.resourceDimension);\r\n }\r\n }\r\n\r\n const constantTemps = new Map();\r\n const storesByUav = new Map();\r\n let controlFlowDepth = 0;\r\n for (const instruction of state.decoder.instructions)\r\n {\r\n if (instruction.isDeclaration) continue;\r\n const name = instruction.opcodeName;\r\n if (name === \"if\" || name === \"loop\" || name === \"switch\")\r\n {\r\n controlFlowDepth += 1;\r\n continue;\r\n }\r\n if (name === \"endif\" || name === \"endloop\" || name === \"endswitch\")\r\n {\r\n controlFlowDepth -= 1;\r\n continue;\r\n }\r\n if (name === \"store_uav_typed\")\r\n {\r\n const [ uavOperand, addressOperand ] = instruction.operands;\r\n const register = uavOperand.registerIndex;\r\n const isArray = state.uavDimensions.get(register) === 8;\r\n const stores = storesByUav.get(register) || [];\r\n stores.push({\r\n offset: instruction.offset,\r\n slice: isArray ? this._resolveSliceConstant(addressOperand, constantTemps) : null,\r\n isArray,\r\n controlFlowDepth\r\n });\r\n storesByUav.set(register, stores);\r\n continue;\r\n }\r\n this._trackTempConstants(instruction, constantTemps);\r\n }\r\n\r\n for (const [ register, stores ] of storesByUav)\r\n {\r\n if (stores.length <= 1)\r\n {\r\n state.uavSlicePlan.set(register, { kind: \"single\" });\r\n continue;\r\n }\r\n const throwNotMapStyle = (shape) =>\r\n {\r\n throw new WebglReadError(\r\n `compute stage is not map-style; ${shape} are not supported by the WebGL2 emitter's fragment-output lowering`,\r\n { source: state.sourceName, registerIndex: register, storeCount: stores.length }\r\n );\r\n };\r\n const slices = stores.map((store) => store.slice);\r\n if (!stores[0].isArray)\r\n {\r\n throwNotMapStyle(\"multiple stores to one non-array UAV\");\r\n }\r\n if (slices.some((slice) => slice === null))\r\n {\r\n throwNotMapStyle(\"multiple UAV stores with a dynamic array slice\");\r\n }\r\n if (new Set(slices).size !== slices.length)\r\n {\r\n throwNotMapStyle(\"multiple UAV stores to the same array slice\");\r\n }\r\n if (stores.some((store) => store.controlFlowDepth > 0))\r\n {\r\n throwNotMapStyle(\"multi-slice UAV stores inside divergent control flow\");\r\n }\r\n state.uavSlicePlan.set(register, {\r\n kind: \"multiSlice\",\r\n slices: [ ...slices ].sort((a, b) => a - b),\r\n sliceByOffset: new Map(stores.map((store) => [ store.offset, store.slice ]))\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Updates the per-temp-component constant tracker for one instruction:\r\n * `mov rX.<mask>, l(...)` records each written component's immediate dword,\r\n * and any other write to a temp component invalidates it. Destination\r\n * operands are exactly the mask-selection temp operands (DXBC sources\r\n * always read through swizzle/select1), so this also handles multi-\r\n * destination opcodes like `sincos` and `udiv` conservatively.\r\n *\r\n * @param {object} instruction Decoded non-declaration instruction.\r\n * @param {Map<string, number>} constantTemps Constant tracker keyed `<register>.<component>`.\r\n */\r\n _trackTempConstants(instruction, constantTemps)\r\n {\r\n const source = instruction.operands[1];\r\n const isConstantMov = instruction.opcodeName === \"mov\"\r\n && !instruction.saturate\r\n && source?.type === 4\r\n && source.modifierName === \"none\";\r\n for (const operand of instruction.operands)\r\n {\r\n if (operand.type !== 0 || operand.selectionModeName !== \"mask\" || operand.registerIndex === null) continue;\r\n for (const component of operand.mask || \"xyzw\")\r\n {\r\n const key = `${operand.registerIndex}.${component}`;\r\n if (isConstantMov && operand.mask)\r\n {\r\n const value = source.componentCount === 1\r\n ? source.immediateValues[0]\r\n : source.immediateValues[\"xyzw\".indexOf(component)];\r\n constantTemps.set(key, value.uint32 | 0);\r\n }\r\n else\r\n {\r\n constantTemps.delete(key);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Resolves the array-slice (z) component of a `store_uav_typed` address\r\n * operand to a compile-time constant, or null when it is dynamic.\r\n *\r\n * @param {object} addressOperand Decoded address operand.\r\n * @param {Map<string, number>} constantTemps Constant tracker keyed `<register>.<component>`.\r\n * @returns {number|null} Constant slice index, or null.\r\n */\r\n _resolveSliceConstant(addressOperand, constantTemps)\r\n {\r\n if (addressOperand.type === 4)\r\n {\r\n const value = addressOperand.componentCount === 1\r\n ? addressOperand.immediateValues[0]\r\n : addressOperand.immediateValues[2];\r\n return value ? value.uint32 | 0 : null;\r\n }\r\n if (addressOperand.type !== 0)\r\n {\r\n return null;\r\n }\r\n const component = addressOperand.selectionModeName === \"swizzle\" && addressOperand.swizzle\r\n ? addressOperand.swizzle[2]\r\n : \"z\";\r\n const key = `${addressOperand.registerIndex}.${component}`;\r\n return constantTemps.has(key) ? constantTemps.get(key) : null;\r\n }\r\n\r\n /**\r\n * Allocates the next map-style UAV fragment-output location, enforcing the\r\n * `MAX_MAP_STYLE_UAV_OUTPUTS` attachment budget across single-output UAVs\r\n * and per-slice multi-output UAVs alike.\r\n *\r\n * @param {object} state Emit state.\r\n * @param {number} register UAV register index (error detail only).\r\n * @returns {number} Allocated output location.\r\n */\r\n _allocateUavOutputLocation(state, register)\r\n {\r\n const location = state.uavOutputCount;\r\n if (location >= MAX_MAP_STYLE_UAV_OUTPUTS)\r\n {\r\n throw new WebglReadError(\r\n \"compute stage is not map-style; too many simultaneous UAV writes are not supported by the WebGL2 emitter's fragment-output lowering\",\r\n { source: state.sourceName, registerIndex: register, uavCount: location + 1 }\r\n );\r\n }\r\n state.uavOutputCount += 1;\r\n return location;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Declarations\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Emits one decoded DXBC declaration into the GLSL interface and manifest.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC declaration instruction.\r\n * @private\r\n */\r\n _emitDeclaration(state, instruction)\r\n {\r\n const declaration = instruction.declaration;\r\n switch (instruction.opcodeName)\r\n {\r\n case \"dcl_global_flags\":\r\n // layout(early_fragment_tests) is not GLSL ES 3.00; suppressed by design.\r\n break;\r\n case \"dcl_temps\":\r\n for (let index = 0; index < declaration.tempCount; index += 1)\r\n {\r\n state.declarationLines.push(`vec4 r${index};`);\r\n }\r\n break;\r\n case \"dcl_indexable_temp\":\r\n state.declarationLines.push(\r\n `vec${declaration.componentCount} x${declaration.registerIndex}[${declaration.registerCount}];`\r\n );\r\n break;\r\n case \"dcl_constant_buffer\": {\r\n const slot = declaration.registerIndex;\r\n const mapped = state.isPixel ? (this.profile.pixelConstantBufferRemap[slot] ?? slot) : slot;\r\n const name = `cb${mapped}`;\r\n state.constantBufferNames.set(slot, name);\r\n if (this.profile.constantBufferStyle === \"std140\")\r\n {\r\n state.declarationLines.push(\r\n `layout(std140) uniform ConstantBuffer${mapped} {`,\r\n ` vec4 data[${declaration.sizeInVec4}];`,\r\n `} ${name};`\r\n );\r\n }\r\n else\r\n {\r\n state.declarationLines.push(`uniform vec4 ${name}[${declaration.sizeInVec4}];`);\r\n }\r\n state.bindings.push({\r\n kind: \"constantBuffer\",\r\n registerIndex: slot,\r\n name,\r\n sizeInVec4: declaration.sizeInVec4,\r\n style: this.profile.constantBufferStyle\r\n });\r\n break;\r\n }\r\n case \"dcl_sampler\":\r\n break;\r\n case \"dcl_resource\": {\r\n const register = declaration.registerIndex;\r\n if (state.lightPackedTexture?.profileRegister === register)\r\n {\r\n this._ensureLightPackedTexture(state);\r\n state.resourceDimensions.set(register, declaration.resourceDimension);\r\n state.resourceNames.set(register, `s${register}`);\r\n break;\r\n }\r\n if (state.lightConstantBuffer?.profileRegister === register)\r\n {\r\n this._ensureLightConstantBuffer(state);\r\n state.resourceDimensions.set(register, declaration.resourceDimension);\r\n state.resourceNames.set(register, `s${register}`);\r\n break;\r\n }\r\n if (state.stubbedResources.has(register))\r\n {\r\n // Stubbed tiled-lighting sampler (e.g. LightProfileArray):\r\n // drop the declaration + binding entirely; every sample of\r\n // this register lowers to vec4(0.0) in _textureSample.\r\n break;\r\n }\r\n if (state.neutralResources.has(register))\r\n {\r\n // Same as the stub above, but its samples lower to\r\n // vec4(1.0). Dropping the declaration is what frees the\r\n // sampler unit; the substitution is what keeps the result\r\n // correct for a multiplied term.\r\n //\r\n // Nothing is recorded as a binding, because nothing is\r\n // bound. The pass's resource-transform section carries the\r\n // statement that this resource was dropped deliberately;\r\n // see `localLightProfileNeutralTransformFor`.\r\n break;\r\n }\r\n if (declaration.resourceDimension === 1)\r\n {\r\n // Buffer<> texel buffers (post-processing) become float data textures\r\n // read via width-wrapped texelFetch; no samplerBuffer in WebGL2.\r\n const name = `bt${register}`;\r\n state.resourceDimensions.set(register, 1);\r\n state.resourceNames.set(register, name);\r\n state.declarationLines.push(`uniform highp sampler2D ${name};`);\r\n state.bindings.push({\r\n kind: \"bufferTexture\",\r\n registerIndex: register,\r\n name,\r\n format: \"RGBA32F\",\r\n width: this.profile.dataTextureWidth,\r\n returnTypes: declaration.returnType?.returnTypeNames || null\r\n });\r\n break;\r\n }\r\n const comparisonSamplers = state.comparisonResources.get(register) || null;\r\n const samplerType = comparisonSamplers\r\n ? SHADOW_SAMPLER_TYPE_BY_DIMENSION[declaration.resourceDimension]\r\n : SAMPLER_TYPE_BY_DIMENSION[declaration.resourceDimension];\r\n if (!samplerType)\r\n {\r\n throw new WebglReadError(\r\n comparisonSamplers\r\n ? \"Comparison sampling is not supported for this resource dimension by the WebGL2 emitter\"\r\n : \"Resource dimension is not supported by the WebGL2 emitter\",\r\n {\r\n source: state.sourceName,\r\n dimensionName: declaration.resourceDimensionName\r\n }\r\n );\r\n }\r\n if (state.detailMapArrayLayers.has(register))\r\n {\r\n this._declareDetailArrayMap(state, register, declaration, comparisonSamplers);\r\n break;\r\n }\r\n\r\n const name = this.profile.samplerName(register, state.stageName);\r\n state.resourceDimensions.set(register, declaration.resourceDimension);\r\n state.resourceNames.set(register, name);\r\n state.declarationLines.push(`uniform mediump ${samplerType} ${name};`);\r\n // The sampler this texture is actually paired with at its sample\r\n // sites. A texture sampled through more than one sampler cannot\r\n // be represented by one GLSL uniform's state, so record them all\r\n // and let the packaging layer decide; a texture sampled through\r\n // none (pure `ld`) simply has no sampler state to carry.\r\n const paired = state.pairedSamplers.get(register);\r\n state.bindings.push({\r\n kind: \"resource\",\r\n registerIndex: register,\r\n name,\r\n samplerType,\r\n dimensionName: declaration.resourceDimensionName,\r\n ...(paired?.size\r\n ? { pairedSamplerRegisters: [ ...paired ].sort((a, b) => a - b) }\r\n : {}),\r\n ...(comparisonSamplers ? {\r\n comparison: true,\r\n samplerRegisterIndices: [ ...comparisonSamplers ].sort((a, b) => a - b)\r\n } : {})\r\n });\r\n break;\r\n }\r\n case \"dcl_resource_structured\": {\r\n const register = declaration.registerIndex;\r\n const strideBytes = declaration.structureStride || 4;\r\n const strideDwords = Math.max(1, strideBytes >> 2);\r\n if (state.lightPackedTexture?.indexRegister === register)\r\n {\r\n this._ensureLightPackedTexture(state);\r\n state.structuredBuffers.set(register, { kind: \"lightIndexPacked\", name: state.lightPackedTexture.name, strideDwords });\r\n break;\r\n }\r\n if (state.lightPackedTexture?.dataRegister === register)\r\n {\r\n this._ensureLightPackedTexture(state);\r\n state.structuredBuffers.set(register, {\r\n kind: \"lightDataPacked\",\r\n name: state.lightPackedTexture.name,\r\n strideDwords,\r\n dataTexelBase: state.lightPackedTexture.dataTexelBase\r\n });\r\n break;\r\n }\r\n if (state.lightConstantBuffer?.indexRegister === register)\r\n {\r\n this._ensureLightConstantBuffer(state);\r\n state.structuredBuffers.set(register, { kind: \"lightIndexCb\", name: state.lightConstantBuffer.name, strideDwords });\r\n break;\r\n }\r\n if (state.lightConstantBuffer?.dataRegister === register)\r\n {\r\n this._ensureLightConstantBuffer(state);\r\n state.structuredBuffers.set(register, { kind: \"lightDataCb\", name: state.lightConstantBuffer.name, strideDwords });\r\n break;\r\n }\r\n if (state.stubbedResources.has(register))\r\n {\r\n // Stubbed tiled-lighting structured buffer (LightBuffer /\r\n // LightIndexBuffer): drop the usampler2D declaration + binding;\r\n // ld_structured reads of it lower to uintBitsToFloat(0u), which\r\n // zeroes the per-tile light count and makes the light loop dead.\r\n state.structuredBuffers.set(register, { kind: \"stub\", name: `sb${register}`, strideDwords });\r\n break;\r\n }\r\n if (state.isPixel)\r\n {\r\n // Pixel-stage structured buffers (light lists) become RGBA32UI data\r\n // textures: exact bits, no SSBO, resolution-scalable tile tables.\r\n const name = `sb${register}`;\r\n state.structuredBuffers.set(register, { kind: \"texture\", name, strideDwords });\r\n state.declarationLines.push(`uniform highp usampler2D ${name};`);\r\n state.bindings.push({\r\n kind: \"structuredTexture\",\r\n registerIndex: register,\r\n name,\r\n strideBytes,\r\n format: \"RGBA32UI\",\r\n width: this.profile.dataTextureWidth\r\n });\r\n }\r\n else\r\n {\r\n // Vertex-stage structured buffers (BoneTransforms) become dedicated\r\n // std140 UBOs sized to the profile capacity (Carbon max 69 joints).\r\n const name = `CjsSb${register}`;\r\n const capacity = this.profile.vertexStructuredCapacity;\r\n const rows = capacity * Math.ceil(strideDwords / 4);\r\n state.structuredBuffers.set(register, { kind: \"ubo\", name, strideDwords });\r\n state.declarationLines.push(\r\n `layout(std140) uniform ${name}Block {`,\r\n ` vec4 data[${rows}];`,\r\n `} ${name};`\r\n );\r\n state.bindings.push({\r\n kind: \"structuredUbo\",\r\n registerIndex: register,\r\n name,\r\n strideBytes,\r\n capacityElements: capacity\r\n });\r\n }\r\n break;\r\n }\r\n case \"dcl_input\":\r\n if (state.isCompute)\r\n {\r\n this._declareComputeInput(state, instruction);\r\n }\r\n else\r\n {\r\n this._declareVertexInput(state, instruction);\r\n }\r\n break;\r\n case \"dcl_thread_group\":\r\n state.threadGroup = [ declaration.threadGroupX, declaration.threadGroupY, declaration.threadGroupZ ];\r\n break;\r\n case \"dcl_unordered_access_view_typed\": {\r\n const register = declaration.registerIndex;\r\n const returnTypes = declaration.returnType?.returnTypeNames || null;\r\n const plan = state.uavSlicePlan.get(register);\r\n state.uavReturnTypes.set(register, returnTypes);\r\n if (plan?.kind === \"multiSlice\")\r\n {\r\n // Statically distinct texture2darray slices each become their\r\n // own fragment output; the host attaches the matching array\r\n // layers as sequential color attachments (slice order) via\r\n // framebufferTextureLayer.\r\n const sliceNames = new Map();\r\n for (const slice of plan.slices)\r\n {\r\n const name = `cjsUav${register}_s${slice}`;\r\n const location = this._allocateUavOutputLocation(state, register);\r\n sliceNames.set(slice, name);\r\n state.declarationLines.push(`layout(location = ${location}) out highp vec4 ${name};`);\r\n state.bindings.push({\r\n kind: \"uavTexture\",\r\n registerIndex: register,\r\n name,\r\n slice,\r\n location,\r\n returnTypes\r\n });\r\n }\r\n state.uavSliceNames.set(register, sliceNames);\r\n break;\r\n }\r\n const name = `cjsUav${register}`;\r\n const location = this._allocateUavOutputLocation(state, register);\r\n state.uavNames.set(register, name);\r\n state.declarationLines.push(`layout(location = ${location}) out highp vec4 ${name};`);\r\n state.bindings.push({\r\n kind: \"uavTexture\",\r\n registerIndex: register,\r\n name,\r\n slice: null,\r\n location,\r\n returnTypes\r\n });\r\n break;\r\n }\r\n case \"dcl_input_ps\":\r\n case \"dcl_input_ps_siv\":\r\n case \"dcl_input_ps_sgv\":\r\n this._declarePixelInput(state, instruction);\r\n break;\r\n case \"dcl_input_sgv\":\r\n this._declareSystemInput(state, instruction);\r\n break;\r\n case \"dcl_output\":\r\n case \"dcl_output_siv\":\r\n this._declareOutput(state, instruction);\r\n break;\r\n case \"customdata\":\r\n this._declareImmediateConstantBuffer(state, instruction);\r\n break;\r\n default:\r\n throw new WebglReadError(\"Declaration is not supported by the WebGL2 emitter\", {\r\n source: state.sourceName,\r\n opcodeName: instruction.opcodeName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Finds the signature element assigned to a register.\r\n *\r\n * @param {object|null} signature Decoded DXBC signature.\r\n * @param {number} registerIndex Register index.\r\n * @returns {object|null} Matching signature element.\r\n * @private\r\n */\r\n _signatureElement(signature, registerIndex)\r\n {\r\n return signature?.elements.find((element) => element.registerIndex === registerIndex) || null;\r\n }\r\n\r\n /**\r\n * Declares one vertex input using its Carbon semantic identity.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded input declaration.\r\n * @private\r\n */\r\n _declareVertexInput(state, instruction)\r\n {\r\n const register = instruction.declaration.registerIndex;\r\n if (state.isPixel)\r\n {\r\n return this._declarePixelInput(state, instruction);\r\n }\r\n const element = this._signatureElement(state.isgn, register);\r\n if (!element)\r\n {\r\n throw new WebglReadError(\"Vertex input register has no ISGN row\", {\r\n source: state.sourceName,\r\n register\r\n });\r\n }\r\n if (state.inputNames.has(register))\r\n {\r\n return;\r\n }\r\n const name = `in_${element.semanticName}${element.semanticIndex}`;\r\n const width = this._maskWidth(element.mask);\r\n // Integer semantics are float-lowered: ccpwgl binds all attributes with\r\n // vertexAttribPointer, so uvec/ivec declarations would break linking.\r\n // Because they're uploaded as plain float VALUES (e.g. bone index 5.0,\r\n // not the bit pattern of int 5 - confirmed by the legacy skinned VS\r\n // which does `3.0 * attr.x`), an integer read of one must VALUE-convert\r\n // (`int(attr)`) rather than bitcast (`floatBitsToInt(attr)`, which would\r\n // yield garbage). Record integer-typed inputs so the formatter knows.\r\n if (element.componentTypeName === \"uint32\" || element.componentTypeName === \"int32\")\r\n {\r\n state.integerVertexInputs.set(register, element.componentTypeName === \"uint32\" ? \"uint\" : \"int\");\r\n }\r\n state.inputNames.set(register, name);\r\n state.inputMasks.set(register, this._maskChars(element.mask));\r\n state.declarationLines.push(`in highp ${this._vecType(width)} ${name};`);\r\n state.inputs.push({\r\n register,\r\n name,\r\n semanticName: element.semanticName,\r\n semanticIndex: element.semanticIndex,\r\n componentTypeName: element.componentTypeName,\r\n mask: element.mask\r\n });\r\n }\r\n\r\n /**\r\n * Declares one pixel-stage varying or system input.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded input declaration.\r\n * @private\r\n */\r\n _declarePixelInput(state, instruction)\r\n {\r\n const register = instruction.declaration.registerIndex;\r\n const declaration = instruction.declaration;\r\n\r\n if (instruction.opcodeName === \"dcl_input_ps_siv\" && declaration.systemValueName === \"position\")\r\n {\r\n state.inputNames.set(register, \"hlslcc_FragCoord\");\r\n state.earlyMainLines.push(\"vec4 hlslcc_FragCoord = vec4(gl_FragCoord.xyz, 1.0/gl_FragCoord.w);\");\r\n return;\r\n }\r\n if (instruction.opcodeName === \"dcl_input_ps_sgv\" || instruction.opcodeName === \"dcl_input_sgv\")\r\n {\r\n return this._declareSystemInput(state, instruction);\r\n }\r\n\r\n if (state.inputNames.has(register))\r\n {\r\n return;\r\n }\r\n const element = this._signatureElement(state.isgn, register);\r\n if (!element)\r\n {\r\n throw new WebglReadError(\"Pixel input register has no ISGN row\", {\r\n source: state.sourceName,\r\n register\r\n });\r\n }\r\n // Varyings are internal VS<->PS wires: named by register and always vec4,\r\n // so packed registers (two semantics sharing one register) and partial\r\n // reads can never produce cross-stage name/type mismatches.\r\n const name = `vs_r${register}`;\r\n const flat = element.componentType === 1 || element.componentType === 2\r\n || declaration.interpolationModeName === \"constant\";\r\n state.inputNames.set(register, name);\r\n state.declarationLines.push(`${flat ? \"flat \" : \"\"}in vec4 ${name};`);\r\n state.inputs.push({\r\n register,\r\n name,\r\n semanticName: element.semanticName,\r\n semanticIndex: element.semanticIndex,\r\n componentTypeName: element.componentTypeName,\r\n mask: element.mask\r\n });\r\n }\r\n\r\n /**\r\n * Maps a supported system-generated input to its GLSL expression.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded system-input declaration.\r\n * @private\r\n */\r\n _declareSystemInput(state, instruction)\r\n {\r\n const declaration = instruction.declaration;\r\n const register = declaration.registerIndex;\r\n switch (declaration.systemValueName)\r\n {\r\n case \"is_front_face\":\r\n state.inputNames.set(register, \"vec4(uintBitsToFloat(gl_FrontFacing ? 0xffffffffu : 0u))\");\r\n break;\r\n case \"vertex_id\":\r\n state.inputNames.set(register, \"vec4(intBitsToFloat(gl_VertexID))\");\r\n break;\r\n case \"instance_id\":\r\n state.inputNames.set(register, \"vec4(intBitsToFloat(gl_InstanceID))\");\r\n break;\r\n default:\r\n throw new WebglReadError(\"System-generated input is not supported by the WebGL2 emitter\", {\r\n source: state.sourceName,\r\n systemValueName: declaration.systemValueName\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Records which compute pseudo-input(s) a `dcl_input` declaration exposes.\r\n * The actual GLSL (uniform + derived locals) is emitted once, after every\r\n * declaration has been seen, by `_emitComputeInputPrelude` — `dcl_input`\r\n * for a thread-id kind can appear before or after `dcl_thread_group` in the\r\n * bytecode stream, and the flattened/group-id forms need the workgroup\r\n * size regardless of declaration order.\r\n *\r\n * @param {object} state Emit state.\r\n * @param {object} instruction `dcl_input` instruction with a thread-id-kind operand.\r\n */\r\n _declareComputeInput(state, instruction)\r\n {\r\n const kind = instruction.declaration.operandTypeName;\r\n switch (kind)\r\n {\r\n case \"input_thread_id\":\r\n state.computeInputsUsed.threadId = true;\r\n break;\r\n case \"input_thread_group_id\":\r\n state.computeInputsUsed.groupId = true;\r\n break;\r\n case \"input_thread_id_in_group\":\r\n state.computeInputsUsed.tig = true;\r\n break;\r\n case \"input_thread_id_in_group_flattened\":\r\n state.computeInputsUsed.flattened = true;\r\n break;\r\n default:\r\n throw new WebglReadError(\"Compute input is not supported by the WebGL2 emitter\", {\r\n source: state.sourceName,\r\n operandTypeName: kind\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Emits the shared `gl_FragCoord`-derived thread-id prelude for map-style\r\n * compute shaders: a `cjsDispatchOrigin` uniform (so a dispatch can be\r\n * tiled across more than one draw/viewport), then only the intermediate\r\n * and final locals this shader actually declared inputs for.\r\n *\r\n * @param {object} state Emit state.\r\n */\r\n _emitComputeInputPrelude(state)\r\n {\r\n const used = state.computeInputsUsed;\r\n if (!used.threadId && !used.groupId && !used.tig && !used.flattened)\r\n {\r\n return;\r\n }\r\n state.dispatchOriginUniform = \"cjsDispatchOrigin\";\r\n state.declarationLines.push(\"uniform ivec3 cjsDispatchOrigin;\");\r\n state.bindings.push({ kind: \"dispatchUniform\", name: \"cjsDispatchOrigin\" });\r\n state.earlyMainLines.push(\"ivec3 cjsThreadId = ivec3(ivec2(gl_FragCoord.xy), 0) + cjsDispatchOrigin;\");\r\n if (used.threadId)\r\n {\r\n state.earlyMainLines.push(\"vec4 vThreadID = intBitsToFloat(ivec4(cjsThreadId, 0));\");\r\n }\r\n if (used.groupId || used.tig || used.flattened)\r\n {\r\n const [ nx, ny, nz ] = this._threadGroupSizeOrThrow(state);\r\n state.earlyMainLines.push(`ivec3 cjsGroupId = cjsThreadId / ivec3(${nx}, ${ny}, ${nz});`);\r\n if (used.groupId)\r\n {\r\n state.earlyMainLines.push(\"vec4 vThreadGroupID = intBitsToFloat(ivec4(cjsGroupId, 0));\");\r\n }\r\n if (used.tig || used.flattened)\r\n {\r\n state.earlyMainLines.push(`ivec3 cjsTig = cjsThreadId - cjsGroupId * ivec3(${nx}, ${ny}, ${nz});`);\r\n if (used.tig)\r\n {\r\n state.earlyMainLines.push(\"vec4 vThreadIDInGroup = intBitsToFloat(ivec4(cjsTig, 0));\");\r\n }\r\n if (used.flattened)\r\n {\r\n state.earlyMainLines.push(\r\n `vec4 vThreadIDInGroupFlattened = intBitsToFloat(ivec4(cjsTig.z*${nx}*${ny} + cjsTig.y*${nx} + cjsTig.x, 0, 0, 0));`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Reads the workgroup size recorded by `dcl_thread_group`, required to\r\n * split the flat thread id back into group id / id-in-group components.\r\n *\r\n * @param {object} state Emit state.\r\n * @returns {[number,number,number]} Workgroup size.\r\n */\r\n _threadGroupSizeOrThrow(state)\r\n {\r\n if (!Array.isArray(state.threadGroup))\r\n {\r\n throw new WebglReadError(\"Compute shader reads a thread-group-relative input with no dcl_thread_group\", {\r\n source: state.sourceName\r\n });\r\n }\r\n return state.threadGroup;\r\n }\r\n\r\n /**\r\n * Declares one stage output and records its backend identity.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded output declaration.\r\n * @private\r\n */\r\n _declareOutput(state, instruction)\r\n {\r\n const declaration = instruction.declaration;\r\n const register = declaration.registerIndex;\r\n\r\n if (instruction.opcodeName === \"dcl_output_siv\")\r\n {\r\n if (declaration.systemValueName === \"position\")\r\n {\r\n state.outputNames.set(register, \"gl_Position\");\r\n state.outputs.push({ register, name: \"gl_Position\", semanticName: \"SV_Position\", semanticIndex: 0 });\r\n return;\r\n }\r\n throw new WebglReadError(\"Output system value is not supported by the WebGL2 emitter\", {\r\n source: state.sourceName,\r\n systemValueName: declaration.systemValueName\r\n });\r\n }\r\n\r\n if (state.outputNames.has(register))\r\n {\r\n return;\r\n }\r\n const element = this._signatureElement(state.osgn, register);\r\n if (!element)\r\n {\r\n throw new WebglReadError(\"Output register has no OSGN row\", {\r\n source: state.sourceName,\r\n register\r\n });\r\n }\r\n const width = this._maskWidth(element.mask);\r\n if (state.isPixel)\r\n {\r\n const name = `${element.semanticName}${element.semanticIndex}`;\r\n state.outputNames.set(register, name);\r\n state.outputMasks.set(register, this._maskChars(element.mask));\r\n state.declarationLines.push(`layout(location = ${element.semanticIndex}) out ${this._vecType(width)} ${name};`);\r\n state.outputs.push({\r\n register,\r\n name,\r\n width,\r\n semanticName: element.semanticName,\r\n semanticIndex: element.semanticIndex\r\n });\r\n }\r\n else\r\n {\r\n const name = `vs_r${register}`;\r\n state.outputNames.set(register, name);\r\n state.declarationLines.push(`out vec4 ${name};`);\r\n state.outputs.push({\r\n register,\r\n name,\r\n width: 4,\r\n semanticName: element.semanticName,\r\n semanticIndex: element.semanticIndex\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Materializes an immediate constant-buffer declaration.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded custom-data declaration.\r\n * @private\r\n */\r\n _declareImmediateConstantBuffer(state, instruction)\r\n {\r\n const rows = instruction.customData?.immediateConstantBuffer;\r\n if (!rows)\r\n {\r\n return;\r\n }\r\n const literals = rows.map((row) =>\r\n `vec4(${row.map((value) => `uintBitsToFloat(0x${(value.uint32 >>> 0).toString(16)}u)`).join(\", \")})`\r\n );\r\n state.declarationLines.push(\r\n `const vec4 ${state.icbName}[${rows.length}] = vec4[${rows.length}](`,\r\n ...literals.map((literal, index) => ` ${literal}${index < literals.length - 1 ? \",\" : \"\"}`),\r\n \");\"\r\n );\r\n }\r\n\r\n /**\r\n * Initializes paired vertex outputs that the source shader does not write.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @private\r\n */\r\n _zeroFillUnwrittenOutputs(state)\r\n {\r\n const written = new Set();\r\n for (const instruction of state.decoder.instructions)\r\n {\r\n if (instruction.isDeclaration) continue;\r\n for (const operand of instruction.operands)\r\n {\r\n if (operand.type === 2 && operand.registerIndex !== null)\r\n {\r\n written.add(operand.registerIndex);\r\n }\r\n }\r\n }\r\n for (const [ register, name ] of state.outputNames)\r\n {\r\n if (!written.has(register) && name !== \"gl_Position\")\r\n {\r\n const width = state.outputs.find((output) => output.register === register)?.width || 4;\r\n state.earlyMainLines.push(`${name} = ${this._vecType(width)}(0.0);`);\r\n state.warnings.push(`output ${name} is declared but never written; zero-filled`);\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Instructions\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Dispatches one decoded instruction to its GLSL lowering rule.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @private\r\n */\r\n _emitInstruction(state, instruction)\r\n {\r\n const lower = DxbcGlslEmitter.LOWERINGS[instruction.opcodeName];\r\n if (!lower)\r\n {\r\n throw new WebglReadError(\"No GLSL lowering for opcode\", {\r\n source: state.sourceName,\r\n opcodeName: instruction.opcodeName,\r\n offset: instruction.offset\r\n });\r\n }\r\n lower.call(this, state, instruction);\r\n }\r\n\r\n /**\r\n * Appends one correctly indented line to the emitted function body.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {string} text GLSL source line.\r\n * @private\r\n */\r\n _line(state, text)\r\n {\r\n state.bodyLines.push(`${\" \".repeat(state.indent)}${text}`);\r\n }\r\n\r\n /**\r\n * Counts the active components in a DXBC mask.\r\n *\r\n * @param {number} mask DXBC component bit mask.\r\n * @returns {number} Active component count.\r\n * @private\r\n */\r\n _maskWidth(mask)\r\n {\r\n let width = 0;\r\n for (let bit = 0; bit < 4; bit += 1)\r\n {\r\n if (mask & (1 << bit)) width += 1;\r\n }\r\n return width || 4;\r\n }\r\n\r\n /**\r\n * Converts a DXBC component bit mask to GLSL swizzle characters.\r\n *\r\n * @param {number} mask DXBC component bit mask.\r\n * @returns {string} GLSL component string.\r\n * @private\r\n */\r\n _maskChars(mask)\r\n {\r\n return COMPONENTS.filter((_, bit) => mask & (1 << bit)).join(\"\") || \"xyzw\";\r\n }\r\n\r\n /**\r\n * Builds the lvalue text for one register-space destination component,\r\n * remapped into the target variable's declared component space.\r\n */\r\n _destComponentRef(state, destOperand, target, component)\r\n {\r\n const remapped = state.formatter.remapComponents(destOperand, component);\r\n return `${target.ref}${remapped ? `.${remapped}` : \"\"}`;\r\n }\r\n\r\n /**\r\n * Formats a resolved destination reference and optional mask.\r\n *\r\n * @param {object} target Resolved destination.\r\n * @returns {string} GLSL lvalue text.\r\n * @private\r\n */\r\n _destText(target)\r\n {\r\n return `${target.ref}${target.mask ? `.${target.mask}` : \"\"}`;\r\n }\r\n\r\n /**\r\n * Selects the GLSL floating scalar or vector type for a width.\r\n *\r\n * @param {number} width Component width.\r\n * @returns {string} GLSL type name.\r\n * @private\r\n */\r\n _vecType(width)\r\n {\r\n return width === 1 ? \"float\" : `vec${width}`;\r\n }\r\n\r\n /**\r\n * Reads a source at the destination mask's width, wrapping in a matching\r\n * constructor so intrinsic arguments always type-check exactly.\r\n */\r\n _vecArg(state, operand, destMask, as = \"float\")\r\n {\r\n const expression = state.formatter.sourceExpression(operand, { destMask, as });\r\n if (destMask.length === 1)\r\n {\r\n return expression;\r\n }\r\n const ctor = { float: \"vec\", int: \"ivec\", uint: \"uvec\" }[as] + destMask.length;\r\n return `${ctor}(${expression})`;\r\n }\r\n\r\n /**\r\n * Resolves a destination operand and its register-space component mask.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {number} [operandIndex=0] Destination operand index.\r\n * @returns {{target: object|null, mask: string}} Destination and mask.\r\n * @private\r\n */\r\n _destMask(state, instruction, operandIndex = 0)\r\n {\r\n const target = state.formatter.destination(instruction.operands[operandIndex]);\r\n // `mask` stays in register space: source-swizzle pairing is positional\r\n // against the register components; `target.mask` carries the declared-space\r\n // display form used for lvalue text.\r\n return { target, mask: target?.registerMask || \"xyzw\" };\r\n }\r\n\r\n /**\r\n * Tests whether an operand produces one scalar component.\r\n *\r\n * @param {object} operand Decoded DXBC operand.\r\n * @returns {boolean} True when the source is scalar.\r\n * @private\r\n */\r\n _isScalarSource(operand)\r\n {\r\n return operand.selectionModeName === \"select1\"\r\n || (operand.type === 4 && operand.componentCount === 1)\r\n || operand.componentCount === 1;\r\n }\r\n\r\n /**\r\n * Emits an assignment and applies instruction saturation when required.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} valueExpression GLSL right-hand expression.\r\n * @param {object} [options={}] Assignment formatting options.\r\n * @private\r\n */\r\n _assign(state, instruction, valueExpression, options = {})\r\n {\r\n const statement = state.formatter.assignment(instruction.operands[0], valueExpression, options);\r\n if (statement)\r\n {\r\n this._line(state, statement);\r\n if (options.saturate === undefined && instruction.saturate)\r\n {\r\n const { target } = this._destMask(state, instruction);\r\n const text = this._destText(target);\r\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Emits a width-correct floating binary infix operation.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} operator GLSL infix operator.\r\n * @private\r\n */\r\n _infixBinary(state, instruction, operator)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\r\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask });\r\n const width = Math.max(\r\n state.formatter.expressionWidth(instruction.operands[1], mask),\r\n state.formatter.expressionWidth(instruction.operands[2], mask)\r\n );\r\n this._assignWidened(state, instruction, mask, `${a} ${operator} ${b}`, width === 1);\r\n }\r\n\r\n /**\r\n * Widens a scalar result when assigning it to a vector destination.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} mask Destination component mask.\r\n * @param {string} expression GLSL expression.\r\n * @param {boolean} rhsIsScalar Whether the expression is scalar.\r\n * @private\r\n */\r\n _assignWidened(state, instruction, mask, expression, rhsIsScalar)\r\n {\r\n const value = rhsIsScalar && mask.length > 1 ? `vec${mask.length}(${expression})` : expression;\r\n this._assign(state, instruction, value, { saturate: instruction.saturate });\r\n }\r\n\r\n /**\r\n * Emits a unary GLSL intrinsic with destination-width handling.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} glslName GLSL intrinsic name.\r\n * @private\r\n */\r\n _helperUnary(state, instruction, glslName)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\r\n this._assignWidened(state, instruction, mask, `${glslName}(${src})`,\r\n state.formatter.expressionWidth(instruction.operands[1], mask) === 1);\r\n }\r\n\r\n /**\r\n * Emits a binary GLSL intrinsic with width-matched arguments.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} glslName GLSL intrinsic name.\r\n * @private\r\n */\r\n _helperBinary(state, instruction, glslName)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = this._vecArg(state, instruction.operands[1], mask);\r\n const b = this._vecArg(state, instruction.operands[2], mask);\r\n this._assign(state, instruction, `${glslName}(${a}, ${b})`, { saturate: instruction.saturate });\r\n }\r\n\r\n /**\r\n * Emits a dot product and replicates its scalar result when necessary.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} sourceMask Source component mask.\r\n * @private\r\n */\r\n _dotProduct(state, instruction, sourceMask)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = this._vecArg(state, instruction.operands[1], sourceMask);\r\n const b = this._vecArg(state, instruction.operands[2], sourceMask);\r\n const dot = `dot(${a}, ${b})`;\r\n this._assign(state, instruction, mask.length > 1 ? `vec${mask.length}(${dot})` : dot, {\r\n saturate: instruction.saturate\r\n });\r\n }\r\n\r\n /**\r\n * Emits scalar or vector comparison bits in the float register model.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {object} options Comparison options.\r\n * @param {string} options.intrinsic GLSL vector comparison intrinsic.\r\n * @param {string} options.operator GLSL scalar comparison operator.\r\n * @param {\"float\"|\"int\"|\"uint\"} options.as Operand interpretation.\r\n * @private\r\n */\r\n _comparison(state, instruction, { intrinsic, operator, as })\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n if (mask.length === 1)\r\n {\r\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask, as });\r\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask, as });\r\n this._assign(state, instruction, `uintBitsToFloat((${a} ${operator} ${b}) ? 0xFFFFFFFFu : 0u)`);\r\n return;\r\n }\r\n const a = this._vecArg(state, instruction.operands[1], mask, as);\r\n const b = this._vecArg(state, instruction.operands[2], mask, as);\r\n this._assign(\r\n state,\r\n instruction,\r\n `uintBitsToFloat(uvec${mask.length}(${intrinsic}(${a}, ${b})) * 0xFFFFFFFFu)`\r\n );\r\n }\r\n\r\n /**\r\n * Emits an unsigned bitwise operation through register bitcasts.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} operator GLSL bitwise operator.\r\n * @private\r\n */\r\n _bitwiseBinary(state, instruction, operator)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = this._vecArg(state, instruction.operands[1], mask, \"uint\");\r\n const b = this._vecArg(state, instruction.operands[2], mask, \"uint\");\r\n this._assign(state, instruction, `uintBitsToFloat(${a} ${operator} ${b})`);\r\n }\r\n\r\n /**\r\n * Emits a signed or unsigned integer binary operation through bitcasts.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {string} operator GLSL integer operator.\r\n * @param {\"int\"|\"uint\"} [as=\"int\"] Integer interpretation.\r\n * @private\r\n */\r\n _intBinary(state, instruction, operator, as = \"int\")\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = this._vecArg(state, instruction.operands[1], mask, as);\r\n const b = this._vecArg(state, instruction.operands[2], mask, as);\r\n const wrap = as === \"uint\" ? \"uintBitsToFloat\" : \"intBitsToFloat\";\r\n this._assign(state, instruction, `${wrap}(${a} ${operator} ${b})`);\r\n }\r\n\r\n /**\r\n * Formats the DXBC zero or nonzero control-flow condition.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @returns {string} GLSL boolean expression.\r\n * @private\r\n */\r\n _condition(state, instruction)\r\n {\r\n const scalar = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\" });\r\n const test = instruction.testBoolean === \"nonzero\" ? \"!=\" : \"==\";\r\n return `floatBitsToUint(${scalar}) ${test} 0u`;\r\n }\r\n\r\n /**\r\n * Emits component-wise conditional moves without aliasing destinations.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @private\r\n */\r\n _movc(state, instruction)\r\n {\r\n const destOperand = instruction.operands[0];\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n const aliases = instruction.operands.slice(1).some((operand) =>\r\n operand.type === destOperand.type && operand.registerIndex === destOperand.registerIndex);\r\n\r\n if (aliases)\r\n {\r\n this._line(state, \"{\");\r\n state.indent += 1;\r\n this._line(state, `vec4 hlslcc_movcTemp = ${target.ref};`);\r\n }\r\n for (const component of mask)\r\n {\r\n const condition = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"int\" });\r\n const ifTrue = state.formatter.sourceExpression(instruction.operands[2], { destMask: component });\r\n const ifFalse = state.formatter.sourceExpression(instruction.operands[3], { destMask: component });\r\n const lvalue = aliases\r\n ? `hlslcc_movcTemp.${component}`\r\n : this._destComponentRef(state, destOperand, target, component);\r\n this._line(state, `${lvalue} = (${condition} != 0) ? ${ifTrue} : ${ifFalse};`);\r\n }\r\n if (aliases)\r\n {\r\n this._line(state, `${target.ref} = hlslcc_movcTemp;`);\r\n state.indent -= 1;\r\n this._line(state, \"}\");\r\n }\r\n if (instruction.saturate)\r\n {\r\n const text = this._destText(target);\r\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\r\n }\r\n }\r\n\r\n /**\r\n * Emits the paired sine and cosine destinations in alias-safe order.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @private\r\n */\r\n _sincos(state, instruction)\r\n {\r\n const [ sinDest, cosDest, angle ] = instruction.operands;\r\n const emitOne = (destOperand, fn) =>\r\n {\r\n if (destOperand.type === 13) return;\r\n const target = state.formatter.destination(destOperand);\r\n const mask = target.registerMask || \"xyzw\";\r\n const src = state.formatter.sourceExpression(angle, { destMask: mask });\r\n const call = state.formatter.expressionWidth(angle, mask) === 1 && mask.length > 1\r\n ? `vec${mask.length}(${fn}(${src}))`\r\n : `${fn}(${src})`;\r\n const text = this._destText(target);\r\n this._line(state, `${text} = ${call};`);\r\n if (instruction.saturate)\r\n {\r\n this._line(state, `${text} = clamp(${text}, 0.0, 1.0);`);\r\n }\r\n };\r\n const sinAliasesAngle = sinDest.type === angle.type && sinDest.registerIndex === angle.registerIndex;\r\n if (sinAliasesAngle)\r\n {\r\n emitOne(cosDest, \"cos\");\r\n emitOne(sinDest, \"sin\");\r\n }\r\n else\r\n {\r\n emitOne(sinDest, \"sin\");\r\n emitOne(cosDest, \"cos\");\r\n }\r\n }\r\n\r\n /**\r\n * Declares the merged detail-map array, once, on the first member seen.\r\n *\r\n * Each member keeps its own entry in `resourceNames` pointing at the shared\r\n * array, so every existing reference site resolves to it without knowing a\r\n * merge happened. The declared dimension deliberately stays 2D: the layer is\r\n * appended to the coordinate at each sample site rather than read out of the\r\n * shader's own operand, which has no third component to give.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {number} register Resource register being declared.\r\n * @param {object} declaration Decoded resource declaration.\r\n * @param {Set<number>|null} comparisonSamplers Comparison samplers, when any.\r\n * @private\r\n */\r\n _declareDetailArrayMap(state, register, declaration, comparisonSamplers)\r\n {\r\n // A comparison-sampled or non-2D detail map is not the family the\r\n // recogniser promised, so refuse rather than emit a wrong declaration.\r\n if (comparisonSamplers || declaration.resourceDimension !== 3)\r\n {\r\n throw new WebglReadError(\r\n \"Detail-map array merging requires plain 2D textures without comparison sampling\",\r\n {\r\n source: state.sourceName,\r\n register,\r\n dimensionName: declaration.resourceDimensionName\r\n }\r\n );\r\n }\r\n\r\n state.resourceDimensions.set(register, declaration.resourceDimension);\r\n state.resourceNames.set(register, DETAIL_MAP_ARRAY_SYMBOL);\r\n\r\n if (state.detailMapArrayDeclared) return;\r\n state.detailMapArrayDeclared = true;\r\n\r\n // One GL uniform now stands for every merged layer, so it can carry only\r\n // one sampler state. Union the layers' pairings: if they disagree the\r\n // merge itself was invalid, and the packaging layer is where that is\r\n // detectable, because only it holds the sampler values to compare.\r\n const merged = new Set();\r\n for (const layerRegister of state.detailMapArrayLayers.keys())\r\n {\r\n for (const sampler of state.pairedSamplers.get(layerRegister) ?? []) merged.add(sampler);\r\n }\r\n\r\n state.declarationLines.push(`uniform mediump sampler2DArray ${DETAIL_MAP_ARRAY_SYMBOL};`);\r\n state.bindings.push({\r\n kind: \"resource\",\r\n registerIndex: register,\r\n name: DETAIL_MAP_ARRAY_SYMBOL,\r\n samplerType: \"sampler2DArray\",\r\n dimensionName: \"texture2darray\",\r\n arrayLayerCount: state.detailMapArrayLayers.size,\r\n mergedFrom: [ ...state.detailMapArrayLayers.keys() ],\r\n ...(merged.size ? { pairedSamplerRegisters: [ ...merged ].sort((a, b) => a - b) } : {})\r\n });\r\n }\r\n\r\n /**\r\n * Returns the array layer a texture operand maps to, when it was merged.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} texOperand Texture resource operand.\r\n * @returns {number|null} Layer index, or null when the register was not merged.\r\n * @private\r\n */\r\n _detailMapArrayLayer(state, texOperand)\r\n {\r\n const layer = state.detailMapArrayLayers.get(texOperand.registerIndex);\r\n return layer === undefined ? null : layer;\r\n }\r\n\r\n /**\r\n * Refuses an operation that cannot be redirected at an array layer.\r\n *\r\n * Recognising the detail family proves the resources are mergeable; it does\r\n * not prove every *use* is. A texel fetch or a size query against a merged\r\n * register would silently mean something different once the register became\r\n * one layer of an array, so those fail the build instead.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {object} texOperand Texture resource operand.\r\n * @private\r\n */\r\n _rejectDetailArrayMapUse(state, instruction, texOperand)\r\n {\r\n if (!state.detailMapArrayLayers.has(texOperand.registerIndex)) return;\r\n\r\n throw new WebglReadError(\r\n `Detail map merged into an array is used by ${instruction.opcodeName}, `\r\n + \"which this emitter cannot redirect at an array layer\",\r\n {\r\n source: state.sourceName,\r\n register: texOperand.registerIndex,\r\n opcodeName: instruction.opcodeName\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Resolves and validates the declared dimension of a texture operand.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC instruction.\r\n * @param {object} texOperand Texture resource operand.\r\n * @returns {number} DXBC resource-dimension code.\r\n * @private\r\n */\r\n _resourceDimension(state, instruction, texOperand)\r\n {\r\n const dimension = state.resourceDimensions.get(texOperand.registerIndex);\r\n if (!dimension)\r\n {\r\n throw new WebglReadError(\"Texture instruction references an undeclared resource\", {\r\n source: state.sourceName,\r\n register: texOperand.registerIndex,\r\n opcodeName: instruction.opcodeName\r\n });\r\n }\r\n return dimension;\r\n }\r\n\r\n /**\r\n * Emits a regular, LOD, bias, gradient, or comparison texture sample.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC texture instruction.\r\n * @param {object} [options={}] Sampling-mode operand indexes.\r\n * @param {number|null} [options.lodOperandIndex=null] Explicit LOD operand.\r\n * @param {number|null} [options.biasOperandIndex=null] LOD bias operand.\r\n * @param {number[]|null} [options.gradOperandIndexes=null] Gradient operands.\r\n * @param {number|null} [options.comparisonRefOperandIndex=null] Comparison reference operand.\r\n * @param {boolean} [options.forceLodZero=false] Whether to force the LOD-zero adaptation.\r\n * @private\r\n */\r\n _textureSample(state, instruction, {\r\n lodOperandIndex = null,\r\n biasOperandIndex = null,\r\n gradOperandIndexes = null,\r\n comparisonRefOperandIndex = null,\r\n forceLodZero = false\r\n } = {})\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const coordOperand = instruction.operands[1];\r\n const texOperand = instruction.operands[2];\r\n if (state.lightPackedTexture?.profileRegister === texOperand.registerIndex)\r\n {\r\n const oneSwizzle = [ ...mask ]\r\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\r\n .join(\"\");\r\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\r\n return;\r\n }\r\n if (state.lightConstantBuffer?.profileRegister === texOperand.registerIndex)\r\n {\r\n // The constant-buffer local-light path carries the light rows but\r\n // not the texture profile array. Treat profile lookups as neutral\r\n // attenuation so profile-enabled lights degrade to unprofiled lights\r\n // instead of costing another sampler unit.\r\n const oneSwizzle = [ ...mask ]\r\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\r\n .join(\"\");\r\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\r\n return;\r\n }\r\n if (state.stubbedResources.has(texOperand.registerIndex))\r\n {\r\n // Stubbed tiled-lighting sampler (LightProfileArray): its declaration\r\n // was dropped, so lower the sample to a compile-time zero of the\r\n // destination width instead of referencing the missing sampler.\r\n const zeroSwizzle = [ ...mask ]\r\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\r\n .join(\"\");\r\n this._assign(state, instruction, `vec4(0.0).${zeroSwizzle}`, { saturate: instruction.saturate });\r\n return;\r\n }\r\n if (state.neutralResources.has(texOperand.registerIndex))\r\n {\r\n // Neutralised sampler (LightProfileArray): its declaration was\r\n // dropped, and the value it fed is a multiplier, so lower to one.\r\n // The shader's own no-profile path leaves attenuation untouched,\r\n // which is what multiplying by 1.0 reproduces exactly.\r\n const oneSwizzle = [ ...mask ]\r\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\r\n .join(\"\");\r\n this._assign(state, instruction, `vec4(1.0).${oneSwizzle}`, { saturate: instruction.saturate });\r\n return;\r\n }\r\n const dimension = this._resourceDimension(state, instruction, texOperand);\r\n const coordMask = COORD_MASK_BY_DIMENSION[dimension];\r\n const detailLayer = this._detailMapArrayLayer(state, texOperand);\r\n const baseCoord = this._vecArg(state, coordOperand, coordMask);\r\n // A merged detail map keeps its 2D coordinate and gains the layer as a\r\n // literal third component; the register it came from is the layer.\r\n const coord = detailLayer === null\r\n ? baseCoord\r\n : `vec3(${baseCoord}, ${detailLayer}.0)`;\r\n const texName = state.formatter.registerReference(texOperand);\r\n const returnSwizzle = [ ...mask ]\r\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\r\n .join(\"\");\r\n\r\n if (comparisonRefOperandIndex !== null)\r\n {\r\n const reference = state.formatter.sourceExpression(\r\n instruction.operands[comparisonRefOperandIndex],\r\n { destMask: \"x\" }\r\n );\r\n const comparisonCoord = `vec${coordMask.length + 1}(${coord}, ${reference})`;\r\n let comparisonCall;\r\n\r\n if (!forceLodZero)\r\n {\r\n comparisonCall = `texture(${texName}, ${comparisonCoord})`;\r\n }\r\n else if (dimension === 3)\r\n {\r\n comparisonCall = `textureLod(${texName}, ${comparisonCoord}, 0.0)`;\r\n }\r\n else if (dimension === 6)\r\n {\r\n comparisonCall = `textureGrad(${texName}, ${comparisonCoord}, vec3(0.0), vec3(0.0))`;\r\n }\r\n else if (dimension === 8)\r\n {\r\n comparisonCall = `textureGrad(${texName}, ${comparisonCoord}, vec2(0.0), vec2(0.0))`;\r\n }\r\n else\r\n {\r\n throw new WebglReadError(\"Comparison LOD-zero sampling is not supported for this resource dimension\", {\r\n source: state.sourceName,\r\n opcodeName: instruction.opcodeName,\r\n dimension\r\n });\r\n }\r\n\r\n const value = mask.length === 1\r\n ? comparisonCall\r\n : `vec${mask.length}(${comparisonCall})`;\r\n this._assign(state, instruction, value, { saturate: instruction.saturate });\r\n return;\r\n }\r\n\r\n let call;\r\n if (gradOperandIndexes !== null)\r\n {\r\n const gradMask = coordMask === \"xyzw\" ? \"xyz\" : coordMask;\r\n const gradX = this._vecArg(state, instruction.operands[gradOperandIndexes[0]], gradMask);\r\n const gradY = this._vecArg(state, instruction.operands[gradOperandIndexes[1]], gradMask);\r\n call = `textureGrad(${texName}, ${coord}, ${gradX}, ${gradY})`;\r\n }\r\n else if (lodOperandIndex !== null)\r\n {\r\n const lod = state.formatter.sourceExpression(instruction.operands[lodOperandIndex], { destMask: \"x\" });\r\n call = `textureLod(${texName}, ${coord}, ${lod})`;\r\n }\r\n else if (biasOperandIndex !== null)\r\n {\r\n const bias = state.formatter.sourceExpression(instruction.operands[biasOperandIndex], { destMask: \"x\" });\r\n call = `texture(${texName}, ${coord}, ${bias})`;\r\n }\r\n else\r\n {\r\n call = `texture(${texName}, ${coord})`;\r\n }\r\n call = this._applyEmulatedAddressing(state, instruction, call, coord, coordMask);\r\n this._assign(state, instruction, `${call}.${returnSwizzle}`, { saturate: instruction.saturate });\r\n }\r\n\r\n /**\r\n * Emits an integer-coordinate texel fetch for a declared resource.\r\n *\r\n * @param {object} state Mutable emission state.\r\n * @param {object} instruction Decoded DXBC load instruction.\r\n * @private\r\n */\r\n _texelFetch(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const coordOperand = instruction.operands[1];\r\n const texOperand = instruction.operands[2];\r\n this._rejectDetailArrayMapUse(state, instruction, texOperand);\r\n const dimension = this._resourceDimension(state, instruction, texOperand);\r\n const texName = state.formatter.registerReference(texOperand);\r\n const returnSwizzle = [ ...mask ]\r\n .map((component) => texOperand.swizzle ? texOperand.swizzle[\"xyzw\".indexOf(component)] : component)\r\n .join(\"\");\r\n\r\n let call;\r\n if (dimension === 1)\r\n {\r\n const index = state.formatter.sourceExpression(coordOperand, { destMask: \"x\", as: \"int\" });\r\n const widthMask = this.profile.dataTextureWidth - 1;\r\n const widthShift = Math.log2(this.profile.dataTextureWidth);\r\n call = `texelFetch(${texName}, ivec2((${index}) & ${widthMask}, (${index}) >> ${widthShift}), 0)`;\r\n }\r\n else\r\n {\r\n const coordMask = dimension === 5 || dimension === 8 ? \"xyz\" : \"xy\";\r\n const coord = this._vecArg(state, coordOperand, coordMask, \"int\");\r\n const mip = state.formatter.sourceExpression(coordOperand, { destMask: \"w\", as: \"int\" });\r\n call = `texelFetch(${texName}, ${coord}, ${mip})`;\r\n }\r\n this._assign(state, instruction, `${call}.${returnSwizzle}`, { saturate: instruction.saturate });\r\n }\r\n}\r\n\r\n/**\r\n * Per-opcode lowering table. Every rule cites its family spec in\r\n * `docs/dxbc-lowering/`; templates are HLSLcc-derived, see each doc.\r\n */\r\nDxbcGlslEmitter.LOWERINGS = {\r\n // --- float-alu ---\r\n mov(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\r\n this._assignWidened(state, instruction, mask, src,\r\n state.formatter.expressionWidth(instruction.operands[1], mask) === 1);\r\n },\r\n mad(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = state.formatter.sourceExpression(instruction.operands[1], { destMask: mask });\r\n const b = state.formatter.sourceExpression(instruction.operands[2], { destMask: mask });\r\n const c = state.formatter.sourceExpression(instruction.operands[3], { destMask: mask });\r\n const width = Math.max(...[ 1, 2, 3 ].map((index) =>\r\n state.formatter.expressionWidth(instruction.operands[index], mask)));\r\n this._assignWidened(state, instruction, mask, `${a} * ${b} + ${c}`, width === 1);\r\n },\r\n mul(state, instruction) { this._infixBinary(state, instruction, \"*\"); },\r\n add(state, instruction) { this._infixBinary(state, instruction, \"+\"); },\r\n div(state, instruction) { this._infixBinary(state, instruction, \"/\"); },\r\n dp2(state, instruction) { this._dotProduct(state, instruction, \"xy\"); },\r\n dp3(state, instruction) { this._dotProduct(state, instruction, \"xyz\"); },\r\n dp4(state, instruction) { this._dotProduct(state, instruction, \"xyzw\"); },\r\n max(state, instruction) { this._helperBinary(state, instruction, \"max\"); },\r\n min(state, instruction) { this._helperBinary(state, instruction, \"min\"); },\r\n sqrt(state, instruction) { this._helperUnary(state, instruction, \"sqrt\"); },\r\n rsq(state, instruction) { this._helperUnary(state, instruction, \"inversesqrt\"); },\r\n exp(state, instruction) { this._helperUnary(state, instruction, \"exp2\"); },\r\n log(state, instruction) { this._helperUnary(state, instruction, \"log2\"); },\r\n frc(state, instruction) { this._helperUnary(state, instruction, \"fract\"); },\r\n round_ne(state, instruction) { this._helperUnary(state, instruction, \"roundEven\"); },\r\n round_ni(state, instruction) { this._helperUnary(state, instruction, \"floor\"); },\r\n round_pi(state, instruction) { this._helperUnary(state, instruction, \"ceil\"); },\r\n round_z(state, instruction) { this._helperUnary(state, instruction, \"trunc\"); },\r\n rcp(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask);\r\n const one = mask.length > 1 ? `vec${mask.length}(1.0)` : \"1.0\";\r\n this._assign(state, instruction, `${one} / ${src}`, { saturate: instruction.saturate });\r\n },\r\n sincos(state, instruction) { this._sincos(state, instruction); },\r\n\r\n // --- cmp-controlflow ---\r\n lt(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"float\" }); },\r\n ge(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"float\" }); },\r\n eq(state, instruction) { this._comparison(state, instruction, { intrinsic: \"equal\", operator: \"==\", as: \"float\" }); },\r\n ne(state, instruction) { this._comparison(state, instruction, { intrinsic: \"notEqual\", operator: \"!=\", as: \"float\" }); },\r\n ilt(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"int\" }); },\r\n ige(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"int\" }); },\r\n ieq(state, instruction) { this._comparison(state, instruction, { intrinsic: \"equal\", operator: \"==\", as: \"int\" }); },\r\n ine(state, instruction) { this._comparison(state, instruction, { intrinsic: \"notEqual\", operator: \"!=\", as: \"int\" }); },\r\n ult(state, instruction) { this._comparison(state, instruction, { intrinsic: \"lessThan\", operator: \"<\", as: \"uint\" }); },\r\n uge(state, instruction) { this._comparison(state, instruction, { intrinsic: \"greaterThanEqual\", operator: \">=\", as: \"uint\" }); },\r\n and(state, instruction) { this._bitwiseBinary(state, instruction, \"&\"); },\r\n or(state, instruction) { this._bitwiseBinary(state, instruction, \"|\"); },\r\n xor(state, instruction) { this._bitwiseBinary(state, instruction, \"^\"); },\r\n not(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\r\n this._assign(state, instruction, `intBitsToFloat(~${src})`);\r\n },\r\n movc(state, instruction) { this._movc(state, instruction); },\r\n if(state, instruction)\r\n {\r\n this._line(state, `if (${this._condition(state, instruction)}) {`);\r\n state.indent += 1;\r\n },\r\n else(state)\r\n {\r\n state.indent -= 1;\r\n this._line(state, \"} else {\");\r\n state.indent += 1;\r\n },\r\n endif(state)\r\n {\r\n state.indent -= 1;\r\n this._line(state, \"}\");\r\n },\r\n loop(state)\r\n {\r\n this._line(state, \"while(true){\");\r\n state.indent += 1;\r\n },\r\n endloop(state)\r\n {\r\n state.indent -= 1;\r\n this._line(state, \"}\");\r\n },\r\n break(state) { this._line(state, \"break;\"); },\r\n breakc(state, instruction)\r\n {\r\n this._line(state, `if (${this._condition(state, instruction)}) {break;}`);\r\n },\r\n continue(state) { this._line(state, \"continue;\"); },\r\n continuec(state, instruction)\r\n {\r\n this._line(state, `if (${this._condition(state, instruction)}) {continue;}`);\r\n },\r\n switch(state, instruction)\r\n {\r\n const selector = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\", as: \"int\" });\r\n this._line(state, `switch(${selector}){`);\r\n state.indent += 2;\r\n },\r\n case(state, instruction)\r\n {\r\n const label = instruction.operands[0].immediateValues[0].uint32 | 0;\r\n state.indent -= 1;\r\n this._line(state, `case ${label}:`);\r\n state.indent += 1;\r\n },\r\n default(state)\r\n {\r\n state.indent -= 1;\r\n this._line(state, \"default:\");\r\n state.indent += 1;\r\n },\r\n endswitch(state)\r\n {\r\n state.indent -= 2;\r\n this._line(state, \"}\");\r\n },\r\n ret(state) { this._line(state, \"return;\"); },\r\n retc(state, instruction)\r\n {\r\n this._line(state, `if (${this._condition(state, instruction)}) {return;}`);\r\n },\r\n discard(state, instruction)\r\n {\r\n const scalar = state.formatter.sourceExpression(instruction.operands[0], { destMask: \"x\", as: \"int\" });\r\n const test = instruction.testBoolean === \"nonzero\" ? \"!=\" : \"==\";\r\n this._line(state, `if((${scalar})${test}0){discard;}`);\r\n },\r\n\r\n // --- integer-conv (corpus-common subset) ---\r\n iadd(state, instruction) { this._intBinary(state, instruction, \"+\"); },\r\n imad(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const a = this._vecArg(state, instruction.operands[1], mask, \"int\");\r\n const b = this._vecArg(state, instruction.operands[2], mask, \"int\");\r\n const c = this._vecArg(state, instruction.operands[3], mask, \"int\");\r\n this._assign(state, instruction, `intBitsToFloat(${a} * ${b} + ${c})`);\r\n },\r\n imul(state, instruction)\r\n {\r\n if (instruction.operands[0].type !== 13)\r\n {\r\n throw new WebglReadError(\"imul with a live high-half destination is unimplementable in GLSL ES 3.00\", {\r\n source: state.sourceName\r\n });\r\n }\r\n const destLow = instruction.operands[1];\r\n const mask = state.formatter.destination(destLow)?.registerMask || \"xyzw\";\r\n const a = this._vecArg(state, instruction.operands[2], mask, \"int\");\r\n const b = this._vecArg(state, instruction.operands[3], mask, \"int\");\r\n const statement = state.formatter.assignment(destLow, `intBitsToFloat(${a} * ${b})`);\r\n if (statement) this._line(state, statement);\r\n },\r\n ineg(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\r\n this._assign(state, instruction, `intBitsToFloat(-${src})`);\r\n },\r\n imax(state, instruction) { this._intMinMax(state, instruction, \"max\", \"int\"); },\r\n imin(state, instruction) { this._intMinMax(state, instruction, \"min\", \"int\"); },\r\n umax(state, instruction) { this._intMinMax(state, instruction, \"max\", \"uint\"); },\r\n umin(state, instruction) { this._intMinMax(state, instruction, \"min\", \"uint\"); },\r\n ishl(state, instruction) { this._intBinary(state, instruction, \"<<\"); },\r\n ishr(state, instruction) { this._intBinary(state, instruction, \">>\"); },\r\n ushr(state, instruction) { this._intBinary(state, instruction, \">>\", \"uint\"); },\r\n ftoi(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask);\r\n const type = mask.length > 1 ? `ivec${mask.length}` : \"int\";\r\n this._assign(state, instruction, `intBitsToFloat(${type}(${src}))`);\r\n },\r\n ftou(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask);\r\n const type = mask.length > 1 ? `uvec${mask.length}` : \"uint\";\r\n this._assign(state, instruction, `uintBitsToFloat(${type}(${src}))`);\r\n },\r\n itof(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask, \"int\");\r\n const type = mask.length > 1 ? `vec${mask.length}` : \"float\";\r\n this._assign(state, instruction, `${type}(${src})`, { saturate: instruction.saturate });\r\n },\r\n utof(state, instruction)\r\n {\r\n const { mask } = this._destMask(state, instruction);\r\n const src = this._vecArg(state, instruction.operands[1], mask, \"uint\");\r\n const type = mask.length > 1 ? `vec${mask.length}` : \"float\";\r\n this._assign(state, instruction, `${type}(${src})`, { saturate: instruction.saturate });\r\n },\r\n\r\n // --- texture-sample ---\r\n sample(state, instruction) { this._textureSample(state, instruction); },\r\n sample_c(state, instruction) { this._textureSample(state, instruction, { comparisonRefOperandIndex: 4 }); },\r\n sample_c_lz(state, instruction) { this._textureSample(state, instruction, { comparisonRefOperandIndex: 4, forceLodZero: true }); },\r\n sample_l(state, instruction) { this._textureSample(state, instruction, { lodOperandIndex: 4 }); },\r\n sample_b(state, instruction) { this._textureSample(state, instruction, { biasOperandIndex: 4 }); },\r\n sample_d(state, instruction) { this._textureSample(state, instruction, { gradOperandIndexes: [ 4, 5 ] }); },\r\n udiv(state, instruction)\r\n {\r\n // Quotient into operand 0, remainder into operand 1; either may be null.\r\n // Raw `/` and `%` match HLSLcc; divide-by-zero is GLSL-undefined (spec risk noted).\r\n const [ quotient, remainder, a, b ] = instruction.operands;\r\n for (const [ destOperand, operator ] of [ [ quotient, \"/\" ], [ remainder, \"%\" ] ])\r\n {\r\n if (destOperand.type === 13) continue;\r\n const mask = state.formatter.destination(destOperand)?.registerMask || \"xyzw\";\r\n const left = this._vecArg(state, a, mask, \"uint\");\r\n const right = this._vecArg(state, b, mask, \"uint\");\r\n const statement = state.formatter.assignment(destOperand, `uintBitsToFloat(${left} ${operator} ${right})`);\r\n if (statement) this._line(state, statement);\r\n }\r\n },\r\n ld(state, instruction) { this._texelFetch(state, instruction); },\r\n deriv_rtx(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\r\n deriv_rtx_coarse(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\r\n deriv_rtx_fine(state, instruction) { this._helperUnary(state, instruction, \"dFdx\"); },\r\n deriv_rty(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\r\n deriv_rty_coarse(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\r\n deriv_rty_fine(state, instruction) { this._helperUnary(state, instruction, \"dFdy\"); },\r\n resinfo(state, instruction) { this._resinfo(state, instruction); },\r\n\r\n // --- memory-structured ---\r\n ld_structured(state, instruction) { this._ldStructured(state, instruction); },\r\n\r\n // --- integer-conv: half-float packing (skinned vertex data unpacking) ---\r\n f16tof32(state, instruction)\r\n {\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n for (const component of mask)\r\n {\r\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component });\r\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\r\n this._line(state, `${lvalue} = unpackHalf2x16(floatBitsToUint(${src}) & 0xffffu).x;`);\r\n }\r\n },\r\n f32tof16(state, instruction)\r\n {\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n for (const component of mask)\r\n {\r\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component });\r\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\r\n this._line(state, `${lvalue} = uintBitsToFloat(packHalf2x16(vec2(${src}, 0.0)) & 0xffffu);`);\r\n }\r\n },\r\n nop() {},\r\n\r\n // --- bitfield (GLSL ES 3.00 has no bitfieldExtract/Insert/bitCount; ES 3.10+ only) ---\r\n ibfe(state, instruction)\r\n {\r\n const helper = this.helpers.require(\"hlslcc_ibfe\");\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n for (const component of mask)\r\n {\r\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"int\" });\r\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"int\" });\r\n const src = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"int\" });\r\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\r\n this._line(state, `${lvalue} = intBitsToFloat(${helper}(${width}, ${offset}, ${src}));`);\r\n }\r\n },\r\n ubfe(state, instruction)\r\n {\r\n const helper = this.helpers.require(\"hlslcc_ubfe\");\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n for (const component of mask)\r\n {\r\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\r\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"uint\" });\r\n const src = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"uint\" });\r\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\r\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${width}, ${offset}, ${src}));`);\r\n }\r\n },\r\n bfi(state, instruction)\r\n {\r\n const helper = this.helpers.require(\"hlslcc_bfi\");\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n for (const component of mask)\r\n {\r\n const width = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\r\n const offset = state.formatter.sourceExpression(instruction.operands[2], { destMask: component, as: \"uint\" });\r\n const insert = state.formatter.sourceExpression(instruction.operands[3], { destMask: component, as: \"uint\" });\r\n const base = state.formatter.sourceExpression(instruction.operands[4], { destMask: component, as: \"uint\" });\r\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\r\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${width}, ${offset}, ${insert}, ${base}));`);\r\n }\r\n },\r\n countbits(state, instruction)\r\n {\r\n const helper = this.helpers.require(\"hlslcc_countbits\");\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n for (const component of mask)\r\n {\r\n const src = state.formatter.sourceExpression(instruction.operands[1], { destMask: component, as: \"uint\" });\r\n const lvalue = this._destComponentRef(state, instruction.operands[0], target, component);\r\n this._line(state, `${lvalue} = uintBitsToFloat(${helper}(${src}));`);\r\n }\r\n },\r\n\r\n // --- texture-sample: gather4 (GLSL ES 3.00 has no textureGather; emulated via 4 texelFetch taps) ---\r\n gather4(state, instruction) { this._gather4(state, instruction); },\r\n\r\n // --- compute map-style: UAV write ---\r\n store_uav_typed(state, instruction)\r\n {\r\n // Map-style contract: the address operand's xy are assumed to equal the\r\n // current fragment's coordinate (the packaging pipeline only routes\r\n // map-style compute shaders through this lowering, where every UAV\r\n // write targets the invoking thread's own output texel) — they are\r\n // deliberately unread here. The z (array-slice) coordinate was resolved\r\n // by the `_analyzeUavStores` pre-pass: a multi-slice UAV routes each\r\n // store to its own per-slice fragment output, a single-store UAV drops\r\n // the slice entirely (the host attaches the target layer).\r\n const [ uavOperand, , valueOperand ] = instruction.operands;\r\n const target = state.formatter.destination(uavOperand);\r\n if (!target) return;\r\n const mask = target.registerMask || \"xyzw\";\r\n const value = this._vecArg(state, valueOperand, mask);\r\n // RGBA float render targets are assumed for every map-style UAV output;\r\n // uint/sint DXBC UAV formats still pass their bit patterns through as\r\n // float here (consistent with this emitter's float-vec4 register model),\r\n // so flag it as a warning rather than a hard failure.\r\n const returnTypes = state.uavReturnTypes.get(uavOperand.registerIndex);\r\n if (returnTypes && returnTypes.some((name) => name === \"uint\" || name === \"sint\"))\r\n {\r\n state.warnings.push(\r\n `store_uav_typed at offset ${instruction.offset} targets a non-float UAV (${returnTypes.join(\",\")}); output is treated as an RGBA float render target`\r\n );\r\n }\r\n const plan = state.uavSlicePlan.get(uavOperand.registerIndex);\r\n if (plan?.kind === \"multiSlice\")\r\n {\r\n const slice = plan.sliceByOffset.get(instruction.offset);\r\n const sliceName = state.uavSliceNames.get(uavOperand.registerIndex).get(slice);\r\n this._line(state, `${sliceName}${target.mask ? `.${target.mask}` : \"\"} = ${value};`);\r\n return;\r\n }\r\n this._line(state, `${this._destText(target)} = ${value};`);\r\n }\r\n};\r\n\r\n/**\r\n * `ld_structured` lowering. Vertex UBO path reads `name.data[row]` vec4 rows;\r\n * pixel data-texture path reads RGBA32UI texels (4 dwords per texel, fixed\r\n * 2048-texel row width). 16-byte-aligned reads use one static channel per\r\n * component; unaligned reads fall back to per-dword dynamic addressing.\r\n */\r\nDxbcGlslEmitter.prototype._ldStructured = function _ldStructured(state, instruction)\r\n{\r\n const target = state.formatter.destination(instruction.operands[0]);\r\n if (!target) return;\r\n const mask = target.registerMask || \"xyzw\";\r\n const resourceOperand = instruction.operands[3];\r\n const info = state.structuredBuffers.get(resourceOperand.registerIndex);\r\n if (!info)\r\n {\r\n throw new WebglReadError(\"ld_structured references an undeclared structured buffer\", {\r\n source: state.sourceName,\r\n register: resourceOperand.registerIndex\r\n });\r\n }\r\n if (info.kind === \"stub\")\r\n {\r\n // Stubbed tiled-lighting buffer: every component reads a compile-time\r\n // zero. floatBitsToUint of this is 0u, so the per-tile light count is 0\r\n // and the surrounding light loop is dead (no live sb#/s# references).\r\n for (const component of mask)\r\n {\r\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = uintBitsToFloat(0u);`);\r\n }\r\n return;\r\n }\r\n const offsetOperand = instruction.operands[2];\r\n if (offsetOperand.type !== 4)\r\n {\r\n throw new WebglReadError(\"ld_structured with a non-immediate byte offset is not supported\", {\r\n source: state.sourceName,\r\n offset: instruction.offset\r\n });\r\n }\r\n const offsetDwords = offsetOperand.immediateValues[0].uint32 >> 2;\r\n const element = state.formatter.sourceExpression(instruction.operands[1], { destMask: \"x\", as: \"int\" });\r\n const swizzle = resourceOperand.swizzle || \"xyzw\";\r\n const widthMask = this.profile.dataTextureWidth - 1;\r\n const widthShift = Math.log2(this.profile.dataTextureWidth);\r\n const aligned = info.strideDwords % 4 === 0 && offsetDwords % 4 === 0;\r\n\r\n for (const component of mask)\r\n {\r\n const channel = swizzle[\"xyzw\".indexOf(component)];\r\n const channelIndex = \"xyzw\".indexOf(channel);\r\n let value;\r\n if (info.kind === \"lightIndexPacked\")\r\n {\r\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\r\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2(((${dword}) >> 2) & ${widthMask}, (${dword}) >> ${widthShift + 2}), 0)[(${dword}) & 3])`;\r\n }\r\n else if (info.kind === \"lightDataPacked\")\r\n {\r\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\r\n const texel = `(${info.dataTexelBase} + ((${dword}) >> 2))`;\r\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2((${texel}) & ${widthMask}, (${texel}) >> ${widthShift}), 0)[(${dword}) & 3])`;\r\n }\r\n else if (info.kind === \"lightIndexCb\")\r\n {\r\n value = `uintBitsToFloat(cjsLocalLightIndexLoad(${element}))`;\r\n }\r\n else if (info.kind === \"lightDataCb\")\r\n {\r\n if (!aligned)\r\n {\r\n throw new WebglReadError(\"local-light constant-buffer lowering requires aligned light rows\", {\r\n source: state.sourceName,\r\n offset: instruction.offset\r\n });\r\n }\r\n value = `cjsLocalLightRow(${element}, ${offsetDwords / 4}).${channel}`;\r\n }\r\n else if (info.kind === \"ubo\")\r\n {\r\n if (aligned)\r\n {\r\n const row = `(${element}) * ${info.strideDwords / 4}${offsetDwords ? ` + ${offsetDwords / 4}` : \"\"}`;\r\n value = `${info.name}.data[${row}].${channel}`;\r\n }\r\n else\r\n {\r\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\r\n value = `${info.name}.data[(${dword}) >> 2][(${dword}) & 3]`;\r\n }\r\n }\r\n else if (aligned)\r\n {\r\n const texel = `(${element}) * ${info.strideDwords / 4}${offsetDwords ? ` + ${offsetDwords / 4}` : \"\"}`;\r\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2((${texel}) & ${widthMask}, (${texel}) >> ${widthShift}), 0).${channel})`;\r\n }\r\n else\r\n {\r\n const dword = `(${element}) * ${info.strideDwords} + ${offsetDwords + channelIndex}`;\r\n value = `uintBitsToFloat(texelFetch(${info.name}, ivec2(((${dword}) >> 2) & ${widthMask}, (${dword}) >> ${widthShift + 2}), 0)[(${dword}) & 3])`;\r\n }\r\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = ${value};`);\r\n }\r\n};\r\n\r\n/**\r\n * `resinfo` lowering: width/height/depth via textureSize per live destination\r\n * component; the 4th (mip-count) channel has no WebGL2 equivalent and throws\r\n * only when a shader actually reads it.\r\n */\r\nDxbcGlslEmitter.prototype._resinfo = function _resinfo(state, instruction)\r\n{\r\n const { target, mask } = this._destMask(state, instruction);\r\n if (!target) return;\r\n const mipExpression = state.formatter.sourceExpression(instruction.operands[1], { destMask: \"x\", as: \"int\" });\r\n const texOperand = instruction.operands[2];\r\n this._rejectDetailArrayMapUse(state, instruction, texOperand);\r\n const dimension = this._resourceDimension(state, instruction, texOperand);\r\n const axisCount = dimension === 5 || dimension === 8 ? 3 : 2;\r\n const returnType = instruction.resinfoReturnTypeName || \"float\";\r\n const sizeExpression = `textureSize(${state.formatter.registerReference(texOperand)}, ${mipExpression})`;\r\n\r\n for (const component of mask)\r\n {\r\n const destElem = \"xyzw\".indexOf(component);\r\n const channelChar = texOperand.swizzle ? texOperand.swizzle[destElem] : component;\r\n const channel = \"xyzw\".indexOf(channelChar);\r\n let value;\r\n if (channel >= 3)\r\n {\r\n throw new WebglReadError(\"resinfo mip-count component has no WebGL2 lowering\", {\r\n source: state.sourceName,\r\n offset: instruction.offset\r\n });\r\n }\r\n else if (channel >= axisCount)\r\n {\r\n value = returnType === \"uint\" ? \"uintBitsToFloat(0u)\" : \"0.0\";\r\n }\r\n else\r\n {\r\n const axis = COMPONENTS[channel];\r\n if (returnType === \"uint\")\r\n {\r\n value = `uintBitsToFloat(uint(${sizeExpression}.${axis}))`;\r\n }\r\n else if (returnType === \"rcpfloat\")\r\n {\r\n value = `1.0 / float(${sizeExpression}.${axis})`;\r\n }\r\n else\r\n {\r\n value = `float(${sizeExpression}.${axis})`;\r\n }\r\n }\r\n this._line(state, `${this._destComponentRef(state, instruction.operands[0], target, component)} = ${value};`);\r\n }\r\n};\r\n\r\n/**\r\n * Shared int/uint min-max lowering used by imax/imin/umax/umin.\r\n */\r\nDxbcGlslEmitter.prototype._intMinMax = function _intMinMax(state, instruction, fn, as)\r\n{\r\n const { mask } = this._destMask(state, instruction);\r\n const a = this._vecArg(state, instruction.operands[1], mask, as);\r\n const b = this._vecArg(state, instruction.operands[2], mask, as);\r\n const wrap = as === \"uint\" ? \"uintBitsToFloat\" : \"intBitsToFloat\";\r\n this._assign(state, instruction, `${wrap}(${fn}(${a}, ${b}))`);\r\n};\r\n\r\n/**\r\n * `gather4` lowering: fetches one channel from each of the four texels a\r\n * bilinear sample would blend, via the `hlslcc_textureGather4Emulated` /\r\n * `hlslcc_textureGather4ArrayEmulated` helpers (GLSL ES 3.00 has no\r\n * `textureGather`). Only 2D and 2D-array resources are supported — the\r\n * dimensions the AO/blur/FSR/CAS map-style corpus this lowering targets is\r\n * known to use (ASSAO gathers from its deinterleaved texture2darray slices).\r\n *\r\n * @param {object} state Emit state.\r\n * @param {object} instruction `gather4` instruction.\r\n */\r\nDxbcGlslEmitter.prototype._gather4 = function _gather4(state, instruction)\r\n{\r\n const { mask } = this._destMask(state, instruction);\r\n const coordOperand = instruction.operands[1];\r\n const texOperand = instruction.operands[2];\r\n const samplerOperand = instruction.operands[3];\r\n const dimension = this._resourceDimension(state, instruction, texOperand);\r\n if (dimension !== 3 && dimension !== 8)\r\n {\r\n throw new WebglReadError(\"gather4 against this resource dimension is not supported by the WebGL2 emitter\", {\r\n source: state.sourceName,\r\n dimensionName: texOperand.typeName,\r\n offset: instruction.offset\r\n });\r\n }\r\n // A merged detail map is declared 2D but sampled through an array, so the\r\n // array helper and the layered coordinate are selected by the merge rather\r\n // than by the declared dimension.\r\n const detailLayer = this._detailMapArrayLayer(state, texOperand);\r\n const asArray = dimension === 8 || detailLayer !== null;\r\n const helper = this.helpers.require(\r\n asArray ? \"hlslcc_textureGather4ArrayEmulated\" : \"hlslcc_textureGather4Emulated\"\r\n );\r\n const baseCoord = this._vecArg(state, coordOperand, dimension === 8 ? \"xyz\" : \"xy\");\r\n const coord = detailLayer === null ? baseCoord : `vec3(${baseCoord}, ${detailLayer}.0)`;\r\n const texName = state.formatter.registerReference(texOperand);\r\n const channelLetter = this._gather4Channel(samplerOperand);\r\n const channelIndex = \"xyzw\".indexOf(channelLetter);\r\n const call = `${helper}(${texName}, ${coord}, ${channelIndex})`;\r\n this._assign(state, instruction, mask === \"xyzw\" ? call : `${call}.${mask}`, { saturate: instruction.saturate });\r\n};\r\n\r\n/**\r\n * Reads the gathered-channel selector `gather4`/`gather4_po` carry on their\r\n * sampler operand (a 1-component swizzle; red/`x` is the default when no\r\n * selection is encoded).\r\n *\r\n * @param {object} operand Decoded sampler operand.\r\n * @returns {string} Channel letter (`x`/`y`/`z`/`w`).\r\n */\r\nDxbcGlslEmitter.prototype._gather4Channel = function _gather4Channel(operand)\r\n{\r\n if (operand.selectionModeName === \"select1\" && operand.selected)\r\n {\r\n return operand.selected;\r\n }\r\n if (operand.selectionModeName === \"swizzle\" && operand.swizzle)\r\n {\r\n return operand.swizzle[0];\r\n }\r\n return \"x\";\r\n};\r\n\r\n/**\r\n * Assembles the final GLSL text.\r\n */\r\nDxbcGlslEmitter.prototype._assemble = function _assemble(state)\r\n{\r\n const lines = [ \"#version 300 es\" ];\r\n if (state.isPixel || state.isCompute)\r\n {\r\n lines.push(\"precision highp float;\", \"precision highp int;\");\r\n }\r\n lines.push(\"\", ...state.declarationLines);\r\n const helperSource = this.helpers.emit();\r\n if (helperSource)\r\n {\r\n lines.push(\"\", helperSource);\r\n }\r\n // Vertex stages get the standard DX->GL depth-range fixup: EVE's\r\n // projection matrices are D3D-style (z_clip in [0, w]), so the raw\r\n // DXBC position would land in GL NDC [0, 1] instead of [-1, 1] —\r\n // halving depth precision and breaking every pixel-stage read of\r\n // SV_Position.z (gl_FragCoord.z) and depth-encoding technique against\r\n // the DX-convention values the shaders were compiled for. Remapping\r\n // z after the translated body runs makes depth output, clipping and\r\n // gl_FragCoord.z all match D3D semantics exactly. The body is wrapped\r\n // in a helper so early `ret` (return) statements cannot skip the\r\n // fixup.\r\n const writesPosition = [ ...state.outputNames.values() ].includes(\"gl_Position\");\r\n if (!state.isPixel && !state.isCompute && writesPosition)\r\n {\r\n lines.push(\"\", \"void dxbc_main() {\");\r\n for (const early of state.earlyMainLines)\r\n {\r\n lines.push(` ${early}`);\r\n }\r\n lines.push(...state.bodyLines, \"}\");\r\n lines.push(\r\n \"\",\r\n \"void main() {\",\r\n \" dxbc_main();\",\r\n \" gl_Position.z = 2.0 * gl_Position.z - gl_Position.w;\",\r\n \"}\"\r\n );\r\n return `${lines.join(\"\\n\")}\\n`;\r\n }\r\n\r\n lines.push(\"\", \"void main() {\");\r\n for (const early of state.earlyMainLines)\r\n {\r\n lines.push(` ${early}`);\r\n }\r\n lines.push(...state.bodyLines, \"}\");\r\n return `${lines.join(\"\\n\")}\\n`;\r\n};\r\n"],"names":["COMPONENTS","MAX_MAP_STYLE_UAV_OUTPUTS","CUBE_DIMENSION","SAMPLER_TYPE_BY_DIMENSION","SHADOW_SAMPLER_TYPE_BY_DIMENSION","COMPARISON_SAMPLE_OPCODES","Set","NON_COMPARISON_TEXTURE_OPCODES","DETAIL_MAP_ARRAY_SYMBOL","COORD_MASK_BY_DIMENSION","DxbcGlslEmitter","constructor","options","helpers","DxbcGlslHelperRegistry","_defineHelpers","profile","constantBufferStyle","pixelConstantBufferRemap","samplerName","register","stageName","vertexStructuredCapacity","dataTextureWidth","stubResourceRegisters","neutralResourceRegisters","lightConstantBuffer","lightPackedTexture","detailMapArrayRegisters","define","source","join","Emit","bytes","sourceName","raw","CjsDxbcFormat","read","emit","OUTPUT_RAW","program","WebglReadError","programTypeName","state","isPixel","isCompute","decoder","isgn","inputSignature","osgn","outputSignature","inputNames","Map","outputNames","resourceDimensions","resourceNames","analysed","_analyzeComparisonResources","comparisonResources","comparison","pairedSamplers","paired","constantBufferNames","structuredBuffers","_normalizeLightConstantBufferProfile","lightConstantBufferDeclared","_normalizeLightPackedTextureProfile","emulatedAddressing","_normalizeEmulatedAddressingProfile","addressBufferDeclared","lightPackedTextureDeclared","stubbedResources","neutralResources","detailMapArrayLayers","map","layer","detailMapArrayDeclared","inputMasks","outputMasks","bindings","declarationLines","earlyMainLines","bodyLines","indent","warnings","inputs","outputs","icbName","threadGroup","uavNames","uavReturnTypes","uavDimensions","uavSlicePlan","uavSliceNames","uavOutputCount","dispatchOriginUniform","computeInputsUsed","threadId","groupId","tig","flattened","reset","_assertMapStyleCompute","_analyzeUavStores","integerVertexInputs","formatter","DxbcGlslOperandFormatter","integerInputs","componentMap","operand","type","get","registerIndex","names","input","index","output","constantBuffer","slot","constantBufferMember","resource","uav","immediateConstantBuffer","instruction","instructions","isDeclaration","_emitDeclaration","_emitComputeInputPrelude","Array","isArray","pairVaryings","has","name","set","push","width","semanticName","semanticIndex","_zeroFillUnwrittenOutputs","_emitInstruction","result","_assemble","computeFragment","uavOutputs","filter","binding","kind","slice","location","glslName","indexRegister","Number","dataRegister","isInteger","profileRegister","capacity","listBase","ordinaryResources","recordPair","samplerRegister","samplers","add","resourceOperand","operands","opcodeName","keys","value","textures","samplerModes","bufferRegister","colorOf","undefined","length","color","parsed","some","c","isFinite","key","modes","Object","entries","axes","u","v","w","m","entry","borderColor","size","defaultColor","_applyEmulatedAddressing","call","coord","coordMask","resourceRegister","dimension","buffer","_ensureAddressBuffer","swizzle","glslFloat","n","String","coordHelper","require","borderHelper","addressedCoord","rewritten","split","values","includes","highest","Math","max","rows","sizeInVec4","style","dataTexelBase","_ensureLightPackedTexture","strideBytes","format","cjsSemantic","lightIndexRegister","lightDataRegister","lightProfileRegister","_ensureLightConstantBuffer","capacityLights","blocked","startsWith","offset","declaration","resourceDimension","constantTemps","storesByUav","controlFlowDepth","uavOperand","addressOperand","stores","_resolveSliceConstant","_trackTempConstants","throwNotMapStyle","shape","storeCount","slices","store","sort","a","b","sliceByOffset","isConstantMov","saturate","modifierName","selectionModeName","component","mask","componentCount","immediateValues","indexOf","uint32","delete","_allocateUavOutputLocation","uavCount","tempCount","registerCount","mapped","returnTypes","returnType","returnTypeNames","comparisonSamplers","samplerType","dimensionName","resourceDimensionName","_declareDetailArrayMap","pairedSamplerRegisters","samplerRegisterIndices","structureStride","strideDwords","ceil","capacityElements","_declareComputeInput","_declareVertexInput","threadGroupX","threadGroupY","threadGroupZ","plan","sliceNames","_declarePixelInput","_declareSystemInput","_declareOutput","_declareImmediateConstantBuffer","_signatureElement","signature","elements","find","element","_maskWidth","componentTypeName","_maskChars","_vecType","systemValueName","flat","componentType","interpolationModeName","operandTypeName","used","nx","ny","nz","_threadGroupSizeOrThrow","customData","literals","row","toString","literal","written","lower","LOWERINGS","_line","text","repeat","bit","_","_destComponentRef","destOperand","target","remapped","remapComponents","ref","_destText","_vecArg","destMask","as","expression","sourceExpression","ctor","float","int","uint","_destMask","operandIndex","destination","registerMask","_isScalarSource","_assign","valueExpression","statement","assignment","_infixBinary","operator","expressionWidth","_assignWidened","rhsIsScalar","_helperUnary","src","_helperBinary","_dotProduct","sourceMask","dot","_comparison","intrinsic","_bitwiseBinary","_intBinary","wrap","_condition","scalar","test","testBoolean","_movc","aliases","condition","ifTrue","ifFalse","lvalue","_sincos","sinDest","cosDest","angle","emitOne","fn","sinAliasesAngle","merged","layerRegister","sampler","arrayLayerCount","mergedFrom","_detailMapArrayLayer","texOperand","_rejectDetailArrayMapUse","_resourceDimension","_textureSample","lodOperandIndex","biasOperandIndex","gradOperandIndexes","comparisonRefOperandIndex","forceLodZero","coordOperand","oneSwizzle","zeroSwizzle","detailLayer","baseCoord","texName","registerReference","returnSwizzle","reference","comparisonCoord","comparisonCall","gradMask","gradX","gradY","lod","bias","_texelFetch","widthMask","widthShift","log2","mip","mov","mad","mul","div","dp2","dp3","dp4","min","sqrt","rsq","exp","log","frc","round_ne","round_ni","round_pi","round_z","rcp","one","sincos","lt","ge","eq","ne","ilt","ige","ieq","ine","ult","uge","and","or","xor","not","movc","if","else","endif","loop","endloop","break","breakc","continue","continuec","switch","selector","case","label","default","endswitch","ret","retc","discard","iadd","imad","imul","destLow","ineg","imax","_intMinMax","imin","umax","umin","ishl","ishr","ushr","ftoi","ftou","itof","utof","sample","sample_c","sample_c_lz","sample_l","sample_b","sample_d","udiv","quotient","remainder","left","right","ld","deriv_rtx","deriv_rtx_coarse","deriv_rtx_fine","deriv_rty","deriv_rty_coarse","deriv_rty_fine","resinfo","_resinfo","ld_structured","_ldStructured","f16tof32","f32tof16","nop","ibfe","helper","ubfe","bfi","insert","base","countbits","gather4","_gather4","store_uav_typed","valueOperand","sliceName","prototype","info","offsetOperand","offsetDwords","aligned","channel","channelIndex","dword","texel","mipExpression","axisCount","resinfoReturnTypeName","sizeExpression","destElem","channelChar","axis","samplerOperand","typeName","asArray","channelLetter","_gather4Channel","selected","lines","helperSource","writesPosition","early"],"mappings":"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"}
|