@galacean/engine-shader-compiler 2.0.0-alpha.52 → 2.0.0-alpha.54

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.
Files changed (91) hide show
  1. package/README.md +40 -4
  2. package/bundler/cli.js +199 -104
  3. package/bundler/precompile.cjs.js +117 -47
  4. package/bundler/precompile.js +117 -47
  5. package/bundler/rollup.cjs.js +115 -45
  6. package/bundler/rollup.js +115 -45
  7. package/dist/browser.js +13421 -6555
  8. package/dist/browser.js.map +1 -1
  9. package/dist/browser.min.js +1 -1
  10. package/dist/browser.min.js.map +1 -1
  11. package/dist/main.js +1758 -8450
  12. package/dist/main.js.map +1 -1
  13. package/dist/module.js +1730 -8427
  14. package/dist/module.js.map +1 -1
  15. package/dist/precompile.main.js +2280 -0
  16. package/dist/precompile.main.js.map +1 -0
  17. package/dist/precompile.module.js +2276 -0
  18. package/dist/precompile.module.js.map +1 -0
  19. package/package.json +24 -13
  20. package/types/GLESBackend.d.ts +22 -0
  21. package/types/ShaderBackend.d.ts +15 -0
  22. package/types/ShaderCompilation.d.ts +40 -0
  23. package/types/ShaderCompiler.d.ts +42 -14
  24. package/types/ShaderInstructionEncoder.d.ts +46 -14
  25. package/types/ShaderPrecompiler.d.ts +31 -0
  26. package/types/bundler/precompile.d.ts +26 -3
  27. package/types/bundler/rollup.d.ts +23 -2
  28. package/types/codeGen/CodeGenVisitor.d.ts +11 -6
  29. package/types/codeGen/GLES100.d.ts +3 -5
  30. package/types/codeGen/GLES300.d.ts +14 -7
  31. package/types/codeGen/GLESVisitor.d.ts +55 -9
  32. package/types/codeGen/VisitorContext.d.ts +88 -29
  33. package/types/codeGen/types.d.ts +1 -1
  34. package/types/index.d.ts +4 -1
  35. package/types/precompile.d.ts +1 -0
  36. package/dist/browser.verbose.js +0 -9601
  37. package/dist/browser.verbose.js.map +0 -1
  38. package/dist/browser.verbose.min.js +0 -2
  39. package/dist/browser.verbose.min.js.map +0 -1
  40. package/dist/main.verbose.js +0 -9598
  41. package/dist/main.verbose.js.map +0 -1
  42. package/dist/module.verbose.js +0 -9591
  43. package/dist/module.verbose.js.map +0 -1
  44. package/types/GSError.d.ts +0 -16
  45. package/types/ParserUtils.d.ts +0 -43
  46. package/types/Preprocessor.d.ts +0 -30
  47. package/types/ShaderCompilerUtils.d.ts +0 -10
  48. package/types/common/BaseLexer.d.ts +0 -51
  49. package/types/common/BaseToken.d.ts +0 -35
  50. package/types/common/IBaseSymbol.d.ts +0 -5
  51. package/types/common/ShaderPosition.d.ts +0 -8
  52. package/types/common/ShaderRange.d.ts +0 -8
  53. package/types/common/SymbolTable.d.ts +0 -13
  54. package/types/common/SymbolTableStack.d.ts +0 -17
  55. package/types/common/enums/Keyword.d.ts +0 -124
  56. package/types/common/enums/ShaderStage.d.ts +0 -5
  57. package/types/common/index.d.ts +0 -5
  58. package/types/common/types.d.ts +0 -101
  59. package/types/lalr/CFG.d.ts +0 -5
  60. package/types/lalr/LALR1.d.ts +0 -27
  61. package/types/lalr/Production.d.ts +0 -9
  62. package/types/lalr/State.d.ts +0 -20
  63. package/types/lalr/StateItem.d.ts +0 -20
  64. package/types/lalr/Utils.d.ts +0 -22
  65. package/types/lalr/index.d.ts +0 -2
  66. package/types/lalr/types.d.ts +0 -14
  67. package/types/lexer/Lexer.d.ts +0 -143
  68. package/types/lexer/index.d.ts +0 -1
  69. package/types/parser/AST.d.ts +0 -502
  70. package/types/parser/Grammar.d.ts +0 -11
  71. package/types/parser/GrammarSymbol.d.ts +0 -128
  72. package/types/parser/SemanticAnalyzer.d.ts +0 -42
  73. package/types/parser/ShaderInfo.d.ts +0 -10
  74. package/types/parser/ShaderTargetParser.d.ts +0 -26
  75. package/types/parser/builtin/functions.d.ts +0 -34
  76. package/types/parser/builtin/index.d.ts +0 -2
  77. package/types/parser/builtin/variables.d.ts +0 -11
  78. package/types/parser/index.d.ts +0 -2
  79. package/types/parser/symbolTable/FnSymbol.d.ts +0 -6
  80. package/types/parser/symbolTable/StructSymbol.d.ts +0 -6
  81. package/types/parser/symbolTable/SymbolDataType.d.ts +0 -8
  82. package/types/parser/symbolTable/SymbolInfo.d.ts +0 -22
  83. package/types/parser/symbolTable/VarSymbol.d.ts +0 -8
  84. package/types/parser/symbolTable/index.d.ts +0 -6
  85. package/types/parser/types.d.ts +0 -24
  86. package/types/sourceParser/ShaderSourceFactory.d.ts +0 -8
  87. package/types/sourceParser/ShaderSourceParser.d.ts +0 -30
  88. package/types/sourceParser/ShaderSourceSymbol.d.ts +0 -10
  89. package/types/sourceParser/SourceLexer.d.ts +0 -19
  90. package/types/sourceParser/index.d.ts +0 -1
  91. package/verbose/package.json +0 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompile.module.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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"}