@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.
- package/README.md +40 -4
- package/bundler/cli.js +199 -104
- package/bundler/precompile.cjs.js +117 -47
- package/bundler/precompile.js +117 -47
- package/bundler/rollup.cjs.js +115 -45
- package/bundler/rollup.js +115 -45
- package/dist/browser.js +13421 -6555
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +1758 -8450
- package/dist/main.js.map +1 -1
- package/dist/module.js +1730 -8427
- package/dist/module.js.map +1 -1
- package/dist/precompile.main.js +2280 -0
- package/dist/precompile.main.js.map +1 -0
- package/dist/precompile.module.js +2276 -0
- package/dist/precompile.module.js.map +1 -0
- package/package.json +24 -13
- package/types/GLESBackend.d.ts +22 -0
- package/types/ShaderBackend.d.ts +15 -0
- package/types/ShaderCompilation.d.ts +40 -0
- package/types/ShaderCompiler.d.ts +42 -14
- package/types/ShaderInstructionEncoder.d.ts +46 -14
- package/types/ShaderPrecompiler.d.ts +31 -0
- package/types/bundler/precompile.d.ts +26 -3
- package/types/bundler/rollup.d.ts +23 -2
- package/types/codeGen/CodeGenVisitor.d.ts +11 -6
- package/types/codeGen/GLES100.d.ts +3 -5
- package/types/codeGen/GLES300.d.ts +14 -7
- package/types/codeGen/GLESVisitor.d.ts +55 -9
- package/types/codeGen/VisitorContext.d.ts +88 -29
- package/types/codeGen/types.d.ts +1 -1
- package/types/index.d.ts +4 -1
- package/types/precompile.d.ts +1 -0
- package/dist/browser.verbose.js +0 -9601
- package/dist/browser.verbose.js.map +0 -1
- package/dist/browser.verbose.min.js +0 -2
- package/dist/browser.verbose.min.js.map +0 -1
- package/dist/main.verbose.js +0 -9598
- package/dist/main.verbose.js.map +0 -1
- package/dist/module.verbose.js +0 -9591
- package/dist/module.verbose.js.map +0 -1
- package/types/GSError.d.ts +0 -16
- package/types/ParserUtils.d.ts +0 -43
- package/types/Preprocessor.d.ts +0 -30
- package/types/ShaderCompilerUtils.d.ts +0 -10
- package/types/common/BaseLexer.d.ts +0 -51
- package/types/common/BaseToken.d.ts +0 -35
- package/types/common/IBaseSymbol.d.ts +0 -5
- package/types/common/ShaderPosition.d.ts +0 -8
- package/types/common/ShaderRange.d.ts +0 -8
- package/types/common/SymbolTable.d.ts +0 -13
- package/types/common/SymbolTableStack.d.ts +0 -17
- package/types/common/enums/Keyword.d.ts +0 -124
- package/types/common/enums/ShaderStage.d.ts +0 -5
- package/types/common/index.d.ts +0 -5
- package/types/common/types.d.ts +0 -101
- package/types/lalr/CFG.d.ts +0 -5
- package/types/lalr/LALR1.d.ts +0 -27
- package/types/lalr/Production.d.ts +0 -9
- package/types/lalr/State.d.ts +0 -20
- package/types/lalr/StateItem.d.ts +0 -20
- package/types/lalr/Utils.d.ts +0 -22
- package/types/lalr/index.d.ts +0 -2
- package/types/lalr/types.d.ts +0 -14
- package/types/lexer/Lexer.d.ts +0 -143
- package/types/lexer/index.d.ts +0 -1
- package/types/parser/AST.d.ts +0 -502
- package/types/parser/Grammar.d.ts +0 -11
- package/types/parser/GrammarSymbol.d.ts +0 -128
- package/types/parser/SemanticAnalyzer.d.ts +0 -42
- package/types/parser/ShaderInfo.d.ts +0 -10
- package/types/parser/ShaderTargetParser.d.ts +0 -26
- package/types/parser/builtin/functions.d.ts +0 -34
- package/types/parser/builtin/index.d.ts +0 -2
- package/types/parser/builtin/variables.d.ts +0 -11
- package/types/parser/index.d.ts +0 -2
- package/types/parser/symbolTable/FnSymbol.d.ts +0 -6
- package/types/parser/symbolTable/StructSymbol.d.ts +0 -6
- package/types/parser/symbolTable/SymbolDataType.d.ts +0 -8
- package/types/parser/symbolTable/SymbolInfo.d.ts +0 -22
- package/types/parser/symbolTable/VarSymbol.d.ts +0 -8
- package/types/parser/symbolTable/index.d.ts +0 -6
- package/types/parser/types.d.ts +0 -24
- package/types/sourceParser/ShaderSourceFactory.d.ts +0 -8
- package/types/sourceParser/ShaderSourceParser.d.ts +0 -30
- package/types/sourceParser/ShaderSourceSymbol.d.ts +0 -10
- package/types/sourceParser/SourceLexer.d.ts +0 -19
- package/types/sourceParser/index.d.ts +0 -1
- package/verbose/package.json +0 -10
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { BaseToken } from "
|
|
2
|
-
import { EShaderStage } from "
|
|
3
|
-
import { SymbolTable } from "
|
|
4
|
-
import { ASTNode, TreeNode } from "
|
|
5
|
-
import { ESymbolType, SymbolInfo } from "
|
|
6
|
-
import { StructProp } from "
|
|
7
|
-
/** Role of a struct type in the shader compiler's IO flattening. */
|
|
8
|
-
export type StructRole = "varying" | "attribute" | "mrt";
|
|
1
|
+
import { BaseToken } from "@galacean/engine-shader-parser/internal";
|
|
2
|
+
import { EShaderStage } from "@galacean/engine-shader-parser/internal";
|
|
3
|
+
import { SymbolTable } from "@galacean/engine-shader-parser/internal";
|
|
4
|
+
import { ASTNode, TreeNode } from "@galacean/engine-shader-parser/internal";
|
|
5
|
+
import { ESymbolType, SymbolInfo, VarSymbol } from "@galacean/engine-shader-parser/internal";
|
|
6
|
+
import { ShaderStructRole, StructProp } from "@galacean/engine-shader-parser/internal";
|
|
9
7
|
/** @internal */
|
|
10
8
|
export declare class VisitorContext {
|
|
11
|
-
private
|
|
12
|
-
private
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
private readonly _lookupSymbol;
|
|
10
|
+
private readonly _structRoles;
|
|
11
|
+
private readonly _vertexUnresolvedVariableRoles;
|
|
12
|
+
private readonly _fragmentUnresolvedVariableRoles;
|
|
13
|
+
private readonly _vertexAmbiguousVariableNames;
|
|
14
|
+
private readonly _fragmentAmbiguousVariableNames;
|
|
15
15
|
attributeStructs: ASTNode.StructSpecifier[];
|
|
16
16
|
attributeList: StructProp[];
|
|
17
17
|
varyingStructs: ASTNode.StructSpecifier[];
|
|
@@ -24,26 +24,85 @@ export declare class VisitorContext {
|
|
|
24
24
|
_referencedVaryingList: Record<string, StructProp[]>;
|
|
25
25
|
_referencedMRTList: Record<string, StructProp[]>;
|
|
26
26
|
_referencedGlobals: Record<string, SymbolInfo[]>;
|
|
27
|
+
readonly _referencedGlobalSymbols: Set<SymbolInfo>;
|
|
28
|
+
private _globalSymbolQueries;
|
|
27
29
|
_referencedGlobalMacroASTs: TreeNode[];
|
|
30
|
+
private readonly _structVariableRoles;
|
|
31
|
+
_passSymbolTable?: SymbolTable<SymbolInfo>;
|
|
32
|
+
/** Receives every global use, including uses of declarations already discovered. */
|
|
33
|
+
onReferenceGlobal?: (symbols: readonly SymbolInfo[]) => void;
|
|
34
|
+
/** Receives interface uses so generated fields retain their declaration dependencies. */
|
|
35
|
+
onReferenceStructProps?: (props: readonly StructProp[]) => void;
|
|
36
|
+
readonly codeCache: Map<TreeNode, string>;
|
|
37
|
+
private readonly fragmentReturnModes;
|
|
38
|
+
private readonly terminalInterfaceReturns;
|
|
39
|
+
constructor();
|
|
40
|
+
reset(resetAll?: boolean): void;
|
|
28
41
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* be flattened against the IO lists.
|
|
42
|
+
* Finds the shared interface role of custom-struct declaration candidates.
|
|
43
|
+
* @param declarations - Exact parser struct identities resolved at one type occurrence.
|
|
44
|
+
* @returns Interface role, or `undefined` when the type is not an unambiguous interface struct.
|
|
33
45
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
getStructRole(declarations: readonly ASTNode.StructSpecifier[]): ShaderStructRole | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Tests the exact interface role of one struct declaration.
|
|
49
|
+
* @param declaration - Parser struct identity.
|
|
50
|
+
* @param role - Expected interface role.
|
|
51
|
+
* @returns Whether the declaration owns that role.
|
|
52
|
+
*/
|
|
53
|
+
hasStructRole(declaration: ASTNode.StructSpecifier, role: ShaderStructRole): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Registers stage-interface struct types for constant-time role lookup.
|
|
56
|
+
* @param role - Interface role shared by the supplied structs.
|
|
57
|
+
* @param structs - Struct declarations derived from parser IR.
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
registerStructTypes(role: ShaderStructRole, structs: readonly ASTNode.StructSpecifier[]): void;
|
|
61
|
+
/**
|
|
62
|
+
* Registers a resolved variable that holds an interface struct.
|
|
63
|
+
* @param variable - Parser symbol identity for the declaration.
|
|
64
|
+
* @param role - Struct interface role.
|
|
65
|
+
* @param stage - Optional stage from whose entry the variable is reachable. Omit when only exact
|
|
66
|
+
* symbol lookup is required.
|
|
67
|
+
*/
|
|
68
|
+
registerStructVar(variable: VarSymbol, role: ShaderStructRole, stage?: EShaderStage): void;
|
|
69
|
+
/**
|
|
70
|
+
* Finds an interface role for a global macro value that has no lexical symbol identity.
|
|
71
|
+
* @param variableName - Bare variable name in the macro replacement AST.
|
|
72
|
+
* @returns A role only when every stage-reachable declaration with that name agrees.
|
|
73
|
+
*/
|
|
74
|
+
getUnresolvedStructVarRole(variableName: string): ShaderStructRole | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Finds the shared interface role of branch-visible variable candidates.
|
|
77
|
+
* @param symbols - Exact parser symbols resolved at one reference.
|
|
78
|
+
* @returns Interface role, or `undefined` when the reference is not an unambiguous interface value.
|
|
79
|
+
*/
|
|
80
|
+
getStructVarRole(symbols: readonly SymbolInfo[]): ShaderStructRole | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Marks a value-return belonging to a fragment entry for backend lowering.
|
|
83
|
+
* @param statement - Exact return statement identity.
|
|
84
|
+
* @param mode - Fragment output contract of the containing entry declaration.
|
|
85
|
+
*/
|
|
86
|
+
registerFragmentReturn(statement: ASTNode.JumpStatement, mode: FragmentReturnMode): void;
|
|
87
|
+
/**
|
|
88
|
+
* Finds the output contract for a fragment-entry return statement.
|
|
89
|
+
* @param statement - Return statement identity.
|
|
90
|
+
* @returns Output mode, or `undefined` for ordinary helper/vertex returns.
|
|
91
|
+
*/
|
|
92
|
+
getFragmentReturnMode(statement: ASTNode.JumpStatement): FragmentReturnMode | undefined;
|
|
93
|
+
/** Marks a syntactically final interface return whose control-flow exit can be omitted. */
|
|
94
|
+
registerTerminalInterfaceReturn(statement: ASTNode.JumpStatement): void;
|
|
95
|
+
/**
|
|
96
|
+
* Tests whether an interface return is the final syntactic statement in its function.
|
|
97
|
+
* @param statement - Return statement identity.
|
|
98
|
+
* @returns Whether backend lowering may omit a trailing `return;`.
|
|
99
|
+
*/
|
|
100
|
+
isTerminalInterfaceReturn(statement: ASTNode.JumpStatement): boolean;
|
|
101
|
+
referenceAttribute(ident: BaseToken): void;
|
|
102
|
+
referenceVarying(ident: BaseToken): void;
|
|
103
|
+
referenceMRTProp(ident: BaseToken): void;
|
|
47
104
|
referenceGlobal(ident: string, type: ESymbolType): void;
|
|
48
105
|
private _referenceProp;
|
|
49
106
|
}
|
|
107
|
+
/** @internal */
|
|
108
|
+
export type FragmentReturnMode = "color" | "mrt";
|
package/types/codeGen/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IShaderSource } from "@galacean/engine-design";
|
|
2
2
|
export type IRenderState = [
|
|
3
3
|
/** Constant RenderState. */
|
|
4
|
-
Record<number, boolean | string | number
|
|
4
|
+
Record<number, boolean | string | number>,
|
|
5
5
|
/** Variable RenderState. */
|
|
6
6
|
Record<number, string>
|
|
7
7
|
];
|
package/types/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export { ShaderCompiler } from "./ShaderCompiler";
|
|
2
|
-
export
|
|
2
|
+
export { GSError, GSErrorName } from "@galacean/engine-shader-parser/internal";
|
|
3
|
+
/**
|
|
4
|
+
* Version of the shader compiler package, replaced with the package version during builds.
|
|
5
|
+
*/
|
|
3
6
|
export declare const version = "__buildVersion";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ShaderPrecompiler } from "./ShaderPrecompiler";
|