@galacean/engine-shader-compiler 2.0.0-alpha.55 → 2.0.0-alpha.56
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/browser.js +575 -315
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +566 -309
- package/dist/main.js.map +1 -1
- package/dist/module.js +567 -310
- package/dist/module.js.map +1 -1
- package/dist/precompile.main.js +566 -308
- package/dist/precompile.main.js.map +1 -1
- package/dist/precompile.module.js +567 -309
- package/dist/precompile.module.js.map +1 -1
- package/package.json +5 -5
- package/types/codeGen/CodeGenVisitor.d.ts +9 -2
- package/types/codeGen/GLES100.d.ts +3 -3
- package/types/codeGen/GLES300.d.ts +4 -1
- package/types/codeGen/GLESVisitor.d.ts +45 -2
- package/types/codeGen/NameAllocator.d.ts +36 -0
- package/types/codeGen/VisitorContext.d.ts +2 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"precompile.main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/ShaderInstructionEncoder.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/GLESBackend.ts","../src/ShaderCompilation.ts","../src/ShaderPrecompiler.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { SymbolTable } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType, SymbolInfo, VarSymbol } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole, StructProp } from \"@galacean/engine-shader-parser/internal\";\n\n/** @internal */\nexport class VisitorContext {\n private readonly _lookupSymbol = new SymbolInfo(\"\", null);\n private readonly _structRoles = new Map<ASTNode.StructSpecifier, ShaderStructRole>();\n private readonly _vertexUnresolvedVariableRoles = new Map<string, ShaderStructRole>();\n private readonly _fragmentUnresolvedVariableRoles = new Map<string, ShaderStructRole>();\n private readonly _vertexAmbiguousVariableNames = new Set<string>();\n private readonly _fragmentAmbiguousVariableNames = new Set<string>();\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n readonly _referencedGlobalSymbols = new Set<SymbolInfo>();\n private _globalSymbolQueries: Record<string, Partial<Record<ESymbolType, SymbolInfo[]>>>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n private readonly _structVariableRoles = new Map<VarSymbol, ShaderStructRole>();\n\n _passSymbolTable?: SymbolTable<SymbolInfo>;\n /** Receives every global use, including uses of declarations already discovered. */\n onReferenceGlobal?: (symbols: readonly SymbolInfo[]) => void;\n /** Receives interface uses so generated fields retain their declaration dependencies. */\n onReferenceStructProps?: (props: readonly StructProp[]) => void;\n readonly codeCache = new Map<TreeNode, string>();\n private readonly fragmentReturnModes = new Map<ASTNode.JumpStatement, FragmentReturnMode>();\n private readonly terminalInterfaceReturns = new Set<ASTNode.JumpStatement>();\n\n constructor() {\n this.reset();\n }\n\n reset(resetAll = true) {\n this.codeCache.clear();\n this.fragmentReturnModes.clear();\n this.terminalInterfaceReturns.clear();\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n this._structRoles.clear();\n this._vertexUnresolvedVariableRoles.clear();\n this._fragmentUnresolvedVariableRoles.clear();\n this._vertexAmbiguousVariableNames.clear();\n this._fragmentAmbiguousVariableNames.clear();\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalSymbols.clear();\n this._globalSymbolQueries = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n if (resetAll) {\n this._structVariableRoles.clear();\n this._passSymbolTable = undefined;\n }\n }\n\n /**\n * Finds the shared interface role of custom-struct declaration candidates.\n * @param declarations - Exact parser struct identities resolved at one type occurrence.\n * @returns Interface role, or `undefined` when the type is not an unambiguous interface struct.\n */\n getStructRole(declarations: readonly ASTNode.StructSpecifier[]): ShaderStructRole | undefined {\n let resolvedRole: ShaderStructRole | undefined;\n for (const declaration of declarations) {\n const role = this._structRoles.get(declaration);\n if (!role || (resolvedRole && resolvedRole !== role)) return;\n resolvedRole = role;\n }\n return resolvedRole;\n }\n\n /**\n * Tests the exact interface role of one struct declaration.\n * @param declaration - Parser struct identity.\n * @param role - Expected interface role.\n * @returns Whether the declaration owns that role.\n */\n hasStructRole(declaration: ASTNode.StructSpecifier, role: ShaderStructRole): boolean {\n return this._structRoles.get(declaration) === role;\n }\n\n /**\n * Registers stage-interface struct types for constant-time role lookup.\n * @param role - Interface role shared by the supplied structs.\n * @param structs - Struct declarations derived from parser IR.\n * @internal\n */\n registerStructTypes(role: ShaderStructRole, structs: readonly ASTNode.StructSpecifier[]): void {\n for (const struct of structs) {\n this._structRoles.set(struct, role);\n }\n }\n\n /**\n * Registers a resolved variable that holds an interface struct.\n * @param variable - Parser symbol identity for the declaration.\n * @param role - Struct interface role.\n * @param stage - Optional stage from whose entry the variable is reachable. Omit when only exact\n * symbol lookup is required.\n */\n registerStructVar(variable: VarSymbol, role: ShaderStructRole, stage?: EShaderStage): void {\n this._structVariableRoles.set(variable, role);\n if (stage === undefined) return;\n const roles =\n stage === EShaderStage.VERTEX ? this._vertexUnresolvedVariableRoles : this._fragmentUnresolvedVariableRoles;\n const ambiguous =\n stage === EShaderStage.VERTEX ? this._vertexAmbiguousVariableNames : this._fragmentAmbiguousVariableNames;\n const name = variable.ident;\n if (ambiguous.has(name)) return;\n const existing = roles.get(name);\n if (existing && existing !== role) {\n roles.delete(name);\n ambiguous.add(name);\n } else {\n roles.set(name, role);\n }\n }\n\n /**\n * Finds an interface role for a global macro value that has no lexical symbol identity.\n * @param variableName - Bare variable name in the macro replacement AST.\n * @returns A role only when every stage-reachable declaration with that name agrees.\n */\n getUnresolvedStructVarRole(variableName: string): ShaderStructRole | undefined {\n const roles =\n this.stage === EShaderStage.VERTEX ? this._vertexUnresolvedVariableRoles : this._fragmentUnresolvedVariableRoles;\n const ambiguous =\n this.stage === EShaderStage.VERTEX ? this._vertexAmbiguousVariableNames : this._fragmentAmbiguousVariableNames;\n return ambiguous.has(variableName) ? undefined : roles.get(variableName);\n }\n\n /**\n * Finds the shared interface role of branch-visible variable candidates.\n * @param symbols - Exact parser symbols resolved at one reference.\n * @returns Interface role, or `undefined` when the reference is not an unambiguous interface value.\n */\n getStructVarRole(symbols: readonly SymbolInfo[]): ShaderStructRole | undefined {\n let resolvedRole: ShaderStructRole | undefined;\n for (const symbol of symbols) {\n if (!(symbol instanceof VarSymbol)) return;\n const role = this._structVariableRoles.get(symbol);\n if (!role || (resolvedRole && resolvedRole !== role)) return;\n resolvedRole = role;\n }\n return resolvedRole;\n }\n\n /**\n * Marks a value-return belonging to a fragment entry for backend lowering.\n * @param statement - Exact return statement identity.\n * @param mode - Fragment output contract of the containing entry declaration.\n */\n registerFragmentReturn(statement: ASTNode.JumpStatement, mode: FragmentReturnMode): void {\n this.fragmentReturnModes.set(statement, mode);\n }\n\n /**\n * Finds the output contract for a fragment-entry return statement.\n * @param statement - Return statement identity.\n * @returns Output mode, or `undefined` for ordinary helper/vertex returns.\n */\n getFragmentReturnMode(statement: ASTNode.JumpStatement): FragmentReturnMode | undefined {\n return this.fragmentReturnModes.get(statement);\n }\n\n /** Marks a syntactically final interface return whose control-flow exit can be omitted. */\n registerTerminalInterfaceReturn(statement: ASTNode.JumpStatement): void {\n this.terminalInterfaceReturns.add(statement);\n }\n\n /**\n * Tests whether an interface return is the final syntactic statement in its function.\n * @param statement - Return statement identity.\n * @returns Whether backend lowering may omit a trailing `return;`.\n */\n isTerminalInterfaceReturn(statement: ASTNode.JumpStatement): boolean {\n return this.terminalInterfaceReturns.has(statement);\n }\n\n referenceAttribute(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.attributeList, this._referencedAttributeList);\n }\n\n referenceVarying(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.varyingList, this._referencedVaryingList);\n }\n\n referenceMRTProp(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.mrtList, this._referencedMRTList);\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n const queries = (this._globalSymbolQueries[ident] ??= Object.create(null));\n let symbols = queries[type];\n if (!symbols) {\n this._lookupSymbol.set(ident, type);\n symbols = queries[type] = this._passSymbolTable!.getSymbols(this._lookupSymbol, true, []);\n const namedSymbols = (this._referencedGlobals[ident] ??= []);\n for (const symbol of symbols) {\n if (!this._referencedGlobalSymbols.has(symbol)) {\n this._referencedGlobalSymbols.add(symbol);\n namedSymbols.push(symbol);\n }\n }\n }\n // Repeated uses still establish edges from each declaration's owner.\n this.onReferenceGlobal?.(symbols);\n }\n\n // Track which IO props are actually referenced (drives in/out emission). A missing member is no\n // longer flagged here — that's the parser's struct-field check (UndeclaredStructMember).\n private _referenceProp(name: string, list: StructProp[], refList: Record<string, StructProp[]>): void {\n if (!refList[name]) refList[name] = list.filter((item) => item.ident.lexeme === name);\n this.onReferenceStructProps?.(refList[name]);\n }\n}\n\n/** @internal */\nexport type FragmentReturnMode = \"color\" | \"mrt\";\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { NoneTerminal } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType, FnSymbol } from \"@galacean/engine-shader-parser/internal\";\nimport { NodeChild, StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport type { BranchSignature, ICodeGenVisitor } from \"@galacean/engine-shader-parser/internal\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ReturnableObjectPool } from \"@galacean/engine-core\";\nimport { Keyword } from \"@galacean/engine-shader-parser/internal\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor implements ICodeGenVisitor {\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string | null;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n protected readonly context = new VisitorContext();\n\n cache(node: TreeNode, code: string): string {\n this.context.codeCache.set(node, code);\n return code;\n }\n\n getCachedCode(node: TreeNode): string | undefined {\n return this.context.codeCache.get(node);\n }\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n const ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n // Legacy opaque `#define` lexemes carry the directive verbatim; expression-style defines use the AST path\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n const result = ret.array.join(\" \");\n ret.dispose();\n pool.return(ret);\n return result;\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = this.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n // Direct variables use parser symbol identity so lexical shadowing cannot inherit an IO role\n // from a same-named declaration. Macro-expanded identifiers can lack a resolved symbol, so\n // only that zero-symbol path consults the current stage's unambiguous name-to-role map.\n let role: ShaderStructRole | undefined;\n const directRoot = ParserUtils.unwrapBareIdentifier(postExpr, { allowParens: true });\n if (directRoot) {\n const symbols = directRoot.resolvedValueSymbols();\n const unresolvedName = ParserUtils.extractDirectIdentLexeme(postExpr);\n role = symbols.length\n ? context.getStructVarRole(symbols)\n : unresolvedName\n ? context.getUnresolvedStructVarRole(unresolvedName)\n : undefined;\n }\n\n if (role) {\n if (role === ShaderStructRole.Attribute) context.referenceAttribute(prop);\n else if (role === ShaderStructRole.Varying) context.referenceVarying(prop);\n else context.referenceMRTProp(prop);\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n return `${identNode.codeGen(this)}[${indexNode.codeGen(this)}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (const name of node.referenceGlobalSymbolNames) {\n this.context.referenceGlobal(name, ESymbolType.Any);\n }\n for (const symbol of node.resolvedSymbols()) {\n if (symbol instanceof FnSymbol) this.referenceFunction(symbol, node.location.start.index, node._branch);\n }\n\n return node.getLexeme(this);\n }\n\n protected referenceFunction(symbol: FnSymbol, referenceIndex: number, branch: BranchSignature): void {\n void referenceIndex;\n void branch;\n this.context.referenceGlobal(symbol.ident, ESymbolType.FN);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n for (const symbol of call.fnSymbols?.length ? call.fnSymbols : [call.fnSymbol]) {\n this.referenceFunction(symbol, node.location.start.index, node._branch);\n }\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const finalSymbol = this.context._referencedGlobals[call.fnSymbol.ident].find(\n (candidate) => candidate instanceof FnSymbol && candidate.equal(call.fnSymbol!)\n ) as FnSymbol | undefined;\n const paramInfoList = (finalSymbol ?? call.fnSymbol).astNode.protoType.parameterList;\n\n const context = this.context;\n const params = astNodes.filter((_, i) => {\n const parameter = paramInfoList?.[i]?.astNode;\n // Drop struct-IO parameters (attribute/varying/mrt) — they're flattened\n // into top-level declarations and no longer exist as function-call args.\n return (\n !(parameter instanceof ASTNode.ParameterDeclaration) ||\n !parameter.symbol ||\n !context.getStructVarRole([parameter.symbol])\n );\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const context = this.context;\n\n // Drop bare IO-struct args only when the macro aliases a user fn (whose\n // formal was flattened). All other shapes preserve args verbatim.\n let params: typeof astNodes;\n if (node.isFunctionLikeMacro || !node.aliasesNonBuiltinIdent) {\n params = astNodes;\n } else {\n params = astNodes.filter((arg) => {\n if (arg instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapBareIdentifier(arg, { allowParens: false });\n if (variableParam && context.getStructVarRole(variableParam.resolvedValueSymbols())) {\n return false;\n }\n }\n return true;\n });\n }\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const argNode = params[i];\n const code = argNode.codeGen(this);\n\n if (argNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n /**\n * Code-generate a `#define` macro parsed as expression AST. Produces a `#define`\n * directive whose value is the AST-rewritten string — so varying flattening\n * happens naturally via `visitPostfixExpression` inside the AST walk.\n */\n visitMacroDefine(node: ASTNode.MacroDefine): string {\n // For function-like macros, preserve the original `(params)` lexeme verbatim —\n // the parameter list is user-authored text that shouldn't be canonicalized.\n let paramsLexeme = \"\";\n if (node.isFunction) {\n const paramsToken = node.children[2];\n if (paramsToken instanceof BaseToken) paramsLexeme = paramsToken.lexeme;\n }\n const valueCode = node.valueExpression ? node.valueExpression.codeGen(this) : \"\";\n // Newlines around the directive keep `#` at the start of its physical line per\n // GLSL ES 3.0 §3.4, regardless of how surrounding tokens are joined.\n return `\\n#define ${node.macroName}${paramsLexeme}${valueCode ? \" \" + valueCode : \"\"}\\n`;\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n const context = this.context;\n // Global interface variables are flattened and therefore are not emitted as uniforms.\n if (context.getStructVarRole([node.declarator.symbol])) {\n return \"\";\n }\n context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const context = this.context;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const first = child.children[0];\n const declarator =\n child.declarator ?? (first instanceof ASTNode.SingleDeclaration ? first.declarator : undefined);\n const role = declarator && context.getStructVarRole([declarator.symbol]);\n if (role === ShaderStructRole.Varying || role === ShaderStructRole.Mrt) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const context = this.context;\n const params = node.parameterInfoList.filter((item) => {\n const parameter = item.astNode;\n return (\n !(parameter instanceof ASTNode.ParameterDeclaration) ||\n !parameter.symbol ||\n !context.getStructVarRole([parameter.symbol])\n );\n });\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode!;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier;\n if (this.context.getStructRole(returnType.structDeclarations) === ShaderStructRole.Varying) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (returnVar && this.context.getStructVarRole(returnVar.resolvedValueSymbols()) === ShaderStructRole.Varying) {\n return this.context.isTerminalInterfaceReturn(node) ? \"\" : \"return;\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n const calledFunction = returnFnCall?.children[0] as ASTNode.FunctionCallGeneric | undefined;\n const returnDeclarations =\n calledFunction?.fnSymbol instanceof FnSymbol\n ? calledFunction.fnSymbol.astNode.protoType.returnType.typeSpecifier.structDeclarations\n : [];\n if (this.context.getStructRole(returnDeclarations) === ShaderStructRole.Varying) {\n const call = `${expr.codeGen(this)};`;\n return this.context.isTerminalInterfaceReturn(node) ? call : `{ ${call} return; }`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitTypeSpecifier(node: ASTNode.TypeSpecifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = this.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n const result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = this.context;\n const terminal = ParserUtils.lastStatement(fnNode.statements);\n if (terminal instanceof ASTNode.JumpStatement) context.registerTerminalInterfaceReturn(terminal);\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n}\n","import type { Condition, PreprocessorExpressionParseResult, ShaderInstruction } from \"@galacean/engine-design\";\nimport { ShaderPreprocessorDirective } from \"@galacean/engine-core\";\nimport { parsePreprocessorExpression, toPreprocessorCondition } from \"@galacean/engine-shader-parser/internal\";\nimport type { DeferredDeclarationOwnership } from \"@galacean/engine-shader-parser/internal\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n /**\n * Marks compiler-owned text without placing parser objects in the instruction stream.\n * @param text - Declaration or derived declaration text.\n * @param owner - Neutral declaration identity, if runtime selection is required.\n * @param activate - Whether this is the declaration's original source position.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static declaration(text: string, owner?: DeferredDeclarationOwnership, activate = true): string {\n if (!owner) return text;\n const activation = activate ? `\\0D${owner.id},${owner.group},${owner.sourceScope}\\0\\n` : \"\";\n return text ? `${activation}\\0T${owner.id}\\0\\n${text}\\n\\0E\\0\\n` : activation;\n }\n\n /**\n * Marks derived text shared by any selected, reachable declaration without activating an owner.\n * @param text - Shared derived declaration text.\n * @param owners - Declarations that require the text; an empty list never retains it.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static sharedDeclaration(text: string, owners: readonly DeferredDeclarationOwnership[]): string {\n return text ? `\\0T${owners.map((owner) => owner.id).join(\",\")}\\0\\n${text}\\n\\0E\\0\\n` : \"\";\n }\n\n /**\n * Records a declaration dependency for variant-time reachability after ownership selection.\n * @param from - Referencing declaration identity, or zero for a stage root.\n * @param to - Referenced declaration identity.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static reference(from: number, to: number): string {\n return `\\0R${from},${to}\\0\\n`;\n }\n\n /**\n * Removes private emission markers from the public source view after instruction encoding.\n * @param source - Encoded intermediate stage source.\n * @returns GLSL source without compiler metadata.\n * @internal\n */\n static source(source: string): string {\n return source.indexOf(\"\\0\") < 0 ? source : source.replace(/\\0[^\\0]*\\0\\n?/g, \"\");\n }\n\n /**\n * Encodes generated GLSL directives into runtime-selectable instructions.\n * @param glsl - Generated stage source.\n * @param preprocessorExpressions - Parser-owned expression trees keyed by logical directive text.\n * @returns Runtime shader instruction stream.\n * @throws Error when a conditional directive is malformed or has a deterministic evaluation failure.\n * @internal\n */\n static parse(\n glsl: string,\n preprocessorExpressions?: ReadonlyMap<string, PreprocessorExpressionParseResult>\n ): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n let owners: number[] | undefined;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length, owners);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart, owners);\n }\n\n const lineEnd = ShaderInstructionEncoder._findLogicalLineEnd(glsl, directiveStart, length);\n const line = glsl.substring(directiveStart, lineEnd).replace(/\\\\(?:\\r\\n|\\n|\\r)/g, \"\");\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n if (line.charCodeAt(0) === 0) {\n const kind = line.charAt(1);\n if (kind === \"D\") {\n const fields = line.slice(2, -1).split(\",\").map(Number);\n instructions.push([ShaderPreprocessorDirective.Declaration, fields[0], fields[1], fields[2]]);\n } else if (kind === \"R\") {\n const fields = line.slice(2, -1).split(\",\").map(Number);\n instructions.push([ShaderPreprocessorDirective.Reference, fields[0], fields[1]]);\n } else {\n const ids = line.slice(2, -1);\n owners = kind === \"T\" ? (ids ? ids.split(\",\").map(Number) : []) : undefined;\n }\n continue;\n }\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const text = lineEnd < length ? line + \"\\n\" : line;\n ShaderInstructionEncoder._pushText(instructions, text, 0, text.length, owners);\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest, preprocessorExpressions);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest, preprocessorExpressions);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const separator = ShaderInstructionEncoder._findInlineWhitespace(rest);\n if (separator === rest.length) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, separator),\n ShaderInstructionEncoder._stripLineComment(rest.substring(separator + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _parseCondition(\n expression: string,\n preprocessorExpressions?: ReadonlyMap<string, PreprocessorExpressionParseResult>\n ): Condition {\n const result = preprocessorExpressions?.get(expression) ?? parsePreprocessorExpression(expression);\n if (\"error\" in result) {\n if (!result.error.certain && result.hasExpandableIdentifier) return { t: \"deferred\", e: expression };\n throw new Error(result.error.message);\n }\n if (result.evaluationError) throw new Error(result.evaluationError);\n const compact = toPreprocessorCondition(result.condition);\n if (compact && !result.hasExpandableIdentifier) return compact;\n return result.hasExpandableIdentifier ? { t: \"deferred\", e: expression } : result.condition;\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && (source.charCodeAt(j) === 35 /* '#' */ || source.charCodeAt(j) === 0)) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _findLogicalLineEnd(source: string, start: number, length: number): number {\n let lineEnd = source.indexOf(\"\\n\", start);\n while (lineEnd !== -1) {\n const beforeBreak = source.charCodeAt(lineEnd - 1) === 13 ? lineEnd - 2 : lineEnd - 1;\n if (beforeBreak < start || source.charCodeAt(beforeBreak) !== 92) return lineEnd;\n lineEnd = source.indexOf(\"\\n\", lineEnd + 1);\n }\n return length;\n }\n\n private static _findInlineWhitespace(source: string): number {\n let index = 0;\n while (index < source.length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 32 /* space */ || charCode === 9 /* tab */) break;\n index++;\n }\n return index;\n }\n\n private static _pushText(\n instructions: ShaderInstruction[],\n source: string,\n from: number,\n to: number,\n owners?: readonly number[]\n ): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const directive = owners === undefined ? ShaderPreprocessorDirective.Text : ShaderPreprocessorDirective.OwnedText;\n if (\n last &&\n last[0] === directive &&\n (owners === undefined ||\n (last.length === owners.length + 2 && owners.every((owner, index) => last[index + 2] === owner)))\n ) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push(\n owners === undefined\n ? [directive, source.substring(from, to)]\n : [directive, source.substring(from, to), ...owners]\n );\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport type { IPoolElement } from \"@galacean/engine-core\";\nimport { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { Keyword } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { NodeChild } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderData } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType } from \"@galacean/engine-shader-parser/internal\";\nimport {\n FnSymbol,\n VarSymbol,\n canInheritanceBranchesCover,\n getLexicalDeclarationCoexistence\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GSError, GSErrorName, mapExpandedShaderError } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport type {\n BranchSignature,\n ShaderClueIR,\n ShaderCoreInfo,\n ShaderEntryPointInfo,\n DeferredDeclarationOwnership\n} from \"@galacean/engine-shader-parser/internal\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport type { ShaderBackend } from \"../ShaderBackend\";\nimport { ShaderInstructionEncoder } from \"../ShaderInstructionEncoder\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor implements ShaderBackend, IPoolElement {\n private _globalCodeArray: ICodeSegment[] = [];\n private readonly _forwardFunctionDeclarations = new Map<ASTNode.FunctionDefinition, string>();\n private readonly _forwardStructIndices = new Map<ASTNode.StructSpecifier, number>();\n private readonly _structCodeSegments = new Map<ASTNode.StructSpecifier, ICodeSegment>();\n private readonly _forwardVariableIndices = new Map<ASTNode.VariableDeclaration, number>();\n private readonly _variableCodeSegments = new Map<ASTNode.VariableDeclaration, ICodeSegment>();\n private readonly _declarationOwners = new Map<TreeNode, DeferredDeclarationOwnership>();\n private readonly _deferredPrototypes = new Map<ASTNode.FunctionDefinition, ICodeSegment>();\n private readonly _declarationReferences = new Map<number, Set<number>>();\n private _currentDeclaration?: TreeNode;\n private _sourceIR?: ShaderClueIR;\n private _outerMacroDeclarations: readonly ASTNode.GlobalDeclaration[] = [];\n\n /**\n * Clears pass-local output retained by the pooled visitor.\n */\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n this._forwardFunctionDeclarations.clear();\n this._forwardStructIndices.clear();\n this._structCodeSegments.clear();\n this._forwardVariableIndices.clear();\n this._variableCodeSegments.clear();\n this._deferredPrototypes.clear();\n this._declarationReferences.clear();\n this._currentDeclaration = undefined;\n }\n\n /**\n * Releases references retained by an idle visitor when its pool is collected.\n * @internal\n */\n dispose(): void {\n this.context.reset();\n this.reset();\n }\n\n /**\n * Emits target-specific declarations that precede generated global code.\n * @param data - Parser-owned shader facts.\n * @param out - Destination code segments.\n */\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n /**\n * Generates vertex and fragment source from neutral parser facts.\n * @param ir - Request-owned neutral shader IR.\n * @param coreInfo - Entry and stage-interface facts derived from the same IR.\n * @returns Generated vertex and fragment source.\n */\n generate(ir: ShaderClueIR, coreInfo: ShaderCoreInfo): IShaderInfo {\n this.context.reset();\n this.reset();\n\n const node = ir.program;\n const shaderData = node.shaderData;\n const context = this.context;\n context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = coreInfo.outerGlobalMacroDeclarations;\n const { io } = coreInfo;\n context.attributeStructs.push(...io.attributeStructs);\n context.attributeList.push(...io.attributeList);\n context.varyingStructs.push(...io.varyingStructs);\n context.varyingList.push(...io.varyingList);\n context.mrtStructs.push(...io.mrtStructs);\n context.mrtList.push(...io.mrtList);\n context.registerStructTypes(ShaderStructRole.Attribute, io.attributeStructs);\n context.registerStructTypes(ShaderStructRole.Varying, io.varyingStructs);\n context.registerStructTypes(ShaderStructRole.Mrt, io.mrtStructs);\n io.structVariableRoles.forEach((role, variable) => context.registerStructVar(variable, role));\n io.vertexStructVariableRoles.forEach((role, variable) => {\n context.registerStructVar(variable, role, EShaderStage.VERTEX);\n });\n io.fragmentStructVariableRoles.forEach((role, variable) => {\n context.registerStructVar(variable, role, EShaderStage.FRAGMENT);\n });\n\n this._sourceIR = ir;\n this._outerMacroDeclarations = outerGlobalMacroDeclarations;\n try {\n coreInfo.deferredDeclarationOwnership.forEach((owner, symbol) =>\n this._declarationOwners.set(symbol.astNode!, owner)\n );\n if (this._declarationOwners.size) {\n let nextId = 0;\n let nextGroup = 0;\n this._declarationOwners.forEach((owner) => {\n nextId = Math.max(nextId, owner.id);\n nextGroup = Math.max(nextGroup, owner.group);\n });\n // Reachability follows the selected declaration, including dependencies without an override.\n shaderData.symbolTable.forEach((symbol) => {\n if (symbol.astNode && !this._declarationOwners.has(symbol.astNode)) {\n this._declarationOwners.set(symbol.astNode, {\n id: ++nextId,\n group: ++nextGroup,\n sourceScope: symbol.sourceScope\n });\n }\n });\n context.onReferenceGlobal = (symbols) => {\n const from = this.currentDeclarationOwner?.id ?? 0;\n for (const symbol of symbols) this._referenceDeclaration(from, symbol.astNode!);\n };\n const propDeclarations = new Map();\n for (const struct of [...io.attributeStructs, ...io.varyingStructs, ...io.mrtStructs]) {\n for (const prop of struct.propList) propDeclarations.set(prop, struct);\n }\n context.onReferenceStructProps = (props) => {\n const from = this.currentDeclarationOwner?.id ?? 0;\n for (const prop of props) this._referenceDeclaration(from, propDeclarations.get(prop));\n };\n }\n if (coreInfo.unsupportedDeferredDeclarations.length) {\n throw mapExpandedShaderError(\n new GSError(\n GSErrorName.CompilationError,\n \"Deferred inheritance requires exact signatures and cannot resolve a known partial-coverage conflict.\",\n coreInfo.unsupportedDeferredDeclarations[0].astNode!.location,\n ir.source,\n undefined,\n \"UnsupportedDeferredDeclaration\"\n ),\n ir.source,\n ir.sourceMap\n );\n }\n return {\n vertex: this._vertexMain(coreInfo.vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(coreInfo.fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n } finally {\n this._sourceIR = undefined;\n this._outerMacroDeclarations = [];\n this._declarationOwners.clear();\n context.onReferenceGlobal = undefined;\n context.onReferenceStructProps = undefined;\n }\n }\n\n private _vertexMain(\n entryInfo: ShaderEntryPointInfo,\n data: ShaderData,\n outerGlobalMacroDeclarations: readonly ASTNode.GlobalDeclaration[]\n ): string {\n const context = this.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entryInfo.name;\n\n // Attribute/varying structs were collected in ShaderCoreInfo\n\n // Pre-walk global `#define` values so referenced struct properties emit `attribute`/`varying` declarations.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroDeclarations);\n\n const globalCodeArray = this._globalCodeArray;\n context.referenceGlobal(entryInfo.name, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n this._emitDeclarationReferences(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entryInfo: ShaderEntryPointInfo,\n data: ShaderData,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): string {\n const context = this.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entryInfo.name;\n this.prepareFragment(entryInfo, outerGlobalMacroStatements);\n\n // Every value-return must preserve early-exit control flow after entry return values are\n // lowered into fragment outputs.\n entryInfo.functions.forEach((fnSymbol) => {\n const returnType = fnSymbol.astNode.protoType.returnType;\n const mode =\n returnType.type === Keyword.VEC4\n ? \"color\"\n : returnType.typeSpecifier.structDeclarations.some((struct) =>\n context.hasStructRole(struct, ShaderStructRole.Mrt)\n )\n ? \"mrt\"\n : undefined;\n if (mode) {\n const statements = fnSymbol.astNode.statements;\n this._registerFragmentReturns(statements, mode, ParserUtils.lastStatement(statements));\n }\n });\n\n // Struct-variable identities are already populated from ShaderCoreInfo; just pre-walk macro\n // refs so struct codegen sees the references.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroStatements);\n\n const globalCodeArray = this._globalCodeArray;\n context.referenceGlobal(entryInfo.name, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n this._emitDeclarationReferences(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n protected prepareFragment(\n entryInfo: ShaderEntryPointInfo,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): void {\n void entryInfo;\n void outerGlobalMacroStatements;\n }\n\n /**\n * Pre-walk `#define` values in global macro declarations and register any\n * `structVar.prop` member accesses as referenced struct props. This must run before\n * struct codegen emits the declaration lists (`attribute …`, `varying …`, `MRT …`),\n * otherwise properties used only from macros would be missing from the output.\n */\n private _preRegisterGlobalMacroRefs(macros: readonly ASTNode.GlobalDeclaration[]): void {\n for (const macro of macros) {\n this._walkMacroDefineTokens(macro.children);\n }\n }\n\n private _walkMacroDefineTokens(children: NodeChild[]): void {\n for (const child of children) {\n if (child instanceof ASTNode.MacroDefine) {\n // Codegen the value once so the enclosed `visitPostfixExpression` calls\n // register their struct-prop references. The returned string is discarded\n // — the real emit happens later in `_getGlobalMacroDeclarations`.\n if (child.valueExpression) child.valueExpression.codeGen(this);\n } else if (child instanceof TreeNode) {\n const previous = this._currentDeclaration;\n if (child instanceof ASTNode.FunctionDefinition) this._currentDeclaration = child;\n this._walkMacroDefineTokens(child.children);\n this._currentDeclaration = previous;\n }\n }\n }\n\n private _registerFragmentReturns(node: TreeNode, mode: \"color\" | \"mrt\", terminal?: TreeNode): void {\n if (node instanceof ASTNode.JumpStatement && node.children.length === 3) {\n this.context.registerFragmentReturn(node, mode);\n if (node === terminal) this.context.registerTerminalInterfaceReturn(node);\n return;\n }\n for (const child of node.children) {\n if (child instanceof TreeNode) this._registerFragmentReturns(child, mode, terminal);\n }\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const context = this.context;\n // Set iteration includes dependencies discovered while generating earlier declarations.\n for (const sm of context._referencedGlobalSymbols) {\n this._currentDeclaration = sm.astNode;\n const codeGenResult = sm.astNode!.codeGen(this);\n this._currentDeclaration = undefined;\n if (!codeGenResult) continue;\n const text = codeGenResult + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n const segment = {\n text: this._declaration(text, sm.astNode!),\n index: sm.astNode!.location.start.index\n };\n out.push(segment);\n if (sm.astNode instanceof ASTNode.StructSpecifier) this._structCodeSegments.set(sm.astNode, segment);\n if (sm.astNode instanceof ASTNode.VariableDeclaration) this._variableCodeSegments.set(sm.astNode, segment);\n }\n }\n this._getForwardDeclarations(out);\n for (const segment of this._deferredPrototypes.values()) out.push(segment);\n for (const [definition, text] of this._forwardFunctionDeclarations) {\n if (!definition.isInMacroBranch) out.push({ text, index: definition.location.start.index });\n }\n }\n\n protected override referenceFunction(symbol: FnSymbol, referenceIndex: number, branch: BranchSignature): void {\n super.referenceFunction(symbol, referenceIndex, branch);\n const definition = symbol.astNode;\n const declarations = this._forwardFunctionDeclarations;\n if (symbol.ident === this.context.stageEntry) return;\n const candidates = this.context._referencedGlobals[symbol.ident].filter(\n (candidate): candidate is FnSymbol => candidate instanceof FnSymbol && candidate.equal(symbol)\n );\n const owner = this._declarationOwners.get(definition);\n if (owner) {\n for (const candidate of candidates) {\n const replacement = candidate.astNode;\n const nextOwner = this._declarationOwners.get(replacement);\n if (\n !nextOwner ||\n nextOwner.group !== owner.group ||\n nextOwner.sourceScope <= owner.sourceScope ||\n replacement.location.start.index <= referenceIndex\n )\n continue;\n const prototype = replacement.protoType;\n const anchor = definition.location.start.index;\n const previous = this._deferredPrototypes.get(replacement);\n if (previous && previous.index <= anchor) continue;\n if (\n !this._isContextIndependent(prototype) ||\n this._hasDeclarationContextBarrier(anchor, prototype.location.start.index, false)\n ) {\n this._unsupportedForwardDeclaration(prototype);\n }\n const outer = this._outerMacroDeclarations.find(\n (macro) => macro.location.start.index <= anchor && macro.location.end.index >= definition.location.end.index\n );\n const typeAnchor = outer?.location.start.index ?? anchor;\n this._prepareForwardTypes(prototype.returnType.typeSpecifier.structDeclarations, anchor, typeAnchor);\n for (const parameter of prototype.parameterList ?? []) {\n this._prepareForwardTypes(parameter.typeInfo?.structDeclarations ?? [], anchor, typeAnchor);\n }\n // Selection is determined at the later definition, so the prototype must not replay its guard here.\n this._deferredPrototypes.set(replacement, {\n text: this._declaration(`${prototype.codeGen(this)};`, replacement, false),\n index: typeAnchor\n });\n }\n return;\n }\n if (candidates.some((candidate) => candidate.astNode === definition)) return;\n const compatible = candidates.filter((candidate) => this._canBranchesOverlap(candidate.branchSignature, branch));\n const preceding = compatible.filter((candidate) => candidate.astNode.location.start.index < referenceIndex);\n if (\n canInheritanceBranchesCover(\n preceding.map((candidate) => candidate.branchSignature),\n branch\n )\n )\n return;\n const replacement = compatible.find((candidate) => candidate.astNode.location.start.index > referenceIndex);\n if (replacement) {\n // An inherited helper can call a declaration whose overriding body occurs later. Keep the\n // original declaration's macro/type context and emit only the final backend signature there.\n const prototype = replacement.astNode.protoType;\n const anchor = definition.location.start.index;\n const text = `${prototype.codeGen(this)};`;\n const signature = this._getForwardSignature(prototype);\n for (const candidate of candidates) {\n if (\n this._canBranchesOverlap(candidate.branchSignature, symbol.branchSignature) &&\n this._getForwardSignature(candidate.astNode.protoType) !== signature\n ) {\n this._unsupportedForwardDeclaration(candidate.astNode.protoType);\n }\n }\n if (declarations.has(definition)) return;\n if (\n !this._isContextIndependent(prototype) ||\n this._hasDeclarationContextBarrier(anchor, prototype.location.start.index, false)\n ) {\n this._unsupportedForwardDeclaration(prototype);\n }\n const outerMacro = this._outerMacroDeclarations.find(\n (macro) => macro.location.start.index <= anchor && macro.location.end.index >= definition.location.end.index\n );\n const typeAnchor = outerMacro?.location.start.index ?? anchor;\n this._prepareForwardTypes(prototype.returnType.typeSpecifier.structDeclarations, anchor, typeAnchor);\n for (const parameter of prototype.parameterList ?? []) {\n if (\n parameter.astNode instanceof ASTNode.ParameterDeclaration &&\n parameter.astNode.symbol &&\n this.context.getStructVarRole([parameter.astNode.symbol])\n ) {\n continue;\n }\n this._prepareForwardTypes(parameter.typeInfo?.structDeclarations ?? [], anchor, typeAnchor);\n }\n declarations.set(definition, text);\n }\n }\n\n private _getForwardSignature(prototype: ASTNode.FunctionProtoType): string {\n const parameters: string[] = [];\n for (const parameter of prototype.parameterList ?? []) {\n const declaration = parameter.astNode!;\n if (\n declaration instanceof ASTNode.ParameterDeclaration &&\n declaration.symbol &&\n this.context.getStructVarRole([declaration.symbol])\n )\n continue;\n const tokens: string[] = [];\n const visit = (node: NodeChild) => {\n if (node instanceof BaseToken) {\n if (node !== parameter.ident && node.type !== Keyword.IN) tokens.push(node.lexeme);\n } else {\n node.children.forEach(visit);\n }\n };\n visit(declaration);\n const text = tokens.join(\" \");\n if (text !== \"void\") parameters.push(text);\n }\n return `${prototype.returnType.codeGen(this)}(${parameters.join(\",\")})`;\n }\n\n private _canBranchesOverlap(left: BranchSignature, right: BranchSignature): boolean {\n return (\n getLexicalDeclarationCoexistence(left, right) !== \"exclusive\" &&\n !canInheritanceBranchesCover([], [...left, ...right])\n );\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const code = super.visitVariableIdentifier(node);\n for (const symbol of node.resolvedSymbols()) {\n if (!(symbol instanceof VarSymbol) || !symbol.isUniform) continue;\n const candidates = this.context._referencedGlobals[symbol.ident]?.filter(\n (candidate): candidate is VarSymbol => candidate instanceof VarSymbol\n );\n const owner = this._declarationOwners.get(symbol.astNode);\n if (!candidates || (!owner && candidates.includes(symbol))) continue;\n const preceding = candidates.filter(\n (candidate) => candidate.astNode!.location.start.index < node.location.start.index\n );\n if (\n !owner &&\n canInheritanceBranchesCover(\n preceding.map((candidate) => candidate.branchSignature),\n node._branch\n )\n )\n continue;\n const oldMacro = this._outerMacroDeclarations.find(\n (macro) =>\n macro.location.start.index <= symbol.astNode.location.start.index &&\n macro.location.end.index >= symbol.astNode.location.end.index\n );\n const anchor = oldMacro?.location.start.index ?? symbol.astNode.location.start.index;\n for (const candidate of candidates) {\n if (candidate.astNode!.location.start.index <= node.location.start.index) continue;\n if (owner) {\n const nextOwner = this._declarationOwners.get(candidate.astNode!);\n if (!nextOwner || nextOwner.group !== owner.group || nextOwner.sourceScope <= owner.sourceScope) continue;\n }\n const declaration = candidate.astNode!;\n if (\n !(candidate instanceof VarSymbol) ||\n !candidate.isUniform ||\n !(declaration instanceof ASTNode.VariableDeclaration)\n ) {\n this._unsupportedForwardDeclaration(declaration);\n }\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= declaration.location.start.index &&\n item.location.end.index >= declaration.location.end.index\n );\n if (\n !this._isContextIndependent(declaration) ||\n this._hasDeclarationContextBarrier(anchor, macro?.location.end.index ?? declaration.location.end.index, true)\n ) {\n this._unsupportedForwardDeclaration(declaration);\n }\n this._prepareForwardTypes(candidate.dataType!.structDeclarations, anchor);\n this._forwardVariableIndices.set(\n declaration,\n Math.min(this._forwardVariableIndices.get(declaration) ?? Infinity, anchor)\n );\n }\n }\n return code;\n }\n\n private _getForwardDeclarations(out: ICodeSegment[]): void {\n type Declaration = ASTNode.StructSpecifier | ASTNode.VariableDeclaration;\n const guarded = new Map<ASTNode.GlobalDeclaration, { index: number; declarations: Declaration[] }>();\n const declarations: [Declaration, number][] = Array.from(this._forwardStructIndices);\n for (const entry of this._forwardVariableIndices) declarations.push(entry);\n const code = (declaration: Declaration) =>\n this._declaration(\n declaration.codeGen(this) + (declaration instanceof ASTNode.VariableDeclaration ? \";\" : \"\"),\n declaration,\n false\n );\n for (const [declaration, index] of declarations) {\n const owner = this._declarationOwners.get(declaration);\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= declaration.location.start.index &&\n item.location.end.index >= declaration.location.end.index\n );\n if (!macro) {\n const previous =\n declaration instanceof ASTNode.StructSpecifier\n ? this._structCodeSegments.get(declaration)\n : this._variableCodeSegments.get(declaration);\n if (previous) {\n if (owner) previous.text = this._declaration(\"\", declaration);\n else out.splice(out.indexOf(previous), 1);\n }\n out.push({ text: code(declaration), index });\n } else if (owner) {\n out.push({ text: code(declaration), index });\n } else {\n let group = guarded.get(macro);\n if (!group) guarded.set(macro, (group = { index, declarations: [] }));\n group.index = Math.min(group.index, index);\n group.declarations.push(declaration);\n }\n }\n for (const [macro, group] of guarded) {\n const segments: ICodeSegment[] = macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }));\n for (const declaration of group.declarations) {\n segments.push({ text: code(declaration), index: declaration.location.start.index });\n }\n out.push({\n text: segments\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\"),\n index: group.index\n });\n }\n }\n\n override visitTypeSpecifier(node: ASTNode.TypeSpecifier): string {\n const call = node.parent instanceof ASTNode.FunctionIdentifier ? node.parent.parent : undefined;\n if (call instanceof ASTNode.FunctionCallGeneric && call.fnSymbol instanceof FnSymbol) {\n return super.visitTypeSpecifier(node);\n }\n for (const type of node.structDependencies) {\n if (!type.ident || this.context.getStructRole([type])) continue;\n // A function-local struct can shadow a global name without participating in inheritance.\n let parent = type.parent;\n while (\n parent &&\n !(parent instanceof ASTNode.GlobalDeclaration) &&\n !(parent instanceof ASTNode.FunctionDefinition)\n ) {\n parent = parent.parent;\n }\n if (parent instanceof ASTNode.FunctionDefinition) continue;\n this.context.referenceGlobal(type.ident.lexeme, ESymbolType.STRUCT);\n const final = this.context._referencedGlobals[type.ident.lexeme];\n const owner = this._declarationOwners.get(type);\n if (!owner && final.some((symbol) => symbol.astNode === type)) continue;\n const oldMacro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= type.location.start.index && item.location.end.index >= type.location.end.index\n );\n this._prepareForwardTypes(\n final\n .filter((symbol) => {\n if (!owner) return true;\n const nextOwner = this._declarationOwners.get(symbol.astNode!);\n return nextOwner?.group === owner.group && nextOwner.sourceScope > owner.sourceScope;\n })\n .map((symbol) => symbol.astNode)\n .filter((item): item is ASTNode.StructSpecifier => item instanceof ASTNode.StructSpecifier),\n oldMacro?.location.start.index ?? type.location.start.index\n );\n }\n return super.visitTypeSpecifier(node);\n }\n\n private _prepareForwardTypes(types: readonly ASTNode.StructSpecifier[], anchor: number, hoistAnchor = anchor): void {\n if (this.context.getStructRole(types)) return;\n for (const type of types) {\n if ((this._forwardStructIndices.get(type) ?? Infinity) <= anchor) continue;\n if (type.ident) {\n this.context.referenceGlobal(type.ident.lexeme, ESymbolType.STRUCT);\n const final = this.context._referencedGlobals[type.ident.lexeme];\n if (!final.some((symbol) => symbol.astNode === type)) {\n this._prepareForwardTypes(\n final\n .map((symbol) => symbol.astNode)\n .filter((item): item is ASTNode.StructSpecifier => item instanceof ASTNode.StructSpecifier),\n anchor,\n hoistAnchor\n );\n continue;\n }\n }\n const needsHoist = type.location.start.index > anchor;\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= type.location.start.index && item.location.end.index >= type.location.end.index\n );\n if (\n needsHoist &&\n (!this._isContextIndependent(type) ||\n this._hasDeclarationContextBarrier(hoistAnchor, macro?.location.end.index ?? type.location.end.index, true))\n ) {\n this._unsupportedForwardDeclaration(type);\n }\n const dependencyAnchor = needsHoist ? hoistAnchor : type.location.start.index;\n for (const property of type.propList) {\n this._prepareForwardTypes(property.typeInfo.structDeclarations, dependencyAnchor);\n }\n if (needsHoist) this._forwardStructIndices.set(type, hoistAnchor);\n }\n }\n\n private _isContextIndependent(node: TreeNode): boolean {\n if (\n node instanceof ASTNode.VariableIdentifier ||\n node instanceof ASTNode.MacroCallSymbol ||\n node instanceof ASTNode.MacroCallFunction\n )\n return false;\n if (node instanceof ASTNode.TypeSpecifier && node.isCustom && !node.structDeclarations.length) return false;\n return node.children.every((child) =>\n child instanceof TreeNode\n ? this._isContextIndependent(child)\n : child.type < Keyword.MACRO_IF || child.type > Keyword.MACRO_DEFINE_PARAMS\n );\n }\n\n private _hasDeclarationContextBarrier(start: number, end: number, includeMacros: boolean): boolean {\n const visit = (node: TreeNode, inFunction = false): boolean => {\n if (node.location.end.index <= start || node.location.start.index >= end) return false;\n if (node instanceof ASTNode.PrecisionSpecifier && !inFunction) return true;\n if (includeMacros && node instanceof ASTNode.MacroDefine) return true;\n inFunction ||= node instanceof ASTNode.FunctionDefinition;\n return node.children.some((child) =>\n child instanceof TreeNode\n ? visit(child, inFunction)\n : includeMacros &&\n child.location.start.index > start &&\n child.location.start.index < end &&\n (child.type === Keyword.MACRO_UNDEF || child.type === Keyword.MACRO_DEFINE_EXPRESSION)\n );\n };\n return visit(this._sourceIR!.program);\n }\n\n private _unsupportedForwardDeclaration(node: TreeNode): never {\n const ir = this._sourceIR!;\n throw mapExpandedShaderError(\n new GSError(\n GSErrorName.CompilationError,\n \"Inherited declarations require incompatible forward signatures or depend on a later macro or precision context.\",\n node.location,\n ir.source,\n undefined,\n \"UnsupportedForwardDeclaration\"\n ),\n ir.source,\n ir.sourceMap\n );\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text: this._declaration(text, node), index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: readonly ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = this.context;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbol of context._referencedGlobalSymbols) {\n if (symbol.isInMacroBranch) referencedGlobalMacroASTs.push(symbol.astNode!);\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n const result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else if (child instanceof BaseToken && child.type === Keyword.MACRO_DEFINE_EXPRESSION) {\n // Legacy opaque `#define` — its lexeme is the complete directive text,\n // newlines included; emit verbatim.\n text = child.lexeme;\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n const text =\n this.context._referencedGlobalMacroASTs.indexOf(child) !== -1\n ? this.getCachedCode(child)\n : this._forwardFunctionDeclarations.get(child);\n if (text !== undefined) {\n out.push({\n text: this._declaration(text, child),\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n if (this._forwardStructIndices.has(child)) {\n const text = this._declaration(\"\", child);\n if (text) out.push({ text, index: child.location.start.index });\n continue;\n }\n const context = this.context;\n const stage = context.stage;\n if (\n context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.hasStructRole(child, ShaderStructRole.Attribute) ||\n context.hasStructRole(child, ShaderStructRole.Varying)\n : context.hasStructRole(child, ShaderStructRole.Varying) ||\n context.hasStructRole(child, ShaderStructRole.Mrt))\n ) {\n out.push({\n text: this._declaration(this.getCachedCode(child) ?? \"\", child),\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (this.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: this._declaration(\n this._forwardVariableIndices.has(variableDeclaration)\n ? \"\"\n : `${this.getCachedCode(variableDeclaration) ?? \"\"};`,\n variableDeclaration\n ),\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n\n /** Ownership of the declaration currently generating dependencies. @internal */\n protected get currentDeclarationOwner(): DeferredDeclarationOwnership | undefined {\n return this._currentDeclaration && this._declarationOwners.get(this._currentDeclaration);\n }\n\n private _referenceDeclaration(from: number, node: TreeNode): void {\n const owner = this._declarationOwners.get(node);\n if (!owner) return;\n let targets = this._declarationReferences.get(from);\n if (!targets) this._declarationReferences.set(from, (targets = new Set()));\n targets.add(owner.id);\n }\n\n private _emitDeclarationReferences(out: ICodeSegment[]): void {\n for (const [from, targets] of this._declarationReferences) {\n for (const to of targets) out.push({ text: ShaderInstructionEncoder.reference(from, to), index: -1 });\n }\n }\n\n private _declaration(text: string, node: TreeNode, activate = true): string {\n return ShaderInstructionEncoder.declaration(text, this._declarationOwners.get(node), activate);\n }\n}\n","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils, ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport { StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { GLESVisitor } from \"./GLESVisitor\";\n\nexport class GLES100Visitor extends GLESVisitor {\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return \"\";\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const context = this.context;\n const directRoot =\n postExpr instanceof ASTNode.PostfixExpression\n ? ParserUtils.unwrapBareIdentifier(postExpr, { allowParens: true })\n : undefined;\n const directSymbols = directRoot?.resolvedValueSymbols() ?? [];\n const unresolvedName =\n postExpr instanceof ASTNode.PostfixExpression ? ParserUtils.extractDirectIdentLexeme(postExpr) : null;\n const directRole = directRoot\n ? directSymbols.length\n ? context.getStructVarRole(directSymbols)\n : unresolvedName\n ? context.getUnresolvedStructVarRole(unresolvedName)\n : undefined\n : undefined;\n if (directRole === ShaderStructRole.Mrt) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n // The parser already validated struct fields (UndeclaredStructMember); a miss here is an\n // already-errored shader, so emit nothing rather than re-report.\n if (!prop) return \"\";\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n const mode = this.context.getFragmentReturnMode(node);\n const terminal = this.context.isTerminalInterfaceReturn(node);\n if (mode === \"mrt\") return terminal ? \"\" : \"return;\";\n if (mode === \"color\") {\n const expression = node.children[1] as ASTNode.Expression;\n const assignment = `gl_FragColor = ${expression.codeGen(this)};`;\n return terminal ? assignment : `{ ${assignment} return; }`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderData } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderBuiltinSemantic } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderEntryPointInfo } from \"@galacean/engine-shader-parser/internal\";\nimport { TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport type { DeferredDeclarationOwnership } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderInstructionEncoder } from \"../ShaderInstructionEncoder\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\nconst V3_GL_FragData = \"GS_glFragData\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private readonly _outputDeclarations = new Map<\n string,\n { text: string; owners: Map<number, DeferredDeclarationOwnership>; unconditional: boolean }\n >();\n private _fragDataArrayRequired = false;\n private readonly _fragDataIndices = new Map<ASTNode.PostfixExpression, number>();\n private readonly _scannedFragmentFunctions = new Set<ShaderEntryPointInfo[\"functions\"][number]>();\n\n override reset(): void {\n super.reset();\n\n this._outputDeclarations.clear();\n this._fragDataArrayRequired = false;\n this._fragDataIndices.clear();\n this._scannedFragmentFunctions.clear();\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (const output of this._outputDeclarations.values()) {\n out.push({\n text: output.unconditional\n ? output.text\n : ShaderInstructionEncoder.sharedDeclaration(output.text, Array.from(output.owners.values())),\n // A source macro block can start at zero and contain the first output use.\n index: -1\n });\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = this.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1 || typeSpecifier.structDependencies.length) {\n // Struct constructors still need the shared type-dependency visitor.\n return super.visitFunctionIdentifier(node);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const context = this.context;\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutput0) {\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentDepth) {\n return \"gl_FragDepth\";\n }\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutputArray) {\n this._registerFragDataArray();\n return V3_GL_FragData;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n if (!this._fragDataArrayRequired) {\n const index = this._fragDataIndices.get(node);\n if (index !== undefined) return this._registerFragDataVariable(index);\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n const mode = this.context.getFragmentReturnMode(node);\n const terminal = this.context.isTerminalInterfaceReturn(node);\n if (mode === \"mrt\") return terminal ? \"\" : \"return;\";\n if (mode === \"color\") {\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n const assignment = `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n return terminal ? assignment : `{ ${assignment} return; }`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable(): void {\n this._registerOutput(V3_GL_FragColor, `out vec4 ${V3_GL_FragColor};`);\n }\n\n private _registerOutput(name: string, text: string): void {\n let output = this._outputDeclarations.get(name);\n if (!output) this._outputDeclarations.set(name, (output = { text, owners: new Map(), unconditional: false }));\n const owner = this.currentDeclarationOwner;\n if (owner) output.owners.set(owner.id, owner);\n else output.unconditional = true;\n }\n\n protected override prepareFragment(\n entryInfo: ShaderEntryPointInfo,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): void {\n const pending = entryInfo.functions.slice();\n while (pending.length) {\n const fn = pending.pop()!;\n if (this._scannedFragmentFunctions.has(fn)) continue;\n this._scannedFragmentFunctions.add(fn);\n this._scanFragmentOutputs(fn.astNode);\n pending.push(...fn.calledFunctions);\n }\n for (const macro of outerGlobalMacroStatements) this._scanFragmentOutputs(macro);\n }\n\n private _scanFragmentOutputs(node: TreeNode): void {\n if (node instanceof ASTNode.PostfixExpression && node.children.length === 4) {\n const base = node.children[0];\n const index = node.children[2];\n if (\n base instanceof TreeNode &&\n index instanceof TreeNode &&\n ParserUtils.unwrapBareIdentifier(base, { allowParens: true })?.builtinSemantic ===\n ShaderBuiltinSemantic.FragmentOutputArray\n ) {\n const value = ParserUtils.constIntegerValue(index);\n if (value === undefined || value < 0) this._fragDataArrayRequired = true;\n else this._fragDataIndices.set(node, value);\n this._scanFragmentOutputs(index);\n return;\n }\n }\n if (\n node instanceof ASTNode.VariableIdentifier &&\n node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutputArray\n ) {\n this._fragDataArrayRequired = true;\n return;\n }\n for (const child of node.children) {\n if (child instanceof TreeNode) this._scanFragmentOutputs(child);\n }\n }\n\n private _registerFragDataArray(): void {\n this._registerOutput(V3_GL_FragData, `layout(location = 0) out vec4 ${V3_GL_FragData}[gl_MaxDrawBuffers];`);\n }\n\n private _registerFragDataVariable(index: number): string {\n const name = `${V3_GL_FragData}${index}`;\n this._registerOutput(name, `layout(location = ${index}) out vec4 ${name};`);\n return name;\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport { Logger, ReturnableObjectPool, ShaderLanguage } from \"@galacean/engine-core\";\nimport {\n GSError,\n GLESShaderInfo,\n type ShaderClueIR,\n type ShaderCoreInfo\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport type { GLESVisitor } from \"./codeGen/GLESVisitor\";\n\n/**\n * Static internal facade for GLES source generation.\n * @internal\n */\nexport class GLESBackend {\n private static readonly _gles100VisitorPool = new ReturnableObjectPool(GLES100Visitor);\n private static readonly _gles300VisitorPool = new ReturnableObjectPool(GLES300Visitor);\n\n private constructor() {}\n\n /**\n * Generates one GLES program with request-owned visitor state.\n * @param ir - Request-owned neutral parser IR consumed read-only.\n * @param coreInfo - Entry and stage-interface facts derived from the same IR.\n * @param target - GLES language version to emit.\n * @returns Generated vertex and fragment source.\n * @internal\n */\n static generate(ir: ShaderClueIR, coreInfo: ShaderCoreInfo, target: ShaderLanguage): IShaderInfo | undefined {\n const glesInfo = new GLESShaderInfo(ir, coreInfo);\n if (glesInfo.mrtOutputIssues.length || glesInfo.invalidMrtReturnLocations.length) {\n Logger.error(\n \"MRT outputs require unique non-negative locations, vec4 members, and returns through an assigned struct variable.\"\n );\n return undefined;\n }\n if (glesInfo.invalidVaryingReturnLocations.length) {\n Logger.error(\"Varying vertex entries must return a struct variable or same-type function result.\");\n return undefined;\n }\n if (glesInfo.structMemberOwnerIssues.length) {\n Logger.error(\"A struct member reference cannot be lowered safely across runtime macro expansion.\");\n return undefined;\n }\n\n return target === ShaderLanguage.GLSLES100\n ? GLESBackend._generateWithPool(GLESBackend._gles100VisitorPool, ir, coreInfo)\n : GLESBackend._generateWithPool(GLESBackend._gles300VisitorPool, ir, coreInfo);\n }\n\n private static _generateWithPool<T extends GLESVisitor>(\n pool: ReturnableObjectPool<T>,\n ir: ShaderClueIR,\n coreInfo: ShaderCoreInfo\n ): IShaderInfo | undefined {\n const visitor = pool.get();\n try {\n return visitor.generate(ir, coreInfo);\n } catch (error) {\n visitor.dispose();\n if (!(error instanceof GSError)) throw error;\n Logger.error(`${error.file ? `${error.file}: ` : \"\"}${error.code ? `${error.code}: ` : \"\"}${error.toString()}`);\n return undefined;\n } finally {\n pool.return(visitor);\n }\n }\n}\n","import { Logger, ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IRenderStates, IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport { Color } from \"@galacean/engine-math\";\nimport {\n GSError,\n ShaderCoreInfo,\n type ParsedShaderPassData,\n type ShaderClueIR,\n type ShaderSourceParseResult\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GLESBackend } from \"./GLESBackend\";\nimport { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\n\nclass ShaderSourceParseError extends Error {\n constructor(readonly errors: readonly Error[]) {\n super(errors.map((error) => error.toString()).join(\"\\n\"));\n this.name = \"ShaderSourceParseError\";\n }\n}\n\n/**\n * Rejects a partial ShaderLab structure when source parsing produced errors.\n * @param result - ShaderLab source-parser result.\n * @returns Complete parsed ShaderLab structure.\n * @throws ShaderSourceParseError when structural source diagnostics exist.\n * @internal\n */\nexport function requireValidShaderSource(result: ShaderSourceParseResult): IShaderSource {\n if (result.errors.length) throw new ShaderSourceParseError(result.errors);\n return result.shaderSource;\n}\n\n/**\n * Generates one backend program from a parser-owned pass without reparsing it.\n * @param parsed - Neutral parser output.\n * @param vertexEntry - Vertex entry name.\n * @param fragmentEntry - Fragment entry name.\n * @param backend - Target GLES language.\n * @param coreInfo - Optional stage facts already derived from this exact parser result.\n * @returns Generated program, or `undefined` when parser or entry admission fails.\n * @internal\n */\nexport function generateParsedShaderPassData(\n parsed: ParsedShaderPassData,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n coreInfo?: ShaderCoreInfo\n): IShaderProgramSource | undefined {\n if (parsed.blockingErrors.length) {\n for (const error of parsed.blockingErrors) Logger.error(error.toString());\n return undefined;\n }\n if (!parsed.ir) return undefined;\n const resolvedCoreInfo = coreInfo ?? ShaderCoreInfo.create(parsed.ir, vertexEntry, fragmentEntry);\n return generateShaderProgram(parsed.ir, resolvedCoreInfo, backend, parsed.preprocessorExpressions);\n}\n\nfunction generateShaderProgram(\n ir: ShaderClueIR,\n coreInfo: ShaderCoreInfo,\n backend: ShaderLanguage,\n preprocessorExpressions: ParsedShaderPassData[\"preprocessorExpressions\"]\n): IShaderProgramSource | undefined {\n if (!coreInfo.vertexEntry.functions.length) {\n Logger.error(`Vertex entry function '${coreInfo.vertexEntry.name}' not found.`);\n return undefined;\n }\n if (!coreInfo.fragmentEntry.functions.length) {\n Logger.error(`Fragment entry function '${coreInfo.fragmentEntry.name}' not found.`);\n return undefined;\n }\n if (coreInfo.vertexEntry.hasDefiniteAmbiguity) {\n Logger.error(`Vertex entry function '${coreInfo.vertexEntry.name}' resolves to multiple declarations.`);\n return undefined;\n }\n if (coreInfo.fragmentEntry.hasDefiniteAmbiguity) {\n Logger.error(`Fragment entry function '${coreInfo.fragmentEntry.name}' resolves to multiple declarations.`);\n return undefined;\n }\n if (coreInfo.roleConflicts.length) {\n Logger.error(\"A shader IO struct cannot serve multiple stage-interface roles.\");\n return undefined;\n }\n const result = GLESBackend.generate(ir, coreInfo, backend);\n if (result) {\n result.vertexShaderInstructions = ShaderInstructionEncoder.parse(result.vertex, preprocessorExpressions);\n result.fragmentShaderInstructions = ShaderInstructionEncoder.parse(result.fragment, preprocessorExpressions);\n result.vertex = ShaderInstructionEncoder.source(result.vertex);\n result.fragment = ShaderInstructionEncoder.source(result.fragment);\n }\n return result;\n}\n\n/**\n * Converts parser-owned render states into JSON-safe precompile data.\n * @param renderStates - Parsed render-state maps.\n * @returns Serializable constant and variable maps.\n * @internal\n */\nexport function serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n} {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return { constantMap, variableMap: renderStates.variableMap };\n}\n\n/**\n * Formats a parser failure with include-source attribution.\n * @param error - Parser failure.\n * @returns User-facing error text.\n * @internal\n */\nexport function formatShaderError(error: Error): string {\n const text = error.toString();\n return error instanceof GSError && error.file ? `${error.file}: ${text}` : text;\n}\n","import { ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IPrecompiledShader } from \"@galacean/engine-design\";\nimport {\n branchAnalysis,\n createValidatedShaderTargetParser,\n normalizeShaderIncludeMap,\n ParserObjectPool,\n parseValidatedShaderPass,\n ShaderCoreInfo,\n ShaderSourceParser,\n type ChunkOutputCache,\n type IncludeMap\n} from \"@galacean/engine-shader-parser/internal/analyzer\";\nimport {\n formatShaderError,\n generateParsedShaderPassData,\n requireValidShaderSource,\n serializeRenderStates\n} from \"./ShaderCompilation\";\n\n/**\n * Offline-only ShaderLab to `.shaderc` compiler with deterministic validation.\n *\n * This class is intentionally excluded from the runtime compiler entry. CLI and bundler adapters import\n * it from `@galacean/engine-shader-compiler/precompile`.\n */\nexport class ShaderPrecompiler {\n private _includeMap: IncludeMap = Object.create(null);\n private readonly _chunkOutputCache: ChunkOutputCache = new Map();\n private readonly _sourceParserObjectPool = new ParserObjectPool();\n private readonly _parserObjectPool = new ParserObjectPool();\n private readonly _validatedParser = createValidatedShaderTargetParser(this._parserObjectPool);\n\n /**\n * Replaces the logical include registry used by offline compilation.\n * @param includeMap - Canonical or normalizable include keys mapped to chunk sources.\n * @throws Error when multiple keys collide after normalization.\n */\n setIncludeMap(includeMap: IncludeMap): void {\n this._includeMap = normalizeShaderIncludeMap(includeMap);\n this._chunkOutputCache.clear();\n }\n\n /**\n * Compiles complete ShaderLab source into a serializable `.shaderc` structure.\n * @param sourceCode - Complete ShaderLab source.\n * @param platformTarget - Target GLES language.\n * @param sourceFile - Optional logical root location used for relative includes and attribution.\n * @returns Serializable precompiled shader.\n * @throws Error when structural parsing, pass validation, or backend generation fails.\n */\n precompile(sourceCode: string, platformTarget: ShaderLanguage, sourceFile?: string): IPrecompiledShader {\n this._chunkOutputCache.clear();\n const shaderSource = requireValidShaderSource(\n ShaderSourceParser.parseStrict(sourceCode, this._sourceParserObjectPool)\n );\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders: shaderSource.subShaders.map((subShader) => ({\n name: subShader.name,\n tags: subShader.tags,\n passes: subShader.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: serializeRenderStates(pass.renderStates)\n };\n }\n\n const parsed = parseValidatedShaderPass(\n pass.contents,\n this._includeMap,\n this._chunkOutputCache,\n sourceFile,\n this._parserObjectPool,\n this._validatedParser,\n pass.contentScopeStarts\n );\n if (parsed.blockingErrors.length) {\n throw new Error(\n [\n `Shader pass \"${shaderSource.name}.${subShader.name}.${pass.name}\" precompile failed:`,\n ...parsed.blockingErrors.map(formatShaderError)\n ].join(\"\\n\")\n );\n }\n const coreInfo = parsed.ir\n ? ShaderCoreInfo.create(\n parsed.ir,\n pass.vertexEntry,\n pass.fragmentEntry,\n branchAnalysis.getDeclarationCoexistence,\n branchAnalysis.getBranchCoverage\n )\n : undefined;\n const program = generateParsedShaderPassData(\n parsed,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n coreInfo\n );\n if (!program) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${subShader.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: serializeRenderStates(pass.renderStates),\n vertexShaderInstructions: program.vertexShaderInstructions,\n fragmentShaderInstructions: program.fragmentShaderInstructions\n };\n })\n }))\n };\n }\n}\n"],"names":["VisitorContext","_lookupSymbol","SymbolInfo","_structRoles","Map","_vertexUnresolvedVariableRoles","_fragmentUnresolvedVariableRoles","_vertexAmbiguousVariableNames","Set","_fragmentAmbiguousVariableNames","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalSymbols","_referencedGlobalMacroASTs","_structVariableRoles","codeCache","fragmentReturnModes","terminalInterfaceReturns","reset","resetAll","clear","length","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_globalSymbolQueries","_passSymbolTable","undefined","getStructRole","declarations","resolvedRole","declaration","role","get","hasStructRole","registerStructTypes","structs","struct","set","registerStructVar","variable","stage","roles","EShaderStage","VERTEX","ambiguous","name","ident","has","existing","delete","add","getUnresolvedStructVarRole","variableName","getStructVarRole","symbols","symbol","VarSymbol","registerFragmentReturn","statement","mode","getFragmentReturnMode","registerTerminalInterfaceReturn","isTerminalInterfaceReturn","referenceAttribute","_referenceProp","lexeme","referenceVarying","referenceMRTProp","referenceGlobal","type","queries","getSymbols","namedSymbols","push","onReferenceGlobal","list","refList","filter","item","onReferenceStructProps","TempArray","array","Array","dispose","CodeGenVisitor","context","cache","node","code","getCachedCode","defaultCodeGen","children","pool","_tmpArrayPool","ret","child","BaseToken","codeGen","result","join","return","visitPostfixExpression","derivationLength","postExpr","prop","directRoot","ParserUtils","unwrapBareIdentifier","allowParens","resolvedValueSymbols","unresolvedName","extractDirectIdentLexeme","ShaderStructRole","Attribute","Varying","identNode","indexNode","visitVariableIdentifier","referenceGlobalSymbolNames","ESymbolType","Any","resolvedSymbols","FnSymbol","referenceFunction","location","start","index","_branch","getLexeme","referenceIndex","branch","FN","visitFunctionCall","call","fnSymbol","fnSymbols","paramList","ASTNode","FunctionCallParameterList","astNodes","paramNodes","finalSymbol","find","candidate","equal","paramInfoList","astNode","protoType","parameterList","params","_","i","parameter","ParameterDeclaration","paramsCode","MacroCallArgBlock","visitMacroCallFunction","isFunctionLikeMacro","aliasesNonBuiltinIdent","arg","AssignmentExpression","variableParam","argNode","macroName","visitStatementList","visitMacroDefine","paramsLexeme","isFunction","paramsToken","valueCode","valueExpression","visitSingleDeclaration","visitGlobalVariableDeclaration","fullType","FullySpecifiedType","typeSpecifier","isCustom","declarator","STRUCT","visitDeclaration","InitDeclaratorList","first","SingleDeclaration","Mrt","visitFunctionParameterList","parameterInfoList","out","MacroParamBlock","visitFunctionHeader","returnType","structDeclarations","visitJumpStatement","cmd","Keyword","RETURN","expr","Expression","returnVar","unwrapNodeByType","NoneTerminal","variable_identifier","returnFnCall","function_call","calledFunction","returnDeclarations","visitFunctionIdentifier","visitTypeSpecifier","visitStructSpecifier","isVaryingStruct","indexOf","isAttributeStruct","isMRTStruct","macroExpressions","map","text","propList","getVaryingProp","getAttributeProp","getMRTProp","sort","a","b","visitFunctionDefinition","fnNode","fnName","terminal","lastStatement","statements","JumpStatement","stageEntry","ReturnableObjectPool","ShaderInstructionEncoder","owner","activate","activation","id","group","sourceScope","sharedDeclaration","owners","reference","from","to","source","replace","parse","glsl","preprocessorExpressions","instructions","pos","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","_findLogicalLineEnd","line","substring","charCodeAt","kind","charAt","fields","slice","split","Number","ShaderPreprocessorDirective","Declaration","Reference","ids","match","_DIRECTIVE_RE","exec","keyword","rest","trim","idx","IfDef","IfNdef","cond","_parseCondition","_pushConditionInstruction","stack","prevIdx","elseIdx","Else","_backfillJump","endifIdx","Endif","pop","afterEndif","j","inst","funcMatch","_FUNC_MACRO_RE","p","DefineFunc","_stripLineComment","separator","_findInlineWhitespace","Define","DefineVal","Undef","t","m","IfCmp","op","v","IfExpr","expression","parsePreprocessorExpression","error","certain","hasExpandableIdentifier","e","Error","message","evaluationError","compact","toPreprocessorCondition","condition","c","nl","beforeBreak","charCode","last","directive","Text","OwnedText","every","target","onlyPlaceholder","s","trimEnd","GLESVisitor","_globalCodeArray","_forwardFunctionDeclarations","_forwardStructIndices","_structCodeSegments","_forwardVariableIndices","_variableCodeSegments","_declarationOwners","_deferredPrototypes","_declarationReferences","_outerMacroDeclarations","globalCodeArray","_currentDeclaration","getOtherGlobal","data","globalPrecisions","precision","generate","ir","coreInfo","program","shaderData","symbolTable","outerGlobalMacroDeclarations","io","structVariableRoles","forEach","vertexStructVariableRoles","fragmentStructVariableRoles","FRAGMENT","_sourceIR","deferredDeclarationOwnership","size","nextId","nextGroup","Math","max","currentDeclarationOwner","_referenceDeclaration","propDeclarations","props","unsupportedDeferredDeclarations","mapExpandedShaderError","GSError","GSErrorName","CompilationError","sourceMap","vertex","_vertexMain","vertexEntry","fragment","_fragmentMain","fragmentEntry","entryInfo","_preRegisterGlobalMacroRefs","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","_emitDeclarationReferences","globalCode","outerGlobalMacroStatements","prepareFragment","functions","VEC4","some","_registerFragmentReturns","macros","macro","_walkMacroDefineTokens","MacroDefine","TreeNode","previous","FunctionDefinition","sm","codeGenResult","VAR","isInMacroBranch","segment","_declaration","StructSpecifier","VariableDeclaration","_getForwardDeclarations","values","definition","candidates","replacement","nextOwner","prototype","anchor","_isContextIndependent","_hasDeclarationContextBarrier","_unsupportedForwardDeclaration","outer","end","typeAnchor","_prepareForwardTypes","typeInfo","compatible","_canBranchesOverlap","branchSignature","preceding","canInheritanceBranchesCover","signature","_getForwardSignature","outerMacro","tokens","visit","IN","parameters","left","right","getLexicalDeclarationCoexistence","isUniform","dataType","min","Infinity","includes","oldMacro","splice","guarded","entry","segments","parent","GlobalDeclaration","final","FunctionIdentifier","FunctionCallGeneric","structDependencies","types","hoistAnchor","needsHoist","dependencyAnchor","property","VariableIdentifier","MacroCallSymbol","MacroCallFunction","TypeSpecifier","MACRO_IF","MACRO_DEFINE_PARAMS","includeMacros","inFunction","PrecisionSpecifier","MACRO_UNDEF","MACRO_DEFINE_EXPRESSION","structNodes","referencedGlobalMacroASTs","GlobalMacroIfStatement","_visitGlobalMacroIfStatement","VariableDeclarationList","variableDeclarations","variableDeclaration","targets","GLES100Visitor","typeLexeme","PostfixExpression","directSymbols","directRole","propReferenced","mrtIndex","assignment","V3_GL_FragColor","V3_GL_FragData","GLES300Visitor","_outputDeclarations","_fragDataArrayRequired","_fragDataIndices","_scannedFragmentFunctions","output","unconditional","qualifier","builtinSemantic","ShaderBuiltinSemantic","FragmentOutput0","_registerFragColorVariable","FragmentDepth","FragmentOutputArray","_registerFragDataArray","_registerFragDataVariable","_registerOutput","pending","fn","_scanFragmentOutputs","calledFunctions","base","value","constIntegerValue","GLESBackend","glesInfo","GLESShaderInfo","mrtOutputIssues","invalidMrtReturnLocations","Logger","invalidVaryingReturnLocations","structMemberOwnerIssues","ShaderLanguage","GLSLES100","_generateWithPool","_gles100VisitorPool","_gles300VisitorPool","visitor","file","toString","ShaderSourceParseError","errors","requireValidShaderSource","shaderSource","generateParsedShaderPassData","parsed","backend","blockingErrors","resolvedCoreInfo","ShaderCoreInfo","generateShaderProgram","hasDefiniteAmbiguity","roleConflicts","vertexShaderInstructions","fragmentShaderInstructions","serializeRenderStates","renderStates","constantMap","key","Color","r","g","variableMap","formatShaderError","ShaderPrecompiler","_includeMap","_chunkOutputCache","_sourceParserObjectPool","ParserObjectPool","_parserObjectPool","_validatedParser","createValidatedShaderTargetParser","setIncludeMap","includeMap","normalizeShaderIncludeMap","precompile","sourceCode","platformTarget","sourceFile","ShaderSourceParser","parseStrict","subShaders","subShader","tags","passes","pass","isUsePass","parseValidatedShaderPass","contents","contentScopeStarts","branchAnalysis","getDeclarationCoexistence","getBranchCoverage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"precompile.main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/codeGen/NameAllocator.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/ShaderInstructionEncoder.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/GLESBackend.ts","../src/ShaderCompilation.ts","../src/ShaderPrecompiler.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/**\n * Words that ShaderLab accepts as identifiers but GLSL ES 1.00 or 3.00 reserves. GLES100 output also runs as\n * GLSL ES 3.00 on WebGL2, so both versions apply to every target.\n */\nconst reservedWords = new Set(\n (\n \"asm attribute active atomic_uint case cast centroid class coherent common default double dvec2 dvec3 dvec4 \" +\n \"enum extern external filter fixed flat fvec2 fvec3 fvec4 goto half hvec2 hvec3 hvec4 iimage1D iimage1DArray \" +\n \"iimage2D iimage2DArray iimage3D iimageBuffer iimageCube image1D image1DArray image2D image2DArray image3D \" +\n \"imageBuffer imageCube inline input interface isampler1D isampler1DArray isampler2D isampler2DArray \" +\n \"isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube layout long mat2x2 \" +\n \"mat2x3 mat2x4 mat3x2 mat3x3 mat3x4 mat4x2 mat4x3 mat4x4 namespace noinline noperspective output packed \" +\n \"partition patch public readonly resource restrict sample sampler1D sampler1DArray sampler1DArrayShadow \" +\n \"sampler1DShadow sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect \" +\n \"sampler2DRectShadow sampler2DShadow sampler3D sampler3DRect samplerBuffer samplerCubeShadow short sizeof \" +\n \"smooth static subroutine superp switch template this typedef uimage1D uimage1DArray uimage2D uimage2DArray \" +\n \"uimage3D uimageBuffer uimageCube uint union unsigned usampler1D usampler1DArray usampler2D usampler2DArray \" +\n \"usampler2DMS usampler2DMSArray usampler2DRect usampler3D usamplerBuffer usamplerCube using uvec2 uvec3 uvec4 \" +\n \"varying volatile writeonly\"\n ).split(\" \")\n);\n\n/**\n * Tests whether GLSL ES rejects an identifier that ShaderLab accepts.\n * @param name - Source identifier\n * @returns Whether the identifier uses a reserved word or namespace\n * @internal\n */\nexport function isUnsafeGLSLIdentifier(name: string): boolean {\n return reservedWords.has(name) || name.startsWith(\"gl_\") || name.includes(\"__\");\n}\n\n/**\n * Allocates generated identifiers that avoid source identifiers and each other.\n * @internal\n */\nexport class NameAllocator {\n private readonly _used = new Set<string>();\n private readonly _names = new Map<unknown, string>();\n\n /**\n * Reserves a source identifier so that generated names never shadow it.\n * @param name - Source identifier\n */\n reserve(name: string): void {\n this._used.add(name);\n }\n\n /**\n * Keeps a source identifier when GLSL accepts it, otherwise assigns a legal name to its identity.\n * @param key - Source declaration or namespace identity\n * @param name - Source identifier\n * @returns Identifier used by the declaration and its references\n */\n sourceName(key: unknown, name: string): string {\n if (!isUnsafeGLSLIdentifier(name)) return name;\n return this.allocate(key, name.startsWith(\"gl_\") ? `user_${name}` : `${name}_`);\n }\n\n /**\n * Returns the same identifier for every request with the same key.\n * @param key - Identity of the generated declaration, independent of its spelling\n * @param preferred - Readable base name. Repeated underscores collapse to one, because WebGL rejects `__`\n * @returns An identifier that differs from every reserved and previously allocated name\n */\n allocate(key: unknown, preferred: string): string {\n let name = this._names.get(key);\n if (name === undefined) {\n const base = preferred.replace(/_{2,}/g, \"_\");\n const separator = base.endsWith(\"_\") ? \"\" : \"_\";\n name = base;\n for (let suffix = 1; this._used.has(name); suffix++) name = `${base}${separator}${suffix}`;\n this._used.add(name);\n this._names.set(key, name);\n }\n return name;\n }\n\n /** Releases all reservations and allocations between compilation requests. */\n reset(): void {\n this._used.clear();\n this._names.clear();\n }\n}\n","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { SymbolTable } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType, SymbolInfo, VarSymbol } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole, StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { NameAllocator } from \"./NameAllocator\";\n\n/** @internal */\nexport class VisitorContext {\n readonly names = new NameAllocator();\n private readonly _lookupSymbol = new SymbolInfo(\"\", null);\n private readonly _structRoles = new Map<ASTNode.StructSpecifier, ShaderStructRole>();\n private readonly _vertexUnresolvedVariableRoles = new Map<string, ShaderStructRole>();\n private readonly _fragmentUnresolvedVariableRoles = new Map<string, ShaderStructRole>();\n private readonly _vertexAmbiguousVariableNames = new Set<string>();\n private readonly _fragmentAmbiguousVariableNames = new Set<string>();\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n readonly _referencedGlobalSymbols = new Set<SymbolInfo>();\n private _globalSymbolQueries: Record<string, Partial<Record<ESymbolType, SymbolInfo[]>>>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n private readonly _structVariableRoles = new Map<VarSymbol, ShaderStructRole>();\n\n _passSymbolTable?: SymbolTable<SymbolInfo>;\n /** Receives every global use, including uses of declarations already discovered. */\n onReferenceGlobal?: (symbols: readonly SymbolInfo[]) => void;\n /** Receives interface uses so generated fields retain their declaration dependencies. */\n onReferenceStructProps?: (props: readonly StructProp[]) => void;\n readonly codeCache = new Map<TreeNode, string>();\n\n constructor() {\n this.reset();\n }\n\n reset(resetAll = true) {\n this.codeCache.clear();\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n this._structRoles.clear();\n this._vertexUnresolvedVariableRoles.clear();\n this._fragmentUnresolvedVariableRoles.clear();\n this._vertexAmbiguousVariableNames.clear();\n this._fragmentAmbiguousVariableNames.clear();\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalSymbols.clear();\n this._globalSymbolQueries = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n if (resetAll) {\n this._structVariableRoles.clear();\n this._passSymbolTable = undefined;\n }\n }\n\n /**\n * Finds the shared interface role of custom-struct declaration candidates.\n * @param declarations - Exact parser struct identities resolved at one type occurrence.\n * @returns Interface role, or `undefined` when the type is not an unambiguous interface struct.\n */\n getStructRole(declarations: readonly ASTNode.StructSpecifier[]): ShaderStructRole | undefined {\n let resolvedRole: ShaderStructRole | undefined;\n for (const declaration of declarations) {\n const role = this._structRoles.get(declaration);\n if (!role || (resolvedRole && resolvedRole !== role)) return;\n resolvedRole = role;\n }\n return resolvedRole;\n }\n\n /**\n * Tests the exact interface role of one struct declaration.\n * @param declaration - Parser struct identity.\n * @param role - Expected interface role.\n * @returns Whether the declaration owns that role.\n */\n hasStructRole(declaration: ASTNode.StructSpecifier, role: ShaderStructRole): boolean {\n return this._structRoles.get(declaration) === role;\n }\n\n /**\n * Registers stage-interface struct types for constant-time role lookup.\n * @param role - Interface role shared by the supplied structs.\n * @param structs - Struct declarations derived from parser IR.\n * @internal\n */\n registerStructTypes(role: ShaderStructRole, structs: readonly ASTNode.StructSpecifier[]): void {\n for (const struct of structs) {\n this._structRoles.set(struct, role);\n }\n }\n\n /**\n * Registers a resolved variable that holds an interface struct.\n * @param variable - Parser symbol identity for the declaration.\n * @param role - Struct interface role.\n * @param stage - Optional stage from whose entry the variable is reachable. Omit when only exact\n * symbol lookup is required.\n */\n registerStructVar(variable: VarSymbol, role: ShaderStructRole, stage?: EShaderStage): void {\n this._structVariableRoles.set(variable, role);\n if (stage === undefined) return;\n const roles =\n stage === EShaderStage.VERTEX ? this._vertexUnresolvedVariableRoles : this._fragmentUnresolvedVariableRoles;\n const ambiguous =\n stage === EShaderStage.VERTEX ? this._vertexAmbiguousVariableNames : this._fragmentAmbiguousVariableNames;\n const name = variable.ident;\n if (ambiguous.has(name)) return;\n const existing = roles.get(name);\n if (existing && existing !== role) {\n roles.delete(name);\n ambiguous.add(name);\n } else {\n roles.set(name, role);\n }\n }\n\n /**\n * Finds an interface role for a global macro value that has no lexical symbol identity.\n * @param variableName - Bare variable name in the macro replacement AST.\n * @returns A role only when every stage-reachable declaration with that name agrees.\n */\n getUnresolvedStructVarRole(variableName: string): ShaderStructRole | undefined {\n const roles =\n this.stage === EShaderStage.VERTEX ? this._vertexUnresolvedVariableRoles : this._fragmentUnresolvedVariableRoles;\n const ambiguous =\n this.stage === EShaderStage.VERTEX ? this._vertexAmbiguousVariableNames : this._fragmentAmbiguousVariableNames;\n return ambiguous.has(variableName) ? undefined : roles.get(variableName);\n }\n\n /**\n * Finds the shared interface role of branch-visible variable candidates.\n * @param symbols - Exact parser symbols resolved at one reference.\n * @returns Interface role, or `undefined` when the reference is not an unambiguous interface value.\n */\n getStructVarRole(symbols: readonly SymbolInfo[]): ShaderStructRole | undefined {\n let resolvedRole: ShaderStructRole | undefined;\n for (const symbol of symbols) {\n if (!(symbol instanceof VarSymbol)) return;\n const role = this._structVariableRoles.get(symbol);\n if (!role || (resolvedRole && resolvedRole !== role)) return;\n resolvedRole = role;\n }\n return resolvedRole;\n }\n\n referenceAttribute(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.attributeList, this._referencedAttributeList);\n }\n\n referenceVarying(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.varyingList, this._referencedVaryingList);\n }\n\n referenceMRTProp(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.mrtList, this._referencedMRTList);\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n const queries = (this._globalSymbolQueries[ident] ??= Object.create(null));\n let symbols = queries[type];\n if (!symbols) {\n this._lookupSymbol.set(ident, type);\n symbols = queries[type] = this._passSymbolTable!.getSymbols(this._lookupSymbol, true, []);\n const namedSymbols = (this._referencedGlobals[ident] ??= []);\n for (const symbol of symbols) {\n if (!this._referencedGlobalSymbols.has(symbol)) {\n this._referencedGlobalSymbols.add(symbol);\n namedSymbols.push(symbol);\n }\n }\n }\n // Repeated uses still establish edges from each declaration's owner.\n this.onReferenceGlobal?.(symbols);\n }\n\n // Track which IO props are actually referenced (drives in/out emission). A missing member is no\n // longer flagged here — that's the parser's struct-field check (UndeclaredStructMember).\n private _referenceProp(name: string, list: StructProp[], refList: Record<string, StructProp[]>): void {\n if (!refList[name]) refList[name] = list.filter((item) => item.ident.lexeme === name);\n this.onReferenceStructProps?.(refList[name]);\n }\n}\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType, FnSymbol } from \"@galacean/engine-shader-parser/internal\";\nimport { NodeChild, StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport type { BranchSignature, ICodeGenVisitor } from \"@galacean/engine-shader-parser/internal\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ReturnableObjectPool } from \"@galacean/engine-core\";\nimport { TempArray } from \"../TempArray\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor implements ICodeGenVisitor {\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string | null;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n protected readonly context = new VisitorContext();\n\n cache(node: TreeNode, code: string): string {\n this.context.codeCache.set(node, code);\n return code;\n }\n\n getCachedCode(node: TreeNode): string | undefined {\n return this.context.codeCache.get(node);\n }\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n const ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n // Legacy opaque `#define` lexemes carry the directive verbatim; expression-style defines use the AST path\n ret.array.push(this.tokenLexeme(child));\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n const result = ret.array.join(\" \");\n ret.dispose();\n pool.return(ret);\n return result;\n }\n\n /**\n * Spells a source token in the generated code.\n * @param token - Source token\n * @returns Generated text for the token\n */\n protected tokenLexeme(token: BaseToken): string {\n return token.lexeme;\n }\n\n protected interfaceMemberName(name: string): string {\n return name;\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = this.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n // Direct variables use parser symbol identity so lexical shadowing cannot inherit an IO role\n // from a same-named declaration. Macro-expanded identifiers can lack a resolved symbol, so\n // only that zero-symbol path consults the current stage's unambiguous name-to-role map.\n let role: ShaderStructRole | undefined;\n const directRoot = ParserUtils.unwrapBareIdentifier(postExpr, { allowParens: true });\n if (directRoot) {\n const symbols = directRoot.resolvedValueSymbols();\n const unresolvedName = ParserUtils.extractDirectIdentLexeme(postExpr);\n role = symbols.length\n ? context.getStructVarRole(symbols)\n : unresolvedName\n ? context.getUnresolvedStructVarRole(unresolvedName)\n : undefined;\n }\n\n if (!directRoot) role = context.getStructRole(node.resolvedMemberOwners);\n\n if (role) {\n if (role === ShaderStructRole.Attribute) context.referenceAttribute(prop);\n else if (role === ShaderStructRole.Varying) context.referenceVarying(prop);\n else context.referenceMRTProp(prop);\n }\n\n return `${postExpr.codeGen(this)}.${role ? this.interfaceMemberName(prop.lexeme) : prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n return `${identNode.codeGen(this)}[${indexNode.codeGen(this)}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (const name of node.referenceGlobalSymbolNames) {\n this.context.referenceGlobal(name, ESymbolType.Any);\n }\n for (const symbol of node.resolvedSymbols()) {\n if (symbol instanceof FnSymbol) this.referenceFunction(symbol, node.location.start.index, node._branch);\n }\n\n return node.getLexeme(this);\n }\n\n protected referenceFunction(symbol: FnSymbol, referenceIndex: number, branch: BranchSignature): void {\n void referenceIndex;\n void branch;\n this.context.referenceGlobal(symbol.ident, ESymbolType.FN);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n for (const symbol of call.fnSymbols?.length ? call.fnSymbols : [call.fnSymbol]) {\n this.referenceFunction(symbol, node.location.start.index, node._branch);\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const params = astNodes;\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const argNode = params[i];\n const code = argNode.codeGen(this);\n\n if (argNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n /**\n * Code-generate a `#define` macro parsed as expression AST. Produces a `#define`\n * directive whose value retains ordinary expression and member-access semantics.\n */\n visitMacroDefine(node: ASTNode.MacroDefine): string {\n // For function-like macros, preserve the original `(params)` lexeme verbatim —\n // the parameter list is user-authored text that shouldn't be canonicalized.\n let paramsLexeme = \"\";\n if (node.isFunction) {\n const paramsToken = node.children[2];\n if (paramsToken instanceof BaseToken) paramsLexeme = paramsToken.lexeme;\n }\n const valueCode = node.valueExpression ? node.valueExpression.codeGen(this) : \"\";\n // Newlines around the directive keep `#` at the start of its physical line per\n // GLSL ES 3.0 §3.4, regardless of how surrounding tokens are joined.\n return `\\n#define ${node.macroName}${paramsLexeme}${valueCode ? \" \" + valueCode : \"\"}\\n`;\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n const context = this.context;\n // Global interface variables are mutable shader values, not material bindings.\n if (context.getStructVarRole([node.declarator.symbol])) {\n return this.defaultCodeGen(children);\n }\n context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitTypeSpecifier(node: ASTNode.TypeSpecifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n return this.defaultCodeGen(fnNode.children);\n }\n}\n","import type { Condition, PreprocessorExpressionParseResult, ShaderInstruction } from \"@galacean/engine-design\";\nimport { ShaderPreprocessorDirective } from \"@galacean/engine-core\";\nimport { parsePreprocessorExpression, toPreprocessorCondition } from \"@galacean/engine-shader-parser/internal\";\nimport type { DeferredDeclarationOwnership } from \"@galacean/engine-shader-parser/internal\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n /**\n * Marks compiler-owned text without placing parser objects in the instruction stream.\n * @param text - Declaration or derived declaration text.\n * @param owner - Neutral declaration identity, if runtime selection is required.\n * @param activate - Whether this is the declaration's original source position.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static declaration(text: string, owner?: DeferredDeclarationOwnership, activate = true): string {\n if (!owner) return text;\n const activation = activate ? `\\0D${owner.id},${owner.group},${owner.sourceScope}\\0\\n` : \"\";\n return text ? `${activation}\\0T${owner.id}\\0\\n${text}\\n\\0E\\0\\n` : activation;\n }\n\n /**\n * Marks derived text shared by any selected, reachable declaration without activating an owner.\n * @param text - Shared derived declaration text.\n * @param owners - Declarations that require the text; an empty list never retains it.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static sharedDeclaration(text: string, owners: readonly DeferredDeclarationOwnership[]): string {\n return text ? `\\0T${owners.map((owner) => owner.id).join(\",\")}\\0\\n${text}\\n\\0E\\0\\n` : \"\";\n }\n\n /**\n * Records a declaration dependency for variant-time reachability after ownership selection.\n * @param from - Referencing declaration identity, or zero for a stage root.\n * @param to - Referenced declaration identity.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static reference(from: number, to: number): string {\n return `\\0R${from},${to}\\0\\n`;\n }\n\n /**\n * Removes private emission markers from the public source view after instruction encoding.\n * @param source - Encoded intermediate stage source.\n * @returns GLSL source without compiler metadata.\n * @internal\n */\n static source(source: string): string {\n return source.indexOf(\"\\0\") < 0 ? source : source.replace(/\\0[^\\0]*\\0\\n?/g, \"\");\n }\n\n /**\n * Encodes generated GLSL directives into runtime-selectable instructions.\n * @param glsl - Generated stage source.\n * @param preprocessorExpressions - Parser-owned expression trees keyed by logical directive text.\n * @returns Runtime shader instruction stream.\n * @throws Error when a conditional directive is malformed or has a deterministic evaluation failure.\n * @internal\n */\n static parse(\n glsl: string,\n preprocessorExpressions?: ReadonlyMap<string, PreprocessorExpressionParseResult>\n ): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n let owners: number[] | undefined;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length, owners);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart, owners);\n }\n\n const lineEnd = ShaderInstructionEncoder._findLogicalLineEnd(glsl, directiveStart, length);\n const line = glsl.substring(directiveStart, lineEnd).replace(/\\\\(?:\\r\\n|\\n|\\r)/g, \"\");\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n if (line.charCodeAt(0) === 0) {\n const kind = line.charAt(1);\n if (kind === \"D\") {\n const fields = line.slice(2, -1).split(\",\").map(Number);\n instructions.push([ShaderPreprocessorDirective.Declaration, fields[0], fields[1], fields[2]]);\n } else if (kind === \"R\") {\n const fields = line.slice(2, -1).split(\",\").map(Number);\n instructions.push([ShaderPreprocessorDirective.Reference, fields[0], fields[1]]);\n } else {\n const ids = line.slice(2, -1);\n owners = kind === \"T\" ? (ids ? ids.split(\",\").map(Number) : []) : undefined;\n }\n continue;\n }\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const text = lineEnd < length ? line + \"\\n\" : line;\n ShaderInstructionEncoder._pushText(instructions, text, 0, text.length, owners);\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest, preprocessorExpressions);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest, preprocessorExpressions);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const separator = ShaderInstructionEncoder._findInlineWhitespace(rest);\n if (separator === rest.length) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, separator),\n ShaderInstructionEncoder._stripLineComment(rest.substring(separator + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _parseCondition(\n expression: string,\n preprocessorExpressions?: ReadonlyMap<string, PreprocessorExpressionParseResult>\n ): Condition {\n const result = preprocessorExpressions?.get(expression) ?? parsePreprocessorExpression(expression);\n if (\"error\" in result) {\n if (!result.error.certain && result.hasExpandableIdentifier) return { t: \"deferred\", e: expression };\n throw new Error(result.error.message);\n }\n if (result.evaluationError) throw new Error(result.evaluationError);\n const compact = toPreprocessorCondition(result.condition);\n if (compact && !result.hasExpandableIdentifier) return compact;\n return result.hasExpandableIdentifier ? { t: \"deferred\", e: expression } : result.condition;\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && (source.charCodeAt(j) === 35 /* '#' */ || source.charCodeAt(j) === 0)) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _findLogicalLineEnd(source: string, start: number, length: number): number {\n let lineEnd = source.indexOf(\"\\n\", start);\n while (lineEnd !== -1) {\n const beforeBreak = source.charCodeAt(lineEnd - 1) === 13 ? lineEnd - 2 : lineEnd - 1;\n if (beforeBreak < start || source.charCodeAt(beforeBreak) !== 92) return lineEnd;\n lineEnd = source.indexOf(\"\\n\", lineEnd + 1);\n }\n return length;\n }\n\n private static _findInlineWhitespace(source: string): number {\n let index = 0;\n while (index < source.length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 32 /* space */ || charCode === 9 /* tab */) break;\n index++;\n }\n return index;\n }\n\n private static _pushText(\n instructions: ShaderInstruction[],\n source: string,\n from: number,\n to: number,\n owners?: readonly number[]\n ): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const directive = owners === undefined ? ShaderPreprocessorDirective.Text : ShaderPreprocessorDirective.OwnedText;\n if (\n last &&\n last[0] === directive &&\n (owners === undefined ||\n (last.length === owners.length + 2 && owners.every((owner, index) => last[index + 2] === owner)))\n ) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push(\n owners === undefined\n ? [directive, source.substring(from, to)]\n : [directive, source.substring(from, to), ...owners]\n );\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport type { IPoolElement } from \"@galacean/engine-core\";\nimport { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { Keyword } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { NodeChild } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderData } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType } from \"@galacean/engine-shader-parser/internal\";\nimport {\n FnSymbol,\n StructSymbol,\n VarSymbol,\n canInheritanceBranchesCover,\n getLexicalDeclarationCoexistence\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GSError, GSErrorName, mapExpandedShaderError } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport type {\n BranchSignature,\n StructProp,\n ShaderClueIR,\n ShaderCoreInfo,\n ShaderEntryPointInfo,\n DeferredDeclarationOwnership\n} from \"@galacean/engine-shader-parser/internal\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { isUnsafeGLSLIdentifier } from \"./NameAllocator\";\nimport { ICodeSegment } from \"./types\";\nimport type { ShaderBackend } from \"../ShaderBackend\";\nimport { ShaderInstructionEncoder } from \"../ShaderInstructionEncoder\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor implements ShaderBackend, IPoolElement {\n protected readonly supportsArrayStructReturn: boolean = true;\n /** Names of pass-scope declarations, which stage-interface globals must not redeclare. */\n private readonly _globalNames = new Set<string>();\n /** Interface type and variable tokens whose source names GLSL ES rejects. */\n private readonly _escapedDeclarations = new Map<BaseToken, string>();\n private _vertexOutputNames?: Record<string, string>;\n private readonly _fragmentVaryingProps = new Set<StructProp>();\n private readonly _globalInputs = new Map<EShaderStage, VarSymbol[]>();\n private readonly _inputHelperBodies = new Map<TreeNode, string>();\n private readonly _inputHelperGroups = new Map<number, { name: string; fallback: DeferredDeclarationOwnership }>();\n private _globalCodeArray: ICodeSegment[] = [];\n private readonly _forwardFunctionDeclarations = new Map<ASTNode.FunctionDefinition, string>();\n private readonly _forwardStructIndices = new Map<ASTNode.StructSpecifier, number>();\n private readonly _structCodeSegments = new Map<ASTNode.StructSpecifier, ICodeSegment>();\n private readonly _forwardVariableIndices = new Map<ASTNode.VariableDeclaration, number>();\n private readonly _variableCodeSegments = new Map<ASTNode.VariableDeclaration, ICodeSegment>();\n private readonly _declarationOwners = new Map<TreeNode, DeferredDeclarationOwnership>();\n private readonly _deferredPrototypes = new Map<ASTNode.FunctionDefinition, ICodeSegment>();\n private readonly _declarationReferences = new Map<number, Set<number>>();\n private _currentDeclaration?: TreeNode;\n private _sourceIR?: ShaderClueIR;\n private _outerMacroDeclarations: readonly ASTNode.GlobalDeclaration[] = [];\n\n /**\n * Clears pass-local output retained by the pooled visitor.\n */\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n this._forwardFunctionDeclarations.clear();\n this._forwardStructIndices.clear();\n this._structCodeSegments.clear();\n this._forwardVariableIndices.clear();\n this._variableCodeSegments.clear();\n this._deferredPrototypes.clear();\n this._declarationReferences.clear();\n this._inputHelperBodies.clear();\n this._inputHelperGroups.clear();\n this._currentDeclaration = undefined;\n }\n\n /**\n * Releases references retained by an idle visitor when its pool is collected.\n * @internal\n */\n dispose(): void {\n this.context.reset();\n this.context.names.reset();\n this._globalNames.clear();\n this._escapedDeclarations.clear();\n this._vertexOutputNames = undefined;\n this.reset();\n }\n\n /**\n * Emits target-specific declarations that precede generated global code.\n * @param data - Parser-owned shader facts.\n * @param out - Destination code segments.\n */\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const { name, fallback } of this._inputHelperGroups.values()) {\n out.push({\n text:\n ShaderInstructionEncoder.declaration(`void ${name}() {}`, fallback) +\n ShaderInstructionEncoder.reference(0, fallback.id),\n index: -1\n });\n }\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n /**\n * Generates vertex and fragment source from neutral parser facts.\n * @param ir - Request-owned neutral shader IR.\n * @param coreInfo - Entry and stage-interface facts derived from the same IR.\n * @returns Generated vertex and fragment source.\n */\n generate(ir: ShaderClueIR, coreInfo: ShaderCoreInfo): IShaderInfo {\n this.context.reset();\n this.context.names.reset();\n this._globalNames.clear();\n this._escapedDeclarations.clear();\n this._vertexOutputNames = undefined;\n this.reset();\n\n const node = ir.program;\n const shaderData = node.shaderData;\n const context = this.context;\n context._passSymbolTable = shaderData.symbolTable;\n let hasUnsafeIdentifier = false;\n for (const name of ir.source.match(/[A-Za-z_][A-Za-z0-9_]*/g) ?? []) {\n context.names.reserve(name);\n hasUnsafeIdentifier ||= isUnsafeGLSLIdentifier(name);\n }\n shaderData.symbolTable.forEach((symbol) => this._globalNames.add(symbol.ident));\n\n const outerGlobalMacroDeclarations = coreInfo.outerGlobalMacroDeclarations;\n const { io } = coreInfo;\n context.attributeStructs.push(...io.attributeStructs);\n context.attributeList.push(...io.attributeList);\n context.varyingStructs.push(...io.varyingStructs);\n context.varyingList.push(...io.varyingList);\n context.mrtStructs.push(...io.mrtStructs);\n context.mrtList.push(...io.mrtList);\n context.registerStructTypes(ShaderStructRole.Attribute, io.attributeStructs);\n context.registerStructTypes(ShaderStructRole.Varying, io.varyingStructs);\n context.registerStructTypes(ShaderStructRole.Mrt, io.mrtStructs);\n io.structVariableRoles.forEach((role, variable) => context.registerStructVar(variable, role));\n io.vertexStructVariableRoles.forEach((role, variable) => {\n context.registerStructVar(variable, role, EShaderStage.VERTEX);\n });\n io.fragmentStructVariableRoles.forEach((role, variable) => {\n context.registerStructVar(variable, role, EShaderStage.FRAGMENT);\n });\n if (hasUnsafeIdentifier) this._collectEscapedDeclarations(node);\n\n this._globalInputs.clear();\n for (const [stage, variables] of [\n [EShaderStage.VERTEX, io.vertexStructVariableRoles],\n [EShaderStage.FRAGMENT, io.fragmentStructVariableRoles]\n ] as const) {\n const inputRole = stage === EShaderStage.VERTEX ? ShaderStructRole.Attribute : ShaderStructRole.Varying;\n this._globalInputs.set(\n stage,\n Array.from(variables)\n .filter(([variable, role]) => role === inputRole && variable.astNode instanceof ASTNode.VariableDeclaration)\n .map(([variable]) => variable)\n );\n }\n\n this._sourceIR = ir;\n this._outerMacroDeclarations = outerGlobalMacroDeclarations;\n try {\n coreInfo.deferredDeclarationOwnership.forEach((owner, symbol) =>\n this._declarationOwners.set(symbol.astNode!, owner)\n );\n let nextInputOwner = 0;\n for (const owner of this._declarationOwners.values())\n nextInputOwner = Math.max(nextInputOwner, owner.id, owner.group);\n for (const variables of this._globalInputs.values()) {\n for (const variable of variables) {\n if (this._declarationOwners.has(variable.astNode!)) continue;\n const id = ++nextInputOwner;\n this._declarationOwners.set(variable.astNode!, { id, group: id, sourceScope: variable.sourceScope });\n }\n }\n if (this._declarationOwners.size) {\n // `nextInputOwner` already exceeds every owner id and group.\n let nextId = nextInputOwner;\n let nextGroup = nextInputOwner;\n // Reachability follows the selected declaration, including dependencies without an override.\n shaderData.symbolTable.forEach((symbol) => {\n if (symbol.astNode && !this._declarationOwners.has(symbol.astNode)) {\n this._declarationOwners.set(symbol.astNode, {\n id: ++nextId,\n group: ++nextGroup,\n sourceScope: symbol.sourceScope\n });\n }\n });\n context.onReferenceGlobal = (symbols) => {\n const from = this.currentDeclarationOwner?.id ?? 0;\n for (const symbol of symbols) this._referenceDeclaration(from, symbol.astNode!);\n };\n const propDeclarations = new Map();\n for (const struct of [...io.attributeStructs, ...io.varyingStructs, ...io.mrtStructs]) {\n for (const prop of struct.propList) propDeclarations.set(prop, struct);\n }\n context.onReferenceStructProps = (props) => {\n const from = this.currentDeclarationOwner?.id ?? 0;\n for (const prop of props) this._referenceDeclaration(from, propDeclarations.get(prop));\n };\n }\n if (coreInfo.unsupportedDeferredDeclarations.length) {\n throw mapExpandedShaderError(\n new GSError(\n GSErrorName.CompilationError,\n \"Deferred inheritance requires exact signatures and cannot resolve a known partial-coverage conflict.\",\n coreInfo.unsupportedDeferredDeclarations[0].astNode!.location,\n ir.source,\n undefined,\n \"UnsupportedDeferredDeclaration\"\n ),\n ir.source,\n ir.sourceMap\n );\n }\n this._fragmentVaryingProps.clear();\n const fragment = this._fragmentMain(coreInfo.fragmentEntry, shaderData, outerGlobalMacroDeclarations);\n const vertex = this._vertexMain(coreInfo.vertexEntry, shaderData, outerGlobalMacroDeclarations);\n return { vertex, fragment, vertexOutputNames: this._vertexOutputNames };\n } finally {\n this._sourceIR = undefined;\n this._outerMacroDeclarations = [];\n this._globalInputs.clear();\n this._declarationOwners.clear();\n context.onReferenceGlobal = undefined;\n context.onReferenceStructProps = undefined;\n this._fragmentVaryingProps.clear();\n this._globalNames.clear();\n this._escapedDeclarations.clear();\n this._vertexOutputNames = undefined;\n context.reset();\n context.names.reset();\n }\n }\n\n private _vertexMain(\n entryInfo: ShaderEntryPointInfo,\n data: ShaderData,\n outerGlobalMacroDeclarations: readonly ASTNode.GlobalDeclaration[]\n ): string {\n const context = this.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entryInfo.name;\n for (const prop of this._fragmentVaryingProps) context.referenceVarying(prop.ident);\n\n // Attribute/varying structs were collected in ShaderCoreInfo\n\n // Pre-walk global `#define` values so referenced struct properties emit `attribute`/`varying` declarations.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroDeclarations);\n\n const globalCodeArray = this._globalCodeArray;\n context.referenceGlobal(entryInfo.name, ESymbolType.FN);\n\n this._referenceInterfaceDependencies([...context.attributeStructs, ...context.varyingStructs]);\n this._initializeGlobalInputs();\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n this._emitDeclarationReferences(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entryInfo: ShaderEntryPointInfo,\n data: ShaderData,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): string {\n const context = this.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entryInfo.name;\n this.prepareFragment(entryInfo, outerGlobalMacroStatements);\n\n // Struct-variable identities are already populated from ShaderCoreInfo; just pre-walk macro\n // refs so struct codegen sees the references.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroStatements);\n\n const globalCodeArray = this._globalCodeArray;\n context.referenceGlobal(entryInfo.name, ESymbolType.FN);\n\n this._referenceInterfaceDependencies([...context.varyingStructs, ...context.mrtStructs]);\n this._initializeGlobalInputs();\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n this._emitDeclarationReferences(globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n for (const props of Object.values(context._referencedVaryingList)) {\n for (const prop of props) this._fragmentVaryingProps.add(prop);\n }\n context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _referenceInterfaceDependencies(structs: readonly ASTNode.StructSpecifier[]): void {\n for (const struct of structs) {\n this._currentDeclaration = struct;\n for (const prop of struct.propList) {\n for (const dependency of prop.typeInfo.structDeclarations) {\n if (dependency.ident) this.context.referenceGlobal(dependency.ident.lexeme, ESymbolType.STRUCT);\n }\n prop.typeInfo.arraySpecifier?.codeGen(this);\n }\n }\n this._currentDeclaration = undefined;\n }\n\n /**\n * Resolves an interface member's global name, shared by both stages for varyings.\n * @param prop - Interface member\n * @param role - Stage-interface role of the member's structure\n * @returns Generated global identifier\n */\n protected interfaceName(prop: StructProp, role: ShaderStructRole): string {\n const context = this.context;\n const name = prop.ident.lexeme;\n const isOutput = role === ShaderStructRole.Mrt;\n const sameName = (item: StructProp) => item.ident.lexeme === name;\n const conflicts =\n this._globalNames.has(name) ||\n // Vertex attributes and fragment outputs share a stage scope with varyings.\n (!isOutput && (context.attributeList.some(sameName) || context.mrtList.some(sameName)));\n const key = `${isOutput ? \"output\" : \"varying\"}:${name}`;\n const generated = isUnsafeGLSLIdentifier(name)\n ? context.names.sourceName(key, name)\n : conflicts\n ? context.names.allocate(key, name)\n : name;\n if (!isOutput && context.stage === EShaderStage.VERTEX && generated !== name) {\n (this._vertexOutputNames ??= Object.create(null))[name] = generated;\n }\n return generated;\n }\n\n protected override interfaceMemberName(name: string): string {\n return this.context.names.sourceName(`member:${name}`, name);\n }\n\n private _interfaceTypeName(struct: ASTNode.StructSpecifier): string {\n const name = struct.ident!.lexeme;\n return this.context.names.sourceName(`type:${name}`, name);\n }\n\n /**\n * Escapes interface-typed variables whose names GLSL ES reserves.\n * @param name - Source name\n * @param structs - Struct declarations of the variable type\n * @returns The escaped name, or the source name when no escape is necessary\n */\n private _interfaceVariableName(name: string, structs: readonly ASTNode.StructSpecifier[] | undefined): string {\n return structs?.length && this.context.getStructRole(structs)\n ? this.context.names.sourceName(`variable:${name}`, name)\n : name;\n }\n\n private _collectEscapedDeclarations(node: TreeNode): void {\n if (node instanceof ASTNode.TypeSpecifier && this.context.getStructRole(node.structDeclarations)) {\n const token = (node.children[0] as TreeNode).children[0];\n if (token instanceof BaseToken && token.lexeme === node.structDeclarations[0].ident?.lexeme) {\n const name = this._interfaceTypeName(node.structDeclarations[0]);\n if (name !== token.lexeme) this._escapedDeclarations.set(token, name);\n }\n }\n let identifier: BaseToken | undefined;\n let structs: readonly ASTNode.StructSpecifier[] | undefined;\n if (node instanceof ASTNode.ParameterDeclarator) {\n identifier = node.ident;\n structs = node.typeInfo?.structDeclarations;\n } else {\n // Local, global and multi-variable declarations share the parser's `declarator` record.\n const { declarator } = node as {\n declarator?: { identifier?: BaseToken; typeInfo?: { structDeclarations: readonly ASTNode.StructSpecifier[] } };\n };\n identifier = declarator?.identifier;\n structs = declarator?.typeInfo?.structDeclarations;\n }\n if (identifier) {\n const name = this._interfaceVariableName(identifier.lexeme, structs);\n if (name !== identifier.lexeme) this._escapedDeclarations.set(identifier, name);\n }\n for (const child of node.children) {\n if (child instanceof TreeNode) this._collectEscapedDeclarations(child);\n }\n }\n\n protected override tokenLexeme(token: BaseToken): string {\n return this._escapedDeclarations.get(token) ?? token.lexeme;\n }\n\n private _escapedReference(node: ASTNode.VariableIdentifier): string | undefined {\n const token = node.children[0];\n if (!this._escapedDeclarations.size || !(token instanceof BaseToken) || !isUnsafeGLSLIdentifier(token.lexeme)) {\n return undefined;\n }\n const symbols = node.resolvedValueSymbols();\n if (!symbols.length) {\n // Macro values can lack symbols. The stage's unambiguous name-to-role map binds them, as for member access.\n return this.context.getUnresolvedStructVarRole(token.lexeme)\n ? this.context.names.sourceName(`variable:${token.lexeme}`, token.lexeme)\n : undefined;\n }\n let name: string | undefined;\n for (const symbol of symbols) {\n const candidate =\n symbol instanceof VarSymbol\n ? this._interfaceVariableName(token.lexeme, symbol.dataType?.structDeclarations)\n : symbol instanceof StructSymbol && this.context.getStructRole([symbol.astNode])\n ? this._interfaceTypeName(symbol.astNode)\n : token.lexeme;\n // Branch candidates must agree, otherwise the reference keeps its source spelling.\n if (name !== undefined && name !== candidate) return undefined;\n name = candidate;\n }\n return name;\n }\n\n protected abstract fragmentColorOutput(): string;\n protected abstract mrtOutput(prop: StructProp): string;\n\n private _transferName(struct: ASTNode.StructSpecifier, read: boolean): string {\n return this.context.names.allocate(\n `${read ? \"read\" : \"write\"}:${struct.ident!.lexeme}`,\n `${read ? \"read\" : \"write\"}_${struct.ident!.lexeme}`\n );\n }\n\n override visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = this.context;\n const role = context.getStructRole([node]);\n if (!role) return super.visitStructSpecifier(node);\n const typeName = this._interfaceTypeName(node);\n const memberCode = (emit: (prop: StructProp) => string) => {\n const segments: ICodeSegment[] = node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }));\n for (const prop of node.propList) {\n if (!retain(prop)) continue;\n segments.push({ text: emit(prop), index: prop.ident.location.start.index });\n }\n return segments\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n };\n const references =\n role === ShaderStructRole.Attribute\n ? context._referencedAttributeList\n : role === ShaderStructRole.Varying\n ? context._referencedVaryingList\n : context._referencedMRTList;\n const used = (prop: StructProp) => !!references[prop.ident.lexeme]?.includes(prop);\n // Interface members have no array wire form, and GLSL ES 1.00 functions cannot return structures that contain\n // arrays. GLES100 therefore omits array members from interface structures.\n const retain = (prop: StructProp) => this.supportsArrayStructReturn || !this._containsArray(prop);\n const declaration = (prop: StructProp) =>\n `${prop.typeInfo.typeLexeme} ${this.interfaceMemberName(prop.ident.lexeme)}${prop.typeInfo.arraySpecifier?.codeGen(this) ?? \"\"};`;\n let structCode: string;\n const hasRetainedField = node.propList.some(retain);\n if (hasRetainedField && !node.macroExpressions.length) {\n structCode = `struct ${typeName} {\\n${memberCode(declaration)}\\n};`;\n } else {\n const hasFields = context.names.allocate(node, `${typeName}_has_fields`);\n const padding = context.names.allocate(\"empty-interface-member\", \"interface_padding\");\n // A macro configuration can remove every source field; GLSL still requires a nonempty struct.\n structCode = `#undef ${hasFields}\\nstruct ${typeName} {\\n${memberCode((prop) => `${declaration(prop)}\\n#define ${hasFields}\\n`)}\\n#ifndef ${hasFields}\\nfloat ${padding};\\n#endif\\n};\\n#undef ${hasFields}\\n`;\n }\n const declarations = memberCode((prop) =>\n !used(prop)\n ? \"\"\n : role === ShaderStructRole.Attribute\n ? this.getAttributeProp(prop)\n : role === ShaderStructRole.Varying\n ? this.getVaryingProp(prop)\n : (this.getMRTProp(prop) ?? \"\")\n );\n const read =\n role === ShaderStructRole.Attribute ||\n (role === ShaderStructRole.Varying && context.stage === EShaderStage.FRAGMENT);\n const value = context.names.allocate(\"interface-value\", \"interface_value\");\n const assignments = memberCode((prop) => {\n if (!used(prop)) return \"\";\n const wire =\n role === ShaderStructRole.Attribute\n ? prop.ident.lexeme\n : role === ShaderStructRole.Mrt\n ? this.mrtOutput(prop)\n : this.interfaceName(prop, role);\n const member = `${value}.${this.interfaceMemberName(prop.ident.lexeme)}`;\n return read ? `${member} = ${wire};` : `${wire} = ${member};`;\n });\n const transfer = read\n ? `${typeName} ${this._transferName(node, true)}() { ${typeName} ${value};\\n${assignments}\\nreturn ${value}; }`\n : `void ${this._transferName(node, false)}(${typeName} ${value}) {\\n${assignments}\\n}`;\n return `${structCode}\\n${declarations}\\n${transfer}`;\n }\n\n private _containsArray(prop: StructProp, visited = new Set<ASTNode.StructSpecifier>()): boolean {\n if (prop.typeInfo.arraySpecifier) return true;\n for (const struct of prop.typeInfo.structDeclarations) {\n if (visited.has(struct)) continue;\n visited.add(struct);\n if (struct.propList.some((member) => this._containsArray(member, visited))) return true;\n }\n return false;\n }\n\n override defaultCodeGen(children: NodeChild[]): string {\n const parent = children[0] instanceof TreeNode ? children[0].parent : undefined;\n if (parent instanceof ASTNode.EqualityExpression && children.length === 3) {\n const observe = (node: TreeNode) => {\n if (node instanceof ASTNode.VariableIdentifier) {\n for (const symbol of node.resolvedValueSymbols()) {\n if (symbol instanceof VarSymbol)\n for (const struct of symbol.dataType?.structDeclarations ?? []) this._observeWholeStruct(struct);\n }\n }\n if (node instanceof ASTNode.FunctionCallGeneric) {\n const declaration = node.fnSymbol?.astNode;\n if (declaration instanceof ASTNode.StructSpecifier) this._observeWholeStruct(declaration);\n else if (declaration instanceof ASTNode.FunctionDefinition) {\n for (const struct of declaration.protoType.returnType.typeSpecifier.structDeclarations)\n this._observeWholeStruct(struct);\n }\n }\n for (const child of node.children) if (child instanceof TreeNode) observe(child);\n };\n for (const child of children)\n if (child instanceof TreeNode && typeof (child as ASTNode.ExpressionAstNode).type === \"string\") observe(child);\n }\n return super.defaultCodeGen(children);\n }\n\n private _observeWholeStruct(struct: ASTNode.StructSpecifier): void {\n const role = this.context.getStructRole([struct]);\n for (const prop of struct.propList) {\n if (role === ShaderStructRole.Attribute) this.context.referenceAttribute(prop.ident);\n else if (role === ShaderStructRole.Varying) this.context.referenceVarying(prop.ident);\n else if (role === ShaderStructRole.Mrt) this.context.referenceMRTProp(prop.ident);\n }\n }\n\n override visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n if (node.ident.lexeme === \"main\" && this.context.stageEntry === \"main\") {\n return `${node.returnType.codeGen(this)} ${this.context.names.allocate(\"entry-main\", \"entry_main\")}(`;\n }\n return super.visitFunctionHeader(node);\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const call = node.parent;\n if (\n node.lexeme === \"main\" &&\n this.context.stageEntry === \"main\" &&\n call instanceof ASTNode.FunctionCallGeneric &&\n call.fnSymbol instanceof FnSymbol\n ) {\n return this.context.names.allocate(\"entry-main\", \"entry_main\");\n }\n return super.visitFunctionIdentifier(node);\n }\n\n override visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const definition = super.visitFunctionDefinition(fnNode);\n if (fnNode.protoType.ident.lexeme !== this.context.stageEntry) return definition;\n const args: string[] = [];\n const parameters: string[] = [];\n for (const parameter of fnNode.protoType.parameterList ?? []) {\n if (!parameter.ident || !parameter.typeInfo) continue;\n const struct = parameter.typeInfo.structDeclarations[0];\n if (struct) {\n const name = this.context.names.allocate(parameter, `input_${parameter.ident.lexeme}`);\n parameters.push(`${this._interfaceTypeName(struct)} ${name} = ${this._transferName(struct, true)}();`);\n args.push(name);\n }\n }\n const name = fnNode.protoType.ident.lexeme;\n const entryName = name === \"main\" ? this.context.names.allocate(\"entry-main\", \"entry_main\") : name;\n const call = `${entryName}(${args.join(\", \")})`;\n const type = fnNode.protoType.returnType;\n const struct = type.typeSpecifier.structDeclarations[0];\n let statement: string;\n if (struct) {\n statement = `${this._transferName(struct, false)}(${call});`;\n } else if (this.context.stage === EShaderStage.FRAGMENT && type.type === Keyword.VEC4) {\n statement = `${this.fragmentColorOutput()} = ${call};`;\n } else statement = `${call};`;\n const inputs = this._initializeGlobalInputs();\n return `${definition}\\nvoid main() {\\n${inputs.join(\"\\n\")}\\n${parameters.join(\"\\n\")}\\n${statement} }`;\n }\n\n private _initializeGlobalInputs(): string[] {\n const calls = new Set<string>();\n for (const variable of this._globalInputs.get(this.context.stage) ?? []) {\n this.context.referenceGlobal(variable.ident, ESymbolType.VAR);\n const struct = variable.dataType!.structDeclarations[0];\n const owner = this._declarationOwners.get(variable.astNode!)!;\n this._referenceDeclaration(owner.id, struct);\n let group = this._inputHelperGroups.get(owner.group);\n if (!group) {\n let nextId = 0;\n for (const declaration of this._declarationOwners.values()) nextId = Math.max(nextId, declaration.id);\n for (const helper of this._inputHelperGroups.values()) nextId = Math.max(nextId, helper.fallback.id);\n // A missing conditional input selects the no-op; an active declaration selects its own initializer.\n const fallback = { id: nextId + 1, group: owner.group, sourceScope: -1 };\n const name = this.context.names.allocate(`input-initializer:${owner.group}`, `initialize_${variable.ident}`);\n this._inputHelperGroups.set(owner.group, (group = { name, fallback }));\n }\n const target = this._interfaceVariableName(variable.ident, variable.dataType!.structDeclarations);\n this._inputHelperBodies.set(\n variable.astNode!,\n `void ${group.name}() { ${target} = ${this._transferName(struct, true)}(); }`\n );\n calls.add(`${group.name}();`);\n }\n return Array.from(calls);\n }\n\n protected prepareFragment(\n entryInfo: ShaderEntryPointInfo,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): void {\n void entryInfo;\n void outerGlobalMacroStatements;\n }\n\n /**\n * Pre-walk `#define` values in global macro declarations and register any\n * `structVar.prop` member accesses as referenced struct props. This must run before\n * struct codegen emits the declaration lists (`attribute …`, `varying …`, `MRT …`),\n * otherwise properties used only from macros would be missing from the output.\n */\n private _preRegisterGlobalMacroRefs(macros: readonly ASTNode.GlobalDeclaration[]): void {\n for (const macro of macros) {\n this._walkMacroDefineTokens(macro.children);\n }\n }\n\n private _walkMacroDefineTokens(children: NodeChild[]): void {\n for (const child of children) {\n if (child instanceof ASTNode.MacroDefine) {\n // Codegen the value once so the enclosed `visitPostfixExpression` calls\n // register their struct-prop references. The returned string is discarded\n // — the real emit happens later in `_getGlobalMacroDeclarations`.\n if (child.valueExpression) child.valueExpression.codeGen(this);\n } else if (child instanceof TreeNode) {\n const previous = this._currentDeclaration;\n if (child instanceof ASTNode.FunctionDefinition) this._currentDeclaration = child;\n this._walkMacroDefineTokens(child.children);\n this._currentDeclaration = previous;\n }\n }\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const context = this.context;\n // Set iteration includes dependencies discovered while generating earlier declarations.\n for (const sm of context._referencedGlobalSymbols) {\n this._currentDeclaration = sm.astNode;\n const codeGenResult = sm.astNode!.codeGen(this);\n this._currentDeclaration = undefined;\n if (!codeGenResult) continue;\n const text = codeGenResult + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n const segment = {\n text: this._declaration(text, sm.astNode!),\n index: sm.astNode!.location.start.index\n };\n out.push(segment);\n if (sm.astNode instanceof ASTNode.StructSpecifier) this._structCodeSegments.set(sm.astNode, segment);\n if (sm.astNode instanceof ASTNode.VariableDeclaration) this._variableCodeSegments.set(sm.astNode, segment);\n }\n }\n this._getForwardDeclarations(out);\n for (const segment of this._deferredPrototypes.values()) out.push(segment);\n for (const [definition, text] of this._forwardFunctionDeclarations) {\n if (!definition.isInMacroBranch) out.push({ text, index: definition.location.start.index });\n }\n }\n\n protected override referenceFunction(symbol: FnSymbol, referenceIndex: number, branch: BranchSignature): void {\n super.referenceFunction(symbol, referenceIndex, branch);\n const definition = symbol.astNode;\n const declarations = this._forwardFunctionDeclarations;\n if (symbol.ident === this.context.stageEntry) return;\n const candidates = this.context._referencedGlobals[symbol.ident].filter(\n (candidate): candidate is FnSymbol => candidate instanceof FnSymbol && candidate.equal(symbol)\n );\n const owner = this._declarationOwners.get(definition);\n if (owner) {\n for (const candidate of candidates) {\n const replacement = candidate.astNode;\n const nextOwner = this._declarationOwners.get(replacement);\n if (\n !nextOwner ||\n nextOwner.group !== owner.group ||\n nextOwner.sourceScope <= owner.sourceScope ||\n replacement.location.start.index <= referenceIndex\n )\n continue;\n const prototype = replacement.protoType;\n const anchor = definition.location.start.index;\n const previous = this._deferredPrototypes.get(replacement);\n if (previous && previous.index <= anchor) continue;\n if (\n !this._isContextIndependent(prototype) ||\n this._hasDeclarationContextBarrier(anchor, prototype.location.start.index, false)\n ) {\n this._unsupportedForwardDeclaration(prototype);\n }\n const outer = this._outerMacroDeclarations.find(\n (macro) => macro.location.start.index <= anchor && macro.location.end.index >= definition.location.end.index\n );\n const typeAnchor = outer?.location.start.index ?? anchor;\n this._prepareForwardTypes(prototype.returnType.typeSpecifier.structDeclarations, anchor, typeAnchor);\n for (const parameter of prototype.parameterList ?? []) {\n this._prepareForwardTypes(parameter.typeInfo?.structDeclarations ?? [], anchor, typeAnchor);\n }\n // Selection is determined at the later definition, so the prototype must not replay its guard here.\n this._deferredPrototypes.set(replacement, {\n text: this._declaration(`${prototype.codeGen(this)};`, replacement, false),\n index: typeAnchor\n });\n }\n return;\n }\n if (candidates.some((candidate) => candidate.astNode === definition)) return;\n const compatible = candidates.filter((candidate) => this._canBranchesOverlap(candidate.branchSignature, branch));\n const preceding = compatible.filter((candidate) => candidate.astNode.location.start.index < referenceIndex);\n if (\n canInheritanceBranchesCover(\n preceding.map((candidate) => candidate.branchSignature),\n branch\n )\n )\n return;\n const replacement = compatible.find((candidate) => candidate.astNode.location.start.index > referenceIndex);\n if (replacement) {\n // An inherited helper can call a declaration whose overriding body occurs later. Keep the\n // original declaration's macro/type context and emit only the final backend signature there.\n const prototype = replacement.astNode.protoType;\n const anchor = definition.location.start.index;\n const text = `${prototype.codeGen(this)};`;\n const signature = this._getForwardSignature(prototype);\n for (const candidate of candidates) {\n if (\n this._canBranchesOverlap(candidate.branchSignature, symbol.branchSignature) &&\n this._getForwardSignature(candidate.astNode.protoType) !== signature\n ) {\n this._unsupportedForwardDeclaration(candidate.astNode.protoType);\n }\n }\n if (declarations.has(definition)) return;\n if (\n !this._isContextIndependent(prototype) ||\n this._hasDeclarationContextBarrier(anchor, prototype.location.start.index, false)\n ) {\n this._unsupportedForwardDeclaration(prototype);\n }\n const outerMacro = this._outerMacroDeclarations.find(\n (macro) => macro.location.start.index <= anchor && macro.location.end.index >= definition.location.end.index\n );\n const typeAnchor = outerMacro?.location.start.index ?? anchor;\n this._prepareForwardTypes(prototype.returnType.typeSpecifier.structDeclarations, anchor, typeAnchor);\n for (const parameter of prototype.parameterList ?? []) {\n this._prepareForwardTypes(parameter.typeInfo?.structDeclarations ?? [], anchor, typeAnchor);\n }\n declarations.set(definition, text);\n }\n }\n\n private _getForwardSignature(prototype: ASTNode.FunctionProtoType): string {\n const parameters: string[] = [];\n for (const parameter of prototype.parameterList ?? []) {\n const declaration = parameter.astNode!;\n const tokens: string[] = [];\n const visit = (node: NodeChild) => {\n if (node instanceof BaseToken) {\n if (node !== parameter.ident && node.type !== Keyword.IN) tokens.push(node.lexeme);\n } else {\n node.children.forEach(visit);\n }\n };\n visit(declaration);\n const text = tokens.join(\" \");\n if (text !== \"void\") parameters.push(text);\n }\n return `${prototype.returnType.codeGen(this)}(${parameters.join(\",\")})`;\n }\n\n private _canBranchesOverlap(left: BranchSignature, right: BranchSignature): boolean {\n return (\n getLexicalDeclarationCoexistence(left, right) !== \"exclusive\" &&\n !canInheritanceBranchesCover([], [...left, ...right])\n );\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const code = super.visitVariableIdentifier(node);\n for (const symbol of node.resolvedSymbols()) {\n if (!(symbol instanceof VarSymbol) || !symbol.isUniform) continue;\n const candidates = this.context._referencedGlobals[symbol.ident]?.filter(\n (candidate): candidate is VarSymbol => candidate instanceof VarSymbol\n );\n const owner = this._declarationOwners.get(symbol.astNode);\n if (!candidates || (!owner && candidates.includes(symbol))) continue;\n const preceding = candidates.filter(\n (candidate) => candidate.astNode!.location.start.index < node.location.start.index\n );\n if (\n !owner &&\n canInheritanceBranchesCover(\n preceding.map((candidate) => candidate.branchSignature),\n node._branch\n )\n )\n continue;\n const oldMacro = this._outerMacroDeclarations.find(\n (macro) =>\n macro.location.start.index <= symbol.astNode.location.start.index &&\n macro.location.end.index >= symbol.astNode.location.end.index\n );\n const anchor = oldMacro?.location.start.index ?? symbol.astNode.location.start.index;\n for (const candidate of candidates) {\n if (candidate.astNode!.location.start.index <= node.location.start.index) continue;\n if (owner) {\n const nextOwner = this._declarationOwners.get(candidate.astNode!);\n if (!nextOwner || nextOwner.group !== owner.group || nextOwner.sourceScope <= owner.sourceScope) continue;\n }\n const declaration = candidate.astNode!;\n if (\n !(candidate instanceof VarSymbol) ||\n !candidate.isUniform ||\n !(declaration instanceof ASTNode.VariableDeclaration)\n ) {\n this._unsupportedForwardDeclaration(declaration);\n }\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= declaration.location.start.index &&\n item.location.end.index >= declaration.location.end.index\n );\n if (\n !this._isContextIndependent(declaration) ||\n this._hasDeclarationContextBarrier(anchor, macro?.location.end.index ?? declaration.location.end.index, true)\n ) {\n this._unsupportedForwardDeclaration(declaration);\n }\n this._prepareForwardTypes(candidate.dataType!.structDeclarations, anchor);\n this._forwardVariableIndices.set(\n declaration,\n Math.min(this._forwardVariableIndices.get(declaration) ?? Infinity, anchor)\n );\n }\n }\n return this._escapedReference(node) ?? code;\n }\n\n private _getForwardDeclarations(out: ICodeSegment[]): void {\n type Declaration = ASTNode.StructSpecifier | ASTNode.VariableDeclaration;\n const guarded = new Map<ASTNode.GlobalDeclaration, { index: number; declarations: Declaration[] }>();\n const declarations: [Declaration, number][] = Array.from(this._forwardStructIndices);\n for (const entry of this._forwardVariableIndices) declarations.push(entry);\n const code = (declaration: Declaration) =>\n this._declaration(\n declaration.codeGen(this) + (declaration instanceof ASTNode.VariableDeclaration ? \";\" : \"\"),\n declaration,\n false\n );\n for (const [declaration, index] of declarations) {\n const owner = this._declarationOwners.get(declaration);\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= declaration.location.start.index &&\n item.location.end.index >= declaration.location.end.index\n );\n if (!macro) {\n const previous =\n declaration instanceof ASTNode.StructSpecifier\n ? this._structCodeSegments.get(declaration)\n : this._variableCodeSegments.get(declaration);\n if (previous) {\n if (owner) previous.text = this._declaration(\"\", declaration);\n else out.splice(out.indexOf(previous), 1);\n }\n out.push({ text: code(declaration), index });\n } else if (owner) {\n out.push({ text: code(declaration), index });\n } else {\n let group = guarded.get(macro);\n if (!group) guarded.set(macro, (group = { index, declarations: [] }));\n group.index = Math.min(group.index, index);\n group.declarations.push(declaration);\n }\n }\n for (const [macro, group] of guarded) {\n const segments: ICodeSegment[] = macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }));\n for (const declaration of group.declarations) {\n segments.push({ text: code(declaration), index: declaration.location.start.index });\n }\n out.push({\n text: segments\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\"),\n index: group.index\n });\n }\n }\n\n override visitTypeSpecifier(node: ASTNode.TypeSpecifier): string {\n const call = node.parent instanceof ASTNode.FunctionIdentifier ? node.parent.parent : undefined;\n if (call instanceof ASTNode.FunctionCallGeneric && call.fnSymbol instanceof FnSymbol) {\n return super.visitTypeSpecifier(node);\n }\n for (const type of node.structDependencies) {\n if (!type.ident || this.context.getStructRole([type])) continue;\n // A function-local struct can shadow a global name without participating in inheritance.\n let parent = type.parent;\n while (\n parent &&\n !(parent instanceof ASTNode.GlobalDeclaration) &&\n !(parent instanceof ASTNode.FunctionDefinition)\n ) {\n parent = parent.parent;\n }\n if (parent instanceof ASTNode.FunctionDefinition) continue;\n this.context.referenceGlobal(type.ident.lexeme, ESymbolType.STRUCT);\n const final = this.context._referencedGlobals[type.ident.lexeme];\n const owner = this._declarationOwners.get(type);\n if (!owner && final.some((symbol) => symbol.astNode === type)) continue;\n const oldMacro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= type.location.start.index && item.location.end.index >= type.location.end.index\n );\n this._prepareForwardTypes(\n final\n .filter((symbol) => {\n if (!owner) return true;\n const nextOwner = this._declarationOwners.get(symbol.astNode!);\n return nextOwner?.group === owner.group && nextOwner.sourceScope > owner.sourceScope;\n })\n .map((symbol) => symbol.astNode)\n .filter((item): item is ASTNode.StructSpecifier => item instanceof ASTNode.StructSpecifier),\n oldMacro?.location.start.index ?? type.location.start.index\n );\n }\n return super.visitTypeSpecifier(node);\n }\n\n private _prepareForwardTypes(types: readonly ASTNode.StructSpecifier[], anchor: number, hoistAnchor = anchor): void {\n if (this.context.getStructRole(types)) return;\n for (const type of types) {\n if ((this._forwardStructIndices.get(type) ?? Infinity) <= anchor) continue;\n if (type.ident) {\n this.context.referenceGlobal(type.ident.lexeme, ESymbolType.STRUCT);\n const final = this.context._referencedGlobals[type.ident.lexeme];\n if (!final.some((symbol) => symbol.astNode === type)) {\n this._prepareForwardTypes(\n final\n .map((symbol) => symbol.astNode)\n .filter((item): item is ASTNode.StructSpecifier => item instanceof ASTNode.StructSpecifier),\n anchor,\n hoistAnchor\n );\n continue;\n }\n }\n const needsHoist = type.location.start.index > anchor;\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= type.location.start.index && item.location.end.index >= type.location.end.index\n );\n if (\n needsHoist &&\n (!this._isContextIndependent(type) ||\n this._hasDeclarationContextBarrier(hoistAnchor, macro?.location.end.index ?? type.location.end.index, true))\n ) {\n this._unsupportedForwardDeclaration(type);\n }\n const dependencyAnchor = needsHoist ? hoistAnchor : type.location.start.index;\n for (const property of type.propList) {\n this._prepareForwardTypes(property.typeInfo.structDeclarations, dependencyAnchor);\n }\n if (needsHoist) this._forwardStructIndices.set(type, hoistAnchor);\n }\n }\n\n private _isContextIndependent(node: TreeNode): boolean {\n if (\n node instanceof ASTNode.VariableIdentifier ||\n node instanceof ASTNode.MacroCallSymbol ||\n node instanceof ASTNode.MacroCallFunction\n )\n return false;\n if (node instanceof ASTNode.TypeSpecifier && node.isCustom && !node.structDeclarations.length) return false;\n return node.children.every((child) =>\n child instanceof TreeNode\n ? this._isContextIndependent(child)\n : child.type < Keyword.MACRO_IF || child.type > Keyword.MACRO_DEFINE_PARAMS\n );\n }\n\n private _hasDeclarationContextBarrier(start: number, end: number, includeMacros: boolean): boolean {\n const visit = (node: TreeNode, inFunction = false): boolean => {\n if (node.location.end.index <= start || node.location.start.index >= end) return false;\n if (node instanceof ASTNode.PrecisionSpecifier && !inFunction) return true;\n if (includeMacros && node instanceof ASTNode.MacroDefine) return true;\n inFunction ||= node instanceof ASTNode.FunctionDefinition;\n return node.children.some((child) =>\n child instanceof TreeNode\n ? visit(child, inFunction)\n : includeMacros &&\n child.location.start.index > start &&\n child.location.start.index < end &&\n (child.type === Keyword.MACRO_UNDEF || child.type === Keyword.MACRO_DEFINE_EXPRESSION)\n );\n };\n return visit(this._sourceIR!.program);\n }\n\n private _unsupportedForwardDeclaration(node: TreeNode): never {\n const ir = this._sourceIR!;\n throw mapExpandedShaderError(\n new GSError(\n GSErrorName.CompilationError,\n \"Inherited declarations require incompatible forward signatures or depend on a later macro or precision context.\",\n node.location,\n ir.source,\n undefined,\n \"UnsupportedForwardDeclaration\"\n ),\n ir.source,\n ir.sourceMap\n );\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n if (this._structCodeSegments.has(node)) continue;\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text: this._declaration(text, node), index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: readonly ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = this.context;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbol of context._referencedGlobalSymbols) {\n if (symbol.isInMacroBranch) referencedGlobalMacroASTs.push(symbol.astNode!);\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n const result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else if (child instanceof BaseToken && child.type === Keyword.MACRO_DEFINE_EXPRESSION) {\n // Legacy opaque `#define` — its lexeme is the complete directive text,\n // newlines included; emit verbatim.\n text = child.lexeme;\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n const text =\n this.context._referencedGlobalMacroASTs.indexOf(child) !== -1\n ? this.getCachedCode(child)\n : this._forwardFunctionDeclarations.get(child);\n if (text !== undefined) {\n out.push({\n text: this._declaration(text, child),\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n if (this._forwardStructIndices.has(child)) {\n const text = this._declaration(\"\", child);\n if (text) out.push({ text, index: child.location.start.index });\n continue;\n }\n const context = this.context;\n const stage = context.stage;\n if (\n context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.hasStructRole(child, ShaderStructRole.Attribute) ||\n context.hasStructRole(child, ShaderStructRole.Varying)\n : context.hasStructRole(child, ShaderStructRole.Varying) ||\n context.hasStructRole(child, ShaderStructRole.Mrt))\n ) {\n out.push({\n text: this._declaration(this.getCachedCode(child) ?? \"\", child),\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (this.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: this._declaration(\n this._forwardVariableIndices.has(variableDeclaration)\n ? \"\"\n : `${this.getCachedCode(variableDeclaration) ?? \"\"};`,\n variableDeclaration\n ),\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n\n /** Ownership of the declaration currently generating dependencies. @internal */\n protected get currentDeclarationOwner(): DeferredDeclarationOwnership | undefined {\n return this._currentDeclaration && this._declarationOwners.get(this._currentDeclaration);\n }\n\n private _referenceDeclaration(from: number, node: TreeNode): void {\n const owner = this._declarationOwners.get(node);\n if (!owner) return;\n let targets = this._declarationReferences.get(from);\n if (!targets) this._declarationReferences.set(from, (targets = new Set()));\n targets.add(owner.id);\n }\n\n private _emitDeclarationReferences(out: ICodeSegment[]): void {\n for (const [from, targets] of this._declarationReferences) {\n for (const to of targets) out.push({ text: ShaderInstructionEncoder.reference(from, to), index: -1 });\n }\n }\n\n private _declaration(text: string, node: TreeNode, activate = true): string {\n const initializer = text && this._inputHelperBodies.get(node);\n return ShaderInstructionEncoder.declaration(\n initializer ? `${text}\\n${initializer}` : text,\n this._declarationOwners.get(node),\n activate\n );\n }\n}\n","import { ShaderStructRole, StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { GLESVisitor } from \"./GLESVisitor\";\n\nexport class GLES100Visitor extends GLESVisitor {\n protected override readonly supportsArrayStructReturn = false;\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${this.interfaceName(prop, ShaderStructRole.Varying)};`;\n }\n\n override getMRTProp(): string {\n return \"\";\n }\n\n protected override fragmentColorOutput(): string {\n return \"gl_FragColor\";\n }\n\n protected override mrtOutput(prop: StructProp): string {\n return `gl_FragData[${prop.mrtIndex}]`;\n }\n}\n","import { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderData } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderBuiltinSemantic } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderEntryPointInfo } from \"@galacean/engine-shader-parser/internal\";\nimport { TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport type { DeferredDeclarationOwnership } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderInstructionEncoder } from \"../ShaderInstructionEncoder\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private readonly _outputDeclarations = new Map<\n string,\n { text: string; owners: Map<number, DeferredDeclarationOwnership>; unconditional: boolean }\n >();\n private _fragDataArrayRequired = false;\n private readonly _fragDataIndices = new Map<ASTNode.PostfixExpression, number>();\n private readonly _scannedFragmentFunctions = new Set<ShaderEntryPointInfo[\"functions\"][number]>();\n\n override reset(): void {\n super.reset();\n\n this._outputDeclarations.clear();\n this._fragDataArrayRequired = false;\n this._fragDataIndices.clear();\n this._scannedFragmentFunctions.clear();\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (const output of this._outputDeclarations.values()) {\n out.push({\n text: output.unconditional\n ? output.text\n : ShaderInstructionEncoder.sharedDeclaration(output.text, Array.from(output.owners.values())),\n // A source macro block can start at zero and contain the first output use.\n index: -1\n });\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = this.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${this.interfaceName(prop, ShaderStructRole.Varying)};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${this.interfaceName(prop, ShaderStructRole.Mrt)};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (!node.isBuiltin || typeSpecifier.children.length !== 1 || typeSpecifier.structDependencies.length) {\n // Struct constructors still need the shared type-dependency visitor.\n return super.visitFunctionIdentifier(node);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const context = this.context;\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutput0) {\n this._registerFragColorVariable();\n return this._fragmentColorName();\n }\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentDepth) {\n return \"gl_FragDepth\";\n }\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutputArray) {\n this._registerFragDataArray();\n return this._fragmentDataName();\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n if (!this._fragDataArrayRequired) {\n const index = this._fragDataIndices.get(node);\n if (index !== undefined) return this._registerFragDataVariable(index);\n }\n return super.visitPostfixExpression(node);\n }\n\n protected override fragmentColorOutput(): string {\n this._registerFragColorVariable();\n return this._fragmentColorName();\n }\n\n protected override mrtOutput(prop: StructProp): string {\n return this.interfaceName(prop, ShaderStructRole.Mrt);\n }\n\n private _fragmentColorName(): string {\n return this.context.names.allocate(\"fragment-output\", \"output_color\");\n }\n\n private _fragmentDataName(): string {\n return this.context.names.allocate(\"fragment-output-array\", \"output_colors\");\n }\n\n private _registerFragColorVariable(): void {\n const name = this._fragmentColorName();\n this._registerOutput(name, `out vec4 ${name};`);\n }\n\n private _registerOutput(name: string, text: string): void {\n let output = this._outputDeclarations.get(name);\n if (!output) this._outputDeclarations.set(name, (output = { text, owners: new Map(), unconditional: false }));\n const owner = this.currentDeclarationOwner;\n if (owner) output.owners.set(owner.id, owner);\n else output.unconditional = true;\n }\n\n protected override prepareFragment(\n entryInfo: ShaderEntryPointInfo,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): void {\n const pending = entryInfo.functions.slice();\n while (pending.length) {\n const fn = pending.pop()!;\n if (this._scannedFragmentFunctions.has(fn)) continue;\n this._scannedFragmentFunctions.add(fn);\n this._scanFragmentOutputs(fn.astNode);\n pending.push(...fn.calledFunctions);\n }\n for (const macro of outerGlobalMacroStatements) this._scanFragmentOutputs(macro);\n }\n\n private _scanFragmentOutputs(node: TreeNode): void {\n if (node instanceof ASTNode.PostfixExpression && node.children.length === 4) {\n const base = node.children[0];\n const index = node.children[2];\n if (\n base instanceof TreeNode &&\n index instanceof TreeNode &&\n ParserUtils.unwrapBareIdentifier(base, { allowParens: true })?.builtinSemantic ===\n ShaderBuiltinSemantic.FragmentOutputArray\n ) {\n const value = ParserUtils.constIntegerValue(index);\n if (value === undefined || value < 0) this._fragDataArrayRequired = true;\n else this._fragDataIndices.set(node, value);\n this._scanFragmentOutputs(index);\n return;\n }\n }\n if (\n node instanceof ASTNode.VariableIdentifier &&\n node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutputArray\n ) {\n this._fragDataArrayRequired = true;\n return;\n }\n for (const child of node.children) {\n if (child instanceof TreeNode) this._scanFragmentOutputs(child);\n }\n }\n\n private _registerFragDataArray(): void {\n const name = this._fragmentDataName();\n this._registerOutput(name, `layout(location = 0) out vec4 ${name}[gl_MaxDrawBuffers];`);\n }\n\n private _registerFragDataVariable(index: number): string {\n const name = this.context.names.allocate(`fragment-output:${index}`, `output_color_${index}`);\n this._registerOutput(name, `layout(location = ${index}) out vec4 ${name};`);\n return name;\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport { Logger, ReturnableObjectPool, ShaderLanguage } from \"@galacean/engine-core\";\nimport {\n GSError,\n GLESShaderInfo,\n type ShaderClueIR,\n type ShaderCoreInfo\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport type { GLESVisitor } from \"./codeGen/GLESVisitor\";\n\n/**\n * Static internal facade for GLES source generation.\n * @internal\n */\nexport class GLESBackend {\n private static readonly _gles100VisitorPool = new ReturnableObjectPool(GLES100Visitor);\n private static readonly _gles300VisitorPool = new ReturnableObjectPool(GLES300Visitor);\n\n private constructor() {}\n\n /**\n * Generates one GLES program with request-owned visitor state.\n * @param ir - Request-owned neutral parser IR consumed read-only.\n * @param coreInfo - Entry and stage-interface facts derived from the same IR.\n * @param target - GLES language version to emit.\n * @returns Generated vertex and fragment source.\n * @internal\n */\n static generate(ir: ShaderClueIR, coreInfo: ShaderCoreInfo, target: ShaderLanguage): IShaderInfo | undefined {\n const glesInfo = new GLESShaderInfo(ir, coreInfo);\n if (glesInfo.mrtOutputIssues.length || glesInfo.invalidMrtReturnLocations.length) {\n Logger.error(\n \"MRT outputs require unique non-negative locations, vec4 members, and returns through an assigned struct variable.\"\n );\n return undefined;\n }\n if (glesInfo.invalidVaryingReturnLocations.length) {\n Logger.error(\"Varying vertex entries must return a struct variable or same-type function result.\");\n return undefined;\n }\n if (glesInfo.structMemberOwnerIssues.length) {\n Logger.error(\"A struct member reference cannot be lowered safely across runtime macro expansion.\");\n return undefined;\n }\n\n return target === ShaderLanguage.GLSLES100\n ? GLESBackend._generateWithPool(GLESBackend._gles100VisitorPool, ir, coreInfo)\n : GLESBackend._generateWithPool(GLESBackend._gles300VisitorPool, ir, coreInfo);\n }\n\n private static _generateWithPool<T extends GLESVisitor>(\n pool: ReturnableObjectPool<T>,\n ir: ShaderClueIR,\n coreInfo: ShaderCoreInfo\n ): IShaderInfo | undefined {\n const visitor = pool.get();\n try {\n return visitor.generate(ir, coreInfo);\n } catch (error) {\n visitor.dispose();\n if (!(error instanceof GSError)) throw error;\n Logger.error(`${error.file ? `${error.file}: ` : \"\"}${error.code ? `${error.code}: ` : \"\"}${error.toString()}`);\n return undefined;\n } finally {\n pool.return(visitor);\n }\n }\n}\n","import { Logger, ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IRenderStates, IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport { Color } from \"@galacean/engine-math\";\nimport {\n GSError,\n ShaderCoreInfo,\n type ParsedShaderPassData,\n type ShaderClueIR,\n type ShaderSourceParseResult\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GLESBackend } from \"./GLESBackend\";\nimport { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\n\nclass ShaderSourceParseError extends Error {\n constructor(readonly errors: readonly Error[]) {\n super(errors.map((error) => error.toString()).join(\"\\n\"));\n this.name = \"ShaderSourceParseError\";\n }\n}\n\n/**\n * Rejects a partial ShaderLab structure when source parsing produced errors.\n * @param result - ShaderLab source-parser result.\n * @returns Complete parsed ShaderLab structure.\n * @throws ShaderSourceParseError when structural source diagnostics exist.\n * @internal\n */\nexport function requireValidShaderSource(result: ShaderSourceParseResult): IShaderSource {\n if (result.errors.length) throw new ShaderSourceParseError(result.errors);\n return result.shaderSource;\n}\n\n/**\n * Generates one backend program from a parser-owned pass without reparsing it.\n * @param parsed - Neutral parser output.\n * @param vertexEntry - Vertex entry name.\n * @param fragmentEntry - Fragment entry name.\n * @param backend - Target GLES language.\n * @param coreInfo - Optional stage facts already derived from this exact parser result.\n * @returns Generated program, or `undefined` when parser or entry admission fails.\n * @internal\n */\nexport function generateParsedShaderPassData(\n parsed: ParsedShaderPassData,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n coreInfo?: ShaderCoreInfo\n): IShaderProgramSource | undefined {\n if (parsed.blockingErrors.length) {\n for (const error of parsed.blockingErrors) Logger.error(error.toString());\n return undefined;\n }\n if (!parsed.ir) return undefined;\n const resolvedCoreInfo = coreInfo ?? ShaderCoreInfo.create(parsed.ir, vertexEntry, fragmentEntry);\n return generateShaderProgram(parsed.ir, resolvedCoreInfo, backend, parsed.preprocessorExpressions);\n}\n\nfunction generateShaderProgram(\n ir: ShaderClueIR,\n coreInfo: ShaderCoreInfo,\n backend: ShaderLanguage,\n preprocessorExpressions: ParsedShaderPassData[\"preprocessorExpressions\"]\n): IShaderProgramSource | undefined {\n if (!coreInfo.vertexEntry.functions.length) {\n Logger.error(`Vertex entry function '${coreInfo.vertexEntry.name}' not found.`);\n return undefined;\n }\n if (!coreInfo.fragmentEntry.functions.length) {\n Logger.error(`Fragment entry function '${coreInfo.fragmentEntry.name}' not found.`);\n return undefined;\n }\n if (coreInfo.vertexEntry.hasDefiniteAmbiguity) {\n Logger.error(`Vertex entry function '${coreInfo.vertexEntry.name}' resolves to multiple declarations.`);\n return undefined;\n }\n if (coreInfo.fragmentEntry.hasDefiniteAmbiguity) {\n Logger.error(`Fragment entry function '${coreInfo.fragmentEntry.name}' resolves to multiple declarations.`);\n return undefined;\n }\n if (coreInfo.roleConflicts.length) {\n Logger.error(\"A shader IO struct cannot serve multiple stage-interface roles.\");\n return undefined;\n }\n const result = GLESBackend.generate(ir, coreInfo, backend);\n if (result) {\n result.vertexShaderInstructions = ShaderInstructionEncoder.parse(result.vertex, preprocessorExpressions);\n result.fragmentShaderInstructions = ShaderInstructionEncoder.parse(result.fragment, preprocessorExpressions);\n result.vertex = ShaderInstructionEncoder.source(result.vertex);\n result.fragment = ShaderInstructionEncoder.source(result.fragment);\n }\n return result;\n}\n\n/**\n * Converts parser-owned render states into JSON-safe precompile data.\n * @param renderStates - Parsed render-state maps.\n * @returns Serializable constant and variable maps.\n * @internal\n */\nexport function serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n} {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return { constantMap, variableMap: renderStates.variableMap };\n}\n\n/**\n * Formats a parser failure with include-source attribution.\n * @param error - Parser failure.\n * @returns User-facing error text.\n * @internal\n */\nexport function formatShaderError(error: Error): string {\n const text = error.toString();\n return error instanceof GSError && error.file ? `${error.file}: ${text}` : text;\n}\n","import { ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IPrecompiledShader } from \"@galacean/engine-design\";\nimport {\n branchAnalysis,\n createValidatedShaderTargetParser,\n normalizeShaderIncludeMap,\n ParserObjectPool,\n parseValidatedShaderPass,\n ShaderCoreInfo,\n ShaderSourceParser,\n type ChunkOutputCache,\n type IncludeMap\n} from \"@galacean/engine-shader-parser/internal/analyzer\";\nimport {\n formatShaderError,\n generateParsedShaderPassData,\n requireValidShaderSource,\n serializeRenderStates\n} from \"./ShaderCompilation\";\n\n/**\n * Offline-only ShaderLab to `.shaderc` compiler with deterministic validation.\n *\n * This class is intentionally excluded from the runtime compiler entry. CLI and bundler adapters import\n * it from `@galacean/engine-shader-compiler/precompile`.\n */\nexport class ShaderPrecompiler {\n private _includeMap: IncludeMap = Object.create(null);\n private readonly _chunkOutputCache: ChunkOutputCache = new Map();\n private readonly _sourceParserObjectPool = new ParserObjectPool();\n private readonly _parserObjectPool = new ParserObjectPool();\n private readonly _validatedParser = createValidatedShaderTargetParser(this._parserObjectPool);\n\n /**\n * Replaces the logical include registry used by offline compilation.\n * @param includeMap - Canonical or normalizable include keys mapped to chunk sources.\n * @throws Error when multiple keys collide after normalization.\n */\n setIncludeMap(includeMap: IncludeMap): void {\n this._includeMap = normalizeShaderIncludeMap(includeMap);\n this._chunkOutputCache.clear();\n }\n\n /**\n * Compiles complete ShaderLab source into a serializable `.shaderc` structure.\n * @param sourceCode - Complete ShaderLab source.\n * @param platformTarget - Target GLES language.\n * @param sourceFile - Optional logical root location used for relative includes and attribution.\n * @returns Serializable precompiled shader.\n * @throws Error when structural parsing, pass validation, or backend generation fails.\n */\n precompile(sourceCode: string, platformTarget: ShaderLanguage, sourceFile?: string): IPrecompiledShader {\n this._chunkOutputCache.clear();\n const shaderSource = requireValidShaderSource(\n ShaderSourceParser.parseStrict(sourceCode, this._sourceParserObjectPool)\n );\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders: shaderSource.subShaders.map((subShader) => ({\n name: subShader.name,\n tags: subShader.tags,\n passes: subShader.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: serializeRenderStates(pass.renderStates)\n };\n }\n\n const parsed = parseValidatedShaderPass(\n pass.contents,\n this._includeMap,\n this._chunkOutputCache,\n sourceFile,\n this._parserObjectPool,\n this._validatedParser,\n pass.contentScopeStarts\n );\n if (parsed.blockingErrors.length) {\n throw new Error(\n [\n `Shader pass \"${shaderSource.name}.${subShader.name}.${pass.name}\" precompile failed:`,\n ...parsed.blockingErrors.map(formatShaderError)\n ].join(\"\\n\")\n );\n }\n const coreInfo = parsed.ir\n ? ShaderCoreInfo.create(\n parsed.ir,\n pass.vertexEntry,\n pass.fragmentEntry,\n branchAnalysis.getDeclarationCoexistence,\n branchAnalysis.getBranchCoverage\n )\n : undefined;\n const program = generateParsedShaderPassData(\n parsed,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n coreInfo\n );\n if (!program) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${subShader.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: serializeRenderStates(pass.renderStates),\n vertexOutputNames: program.vertexOutputNames,\n vertexShaderInstructions: program.vertexShaderInstructions,\n fragmentShaderInstructions: program.fragmentShaderInstructions\n };\n })\n }))\n };\n }\n}\n"],"names":["reservedWords","Set","split","isUnsafeGLSLIdentifier","name","has","startsWith","includes","NameAllocator","_used","_names","Map","reserve","add","sourceName","key","allocate","preferred","get","undefined","base","replace","separator","endsWith","suffix","set","reset","clear","VisitorContext","names","_lookupSymbol","SymbolInfo","_structRoles","_vertexUnresolvedVariableRoles","_fragmentUnresolvedVariableRoles","_vertexAmbiguousVariableNames","_fragmentAmbiguousVariableNames","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalSymbols","_referencedGlobalMacroASTs","_structVariableRoles","codeCache","resetAll","length","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_globalSymbolQueries","_passSymbolTable","getStructRole","declarations","resolvedRole","declaration","role","hasStructRole","registerStructTypes","structs","struct","registerStructVar","variable","stage","roles","EShaderStage","VERTEX","ambiguous","ident","existing","delete","getUnresolvedStructVarRole","variableName","getStructVarRole","symbols","symbol","VarSymbol","referenceAttribute","_referenceProp","lexeme","referenceVarying","referenceMRTProp","referenceGlobal","type","queries","getSymbols","namedSymbols","push","onReferenceGlobal","list","refList","filter","item","onReferenceStructProps","TempArray","array","Array","dispose","CodeGenVisitor","context","cache","node","code","getCachedCode","defaultCodeGen","children","pool","_tmpArrayPool","ret","child","BaseToken","tokenLexeme","codeGen","result","join","return","token","interfaceMemberName","visitPostfixExpression","derivationLength","postExpr","prop","directRoot","ParserUtils","unwrapBareIdentifier","allowParens","resolvedValueSymbols","unresolvedName","extractDirectIdentLexeme","resolvedMemberOwners","ShaderStructRole","Attribute","Varying","identNode","indexNode","visitVariableIdentifier","referenceGlobalSymbolNames","ESymbolType","Any","resolvedSymbols","FnSymbol","referenceFunction","location","start","index","_branch","getLexeme","referenceIndex","branch","FN","visitFunctionCall","call","fnSymbol","fnSymbols","visitMacroCallFunction","paramList","ASTNode","FunctionCallParameterList","astNodes","paramNodes","params","paramsCode","i","argNode","MacroCallArgBlock","macroName","visitStatementList","visitMacroDefine","paramsLexeme","isFunction","paramsToken","valueCode","valueExpression","visitSingleDeclaration","visitGlobalVariableDeclaration","fullType","FullySpecifiedType","typeSpecifier","isCustom","declarator","STRUCT","visitDeclaration","visitFunctionParameterList","visitFunctionHeader","visitJumpStatement","visitFunctionIdentifier","visitTypeSpecifier","visitStructSpecifier","visitFunctionDefinition","fnNode","ReturnableObjectPool","ShaderInstructionEncoder","text","owner","activate","activation","id","group","sourceScope","sharedDeclaration","owners","map","reference","from","to","source","indexOf","parse","glsl","preprocessorExpressions","instructions","pos","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","_findLogicalLineEnd","line","substring","charCodeAt","kind","charAt","fields","slice","Number","ShaderPreprocessorDirective","Declaration","Reference","ids","match","_DIRECTIVE_RE","exec","keyword","rest","trim","idx","IfDef","IfNdef","cond","_parseCondition","_pushConditionInstruction","stack","prevIdx","elseIdx","Else","_backfillJump","endifIdx","Endif","pop","afterEndif","j","inst","funcMatch","_FUNC_MACRO_RE","p","DefineFunc","_stripLineComment","_findInlineWhitespace","Define","DefineVal","Undef","t","m","IfCmp","op","v","IfExpr","expression","parsePreprocessorExpression","error","certain","hasExpandableIdentifier","e","Error","message","evaluationError","compact","toPreprocessorCondition","condition","c","nl","beforeBreak","charCode","last","directive","Text","OwnedText","every","target","onlyPlaceholder","s","trimEnd","GLESVisitor","supportsArrayStructReturn","_globalNames","_escapedDeclarations","_fragmentVaryingProps","_globalInputs","_inputHelperBodies","_inputHelperGroups","_globalCodeArray","_forwardFunctionDeclarations","_forwardStructIndices","_structCodeSegments","_forwardVariableIndices","_variableCodeSegments","_declarationOwners","_deferredPrototypes","_declarationReferences","_outerMacroDeclarations","globalCodeArray","_currentDeclaration","_vertexOutputNames","getOtherGlobal","data","out","values","fallback","globalPrecisions","precision","generate","ir","coreInfo","variables","inputRole","astNode","VariableDeclaration","program","shaderData","symbolTable","hasUnsafeIdentifier","forEach","outerGlobalMacroDeclarations","io","Mrt","structVariableRoles","vertexStructVariableRoles","fragmentStructVariableRoles","FRAGMENT","_collectEscapedDeclarations","_sourceIR","deferredDeclarationOwnership","nextInputOwner","Math","max","size","nextId","nextGroup","currentDeclarationOwner","_referenceDeclaration","propDeclarations","propList","props","unsupportedDeferredDeclarations","mapExpandedShaderError","GSError","GSErrorName","CompilationError","sourceMap","fragment","_fragmentMain","fragmentEntry","vertex","_vertexMain","vertexEntry","vertexOutputNames","entryInfo","stageEntry","_preRegisterGlobalMacroRefs","_referenceInterfaceDependencies","_initializeGlobalInputs","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","_emitDeclarationReferences","globalCode","sort","a","b","outerGlobalMacroStatements","prepareFragment","typeInfo","structDeclarations","dependency","arraySpecifier","interfaceName","isOutput","sameName","conflicts","some","generated","_interfaceTypeName","_interfaceVariableName","TypeSpecifier","identifier","ParameterDeclarator","TreeNode","_escapedReference","candidate","dataType","StructSymbol","_transferName","read","typeName","memberCode","emit","segments","macroExpressions","retain","references","used","_containsArray","typeLexeme","structCode","hasRetainedField","hasFields","padding","getAttributeProp","getVaryingProp","getMRTProp","value","assignments","wire","mrtOutput","member","transfer","visited","parent","EqualityExpression","observe","VariableIdentifier","_observeWholeStruct","FunctionCallGeneric","StructSpecifier","FunctionDefinition","protoType","returnType","definition","args","parameters","parameterList","parameter","entryName","statement","Keyword","VEC4","fragmentColorOutput","inputs","calls","VAR","helper","macros","macro","_walkMacroDefineTokens","MacroDefine","previous","sm","codeGenResult","isInMacroBranch","segment","_declaration","_getForwardDeclarations","candidates","equal","replacement","nextOwner","prototype","anchor","_isContextIndependent","_hasDeclarationContextBarrier","_unsupportedForwardDeclaration","outer","find","end","typeAnchor","_prepareForwardTypes","compatible","_canBranchesOverlap","branchSignature","preceding","canInheritanceBranchesCover","signature","_getForwardSignature","outerMacro","tokens","visit","IN","left","right","getLexicalDeclarationCoexistence","isUniform","min","Infinity","oldMacro","splice","guarded","entry","GlobalDeclaration","final","FunctionIdentifier","structDependencies","types","hoistAnchor","needsHoist","dependencyAnchor","property","MacroCallSymbol","MacroCallFunction","MACRO_IF","MACRO_DEFINE_PARAMS","includeMacros","inFunction","PrecisionSpecifier","MACRO_UNDEF","MACRO_DEFINE_EXPRESSION","structNodes","referencedGlobalMacroASTs","GlobalMacroIfStatement","_visitGlobalMacroIfStatement","VariableDeclarationList","variableDeclarations","variableDeclaration","targets","initializer","GLES100Visitor","mrtIndex","GLES300Visitor","_outputDeclarations","_fragDataArrayRequired","_fragDataIndices","_scannedFragmentFunctions","output","unconditional","qualifier","isBuiltin","builtinSemantic","ShaderBuiltinSemantic","FragmentOutput0","_registerFragColorVariable","_fragmentColorName","FragmentDepth","FragmentOutputArray","_registerFragDataArray","_fragmentDataName","_registerFragDataVariable","_registerOutput","pending","functions","fn","_scanFragmentOutputs","calledFunctions","PostfixExpression","constIntegerValue","GLESBackend","glesInfo","GLESShaderInfo","mrtOutputIssues","invalidMrtReturnLocations","Logger","invalidVaryingReturnLocations","structMemberOwnerIssues","ShaderLanguage","GLSLES100","_generateWithPool","_gles100VisitorPool","_gles300VisitorPool","visitor","file","toString","ShaderSourceParseError","errors","requireValidShaderSource","shaderSource","generateParsedShaderPassData","parsed","backend","blockingErrors","resolvedCoreInfo","ShaderCoreInfo","generateShaderProgram","hasDefiniteAmbiguity","roleConflicts","vertexShaderInstructions","fragmentShaderInstructions","serializeRenderStates","renderStates","constantMap","Color","r","g","variableMap","formatShaderError","ShaderPrecompiler","_includeMap","_chunkOutputCache","_sourceParserObjectPool","ParserObjectPool","_parserObjectPool","_validatedParser","createValidatedShaderTargetParser","setIncludeMap","includeMap","normalizeShaderIncludeMap","precompile","sourceCode","platformTarget","sourceFile","ShaderSourceParser","parseStrict","subShaders","subShader","tags","passes","pass","isUsePass","parseValidatedShaderPass","contents","contentScopeStarts","branchAnalysis","getDeclarationCoexistence","getBranchCoverage"],"mappings":"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"}
|