@galacean/engine-shaderlab 2.0.0-alpha.2 → 2.0.0-alpha.21

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/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ClearableObjectPool, Logger, ShaderPass, ShaderLib, ReturnableObjectPool, Color, RenderStateElementKey, RenderQueueType, CompareFunction, StencilOperation, BlendOperation, BlendFactor, CullMode, ShaderLanguage } from '@galacean/engine';
1
+ import { ClearableObjectPool, Logger, ShaderPass, ShaderLib, ReturnableObjectPool, Color, RenderStateElementKey, RenderQueueType, CompareFunction, StencilOperation, BlendOperation, BlendFactor, CullMode, ColorWriteMask, ShaderLanguage } from '@galacean/engine';
2
2
 
3
3
  function _set_prototype_of(o, p) {
4
4
  _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
@@ -297,40 +297,42 @@ var Keyword = /*#__PURE__*/ function(Keyword) {
297
297
  Keyword[Keyword["LeftBrace"] = 71] = "LeftBrace";
298
298
  Keyword[Keyword["RightBrace"] = 72] = "RightBrace";
299
299
  Keyword[Keyword["Equal"] = 73] = "Equal";
300
+ Keyword[Keyword["BitwiseOr"] = 74] = "BitwiseOr";
300
301
  // Source Parser Tokens
301
- Keyword[Keyword["GSRenderQueueType"] = 74] = "GSRenderQueueType";
302
- Keyword[Keyword["GSBlendState"] = 75] = "GSBlendState";
303
- Keyword[Keyword["GSDepthState"] = 76] = "GSDepthState";
304
- Keyword[Keyword["GSStencilState"] = 77] = "GSStencilState";
305
- Keyword[Keyword["GSRasterState"] = 78] = "GSRasterState";
306
- Keyword[Keyword["GSEditorProperties"] = 79] = "GSEditorProperties";
307
- Keyword[Keyword["GSEditorMacros"] = 80] = "GSEditorMacros";
308
- Keyword[Keyword["GSEditor"] = 81] = "GSEditor";
309
- Keyword[Keyword["GSTags"] = 82] = "GSTags";
310
- Keyword[Keyword["GSVertexShader"] = 83] = "GSVertexShader";
311
- Keyword[Keyword["GSFragmentShader"] = 84] = "GSFragmentShader";
312
- Keyword[Keyword["GSSubShader"] = 85] = "GSSubShader";
313
- Keyword[Keyword["GSPass"] = 86] = "GSPass";
314
- Keyword[Keyword["GSBlendFactor"] = 87] = "GSBlendFactor";
315
- Keyword[Keyword["GSBlendOperation"] = 88] = "GSBlendOperation";
316
- Keyword[Keyword["GSBool"] = 89] = "GSBool";
317
- Keyword[Keyword["GSNumber"] = 90] = "GSNumber";
318
- Keyword[Keyword["GSColor"] = 91] = "GSColor";
319
- Keyword[Keyword["GSCompareFunction"] = 92] = "GSCompareFunction";
320
- Keyword[Keyword["GSStencilOperation"] = 93] = "GSStencilOperation";
321
- Keyword[Keyword["GSCullMode"] = 94] = "GSCullMode";
322
- Keyword[Keyword["GSUsePass"] = 95] = "GSUsePass";
302
+ Keyword[Keyword["GSRenderQueueType"] = 75] = "GSRenderQueueType";
303
+ Keyword[Keyword["GSBlendState"] = 76] = "GSBlendState";
304
+ Keyword[Keyword["GSDepthState"] = 77] = "GSDepthState";
305
+ Keyword[Keyword["GSStencilState"] = 78] = "GSStencilState";
306
+ Keyword[Keyword["GSRasterState"] = 79] = "GSRasterState";
307
+ Keyword[Keyword["GSEditorProperties"] = 80] = "GSEditorProperties";
308
+ Keyword[Keyword["GSEditorMacros"] = 81] = "GSEditorMacros";
309
+ Keyword[Keyword["GSEditor"] = 82] = "GSEditor";
310
+ Keyword[Keyword["GSTags"] = 83] = "GSTags";
311
+ Keyword[Keyword["GSVertexShader"] = 84] = "GSVertexShader";
312
+ Keyword[Keyword["GSFragmentShader"] = 85] = "GSFragmentShader";
313
+ Keyword[Keyword["GSSubShader"] = 86] = "GSSubShader";
314
+ Keyword[Keyword["GSPass"] = 87] = "GSPass";
315
+ Keyword[Keyword["GSBlendFactor"] = 88] = "GSBlendFactor";
316
+ Keyword[Keyword["GSBlendOperation"] = 89] = "GSBlendOperation";
317
+ Keyword[Keyword["GSBool"] = 90] = "GSBool";
318
+ Keyword[Keyword["GSNumber"] = 91] = "GSNumber";
319
+ Keyword[Keyword["GSColor"] = 92] = "GSColor";
320
+ Keyword[Keyword["GSCompareFunction"] = 93] = "GSCompareFunction";
321
+ Keyword[Keyword["GSStencilOperation"] = 94] = "GSStencilOperation";
322
+ Keyword[Keyword["GSCullMode"] = 95] = "GSCullMode";
323
+ Keyword[Keyword["GSColorWriteMask"] = 96] = "GSColorWriteMask";
324
+ Keyword[Keyword["GSUsePass"] = 97] = "GSUsePass";
323
325
  // Macros
324
- Keyword[Keyword["MACRO_IF"] = 96] = "MACRO_IF";
325
- Keyword[Keyword["MACRO_IFDEF"] = 97] = "MACRO_IFDEF";
326
- Keyword[Keyword["MACRO_IFNDEF"] = 98] = "MACRO_IFNDEF";
327
- Keyword[Keyword["MACRO_ELSE"] = 99] = "MACRO_ELSE";
328
- Keyword[Keyword["MACRO_ELIF"] = 100] = "MACRO_ELIF";
329
- Keyword[Keyword["MACRO_ENDIF"] = 101] = "MACRO_ENDIF";
330
- Keyword[Keyword["MACRO_UNDEF"] = 102] = "MACRO_UNDEF";
331
- Keyword[Keyword["MACRO_DEFINE_EXPRESSION"] = 103] = "MACRO_DEFINE_EXPRESSION";
332
- Keyword[Keyword["MACRO_CONDITIONAL_EXPRESSION"] = 104] = "MACRO_CONDITIONAL_EXPRESSION";
333
- Keyword[Keyword["MACRO_CALL"] = 105] = "MACRO_CALL";
326
+ Keyword[Keyword["MACRO_IF"] = 98] = "MACRO_IF";
327
+ Keyword[Keyword["MACRO_IFDEF"] = 99] = "MACRO_IFDEF";
328
+ Keyword[Keyword["MACRO_IFNDEF"] = 100] = "MACRO_IFNDEF";
329
+ Keyword[Keyword["MACRO_ELSE"] = 101] = "MACRO_ELSE";
330
+ Keyword[Keyword["MACRO_ELIF"] = 102] = "MACRO_ELIF";
331
+ Keyword[Keyword["MACRO_ENDIF"] = 103] = "MACRO_ENDIF";
332
+ Keyword[Keyword["MACRO_UNDEF"] = 104] = "MACRO_UNDEF";
333
+ Keyword[Keyword["MACRO_DEFINE_EXPRESSION"] = 105] = "MACRO_DEFINE_EXPRESSION";
334
+ Keyword[Keyword["MACRO_CONDITIONAL_EXPRESSION"] = 106] = "MACRO_CONDITIONAL_EXPRESSION";
335
+ Keyword[Keyword["MACRO_CALL"] = 107] = "MACRO_CALL";
334
336
  return Keyword;
335
337
  }({});
336
338
 
@@ -7540,7 +7542,8 @@ var SourceLexer = /*#__PURE__*/ function(BaseLexer1) {
7540
7542
  charCode === 59 || // ;
7541
7543
  charCode === 46 || // . CullMode.Back
7542
7544
  charCode === 91 || // [ Enabled[0],
7543
- charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);
7545
+ charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);
7546
+ charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green
7544
7547
  ;
7545
7548
  };
7546
7549
  SourceLexer._scanDigits = function _scanDigits(source, startIndex) {
@@ -7579,6 +7582,7 @@ SourceLexer._keywordLexemeTable = {
7579
7582
  CompareFunction: Keyword.GSCompareFunction,
7580
7583
  StencilOperation: Keyword.GSStencilOperation,
7581
7584
  CullMode: Keyword.GSCullMode,
7585
+ ColorWriteMask: Keyword.GSColorWriteMask,
7582
7586
  UsePass: Keyword.GSUsePass,
7583
7587
  true: Keyword.True,
7584
7588
  false: Keyword.False
@@ -7586,7 +7590,8 @@ SourceLexer._keywordLexemeTable = {
7586
7590
  SourceLexer._symbolLexemeTable = {
7587
7591
  "{": Keyword.LeftBrace,
7588
7592
  "}": Keyword.RightBrace,
7589
- "=": Keyword.Equal
7593
+ "=": Keyword.Equal,
7594
+ "|": Keyword.BitwiseOr
7590
7595
  };
7591
7596
 
7592
7597
  /**
@@ -7741,6 +7746,17 @@ SourceLexer._symbolLexemeTable = {
7741
7746
  ShaderSourceParser._createCompileError = function _createCompileError(message, location) {
7742
7747
  this._lexer.createCompileError(message, location);
7743
7748
  };
7749
+ ShaderSourceParser._scanEnumConstValue = function _scanEnumConstValue(enumName) {
7750
+ var _this__renderStateConstMap_enumName;
7751
+ var lexer = this._lexer;
7752
+ lexer.advance(1);
7753
+ var constValueToken = lexer.scanToken();
7754
+ var value = (_this__renderStateConstMap_enumName = this._renderStateConstMap[enumName]) == null ? void 0 : _this__renderStateConstMap_enumName[constValueToken.lexeme];
7755
+ if (value == undefined) {
7756
+ this._createCompileError("Invalid engine constant: " + enumName + "." + constValueToken.lexeme, constValueToken.location);
7757
+ }
7758
+ return value;
7759
+ };
7744
7760
  ShaderSourceParser._parseRenderStateProperty = function _parseRenderStateProperty(stateLexeme, out) {
7745
7761
  var lexer = this._lexer;
7746
7762
  var propertyToken = lexer.scanToken();
@@ -7780,12 +7796,31 @@ SourceLexer._symbolLexemeTable = {
7780
7796
  } else if (valueTokenType === Keyword.GSColor) {
7781
7797
  propertyValue = lexer.scanColor();
7782
7798
  } else if (lexer.getCurChar() === ".") {
7783
- var _this__renderStateConstMap_valueToken_lexeme;
7784
- lexer.advance(1);
7785
- var constValueToken = lexer.scanToken();
7786
- propertyValue = (_this__renderStateConstMap_valueToken_lexeme = this._renderStateConstMap[valueToken.lexeme]) == null ? void 0 : _this__renderStateConstMap_valueToken_lexeme[constValueToken.lexeme];
7787
- if (propertyValue == undefined) {
7788
- this._createCompileError("Invalid engine constant: " + valueToken.lexeme + "." + constValueToken.lexeme, constValueToken.location);
7799
+ propertyValue = this._scanEnumConstValue(valueToken.lexeme);
7800
+ if (propertyValue == undefined) return;
7801
+ // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)
7802
+ lexer.skipCommentsAndSpace();
7803
+ if (lexer.getCurChar() === "|") {
7804
+ if (valueToken.lexeme !== "ColorWriteMask") {
7805
+ this._createCompileError("Bitwise OR '|' is not supported for '" + valueToken.lexeme + "', only bitmask enums like 'ColorWriteMask' support this", valueToken.location);
7806
+ return;
7807
+ }
7808
+ while(lexer.getCurChar() === "|"){
7809
+ lexer.advance(1);
7810
+ var nextEnumToken = lexer.scanToken();
7811
+ if (nextEnumToken == undefined || lexer.getCurChar() !== ".") {
7812
+ this._createCompileError("Invalid syntax after '|', expect 'EnumType.Value'", nextEnumToken == null ? void 0 : nextEnumToken.location);
7813
+ return;
7814
+ }
7815
+ if (nextEnumToken.lexeme !== valueToken.lexeme) {
7816
+ this._createCompileError("Cannot mix enum types in bitwise OR: expected '" + valueToken.lexeme + "' but got '" + nextEnumToken.lexeme + "'", nextEnumToken.location);
7817
+ return;
7818
+ }
7819
+ var nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);
7820
+ if (nextValue == undefined) return;
7821
+ propertyValue = propertyValue | nextValue;
7822
+ lexer.skipCommentsAndSpace();
7823
+ }
7789
7824
  }
7790
7825
  } else {
7791
7826
  propertyValue = valueToken.lexeme;
@@ -7973,6 +8008,7 @@ SourceLexer._symbolLexemeTable = {
7973
8008
  case Keyword.GSCompareFunction:
7974
8009
  case Keyword.GSStencilOperation:
7975
8010
  case Keyword.GSCullMode:
8011
+ case Keyword.GSColorWriteMask:
7976
8012
  this._addPendingContents(start, token.lexeme.length, outGlobalContents);
7977
8013
  this._parseVariableDeclaration();
7978
8014
  start = this._lexer.getShaderPosition(0);
@@ -7997,7 +8033,8 @@ ShaderSourceParser._renderStateConstMap = {
7997
8033
  StencilOperation: StencilOperation,
7998
8034
  BlendOperation: BlendOperation,
7999
8035
  BlendFactor: BlendFactor,
8000
- CullMode: CullMode
8036
+ CullMode: CullMode,
8037
+ ColorWriteMask: ColorWriteMask
8001
8038
  };
8002
8039
  ShaderSourceParser._symbolTableStack = new SymbolTableStack();
8003
8040
  ShaderSourceParser._lexer = new SourceLexer();
@@ -8056,7 +8093,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
8056
8093
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
8057
8094
 
8058
8095
  //@ts-ignore
8059
- var version = "2.0.0-alpha.2";
8096
+ var version = "2.0.0-alpha.21";
8060
8097
  var mode = "Release";
8061
8098
  console.log("Galacean Engine ShaderLab Version: " + version + " | Mode: " + mode);
8062
8099