@galacean/engine-shaderlab 1.4.0-alpha.3 → 1.4.0-beta.1
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/module.verbose.js
CHANGED
|
@@ -544,7 +544,7 @@ var ETokenType = /*#__PURE__*/ function(ETokenType) {
|
|
|
544
544
|
/** , */ ETokenType[ETokenType["COMMA"] = 1032] = "COMMA";
|
|
545
545
|
ETokenType[ETokenType["COLON"] = 1033] = "COLON";
|
|
546
546
|
/** = */ ETokenType[ETokenType["EQUAL"] = 1034] = "EQUAL";
|
|
547
|
-
ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
|
|
547
|
+
/** ; */ ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
|
|
548
548
|
/** ! */ ETokenType[ETokenType["BANG"] = 1036] = "BANG";
|
|
549
549
|
/** \- */ ETokenType[ETokenType["DASH"] = 1037] = "DASH";
|
|
550
550
|
/** ~ */ ETokenType[ETokenType["TILDE"] = 1038] = "TILDE";
|
|
@@ -761,7 +761,8 @@ var LexerUtils = /*#__PURE__*/ function() {
|
|
|
761
761
|
};
|
|
762
762
|
LexerUtils.isSpace = function isSpace(charCode) {
|
|
763
763
|
return charCode === 9 || // Tab
|
|
764
|
-
charCode === 10 || // Line break
|
|
764
|
+
charCode === 10 || // Line break - /n
|
|
765
|
+
charCode === 13 || // Carriage return -/r
|
|
765
766
|
charCode === 32 // Space
|
|
766
767
|
;
|
|
767
768
|
};
|
|
@@ -837,7 +838,11 @@ var BaseScanner = /*#__PURE__*/ function() {
|
|
|
837
838
|
var start = this.getCurPosition();
|
|
838
839
|
this.advance(2);
|
|
839
840
|
// single line comments
|
|
840
|
-
|
|
841
|
+
var curChar = this.getCurChar();
|
|
842
|
+
while(curChar !== "\n" && curChar !== "\r" && !this.isEnd()){
|
|
843
|
+
this._advance();
|
|
844
|
+
curChar = this.getCurChar();
|
|
845
|
+
}
|
|
841
846
|
this.skipCommentsAndSpace();
|
|
842
847
|
return ShaderLab.createRange(start, this.getCurPosition());
|
|
843
848
|
} else if (this.peek(2) === "/*") {
|
|
@@ -960,7 +965,8 @@ var BaseScanner = /*#__PURE__*/ function() {
|
|
|
960
965
|
BaseScanner._spaceCharsWithBreak = [
|
|
961
966
|
" ",
|
|
962
967
|
"\t",
|
|
963
|
-
"\n"
|
|
968
|
+
"\n",
|
|
969
|
+
"\r"
|
|
964
970
|
];
|
|
965
971
|
BaseScanner._spaceChars = [
|
|
966
972
|
" ",
|
|
@@ -1555,101 +1561,103 @@ var NoneTerminal = /*#__PURE__*/ function(NoneTerminal) {
|
|
|
1555
1561
|
// glsl
|
|
1556
1562
|
NoneTerminal[NoneTerminal["global_declaration"] = 2002] = "global_declaration";
|
|
1557
1563
|
NoneTerminal[NoneTerminal["variable_declaration"] = 2003] = "variable_declaration";
|
|
1558
|
-
NoneTerminal[NoneTerminal["
|
|
1559
|
-
NoneTerminal[NoneTerminal["
|
|
1560
|
-
NoneTerminal[NoneTerminal["
|
|
1561
|
-
NoneTerminal[NoneTerminal["
|
|
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["
|
|
1564
|
+
NoneTerminal[NoneTerminal["variable_declaration_list"] = 2004] = "variable_declaration_list";
|
|
1565
|
+
NoneTerminal[NoneTerminal["variable_declaration_statement"] = 2005] = "variable_declaration_statement";
|
|
1566
|
+
NoneTerminal[NoneTerminal["array_specifier_list"] = 2006] = "array_specifier_list";
|
|
1567
|
+
NoneTerminal[NoneTerminal["array_specifier"] = 2007] = "array_specifier";
|
|
1568
|
+
NoneTerminal[NoneTerminal["ext_builtin_type_specifier_nonarray"] = 2008] = "ext_builtin_type_specifier_nonarray";
|
|
1569
|
+
NoneTerminal[NoneTerminal["precision_specifier"] = 2009] = "precision_specifier";
|
|
1570
|
+
NoneTerminal[NoneTerminal["variable_identifier"] = 2010] = "variable_identifier";
|
|
1571
|
+
NoneTerminal[NoneTerminal["variable_identifier_node"] = 2011] = "variable_identifier_node";
|
|
1572
|
+
NoneTerminal[NoneTerminal["primary_expression"] = 2012] = "primary_expression";
|
|
1573
|
+
NoneTerminal[NoneTerminal["postfix_expression"] = 2013] = "postfix_expression";
|
|
1574
|
+
NoneTerminal[NoneTerminal["integer_expression"] = 2014] = "integer_expression";
|
|
1575
|
+
NoneTerminal[NoneTerminal["function_call"] = 2015] = "function_call";
|
|
1576
|
+
NoneTerminal[NoneTerminal["function_call_generic"] = 2016] = "function_call_generic";
|
|
1577
|
+
NoneTerminal[NoneTerminal["function_call_header_no_parameters"] = 2017] = "function_call_header_no_parameters";
|
|
1578
|
+
NoneTerminal[NoneTerminal["function_call_header_with_parameters"] = 2018] = "function_call_header_with_parameters";
|
|
1579
|
+
NoneTerminal[NoneTerminal["function_call_parameter_list"] = 2019] = "function_call_parameter_list";
|
|
1580
|
+
NoneTerminal[NoneTerminal["function_call_header"] = 2020] = "function_call_header";
|
|
1581
|
+
NoneTerminal[NoneTerminal["function_identifier"] = 2021] = "function_identifier";
|
|
1582
|
+
NoneTerminal[NoneTerminal["constructor_identifier"] = 2022] = "constructor_identifier";
|
|
1583
|
+
NoneTerminal[NoneTerminal["unary_expression"] = 2023] = "unary_expression";
|
|
1584
|
+
NoneTerminal[NoneTerminal["unary_operator"] = 2024] = "unary_operator";
|
|
1585
|
+
NoneTerminal[NoneTerminal["multiplicative_expression"] = 2025] = "multiplicative_expression";
|
|
1586
|
+
NoneTerminal[NoneTerminal["additive_expression"] = 2026] = "additive_expression";
|
|
1587
|
+
NoneTerminal[NoneTerminal["shift_expression"] = 2027] = "shift_expression";
|
|
1588
|
+
NoneTerminal[NoneTerminal["relational_expression"] = 2028] = "relational_expression";
|
|
1589
|
+
NoneTerminal[NoneTerminal["equality_expression"] = 2029] = "equality_expression";
|
|
1590
|
+
NoneTerminal[NoneTerminal["and_expression"] = 2030] = "and_expression";
|
|
1591
|
+
NoneTerminal[NoneTerminal["inclusive_or_expression"] = 2031] = "inclusive_or_expression";
|
|
1592
|
+
NoneTerminal[NoneTerminal["exclusive_or_expression"] = 2032] = "exclusive_or_expression";
|
|
1593
|
+
NoneTerminal[NoneTerminal["logical_and_expression"] = 2033] = "logical_and_expression";
|
|
1594
|
+
NoneTerminal[NoneTerminal["logical_xor_expression"] = 2034] = "logical_xor_expression";
|
|
1595
|
+
NoneTerminal[NoneTerminal["logical_or_expression"] = 2035] = "logical_or_expression";
|
|
1596
|
+
NoneTerminal[NoneTerminal["conditional_expression"] = 2036] = "conditional_expression";
|
|
1597
|
+
NoneTerminal[NoneTerminal["assignment_expression"] = 2037] = "assignment_expression";
|
|
1598
|
+
NoneTerminal[NoneTerminal["assignment_operator"] = 2038] = "assignment_operator";
|
|
1599
|
+
NoneTerminal[NoneTerminal["expression"] = 2039] = "expression";
|
|
1600
|
+
NoneTerminal[NoneTerminal["integer_constant_expression"] = 2040] = "integer_constant_expression";
|
|
1601
|
+
NoneTerminal[NoneTerminal["integer_constant_expression_operator"] = 2041] = "integer_constant_expression_operator";
|
|
1602
|
+
NoneTerminal[NoneTerminal["declaration"] = 2042] = "declaration";
|
|
1603
|
+
NoneTerminal[NoneTerminal["function_prototype"] = 2043] = "function_prototype";
|
|
1604
|
+
NoneTerminal[NoneTerminal["function_declarator"] = 2044] = "function_declarator";
|
|
1605
|
+
NoneTerminal[NoneTerminal["function_header_with_parameters"] = 2045] = "function_header_with_parameters";
|
|
1606
|
+
NoneTerminal[NoneTerminal["function_header"] = 2046] = "function_header";
|
|
1607
|
+
NoneTerminal[NoneTerminal["function_parameter_list"] = 2047] = "function_parameter_list";
|
|
1608
|
+
NoneTerminal[NoneTerminal["parameter_declarator"] = 2048] = "parameter_declarator";
|
|
1609
|
+
NoneTerminal[NoneTerminal["parameter_declaration"] = 2049] = "parameter_declaration";
|
|
1610
|
+
NoneTerminal[NoneTerminal["parameter_qualifier"] = 2050] = "parameter_qualifier";
|
|
1611
|
+
NoneTerminal[NoneTerminal["parameter_type_specifier"] = 2051] = "parameter_type_specifier";
|
|
1612
|
+
NoneTerminal[NoneTerminal["init_declarator_list"] = 2052] = "init_declarator_list";
|
|
1613
|
+
NoneTerminal[NoneTerminal["single_declaration"] = 2053] = "single_declaration";
|
|
1614
|
+
NoneTerminal[NoneTerminal["fully_specified_type"] = 2054] = "fully_specified_type";
|
|
1615
|
+
NoneTerminal[NoneTerminal["type_qualifier"] = 2055] = "type_qualifier";
|
|
1616
|
+
NoneTerminal[NoneTerminal["single_type_qualifier"] = 2056] = "single_type_qualifier";
|
|
1617
|
+
NoneTerminal[NoneTerminal["storage_qualifier"] = 2057] = "storage_qualifier";
|
|
1618
|
+
NoneTerminal[NoneTerminal["precision_qualifier"] = 2058] = "precision_qualifier";
|
|
1619
|
+
NoneTerminal[NoneTerminal["interpolation_qualifier"] = 2059] = "interpolation_qualifier";
|
|
1620
|
+
NoneTerminal[NoneTerminal["invariant_qualifier"] = 2060] = "invariant_qualifier";
|
|
1621
|
+
NoneTerminal[NoneTerminal["type_specifier"] = 2061] = "type_specifier";
|
|
1622
|
+
NoneTerminal[NoneTerminal["type_specifier_nonarray"] = 2062] = "type_specifier_nonarray";
|
|
1623
|
+
NoneTerminal[NoneTerminal["type_specifier_no_prec"] = 2063] = "type_specifier_no_prec";
|
|
1624
|
+
NoneTerminal[NoneTerminal["basic_type"] = 2064] = "basic_type";
|
|
1625
|
+
NoneTerminal[NoneTerminal["struct_specifier"] = 2065] = "struct_specifier";
|
|
1626
|
+
NoneTerminal[NoneTerminal["struct_declaration_list"] = 2066] = "struct_declaration_list";
|
|
1627
|
+
NoneTerminal[NoneTerminal["struct_declaration"] = 2067] = "struct_declaration";
|
|
1628
|
+
NoneTerminal[NoneTerminal["layout_qualifier"] = 2068] = "layout_qualifier";
|
|
1629
|
+
NoneTerminal[NoneTerminal["struct_declarator_list"] = 2069] = "struct_declarator_list";
|
|
1630
|
+
NoneTerminal[NoneTerminal["struct_declarator"] = 2070] = "struct_declarator";
|
|
1631
|
+
NoneTerminal[NoneTerminal["identifier_list"] = 2071] = "identifier_list";
|
|
1632
|
+
NoneTerminal[NoneTerminal["decl_identifier"] = 2072] = "decl_identifier";
|
|
1633
|
+
NoneTerminal[NoneTerminal["initializer"] = 2073] = "initializer";
|
|
1634
|
+
NoneTerminal[NoneTerminal["initializer_list"] = 2074] = "initializer_list";
|
|
1635
|
+
NoneTerminal[NoneTerminal["declaration_statement"] = 2075] = "declaration_statement";
|
|
1636
|
+
NoneTerminal[NoneTerminal["simple_statement"] = 2076] = "simple_statement";
|
|
1637
|
+
NoneTerminal[NoneTerminal["compound_statement_no_scope"] = 2077] = "compound_statement_no_scope";
|
|
1638
|
+
NoneTerminal[NoneTerminal["statement_with_scope"] = 2078] = "statement_with_scope";
|
|
1639
|
+
NoneTerminal[NoneTerminal["compound_statement"] = 2079] = "compound_statement";
|
|
1640
|
+
NoneTerminal[NoneTerminal["statement"] = 2080] = "statement";
|
|
1641
|
+
NoneTerminal[NoneTerminal["statement_list"] = 2081] = "statement_list";
|
|
1642
|
+
NoneTerminal[NoneTerminal["iteration_statement_no_new_scope"] = 2082] = "iteration_statement_no_new_scope";
|
|
1643
|
+
NoneTerminal[NoneTerminal["expression_statement"] = 2083] = "expression_statement";
|
|
1644
|
+
NoneTerminal[NoneTerminal["selection_statement"] = 2084] = "selection_statement";
|
|
1645
|
+
NoneTerminal[NoneTerminal["selection_rest_statement"] = 2085] = "selection_rest_statement";
|
|
1646
|
+
NoneTerminal[NoneTerminal["condition"] = 2086] = "condition";
|
|
1647
|
+
NoneTerminal[NoneTerminal["conditionopt"] = 2087] = "conditionopt";
|
|
1648
|
+
NoneTerminal[NoneTerminal["iteration_statement"] = 2088] = "iteration_statement";
|
|
1649
|
+
NoneTerminal[NoneTerminal["for_init_statement"] = 2089] = "for_init_statement";
|
|
1650
|
+
NoneTerminal[NoneTerminal["for_rest_statement"] = 2090] = "for_rest_statement";
|
|
1651
|
+
NoneTerminal[NoneTerminal["jump_statement"] = 2091] = "jump_statement";
|
|
1652
|
+
NoneTerminal[NoneTerminal["external_declaration"] = 2092] = "external_declaration";
|
|
1653
|
+
NoneTerminal[NoneTerminal["function_definition"] = 2093] = "function_definition";
|
|
1654
|
+
NoneTerminal[NoneTerminal["field_selection"] = 2094] = "field_selection";
|
|
1655
|
+
NoneTerminal[NoneTerminal["bool_constant"] = 2095] = "bool_constant";
|
|
1656
|
+
NoneTerminal[NoneTerminal["function_identifier_node"] = 2096] = "function_identifier_node";
|
|
1657
|
+
NoneTerminal[NoneTerminal["typename_identifier_node"] = 2097] = "typename_identifier_node";
|
|
1658
|
+
NoneTerminal[NoneTerminal["scope_brace"] = 2098] = "scope_brace";
|
|
1659
|
+
NoneTerminal[NoneTerminal["scope_end_brace"] = 2099] = "scope_end_brace";
|
|
1660
|
+
NoneTerminal[NoneTerminal["_ignore"] = 2100] = "_ignore";
|
|
1653
1661
|
return NoneTerminal;
|
|
1654
1662
|
}({});
|
|
1655
1663
|
|
|
@@ -1746,38 +1754,43 @@ var BuiltinFunction = /*#__PURE__*/ function() {
|
|
|
1746
1754
|
list.push(fn);
|
|
1747
1755
|
BuiltinFunctionTable.set(ident, list);
|
|
1748
1756
|
};
|
|
1749
|
-
BuiltinFunction.getFn = function getFn(ident) {
|
|
1750
|
-
for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
1751
|
-
args[_key - 1] = arguments[_key];
|
|
1752
|
-
}
|
|
1757
|
+
BuiltinFunction.getFn = function getFn(ident, parameterTypes) {
|
|
1753
1758
|
var list = BuiltinFunctionTable.get(ident);
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
var
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1759
|
+
if (list) {
|
|
1760
|
+
for(var length = list.length, i = 0; i < length; i++){
|
|
1761
|
+
var fn = list[i];
|
|
1762
|
+
var fnArgs = fn.args;
|
|
1763
|
+
var argLength = fnArgs.length;
|
|
1764
|
+
if (argLength !== parameterTypes.length) continue;
|
|
1765
|
+
// Try to match generic parameter type.
|
|
1766
|
+
var returnType = TypeAny;
|
|
1767
|
+
var found = true;
|
|
1768
|
+
for(var i1 = 0; i1 < argLength; i1++){
|
|
1769
|
+
var curFnArg = fnArgs[i1];
|
|
1770
|
+
if (isGenericType(curFnArg)) {
|
|
1771
|
+
if (returnType === TypeAny) returnType = parameterTypes[i1];
|
|
1772
|
+
} else {
|
|
1773
|
+
if (curFnArg !== parameterTypes[i1] && parameterTypes[i1] !== TypeAny) {
|
|
1774
|
+
found = false;
|
|
1775
|
+
break;
|
|
1768
1776
|
}
|
|
1769
1777
|
}
|
|
1770
|
-
if (args[i] === TypeAny) continue;
|
|
1771
|
-
if (args[i] !== realType) return false;
|
|
1772
1778
|
}
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
};
|
|
1779
|
+
if (found) {
|
|
1780
|
+
fn._realReturnType = returnType;
|
|
1781
|
+
return fn;
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1779
1784
|
}
|
|
1780
1785
|
};
|
|
1786
|
+
_create_class(BuiltinFunction, [
|
|
1787
|
+
{
|
|
1788
|
+
key: "realReturnType",
|
|
1789
|
+
get: function get() {
|
|
1790
|
+
return this._realReturnType;
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
]);
|
|
1781
1794
|
return BuiltinFunction;
|
|
1782
1795
|
}();
|
|
1783
1796
|
BuiltinFunction._create("radians", 200, 200);
|
|
@@ -1912,8 +1925,8 @@ BuiltinFunction._create("textureSize", EKeyword.IVEC2, EKeyword.SAMPLER2D_SHADOW
|
|
|
1912
1925
|
BuiltinFunction._create("textureSize", EKeyword.IVEC2, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.INT);
|
|
1913
1926
|
BuiltinFunction._create("textureSize", EKeyword.IVEC3, 213, EKeyword.INT);
|
|
1914
1927
|
BuiltinFunction._create("textureSize", EKeyword.IVEC3, EKeyword.SAMPLER2D_ARRAY_SHADOW, EKeyword.INT);
|
|
1915
|
-
BuiltinFunction._create("texture2D", EKeyword.SAMPLER2D, EKeyword.VEC2);
|
|
1916
|
-
BuiltinFunction._create("texture2D", EKeyword.SAMPLER2D, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1928
|
+
BuiltinFunction._create("texture2D", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2);
|
|
1929
|
+
BuiltinFunction._create("texture2D", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1917
1930
|
BuiltinFunction._create("texture", 209, 210, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1918
1931
|
BuiltinFunction._create("texture", 209, 210, EKeyword.VEC2);
|
|
1919
1932
|
BuiltinFunction._create("texture", 209, 211, EKeyword.VEC3, EKeyword.FLOAT);
|
|
@@ -1940,9 +1953,12 @@ BuiltinFunction._create("textureLod", 209, 211, EKeyword.VEC3, EKeyword.FLOAT);
|
|
|
1940
1953
|
BuiltinFunction._create("textureLod", 209, 212, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1941
1954
|
BuiltinFunction._create("textureLod", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1942
1955
|
BuiltinFunction._create("textureLod", 209, 213, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1956
|
+
BuiltinFunction._create("texture2DLodEXT", 209, 210, EKeyword.VEC2, EKeyword.FLOAT);
|
|
1957
|
+
BuiltinFunction._create("texture2DLodEXT", 209, 211, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1943
1958
|
BuiltinFunction._create("textureCube", EKeyword.SAMPLER_CUBE, EKeyword.VEC3);
|
|
1944
1959
|
BuiltinFunction._create("textureCube", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1945
1960
|
BuiltinFunction._create("textureCubeLod", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1961
|
+
BuiltinFunction._create("textureCubeLodEXT", 209, 212, EKeyword.VEC3, EKeyword.FLOAT);
|
|
1946
1962
|
BuiltinFunction._create("textureOffset", 209, 210, EKeyword.VEC2, EKeyword.IVEC2, EKeyword.FLOAT);
|
|
1947
1963
|
BuiltinFunction._create("textureOffset", 209, 210, EKeyword.VEC2, EKeyword.IVEC2);
|
|
1948
1964
|
BuiltinFunction._create("textureOffset", 209, 211, EKeyword.VEC3, EKeyword.IVEC3, EKeyword.FLOAT);
|
|
@@ -2276,7 +2292,9 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
2276
2292
|
_proto.codeGen = function codeGen(visitor) {
|
|
2277
2293
|
return visitor.defaultCodeGen(this.children);
|
|
2278
2294
|
};
|
|
2279
|
-
|
|
2295
|
+
/**
|
|
2296
|
+
* Do semantic analyze right after the ast node is generated.
|
|
2297
|
+
*/ _proto.semanticAnalyze = function semanticAnalyze(sa) {};
|
|
2280
2298
|
_create_class(TreeNode, [
|
|
2281
2299
|
{
|
|
2282
2300
|
key: "children",
|
|
@@ -2519,19 +2537,26 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
2519
2537
|
this.arraySpecifier = undefined;
|
|
2520
2538
|
};
|
|
2521
2539
|
_proto.semanticAnalyze = function semanticAnalyze(sa) {
|
|
2522
|
-
var
|
|
2523
|
-
var
|
|
2524
|
-
|
|
2540
|
+
var children = this.children;
|
|
2541
|
+
var childrenLen = children.length;
|
|
2542
|
+
var fullyType = children[0];
|
|
2543
|
+
var typeSpecifier = fullyType.typeSpecifier;
|
|
2544
|
+
this.typeSpecifier = typeSpecifier;
|
|
2545
|
+
this.arraySpecifier = typeSpecifier.arraySpecifier;
|
|
2546
|
+
var id = children[1];
|
|
2525
2547
|
var sm;
|
|
2526
|
-
if (
|
|
2527
|
-
var symbolType = new SymbolType(fullyType.type,
|
|
2528
|
-
var initializer =
|
|
2548
|
+
if (childrenLen === 2 || childrenLen === 4) {
|
|
2549
|
+
var symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
|
|
2550
|
+
var initializer = children[3];
|
|
2529
2551
|
sm = new VarSymbol(id.lexeme, symbolType, false, initializer);
|
|
2530
2552
|
} else {
|
|
2531
|
-
var arraySpecifier =
|
|
2553
|
+
var arraySpecifier = children[2];
|
|
2554
|
+
if (arraySpecifier && this.arraySpecifier) {
|
|
2555
|
+
sa.reportError(arraySpecifier.location, "Array of array is not supported.");
|
|
2556
|
+
}
|
|
2532
2557
|
this.arraySpecifier = arraySpecifier;
|
|
2533
|
-
var symbolType1 = new SymbolType(fullyType.type,
|
|
2534
|
-
var initializer1 =
|
|
2558
|
+
var symbolType1 = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
|
|
2559
|
+
var initializer1 = children[4];
|
|
2535
2560
|
sm = new VarSymbol(id.lexeme, symbolType1, false, initializer1);
|
|
2536
2561
|
}
|
|
2537
2562
|
sa.symbolTableStack.insert(sm);
|
|
@@ -2713,6 +2738,12 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
2713
2738
|
return (_this_children = this.children) == null ? void 0 : (_this_children_ = _this_children[1]) == null ? void 0 : _this_children_.size;
|
|
2714
2739
|
}
|
|
2715
2740
|
},
|
|
2741
|
+
{
|
|
2742
|
+
key: "arraySpecifier",
|
|
2743
|
+
get: function get() {
|
|
2744
|
+
return this.children[1];
|
|
2745
|
+
}
|
|
2746
|
+
},
|
|
2716
2747
|
{
|
|
2717
2748
|
key: "isCustom",
|
|
2718
2749
|
get: function get() {
|
|
@@ -3372,7 +3403,6 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
3372
3403
|
if (functionIdentifier.isBuiltin) {
|
|
3373
3404
|
this.type = functionIdentifier.ident;
|
|
3374
3405
|
} else {
|
|
3375
|
-
var _BuiltinFunction;
|
|
3376
3406
|
var _fnSymbol_dataType;
|
|
3377
3407
|
var fnIdent = functionIdentifier.ident;
|
|
3378
3408
|
var paramSig;
|
|
@@ -3382,11 +3412,9 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
3382
3412
|
paramSig = paramList.paramSig;
|
|
3383
3413
|
}
|
|
3384
3414
|
}
|
|
3385
|
-
var builtinFn =
|
|
3386
|
-
fnIdent
|
|
3387
|
-
], paramSig != null ? paramSig : []));
|
|
3415
|
+
var builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);
|
|
3388
3416
|
if (builtinFn) {
|
|
3389
|
-
this.type =
|
|
3417
|
+
this.type = builtinFn.realReturnType;
|
|
3390
3418
|
return;
|
|
3391
3419
|
}
|
|
3392
3420
|
var fnSymbol = sa.lookupSymbolBy(fnIdent, ESymbolType.FN, paramSig);
|
|
@@ -4071,14 +4099,15 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
4071
4099
|
}
|
|
4072
4100
|
var _proto = VariableDeclaration.prototype;
|
|
4073
4101
|
_proto.semanticAnalyze = function semanticAnalyze(sa) {
|
|
4074
|
-
var
|
|
4075
|
-
var
|
|
4076
|
-
var
|
|
4077
|
-
|
|
4102
|
+
var children = this.children;
|
|
4103
|
+
var type = children[0];
|
|
4104
|
+
var ident = children[1];
|
|
4105
|
+
this.type = type;
|
|
4106
|
+
var sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);
|
|
4078
4107
|
sa.symbolTableStack.insert(sm);
|
|
4079
4108
|
};
|
|
4080
4109
|
_proto.codeGen = function codeGen(visitor) {
|
|
4081
|
-
return visitor.visitGlobalVariableDeclaration(this);
|
|
4110
|
+
return visitor.visitGlobalVariableDeclaration(this) + ";";
|
|
4082
4111
|
};
|
|
4083
4112
|
return VariableDeclaration;
|
|
4084
4113
|
}(TreeNode);
|
|
@@ -4086,6 +4115,45 @@ var TreeNode = /*#__PURE__*/ function() {
|
|
|
4086
4115
|
VariableDeclaration = __decorate([
|
|
4087
4116
|
ASTNodeDecorator(NoneTerminal.variable_declaration)
|
|
4088
4117
|
], VariableDeclaration);
|
|
4118
|
+
var VariableDeclarationList = /*#__PURE__*/ function(TreeNode) {
|
|
4119
|
+
_inherits(VariableDeclarationList, TreeNode);
|
|
4120
|
+
function VariableDeclarationList() {
|
|
4121
|
+
return TreeNode.apply(this, arguments) || this;
|
|
4122
|
+
}
|
|
4123
|
+
var _proto = VariableDeclarationList.prototype;
|
|
4124
|
+
_proto.semanticAnalyze = function semanticAnalyze(sa) {
|
|
4125
|
+
var children = this.children;
|
|
4126
|
+
var length = children.length;
|
|
4127
|
+
var variableDeclaration = children[0];
|
|
4128
|
+
var type = variableDeclaration.type;
|
|
4129
|
+
this.type = type;
|
|
4130
|
+
if (length === 1) {
|
|
4131
|
+
return;
|
|
4132
|
+
}
|
|
4133
|
+
var ident = children[2];
|
|
4134
|
+
var newVariable = VariableDeclaration.pool.get();
|
|
4135
|
+
if (length === 3) {
|
|
4136
|
+
// variable_declaration_list ',' id
|
|
4137
|
+
newVariable.set(ident.location, [
|
|
4138
|
+
type,
|
|
4139
|
+
ident
|
|
4140
|
+
]);
|
|
4141
|
+
} else {
|
|
4142
|
+
// variable_declaration_list ',' id array_specifier
|
|
4143
|
+
newVariable.set(ident.location, [
|
|
4144
|
+
type,
|
|
4145
|
+
ident,
|
|
4146
|
+
children[3]
|
|
4147
|
+
]);
|
|
4148
|
+
}
|
|
4149
|
+
newVariable.semanticAnalyze(sa);
|
|
4150
|
+
};
|
|
4151
|
+
return VariableDeclarationList;
|
|
4152
|
+
}(TreeNode);
|
|
4153
|
+
ASTNode.VariableDeclarationList = VariableDeclarationList;
|
|
4154
|
+
VariableDeclarationList = __decorate([
|
|
4155
|
+
ASTNodeDecorator(NoneTerminal.variable_declaration_list)
|
|
4156
|
+
], VariableDeclarationList);
|
|
4089
4157
|
var VariableIdentifier = /*#__PURE__*/ function(TreeNode) {
|
|
4090
4158
|
_inherits(VariableIdentifier, TreeNode);
|
|
4091
4159
|
function VariableIdentifier() {
|
|
@@ -4224,7 +4292,7 @@ var productionAndRules = [].concat(GrammarUtils.createProductionWithOptions(None
|
|
|
4224
4292
|
NoneTerminal.precision_specifier
|
|
4225
4293
|
],
|
|
4226
4294
|
[
|
|
4227
|
-
NoneTerminal.
|
|
4295
|
+
NoneTerminal.variable_declaration_statement
|
|
4228
4296
|
],
|
|
4229
4297
|
[
|
|
4230
4298
|
NoneTerminal.struct_specifier
|
|
@@ -4234,22 +4302,35 @@ var productionAndRules = [].concat(GrammarUtils.createProductionWithOptions(None
|
|
|
4234
4302
|
]
|
|
4235
4303
|
]), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration, [
|
|
4236
4304
|
[
|
|
4237
|
-
|
|
4238
|
-
ETokenType.ID
|
|
4239
|
-
ETokenType.SEMICOLON
|
|
4305
|
+
NoneTerminal.fully_specified_type,
|
|
4306
|
+
ETokenType.ID
|
|
4240
4307
|
],
|
|
4241
4308
|
[
|
|
4242
4309
|
NoneTerminal.fully_specified_type,
|
|
4243
4310
|
ETokenType.ID,
|
|
4244
|
-
|
|
4311
|
+
NoneTerminal.array_specifier
|
|
4312
|
+
]
|
|
4313
|
+
], ASTNode.VariableDeclaration.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_list, [
|
|
4314
|
+
[
|
|
4315
|
+
NoneTerminal.variable_declaration
|
|
4245
4316
|
],
|
|
4246
4317
|
[
|
|
4247
|
-
NoneTerminal.
|
|
4318
|
+
NoneTerminal.variable_declaration_list,
|
|
4319
|
+
ETokenType.COMMA,
|
|
4320
|
+
ETokenType.ID
|
|
4321
|
+
],
|
|
4322
|
+
[
|
|
4323
|
+
NoneTerminal.variable_declaration_list,
|
|
4324
|
+
ETokenType.COMMA,
|
|
4248
4325
|
ETokenType.ID,
|
|
4249
|
-
NoneTerminal.array_specifier
|
|
4326
|
+
NoneTerminal.array_specifier
|
|
4327
|
+
]
|
|
4328
|
+
], ASTNode.VariableDeclarationList.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [
|
|
4329
|
+
[
|
|
4330
|
+
NoneTerminal.variable_declaration_list,
|
|
4250
4331
|
ETokenType.SEMICOLON
|
|
4251
4332
|
]
|
|
4252
|
-
]
|
|
4333
|
+
]), GrammarUtils.createProductionWithOptions(NoneTerminal.ext_builtin_type_specifier_nonarray, [
|
|
4253
4334
|
[
|
|
4254
4335
|
EKeyword.VOID
|
|
4255
4336
|
],
|
|
@@ -6387,7 +6468,7 @@ var PpScanner = /*#__PURE__*/ function(BaseScanner) {
|
|
|
6387
6468
|
return !!this._definedMacros.get(macro.lexeme);
|
|
6388
6469
|
} else {
|
|
6389
6470
|
var macro1 = this._definedMacros.get(id.lexeme);
|
|
6390
|
-
if (!macro1) {
|
|
6471
|
+
if (!macro1 || !macro1.body) {
|
|
6391
6472
|
return false;
|
|
6392
6473
|
}
|
|
6393
6474
|
if (macro1.isFunction) {
|
|
@@ -7973,7 +8054,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
|
|
|
7973
8054
|
ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
|
|
7974
8055
|
|
|
7975
8056
|
//@ts-ignore
|
|
7976
|
-
var version = "1.4.0-
|
|
8057
|
+
var version = "1.4.0-beta.1";
|
|
7977
8058
|
var mode = "Release";
|
|
7978
8059
|
mode = "Verbose";
|
|
7979
8060
|
console.log("Galacean ShaderLab version: " + version + ". mode: " + mode);
|