@galacean/engine-shaderlab 1.4.0-alpha.3 → 1.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +197 -124
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/browser.verbose.js +238 -157
- package/dist/browser.verbose.js.map +1 -1
- package/dist/browser.verbose.min.js +1 -1
- package/dist/browser.verbose.min.js.map +1 -1
- package/dist/main.js +197 -124
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +238 -157
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +197 -124
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +238 -157
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
- package/types/common/types.d.ts +1 -0
- package/types/lexer/Utils.d.ts +1 -1
- package/types/parser/AST.d.ts +9 -0
- package/types/parser/GrammarSymbol.d.ts +97 -95
- package/types/parser/builtin/functions.d.ts +4 -5
package/dist/main.verbose.js
CHANGED
|
@@ -548,7 +548,7 @@ var ETokenType = /*#__PURE__*/ function(ETokenType) {
|
|
|
548
548
|
/** , */ ETokenType[ETokenType["COMMA"] = 1032] = "COMMA";
|
|
549
549
|
ETokenType[ETokenType["COLON"] = 1033] = "COLON";
|
|
550
550
|
/** = */ ETokenType[ETokenType["EQUAL"] = 1034] = "EQUAL";
|
|
551
|
-
ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
|
|
551
|
+
/** ; */ ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
|
|
552
552
|
/** ! */ ETokenType[ETokenType["BANG"] = 1036] = "BANG";
|
|
553
553
|
/** \- */ ETokenType[ETokenType["DASH"] = 1037] = "DASH";
|
|
554
554
|
/** ~ */ ETokenType[ETokenType["TILDE"] = 1038] = "TILDE";
|
|
@@ -765,7 +765,8 @@ var LexerUtils = /*#__PURE__*/ function() {
|
|
|
765
765
|
};
|
|
766
766
|
LexerUtils.isSpace = function isSpace(charCode) {
|
|
767
767
|
return charCode === 9 || // Tab
|
|
768
|
-
charCode === 10 || // Line break
|
|
768
|
+
charCode === 10 || // Line break - /n
|
|
769
|
+
charCode === 13 || // Carriage return -/r
|
|
769
770
|
charCode === 32 // Space
|
|
770
771
|
;
|
|
771
772
|
};
|
|
@@ -841,7 +842,11 @@ var BaseScanner = /*#__PURE__*/ function() {
|
|
|
841
842
|
var start = this.getCurPosition();
|
|
842
843
|
this.advance(2);
|
|
843
844
|
// single line comments
|
|
844
|
-
|
|
845
|
+
var curChar = this.getCurChar();
|
|
846
|
+
while(curChar !== "\n" && curChar !== "\r" && !this.isEnd()){
|
|
847
|
+
this._advance();
|
|
848
|
+
curChar = this.getCurChar();
|
|
849
|
+
}
|
|
845
850
|
this.skipCommentsAndSpace();
|
|
846
851
|
return ShaderLab.createRange(start, this.getCurPosition());
|
|
847
852
|
} else if (this.peek(2) === "/*") {
|
|
@@ -964,7 +969,8 @@ var BaseScanner = /*#__PURE__*/ function() {
|
|
|
964
969
|
BaseScanner._spaceCharsWithBreak = [
|
|
965
970
|
" ",
|
|
966
971
|
"\t",
|
|
967
|
-
"\n"
|
|
972
|
+
"\n",
|
|
973
|
+
"\r"
|
|
968
974
|
];
|
|
969
975
|
BaseScanner._spaceChars = [
|
|
970
976
|
" ",
|
|
@@ -1559,101 +1565,103 @@ var NoneTerminal = /*#__PURE__*/ function(NoneTerminal) {
|
|
|
1559
1565
|
// glsl
|
|
1560
1566
|
NoneTerminal[NoneTerminal["global_declaration"] = 2002] = "global_declaration";
|
|
1561
1567
|
NoneTerminal[NoneTerminal["variable_declaration"] = 2003] = "variable_declaration";
|
|
1562
|
-
NoneTerminal[NoneTerminal["
|
|
1563
|
-
NoneTerminal[NoneTerminal["
|
|
1564
|
-
NoneTerminal[NoneTerminal["
|
|
1565
|
-
NoneTerminal[NoneTerminal["
|
|
1566
|
-
NoneTerminal[NoneTerminal["
|
|
1567
|
-
NoneTerminal[NoneTerminal["
|
|
1568
|
-
NoneTerminal[NoneTerminal["
|
|
1569
|
-
NoneTerminal[NoneTerminal["
|
|
1570
|
-
NoneTerminal[NoneTerminal["
|
|
1571
|
-
NoneTerminal[NoneTerminal["
|
|
1572
|
-
NoneTerminal[NoneTerminal["
|
|
1573
|
-
NoneTerminal[NoneTerminal["
|
|
1574
|
-
NoneTerminal[NoneTerminal["
|
|
1575
|
-
NoneTerminal[NoneTerminal["
|
|
1576
|
-
NoneTerminal[NoneTerminal["
|
|
1577
|
-
NoneTerminal[NoneTerminal["
|
|
1578
|
-
NoneTerminal[NoneTerminal["
|
|
1579
|
-
NoneTerminal[NoneTerminal["
|
|
1580
|
-
NoneTerminal[NoneTerminal["
|
|
1581
|
-
NoneTerminal[NoneTerminal["
|
|
1582
|
-
NoneTerminal[NoneTerminal["
|
|
1583
|
-
NoneTerminal[NoneTerminal["
|
|
1584
|
-
NoneTerminal[NoneTerminal["
|
|
1585
|
-
NoneTerminal[NoneTerminal["
|
|
1586
|
-
NoneTerminal[NoneTerminal["
|
|
1587
|
-
NoneTerminal[NoneTerminal["
|
|
1588
|
-
NoneTerminal[NoneTerminal["
|
|
1589
|
-
NoneTerminal[NoneTerminal["
|
|
1590
|
-
NoneTerminal[NoneTerminal["
|
|
1591
|
-
NoneTerminal[NoneTerminal["
|
|
1592
|
-
NoneTerminal[NoneTerminal["
|
|
1593
|
-
NoneTerminal[NoneTerminal["
|
|
1594
|
-
NoneTerminal[NoneTerminal["
|
|
1595
|
-
NoneTerminal[NoneTerminal["
|
|
1596
|
-
NoneTerminal[NoneTerminal["
|
|
1597
|
-
NoneTerminal[NoneTerminal["
|
|
1598
|
-
NoneTerminal[NoneTerminal["
|
|
1599
|
-
NoneTerminal[NoneTerminal["
|
|
1600
|
-
NoneTerminal[NoneTerminal["
|
|
1601
|
-
NoneTerminal[NoneTerminal["
|
|
1602
|
-
NoneTerminal[NoneTerminal["
|
|
1603
|
-
NoneTerminal[NoneTerminal["
|
|
1604
|
-
NoneTerminal[NoneTerminal["
|
|
1605
|
-
NoneTerminal[NoneTerminal["
|
|
1606
|
-
NoneTerminal[NoneTerminal["
|
|
1607
|
-
NoneTerminal[NoneTerminal["
|
|
1608
|
-
NoneTerminal[NoneTerminal["
|
|
1609
|
-
NoneTerminal[NoneTerminal["
|
|
1610
|
-
NoneTerminal[NoneTerminal["
|
|
1611
|
-
NoneTerminal[NoneTerminal["
|
|
1612
|
-
NoneTerminal[NoneTerminal["
|
|
1613
|
-
NoneTerminal[NoneTerminal["
|
|
1614
|
-
NoneTerminal[NoneTerminal["
|
|
1615
|
-
NoneTerminal[NoneTerminal["
|
|
1616
|
-
NoneTerminal[NoneTerminal["
|
|
1617
|
-
NoneTerminal[NoneTerminal["
|
|
1618
|
-
NoneTerminal[NoneTerminal["
|
|
1619
|
-
NoneTerminal[NoneTerminal["
|
|
1620
|
-
NoneTerminal[NoneTerminal["
|
|
1621
|
-
NoneTerminal[NoneTerminal["
|
|
1622
|
-
NoneTerminal[NoneTerminal["
|
|
1623
|
-
NoneTerminal[NoneTerminal["
|
|
1624
|
-
NoneTerminal[NoneTerminal["
|
|
1625
|
-
NoneTerminal[NoneTerminal["
|
|
1626
|
-
NoneTerminal[NoneTerminal["
|
|
1627
|
-
NoneTerminal[NoneTerminal["
|
|
1628
|
-
NoneTerminal[NoneTerminal["
|
|
1629
|
-
NoneTerminal[NoneTerminal["
|
|
1630
|
-
NoneTerminal[NoneTerminal["
|
|
1631
|
-
NoneTerminal[NoneTerminal["
|
|
1632
|
-
NoneTerminal[NoneTerminal["
|
|
1633
|
-
NoneTerminal[NoneTerminal["
|
|
1634
|
-
NoneTerminal[NoneTerminal["
|
|
1635
|
-
NoneTerminal[NoneTerminal["
|
|
1636
|
-
NoneTerminal[NoneTerminal["
|
|
1637
|
-
NoneTerminal[NoneTerminal["
|
|
1638
|
-
NoneTerminal[NoneTerminal["
|
|
1639
|
-
NoneTerminal[NoneTerminal["
|
|
1640
|
-
NoneTerminal[NoneTerminal["
|
|
1641
|
-
NoneTerminal[NoneTerminal["
|
|
1642
|
-
NoneTerminal[NoneTerminal["
|
|
1643
|
-
NoneTerminal[NoneTerminal["
|
|
1644
|
-
NoneTerminal[NoneTerminal["
|
|
1645
|
-
NoneTerminal[NoneTerminal["
|
|
1646
|
-
NoneTerminal[NoneTerminal["
|
|
1647
|
-
NoneTerminal[NoneTerminal["
|
|
1648
|
-
NoneTerminal[NoneTerminal["
|
|
1649
|
-
NoneTerminal[NoneTerminal["
|
|
1650
|
-
NoneTerminal[NoneTerminal["
|
|
1651
|
-
NoneTerminal[NoneTerminal["
|
|
1652
|
-
NoneTerminal[NoneTerminal["
|
|
1653
|
-
NoneTerminal[NoneTerminal["
|
|
1654
|
-
NoneTerminal[NoneTerminal["
|
|
1655
|
-
NoneTerminal[NoneTerminal["
|
|
1656
|
-
NoneTerminal[NoneTerminal["
|
|
1568
|
+
NoneTerminal[NoneTerminal["variable_declaration_list"] = 2004] = "variable_declaration_list";
|
|
1569
|
+
NoneTerminal[NoneTerminal["variable_declaration_statement"] = 2005] = "variable_declaration_statement";
|
|
1570
|
+
NoneTerminal[NoneTerminal["array_specifier_list"] = 2006] = "array_specifier_list";
|
|
1571
|
+
NoneTerminal[NoneTerminal["array_specifier"] = 2007] = "array_specifier";
|
|
1572
|
+
NoneTerminal[NoneTerminal["ext_builtin_type_specifier_nonarray"] = 2008] = "ext_builtin_type_specifier_nonarray";
|
|
1573
|
+
NoneTerminal[NoneTerminal["precision_specifier"] = 2009] = "precision_specifier";
|
|
1574
|
+
NoneTerminal[NoneTerminal["variable_identifier"] = 2010] = "variable_identifier";
|
|
1575
|
+
NoneTerminal[NoneTerminal["variable_identifier_node"] = 2011] = "variable_identifier_node";
|
|
1576
|
+
NoneTerminal[NoneTerminal["primary_expression"] = 2012] = "primary_expression";
|
|
1577
|
+
NoneTerminal[NoneTerminal["postfix_expression"] = 2013] = "postfix_expression";
|
|
1578
|
+
NoneTerminal[NoneTerminal["integer_expression"] = 2014] = "integer_expression";
|
|
1579
|
+
NoneTerminal[NoneTerminal["function_call"] = 2015] = "function_call";
|
|
1580
|
+
NoneTerminal[NoneTerminal["function_call_generic"] = 2016] = "function_call_generic";
|
|
1581
|
+
NoneTerminal[NoneTerminal["function_call_header_no_parameters"] = 2017] = "function_call_header_no_parameters";
|
|
1582
|
+
NoneTerminal[NoneTerminal["function_call_header_with_parameters"] = 2018] = "function_call_header_with_parameters";
|
|
1583
|
+
NoneTerminal[NoneTerminal["function_call_parameter_list"] = 2019] = "function_call_parameter_list";
|
|
1584
|
+
NoneTerminal[NoneTerminal["function_call_header"] = 2020] = "function_call_header";
|
|
1585
|
+
NoneTerminal[NoneTerminal["function_identifier"] = 2021] = "function_identifier";
|
|
1586
|
+
NoneTerminal[NoneTerminal["constructor_identifier"] = 2022] = "constructor_identifier";
|
|
1587
|
+
NoneTerminal[NoneTerminal["unary_expression"] = 2023] = "unary_expression";
|
|
1588
|
+
NoneTerminal[NoneTerminal["unary_operator"] = 2024] = "unary_operator";
|
|
1589
|
+
NoneTerminal[NoneTerminal["multiplicative_expression"] = 2025] = "multiplicative_expression";
|
|
1590
|
+
NoneTerminal[NoneTerminal["additive_expression"] = 2026] = "additive_expression";
|
|
1591
|
+
NoneTerminal[NoneTerminal["shift_expression"] = 2027] = "shift_expression";
|
|
1592
|
+
NoneTerminal[NoneTerminal["relational_expression"] = 2028] = "relational_expression";
|
|
1593
|
+
NoneTerminal[NoneTerminal["equality_expression"] = 2029] = "equality_expression";
|
|
1594
|
+
NoneTerminal[NoneTerminal["and_expression"] = 2030] = "and_expression";
|
|
1595
|
+
NoneTerminal[NoneTerminal["inclusive_or_expression"] = 2031] = "inclusive_or_expression";
|
|
1596
|
+
NoneTerminal[NoneTerminal["exclusive_or_expression"] = 2032] = "exclusive_or_expression";
|
|
1597
|
+
NoneTerminal[NoneTerminal["logical_and_expression"] = 2033] = "logical_and_expression";
|
|
1598
|
+
NoneTerminal[NoneTerminal["logical_xor_expression"] = 2034] = "logical_xor_expression";
|
|
1599
|
+
NoneTerminal[NoneTerminal["logical_or_expression"] = 2035] = "logical_or_expression";
|
|
1600
|
+
NoneTerminal[NoneTerminal["conditional_expression"] = 2036] = "conditional_expression";
|
|
1601
|
+
NoneTerminal[NoneTerminal["assignment_expression"] = 2037] = "assignment_expression";
|
|
1602
|
+
NoneTerminal[NoneTerminal["assignment_operator"] = 2038] = "assignment_operator";
|
|
1603
|
+
NoneTerminal[NoneTerminal["expression"] = 2039] = "expression";
|
|
1604
|
+
NoneTerminal[NoneTerminal["integer_constant_expression"] = 2040] = "integer_constant_expression";
|
|
1605
|
+
NoneTerminal[NoneTerminal["integer_constant_expression_operator"] = 2041] = "integer_constant_expression_operator";
|
|
1606
|
+
NoneTerminal[NoneTerminal["declaration"] = 2042] = "declaration";
|
|
1607
|
+
NoneTerminal[NoneTerminal["function_prototype"] = 2043] = "function_prototype";
|
|
1608
|
+
NoneTerminal[NoneTerminal["function_declarator"] = 2044] = "function_declarator";
|
|
1609
|
+
NoneTerminal[NoneTerminal["function_header_with_parameters"] = 2045] = "function_header_with_parameters";
|
|
1610
|
+
NoneTerminal[NoneTerminal["function_header"] = 2046] = "function_header";
|
|
1611
|
+
NoneTerminal[NoneTerminal["function_parameter_list"] = 2047] = "function_parameter_list";
|
|
1612
|
+
NoneTerminal[NoneTerminal["parameter_declarator"] = 2048] = "parameter_declarator";
|
|
1613
|
+
NoneTerminal[NoneTerminal["parameter_declaration"] = 2049] = "parameter_declaration";
|
|
1614
|
+
NoneTerminal[NoneTerminal["parameter_qualifier"] = 2050] = "parameter_qualifier";
|
|
1615
|
+
NoneTerminal[NoneTerminal["parameter_type_specifier"] = 2051] = "parameter_type_specifier";
|
|
1616
|
+
NoneTerminal[NoneTerminal["init_declarator_list"] = 2052] = "init_declarator_list";
|
|
1617
|
+
NoneTerminal[NoneTerminal["single_declaration"] = 2053] = "single_declaration";
|
|
1618
|
+
NoneTerminal[NoneTerminal["fully_specified_type"] = 2054] = "fully_specified_type";
|
|
1619
|
+
NoneTerminal[NoneTerminal["type_qualifier"] = 2055] = "type_qualifier";
|
|
1620
|
+
NoneTerminal[NoneTerminal["single_type_qualifier"] = 2056] = "single_type_qualifier";
|
|
1621
|
+
NoneTerminal[NoneTerminal["storage_qualifier"] = 2057] = "storage_qualifier";
|
|
1622
|
+
NoneTerminal[NoneTerminal["precision_qualifier"] = 2058] = "precision_qualifier";
|
|
1623
|
+
NoneTerminal[NoneTerminal["interpolation_qualifier"] = 2059] = "interpolation_qualifier";
|
|
1624
|
+
NoneTerminal[NoneTerminal["invariant_qualifier"] = 2060] = "invariant_qualifier";
|
|
1625
|
+
NoneTerminal[NoneTerminal["type_specifier"] = 2061] = "type_specifier";
|
|
1626
|
+
NoneTerminal[NoneTerminal["type_specifier_nonarray"] = 2062] = "type_specifier_nonarray";
|
|
1627
|
+
NoneTerminal[NoneTerminal["type_specifier_no_prec"] = 2063] = "type_specifier_no_prec";
|
|
1628
|
+
NoneTerminal[NoneTerminal["basic_type"] = 2064] = "basic_type";
|
|
1629
|
+
NoneTerminal[NoneTerminal["struct_specifier"] = 2065] = "struct_specifier";
|
|
1630
|
+
NoneTerminal[NoneTerminal["struct_declaration_list"] = 2066] = "struct_declaration_list";
|
|
1631
|
+
NoneTerminal[NoneTerminal["struct_declaration"] = 2067] = "struct_declaration";
|
|
1632
|
+
NoneTerminal[NoneTerminal["layout_qualifier"] = 2068] = "layout_qualifier";
|
|
1633
|
+
NoneTerminal[NoneTerminal["struct_declarator_list"] = 2069] = "struct_declarator_list";
|
|
1634
|
+
NoneTerminal[NoneTerminal["struct_declarator"] = 2070] = "struct_declarator";
|
|
1635
|
+
NoneTerminal[NoneTerminal["identifier_list"] = 2071] = "identifier_list";
|
|
1636
|
+
NoneTerminal[NoneTerminal["decl_identifier"] = 2072] = "decl_identifier";
|
|
1637
|
+
NoneTerminal[NoneTerminal["initializer"] = 2073] = "initializer";
|
|
1638
|
+
NoneTerminal[NoneTerminal["initializer_list"] = 2074] = "initializer_list";
|
|
1639
|
+
NoneTerminal[NoneTerminal["declaration_statement"] = 2075] = "declaration_statement";
|
|
1640
|
+
NoneTerminal[NoneTerminal["simple_statement"] = 2076] = "simple_statement";
|
|
1641
|
+
NoneTerminal[NoneTerminal["compound_statement_no_scope"] = 2077] = "compound_statement_no_scope";
|
|
1642
|
+
NoneTerminal[NoneTerminal["statement_with_scope"] = 2078] = "statement_with_scope";
|
|
1643
|
+
NoneTerminal[NoneTerminal["compound_statement"] = 2079] = "compound_statement";
|
|
1644
|
+
NoneTerminal[NoneTerminal["statement"] = 2080] = "statement";
|
|
1645
|
+
NoneTerminal[NoneTerminal["statement_list"] = 2081] = "statement_list";
|
|
1646
|
+
NoneTerminal[NoneTerminal["iteration_statement_no_new_scope"] = 2082] = "iteration_statement_no_new_scope";
|
|
1647
|
+
NoneTerminal[NoneTerminal["expression_statement"] = 2083] = "expression_statement";
|
|
1648
|
+
NoneTerminal[NoneTerminal["selection_statement"] = 2084] = "selection_statement";
|
|
1649
|
+
NoneTerminal[NoneTerminal["selection_rest_statement"] = 2085] = "selection_rest_statement";
|
|
1650
|
+
NoneTerminal[NoneTerminal["condition"] = 2086] = "condition";
|
|
1651
|
+
NoneTerminal[NoneTerminal["conditionopt"] = 2087] = "conditionopt";
|
|
1652
|
+
NoneTerminal[NoneTerminal["iteration_statement"] = 2088] = "iteration_statement";
|
|
1653
|
+
NoneTerminal[NoneTerminal["for_init_statement"] = 2089] = "for_init_statement";
|
|
1654
|
+
NoneTerminal[NoneTerminal["for_rest_statement"] = 2090] = "for_rest_statement";
|
|
1655
|
+
NoneTerminal[NoneTerminal["jump_statement"] = 2091] = "jump_statement";
|
|
1656
|
+
NoneTerminal[NoneTerminal["external_declaration"] = 2092] = "external_declaration";
|
|
1657
|
+
NoneTerminal[NoneTerminal["function_definition"] = 2093] = "function_definition";
|
|
1658
|
+
NoneTerminal[NoneTerminal["field_selection"] = 2094] = "field_selection";
|
|
1659
|
+
NoneTerminal[NoneTerminal["bool_constant"] = 2095] = "bool_constant";
|
|
1660
|
+
NoneTerminal[NoneTerminal["function_identifier_node"] = 2096] = "function_identifier_node";
|
|
1661
|
+
NoneTerminal[NoneTerminal["typename_identifier_node"] = 2097] = "typename_identifier_node";
|
|
1662
|
+
NoneTerminal[NoneTerminal["scope_brace"] = 2098] = "scope_brace";
|
|
1663
|
+
NoneTerminal[NoneTerminal["scope_end_brace"] = 2099] = "scope_end_brace";
|
|
1664
|
+
NoneTerminal[NoneTerminal["_ignore"] = 2100] = "_ignore";
|
|
1657
1665
|
return NoneTerminal;
|
|
1658
1666
|
}({});
|
|
1659
1667
|
|
|
@@ -1750,38 +1758,43 @@ var BuiltinFunction = /*#__PURE__*/ function() {
|
|
|
1750
1758
|
list.push(fn);
|
|
1751
1759
|
BuiltinFunctionTable.set(ident, list);
|
|
1752
1760
|
};
|
|
1753
|
-
BuiltinFunction.getFn = function getFn(ident) {
|
|
1754
|
-
for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
1755
|
-
args[_key - 1] = arguments[_key];
|
|
1756
|
-
}
|
|
1761
|
+
BuiltinFunction.getFn = function getFn(ident, parameterTypes) {
|
|
1757
1762
|
var list = BuiltinFunctionTable.get(ident);
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
var
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1763
|
+
if (list) {
|
|
1764
|
+
for(var length = list.length, i = 0; i < length; i++){
|
|
1765
|
+
var fn = list[i];
|
|
1766
|
+
var fnArgs = fn.args;
|
|
1767
|
+
var argLength = fnArgs.length;
|
|
1768
|
+
if (argLength !== parameterTypes.length) continue;
|
|
1769
|
+
// Try to match generic parameter type.
|
|
1770
|
+
var returnType = TypeAny;
|
|
1771
|
+
var found = true;
|
|
1772
|
+
for(var i1 = 0; i1 < argLength; i1++){
|
|
1773
|
+
var curFnArg = fnArgs[i1];
|
|
1774
|
+
if (isGenericType(curFnArg)) {
|
|
1775
|
+
if (returnType === TypeAny) returnType = parameterTypes[i1];
|
|
1776
|
+
} else {
|
|
1777
|
+
if (curFnArg !== parameterTypes[i1] && parameterTypes[i1] !== TypeAny) {
|
|
1778
|
+
found = false;
|
|
1779
|
+
break;
|
|
1772
1780
|
}
|
|
1773
1781
|
}
|
|
1774
|
-
if (args[i] === TypeAny) continue;
|
|
1775
|
-
if (args[i] !== realType) return false;
|
|
1776
1782
|
}
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
};
|
|
1783
|
+
if (found) {
|
|
1784
|
+
fn._realReturnType = returnType;
|
|
1785
|
+
return fn;
|
|
1786
|
+
}
|
|
1787
|
+
}
|
|
1783
1788
|
}
|
|
1784
1789
|
};
|
|
1790
|
+
_create_class(BuiltinFunction, [
|
|
1791
|
+
{
|
|
1792
|
+
key: "realReturnType",
|
|
1793
|
+
get: function get() {
|
|
1794
|
+
return this._realReturnType;
|
|
1795
|
+
}
|
|
1796
|
+
}
|
|
1797
|
+
]);
|
|
1785
1798
|
return BuiltinFunction;
|
|
1786
1799
|
}();
|
|
1787
1800
|
BuiltinFunction._create("radians", 200, 200);
|
|
@@ -1916,8 +1929,8 @@ BuiltinFunction._create("textureSize", EKeyword.IVEC2, EKeyword.SAMPLER2D_SHADOW
|
|
|
1916
1929
|
BuiltinFunction._create("textureSize", EKeyword.IVEC2, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.INT);
|
|
1917
1930
|
BuiltinFunction._create("textureSize", EKeyword.IVEC3, 213, EKeyword.INT);
|
|
1918
1931
|
BuiltinFunction._create("textureSize", EKeyword.IVEC3, EKeyword.SAMPLER2D_ARRAY_SHADOW, EKeyword.INT);
|
|
1919
|
-
BuiltinFunction._create("texture2D", EKeyword.SAMPLER2D, EKeyword.VEC2);
|
|
1920
|
-
BuiltinFunction._create("texture2D", EKeyword.SAMPLER2D, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1932
|
+
BuiltinFunction._create("texture2D", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2);
|
|
1933
|
+
BuiltinFunction._create("texture2D", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1921
1934
|
BuiltinFunction._create("texture", 209, 210, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1922
1935
|
BuiltinFunction._create("texture", 209, 210, EKeyword.VEC2);
|
|
1923
1936
|
BuiltinFunction._create("texture", 209, 211, EKeyword.VEC3, EKeyword.FLOAT);
|
|
@@ -1944,9 +1957,12 @@ BuiltinFunction._create("textureLod", 209, 211, EKeyword.VEC3, EKeyword.FLOAT);
|
|
|
1944
1957
|
BuiltinFunction._create("textureLod", 209, 212, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1945
1958
|
BuiltinFunction._create("textureLod", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1946
1959
|
BuiltinFunction._create("textureLod", 209, 213, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1960
|
+
BuiltinFunction._create("texture2DLodEXT", 209, 210, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1961
|
+
BuiltinFunction._create("texture2DLodEXT", 209, 211, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1947
1962
|
BuiltinFunction._create("textureCube", EKeyword.SAMPLER_CUBE, EKeyword.VEC3);
|
|
1948
1963
|
BuiltinFunction._create("textureCube", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1949
1964
|
BuiltinFunction._create("textureCubeLod", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1965
|
+
BuiltinFunction._create("textureCubeLodEXT", 209, 212, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1950
1966
|
BuiltinFunction._create("textureOffset", 209, 210, EKeyword.VEC2, EKeyword.IVEC2, EKeyword.FLOAT);
|
|
1951
1967
|
BuiltinFunction._create("textureOffset", 209, 210, EKeyword.VEC2, EKeyword.IVEC2);
|
|
1952
1968
|
BuiltinFunction._create("textureOffset", 209, 211, EKeyword.VEC3, EKeyword.IVEC3, EKeyword.FLOAT);
|
|
@@ -2280,7 +2296,9 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
2280
2296
|
_proto.codeGen = function codeGen(visitor) {
|
|
2281
2297
|
return visitor.defaultCodeGen(this.children);
|
|
2282
2298
|
};
|
|
2283
|
-
|
|
2299
|
+
/**
|
|
2300
|
+
* Do semantic analyze right after the ast node is generated.
|
|
2301
|
+
*/ _proto.semanticAnalyze = function semanticAnalyze(sa) {};
|
|
2284
2302
|
_create_class(TreeNode, [
|
|
2285
2303
|
{
|
|
2286
2304
|
key: "children",
|
|
@@ -2523,19 +2541,26 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
2523
2541
|
this.arraySpecifier = undefined;
|
|
2524
2542
|
};
|
|
2525
2543
|
_proto.semanticAnalyze = function semanticAnalyze(sa) {
|
|
2526
|
-
var
|
|
2527
|
-
var
|
|
2528
|
-
|
|
2544
|
+
var children = this.children;
|
|
2545
|
+
var childrenLen = children.length;
|
|
2546
|
+
var fullyType = children[0];
|
|
2547
|
+
var typeSpecifier = fullyType.typeSpecifier;
|
|
2548
|
+
this.typeSpecifier = typeSpecifier;
|
|
2549
|
+
this.arraySpecifier = typeSpecifier.arraySpecifier;
|
|
2550
|
+
var id = children[1];
|
|
2529
2551
|
var sm;
|
|
2530
|
-
if (
|
|
2531
|
-
var symbolType = new SymbolType(fullyType.type,
|
|
2532
|
-
var initializer =
|
|
2552
|
+
if (childrenLen === 2 || childrenLen === 4) {
|
|
2553
|
+
var symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
|
|
2554
|
+
var initializer = children[3];
|
|
2533
2555
|
sm = new VarSymbol(id.lexeme, symbolType, false, initializer);
|
|
2534
2556
|
} else {
|
|
2535
|
-
var arraySpecifier =
|
|
2557
|
+
var arraySpecifier = children[2];
|
|
2558
|
+
if (arraySpecifier && this.arraySpecifier) {
|
|
2559
|
+
sa.reportError(arraySpecifier.location, "Array of array is not supported.");
|
|
2560
|
+
}
|
|
2536
2561
|
this.arraySpecifier = arraySpecifier;
|
|
2537
|
-
var symbolType1 = new SymbolType(fullyType.type,
|
|
2538
|
-
var initializer1 =
|
|
2562
|
+
var symbolType1 = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
|
|
2563
|
+
var initializer1 = children[4];
|
|
2539
2564
|
sm = new VarSymbol(id.lexeme, symbolType1, false, initializer1);
|
|
2540
2565
|
}
|
|
2541
2566
|
sa.symbolTableStack.insert(sm);
|
|
@@ -2717,6 +2742,12 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
2717
2742
|
return (_this_children = this.children) == null ? void 0 : (_this_children_ = _this_children[1]) == null ? void 0 : _this_children_.size;
|
|
2718
2743
|
}
|
|
2719
2744
|
},
|
|
2745
|
+
{
|
|
2746
|
+
key: "arraySpecifier",
|
|
2747
|
+
get: function get() {
|
|
2748
|
+
return this.children[1];
|
|
2749
|
+
}
|
|
2750
|
+
},
|
|
2720
2751
|
{
|
|
2721
2752
|
key: "isCustom",
|
|
2722
2753
|
get: function get() {
|
|
@@ -3376,7 +3407,6 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
3376
3407
|
if (functionIdentifier.isBuiltin) {
|
|
3377
3408
|
this.type = functionIdentifier.ident;
|
|
3378
3409
|
} else {
|
|
3379
|
-
var _BuiltinFunction;
|
|
3380
3410
|
var _fnSymbol_dataType;
|
|
3381
3411
|
var fnIdent = functionIdentifier.ident;
|
|
3382
3412
|
var paramSig;
|
|
@@ -3386,11 +3416,9 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
3386
3416
|
paramSig = paramList.paramSig;
|
|
3387
3417
|
}
|
|
3388
3418
|
}
|
|
3389
|
-
var builtinFn =
|
|
3390
|
-
fnIdent
|
|
3391
|
-
], paramSig != null ? paramSig : []));
|
|
3419
|
+
var builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);
|
|
3392
3420
|
if (builtinFn) {
|
|
3393
|
-
this.type =
|
|
3421
|
+
this.type = builtinFn.realReturnType;
|
|
3394
3422
|
return;
|
|
3395
3423
|
}
|
|
3396
3424
|
var fnSymbol = sa.lookupSymbolBy(fnIdent, ESymbolType.FN, paramSig);
|
|
@@ -4075,14 +4103,15 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
4075
4103
|
}
|
|
4076
4104
|
var _proto = VariableDeclaration.prototype;
|
|
4077
4105
|
_proto.semanticAnalyze = function semanticAnalyze(sa) {
|
|
4078
|
-
var
|
|
4079
|
-
var
|
|
4080
|
-
var
|
|
4081
|
-
|
|
4106
|
+
var children = this.children;
|
|
4107
|
+
var type = children[0];
|
|
4108
|
+
var ident = children[1];
|
|
4109
|
+
this.type = type;
|
|
4110
|
+
var sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);
|
|
4082
4111
|
sa.symbolTableStack.insert(sm);
|
|
4083
4112
|
};
|
|
4084
4113
|
_proto.codeGen = function codeGen(visitor) {
|
|
4085
|
-
return visitor.visitGlobalVariableDeclaration(this);
|
|
4114
|
+
return visitor.visitGlobalVariableDeclaration(this) + ";";
|
|
4086
4115
|
};
|
|
4087
4116
|
return VariableDeclaration;
|
|
4088
4117
|
}(TreeNode);
|
|
@@ -4090,6 +4119,45 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
4090
4119
|
VariableDeclaration = __decorate([
|
|
4091
4120
|
ASTNodeDecorator(NoneTerminal.variable_declaration)
|
|
4092
4121
|
], VariableDeclaration);
|
|
4122
|
+
var VariableDeclarationList = /*#__PURE__*/ function(TreeNode) {
|
|
4123
|
+
_inherits(VariableDeclarationList, TreeNode);
|
|
4124
|
+
function VariableDeclarationList() {
|
|
4125
|
+
return TreeNode.apply(this, arguments) || this;
|
|
4126
|
+
}
|
|
4127
|
+
var _proto = VariableDeclarationList.prototype;
|
|
4128
|
+
_proto.semanticAnalyze = function semanticAnalyze(sa) {
|
|
4129
|
+
var children = this.children;
|
|
4130
|
+
var length = children.length;
|
|
4131
|
+
var variableDeclaration = children[0];
|
|
4132
|
+
var type = variableDeclaration.type;
|
|
4133
|
+
this.type = type;
|
|
4134
|
+
if (length === 1) {
|
|
4135
|
+
return;
|
|
4136
|
+
}
|
|
4137
|
+
var ident = children[2];
|
|
4138
|
+
var newVariable = VariableDeclaration.pool.get();
|
|
4139
|
+
if (length === 3) {
|
|
4140
|
+
// variable_declaration_list ',' id
|
|
4141
|
+
newVariable.set(ident.location, [
|
|
4142
|
+
type,
|
|
4143
|
+
ident
|
|
4144
|
+
]);
|
|
4145
|
+
} else {
|
|
4146
|
+
// variable_declaration_list ',' id array_specifier
|
|
4147
|
+
newVariable.set(ident.location, [
|
|
4148
|
+
type,
|
|
4149
|
+
ident,
|
|
4150
|
+
children[3]
|
|
4151
|
+
]);
|
|
4152
|
+
}
|
|
4153
|
+
newVariable.semanticAnalyze(sa);
|
|
4154
|
+
};
|
|
4155
|
+
return VariableDeclarationList;
|
|
4156
|
+
}(TreeNode);
|
|
4157
|
+
ASTNode.VariableDeclarationList = VariableDeclarationList;
|
|
4158
|
+
VariableDeclarationList = __decorate([
|
|
4159
|
+
ASTNodeDecorator(NoneTerminal.variable_declaration_list)
|
|
4160
|
+
], VariableDeclarationList);
|
|
4093
4161
|
var VariableIdentifier = /*#__PURE__*/ function(TreeNode) {
|
|
4094
4162
|
_inherits(VariableIdentifier, TreeNode);
|
|
4095
4163
|
function VariableIdentifier() {
|
|
@@ -4228,7 +4296,7 @@ var productionAndRules = [].concat(GrammarUtils.createProductionWithOptions(None
|
|
|
4228
4296
|
NoneTerminal.precision_specifier
|
|
4229
4297
|
],
|
|
4230
4298
|
[
|
|
4231
|
-
NoneTerminal.
|
|
4299
|
+
NoneTerminal.variable_declaration_statement
|
|
4232
4300
|
],
|
|
4233
4301
|
[
|
|
4234
4302
|
NoneTerminal.struct_specifier
|
|
@@ -4238,22 +4306,35 @@ var productionAndRules = [].concat(GrammarUtils.createProductionWithOptions(None
|
|
|
4238
4306
|
]
|
|
4239
4307
|
]), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration, [
|
|
4240
4308
|
[
|
|
4241
|
-
|
|
4242
|
-
ETokenType.ID
|
|
4243
|
-
ETokenType.SEMICOLON
|
|
4309
|
+
NoneTerminal.fully_specified_type,
|
|
4310
|
+
ETokenType.ID
|
|
4244
4311
|
],
|
|
4245
4312
|
[
|
|
4246
4313
|
NoneTerminal.fully_specified_type,
|
|
4247
4314
|
ETokenType.ID,
|
|
4248
|
-
|
|
4315
|
+
NoneTerminal.array_specifier
|
|
4316
|
+
]
|
|
4317
|
+
], ASTNode.VariableDeclaration.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_list, [
|
|
4318
|
+
[
|
|
4319
|
+
NoneTerminal.variable_declaration
|
|
4249
4320
|
],
|
|
4250
4321
|
[
|
|
4251
|
-
NoneTerminal.
|
|
4322
|
+
NoneTerminal.variable_declaration_list,
|
|
4323
|
+
ETokenType.COMMA,
|
|
4324
|
+
ETokenType.ID
|
|
4325
|
+
],
|
|
4326
|
+
[
|
|
4327
|
+
NoneTerminal.variable_declaration_list,
|
|
4328
|
+
ETokenType.COMMA,
|
|
4252
4329
|
ETokenType.ID,
|
|
4253
|
-
NoneTerminal.array_specifier
|
|
4330
|
+
NoneTerminal.array_specifier
|
|
4331
|
+
]
|
|
4332
|
+
], ASTNode.VariableDeclarationList.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [
|
|
4333
|
+
[
|
|
4334
|
+
NoneTerminal.variable_declaration_list,
|
|
4254
4335
|
ETokenType.SEMICOLON
|
|
4255
4336
|
]
|
|
4256
|
-
]
|
|
4337
|
+
]), GrammarUtils.createProductionWithOptions(NoneTerminal.ext_builtin_type_specifier_nonarray, [
|
|
4257
4338
|
[
|
|
4258
4339
|
EKeyword.VOID
|
|
4259
4340
|
],
|
|
@@ -6391,7 +6472,7 @@ var PpScanner = /*#__PURE__*/ function(BaseScanner) {
|
|
|
6391
6472
|
return !!this._definedMacros.get(macro.lexeme);
|
|
6392
6473
|
} else {
|
|
6393
6474
|
var macro1 = this._definedMacros.get(id.lexeme);
|
|
6394
|
-
if (!macro1) {
|
|
6475
|
+
if (!macro1 || !macro1.body) {
|
|
6395
6476
|
return false;
|
|
6396
6477
|
}
|
|
6397
6478
|
if (macro1.isFunction) {
|
|
@@ -7977,7 +8058,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
|
|
|
7977
8058
|
ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
|
|
7978
8059
|
|
|
7979
8060
|
//@ts-ignore
|
|
7980
|
-
var version = "1.4.0-
|
|
8061
|
+
var version = "1.4.0-beta.0";
|
|
7981
8062
|
var mode = "Release";
|
|
7982
8063
|
mode = "Verbose";
|
|
7983
8064
|
console.log("Galacean ShaderLab version: " + version + ". mode: " + mode);
|