@galacean/engine-shaderlab 2.0.0-alpha.1 → 2.0.0-alpha.11

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 CHANGED
@@ -301,40 +301,42 @@
301
301
  Keyword[Keyword["LeftBrace"] = 71] = "LeftBrace";
302
302
  Keyword[Keyword["RightBrace"] = 72] = "RightBrace";
303
303
  Keyword[Keyword["Equal"] = 73] = "Equal";
304
+ Keyword[Keyword["BitwiseOr"] = 74] = "BitwiseOr";
304
305
  // Source Parser Tokens
305
- Keyword[Keyword["GSRenderQueueType"] = 74] = "GSRenderQueueType";
306
- Keyword[Keyword["GSBlendState"] = 75] = "GSBlendState";
307
- Keyword[Keyword["GSDepthState"] = 76] = "GSDepthState";
308
- Keyword[Keyword["GSStencilState"] = 77] = "GSStencilState";
309
- Keyword[Keyword["GSRasterState"] = 78] = "GSRasterState";
310
- Keyword[Keyword["GSEditorProperties"] = 79] = "GSEditorProperties";
311
- Keyword[Keyword["GSEditorMacros"] = 80] = "GSEditorMacros";
312
- Keyword[Keyword["GSEditor"] = 81] = "GSEditor";
313
- Keyword[Keyword["GSTags"] = 82] = "GSTags";
314
- Keyword[Keyword["GSVertexShader"] = 83] = "GSVertexShader";
315
- Keyword[Keyword["GSFragmentShader"] = 84] = "GSFragmentShader";
316
- Keyword[Keyword["GSSubShader"] = 85] = "GSSubShader";
317
- Keyword[Keyword["GSPass"] = 86] = "GSPass";
318
- Keyword[Keyword["GSBlendFactor"] = 87] = "GSBlendFactor";
319
- Keyword[Keyword["GSBlendOperation"] = 88] = "GSBlendOperation";
320
- Keyword[Keyword["GSBool"] = 89] = "GSBool";
321
- Keyword[Keyword["GSNumber"] = 90] = "GSNumber";
322
- Keyword[Keyword["GSColor"] = 91] = "GSColor";
323
- Keyword[Keyword["GSCompareFunction"] = 92] = "GSCompareFunction";
324
- Keyword[Keyword["GSStencilOperation"] = 93] = "GSStencilOperation";
325
- Keyword[Keyword["GSCullMode"] = 94] = "GSCullMode";
326
- Keyword[Keyword["GSUsePass"] = 95] = "GSUsePass";
306
+ Keyword[Keyword["GSRenderQueueType"] = 75] = "GSRenderQueueType";
307
+ Keyword[Keyword["GSBlendState"] = 76] = "GSBlendState";
308
+ Keyword[Keyword["GSDepthState"] = 77] = "GSDepthState";
309
+ Keyword[Keyword["GSStencilState"] = 78] = "GSStencilState";
310
+ Keyword[Keyword["GSRasterState"] = 79] = "GSRasterState";
311
+ Keyword[Keyword["GSEditorProperties"] = 80] = "GSEditorProperties";
312
+ Keyword[Keyword["GSEditorMacros"] = 81] = "GSEditorMacros";
313
+ Keyword[Keyword["GSEditor"] = 82] = "GSEditor";
314
+ Keyword[Keyword["GSTags"] = 83] = "GSTags";
315
+ Keyword[Keyword["GSVertexShader"] = 84] = "GSVertexShader";
316
+ Keyword[Keyword["GSFragmentShader"] = 85] = "GSFragmentShader";
317
+ Keyword[Keyword["GSSubShader"] = 86] = "GSSubShader";
318
+ Keyword[Keyword["GSPass"] = 87] = "GSPass";
319
+ Keyword[Keyword["GSBlendFactor"] = 88] = "GSBlendFactor";
320
+ Keyword[Keyword["GSBlendOperation"] = 89] = "GSBlendOperation";
321
+ Keyword[Keyword["GSBool"] = 90] = "GSBool";
322
+ Keyword[Keyword["GSNumber"] = 91] = "GSNumber";
323
+ Keyword[Keyword["GSColor"] = 92] = "GSColor";
324
+ Keyword[Keyword["GSCompareFunction"] = 93] = "GSCompareFunction";
325
+ Keyword[Keyword["GSStencilOperation"] = 94] = "GSStencilOperation";
326
+ Keyword[Keyword["GSCullMode"] = 95] = "GSCullMode";
327
+ Keyword[Keyword["GSColorWriteMask"] = 96] = "GSColorWriteMask";
328
+ Keyword[Keyword["GSUsePass"] = 97] = "GSUsePass";
327
329
  // Macros
328
- Keyword[Keyword["MACRO_IF"] = 96] = "MACRO_IF";
329
- Keyword[Keyword["MACRO_IFDEF"] = 97] = "MACRO_IFDEF";
330
- Keyword[Keyword["MACRO_IFNDEF"] = 98] = "MACRO_IFNDEF";
331
- Keyword[Keyword["MACRO_ELSE"] = 99] = "MACRO_ELSE";
332
- Keyword[Keyword["MACRO_ELIF"] = 100] = "MACRO_ELIF";
333
- Keyword[Keyword["MACRO_ENDIF"] = 101] = "MACRO_ENDIF";
334
- Keyword[Keyword["MACRO_UNDEF"] = 102] = "MACRO_UNDEF";
335
- Keyword[Keyword["MACRO_DEFINE_EXPRESSION"] = 103] = "MACRO_DEFINE_EXPRESSION";
336
- Keyword[Keyword["MACRO_CONDITIONAL_EXPRESSION"] = 104] = "MACRO_CONDITIONAL_EXPRESSION";
337
- Keyword[Keyword["MACRO_CALL"] = 105] = "MACRO_CALL";
330
+ Keyword[Keyword["MACRO_IF"] = 98] = "MACRO_IF";
331
+ Keyword[Keyword["MACRO_IFDEF"] = 99] = "MACRO_IFDEF";
332
+ Keyword[Keyword["MACRO_IFNDEF"] = 100] = "MACRO_IFNDEF";
333
+ Keyword[Keyword["MACRO_ELSE"] = 101] = "MACRO_ELSE";
334
+ Keyword[Keyword["MACRO_ELIF"] = 102] = "MACRO_ELIF";
335
+ Keyword[Keyword["MACRO_ENDIF"] = 103] = "MACRO_ENDIF";
336
+ Keyword[Keyword["MACRO_UNDEF"] = 104] = "MACRO_UNDEF";
337
+ Keyword[Keyword["MACRO_DEFINE_EXPRESSION"] = 105] = "MACRO_DEFINE_EXPRESSION";
338
+ Keyword[Keyword["MACRO_CONDITIONAL_EXPRESSION"] = 106] = "MACRO_CONDITIONAL_EXPRESSION";
339
+ Keyword[Keyword["MACRO_CALL"] = 107] = "MACRO_CALL";
338
340
  return Keyword;
339
341
  }({});
340
342
 
@@ -7544,7 +7546,8 @@
7544
7546
  charCode === 59 || // ;
7545
7547
  charCode === 46 || // . CullMode.Back
7546
7548
  charCode === 91 || // [ Enabled[0],
7547
- charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);
7549
+ charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);
7550
+ charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green
7548
7551
  ;
7549
7552
  };
7550
7553
  SourceLexer._scanDigits = function _scanDigits(source, startIndex) {
@@ -7583,6 +7586,7 @@
7583
7586
  CompareFunction: Keyword.GSCompareFunction,
7584
7587
  StencilOperation: Keyword.GSStencilOperation,
7585
7588
  CullMode: Keyword.GSCullMode,
7589
+ ColorWriteMask: Keyword.GSColorWriteMask,
7586
7590
  UsePass: Keyword.GSUsePass,
7587
7591
  true: Keyword.True,
7588
7592
  false: Keyword.False
@@ -7590,7 +7594,8 @@
7590
7594
  SourceLexer._symbolLexemeTable = {
7591
7595
  "{": Keyword.LeftBrace,
7592
7596
  "}": Keyword.RightBrace,
7593
- "=": Keyword.Equal
7597
+ "=": Keyword.Equal,
7598
+ "|": Keyword.BitwiseOr
7594
7599
  };
7595
7600
 
7596
7601
  /**
@@ -7745,6 +7750,17 @@
7745
7750
  ShaderSourceParser._createCompileError = function _createCompileError(message, location) {
7746
7751
  this._lexer.createCompileError(message, location);
7747
7752
  };
7753
+ ShaderSourceParser._scanEnumConstValue = function _scanEnumConstValue(enumName) {
7754
+ var _this__renderStateConstMap_enumName;
7755
+ var lexer = this._lexer;
7756
+ lexer.advance(1);
7757
+ var constValueToken = lexer.scanToken();
7758
+ var value = (_this__renderStateConstMap_enumName = this._renderStateConstMap[enumName]) == null ? void 0 : _this__renderStateConstMap_enumName[constValueToken.lexeme];
7759
+ if (value == undefined) {
7760
+ this._createCompileError("Invalid engine constant: " + enumName + "." + constValueToken.lexeme, constValueToken.location);
7761
+ }
7762
+ return value;
7763
+ };
7748
7764
  ShaderSourceParser._parseRenderStateProperty = function _parseRenderStateProperty(stateLexeme, out) {
7749
7765
  var lexer = this._lexer;
7750
7766
  var propertyToken = lexer.scanToken();
@@ -7784,12 +7800,31 @@
7784
7800
  } else if (valueTokenType === Keyword.GSColor) {
7785
7801
  propertyValue = lexer.scanColor();
7786
7802
  } else if (lexer.getCurChar() === ".") {
7787
- var _this__renderStateConstMap_valueToken_lexeme;
7788
- lexer.advance(1);
7789
- var constValueToken = lexer.scanToken();
7790
- propertyValue = (_this__renderStateConstMap_valueToken_lexeme = this._renderStateConstMap[valueToken.lexeme]) == null ? void 0 : _this__renderStateConstMap_valueToken_lexeme[constValueToken.lexeme];
7791
- if (propertyValue == undefined) {
7792
- this._createCompileError("Invalid engine constant: " + valueToken.lexeme + "." + constValueToken.lexeme, constValueToken.location);
7803
+ propertyValue = this._scanEnumConstValue(valueToken.lexeme);
7804
+ if (propertyValue == undefined) return;
7805
+ // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)
7806
+ lexer.skipCommentsAndSpace();
7807
+ if (lexer.getCurChar() === "|") {
7808
+ if (valueToken.lexeme !== "ColorWriteMask") {
7809
+ this._createCompileError("Bitwise OR '|' is not supported for '" + valueToken.lexeme + "', only bitmask enums like 'ColorWriteMask' support this", valueToken.location);
7810
+ return;
7811
+ }
7812
+ while(lexer.getCurChar() === "|"){
7813
+ lexer.advance(1);
7814
+ var nextEnumToken = lexer.scanToken();
7815
+ if (nextEnumToken == undefined || lexer.getCurChar() !== ".") {
7816
+ this._createCompileError("Invalid syntax after '|', expect 'EnumType.Value'", nextEnumToken == null ? void 0 : nextEnumToken.location);
7817
+ return;
7818
+ }
7819
+ if (nextEnumToken.lexeme !== valueToken.lexeme) {
7820
+ this._createCompileError("Cannot mix enum types in bitwise OR: expected '" + valueToken.lexeme + "' but got '" + nextEnumToken.lexeme + "'", nextEnumToken.location);
7821
+ return;
7822
+ }
7823
+ var nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);
7824
+ if (nextValue == undefined) return;
7825
+ propertyValue = propertyValue | nextValue;
7826
+ lexer.skipCommentsAndSpace();
7827
+ }
7793
7828
  }
7794
7829
  } else {
7795
7830
  propertyValue = valueToken.lexeme;
@@ -7977,6 +8012,7 @@
7977
8012
  case Keyword.GSCompareFunction:
7978
8013
  case Keyword.GSStencilOperation:
7979
8014
  case Keyword.GSCullMode:
8015
+ case Keyword.GSColorWriteMask:
7980
8016
  this._addPendingContents(start, token.lexeme.length, outGlobalContents);
7981
8017
  this._parseVariableDeclaration();
7982
8018
  start = this._lexer.getShaderPosition(0);
@@ -8001,7 +8037,8 @@
8001
8037
  StencilOperation: engine.StencilOperation,
8002
8038
  BlendOperation: engine.BlendOperation,
8003
8039
  BlendFactor: engine.BlendFactor,
8004
- CullMode: engine.CullMode
8040
+ CullMode: engine.CullMode,
8041
+ ColorWriteMask: engine.ColorWriteMask
8005
8042
  };
8006
8043
  ShaderSourceParser._symbolTableStack = new SymbolTableStack();
8007
8044
  ShaderSourceParser._lexer = new SourceLexer();
@@ -8060,7 +8097,7 @@
8060
8097
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
8061
8098
 
8062
8099
  //@ts-ignore
8063
- var version = "2.0.0-alpha.1";
8100
+ var version = "2.0.0-alpha.11";
8064
8101
  var mode = "Release";
8065
8102
  console.log("Galacean Engine ShaderLab Version: " + version + " | Mode: " + mode);
8066
8103