@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.
@@ -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 _array_like_to_array(arr, len) {
4
4
  if (len == null || len > arr.length) len = arr.length;
@@ -301,40 +301,42 @@ var Keyword = /*#__PURE__*/ function(Keyword) {
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
 
@@ -8300,7 +8302,8 @@ var SourceLexer = /*#__PURE__*/ function(BaseLexer1) {
8300
8302
  charCode === 59 || // ;
8301
8303
  charCode === 46 || // . CullMode.Back
8302
8304
  charCode === 91 || // [ Enabled[0],
8303
- charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);
8305
+ charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);
8306
+ charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green
8304
8307
  ;
8305
8308
  };
8306
8309
  SourceLexer._scanDigits = function _scanDigits(source, startIndex) {
@@ -8339,6 +8342,7 @@ SourceLexer._keywordLexemeTable = {
8339
8342
  CompareFunction: Keyword.GSCompareFunction,
8340
8343
  StencilOperation: Keyword.GSStencilOperation,
8341
8344
  CullMode: Keyword.GSCullMode,
8345
+ ColorWriteMask: Keyword.GSColorWriteMask,
8342
8346
  UsePass: Keyword.GSUsePass,
8343
8347
  true: Keyword.True,
8344
8348
  false: Keyword.False
@@ -8346,7 +8350,8 @@ SourceLexer._keywordLexemeTable = {
8346
8350
  SourceLexer._symbolLexemeTable = {
8347
8351
  "{": Keyword.LeftBrace,
8348
8352
  "}": Keyword.RightBrace,
8349
- "=": Keyword.Equal
8353
+ "=": Keyword.Equal,
8354
+ "|": Keyword.BitwiseOr
8350
8355
  };
8351
8356
 
8352
8357
  /**
@@ -8503,6 +8508,18 @@ SourceLexer._symbolLexemeTable = {
8503
8508
  var error = this._lexer.createCompileError(message, location);
8504
8509
  this.errors.push(error);
8505
8510
  };
8511
+ ShaderSourceParser._scanEnumConstValue = function _scanEnumConstValue(enumName) {
8512
+ var _this__renderStateConstMap_enumName;
8513
+ var lexer = this._lexer;
8514
+ lexer.advance(1);
8515
+ var constValueToken = lexer.scanToken();
8516
+ var value = (_this__renderStateConstMap_enumName = this._renderStateConstMap[enumName]) == null ? void 0 : _this__renderStateConstMap_enumName[constValueToken.lexeme];
8517
+ if (value == undefined) {
8518
+ this._createCompileError("Invalid engine constant: " + enumName + "." + constValueToken.lexeme, constValueToken.location);
8519
+ lexer.scanToCharacter(";");
8520
+ }
8521
+ return value;
8522
+ };
8506
8523
  ShaderSourceParser._parseRenderStateProperty = function _parseRenderStateProperty(stateLexeme, out) {
8507
8524
  var lexer = this._lexer;
8508
8525
  var propertyToken = lexer.scanToken();
@@ -8546,14 +8563,34 @@ SourceLexer._symbolLexemeTable = {
8546
8563
  } else if (valueTokenType === Keyword.GSColor) {
8547
8564
  propertyValue = lexer.scanColor();
8548
8565
  } else if (lexer.getCurChar() === ".") {
8549
- var _this__renderStateConstMap_valueToken_lexeme;
8550
- lexer.advance(1);
8551
- var constValueToken = lexer.scanToken();
8552
- propertyValue = (_this__renderStateConstMap_valueToken_lexeme = this._renderStateConstMap[valueToken.lexeme]) == null ? void 0 : _this__renderStateConstMap_valueToken_lexeme[constValueToken.lexeme];
8553
- if (propertyValue == undefined) {
8554
- this._createCompileError("Invalid engine constant: " + valueToken.lexeme + "." + constValueToken.lexeme, constValueToken.location);
8555
- lexer.scanToCharacter(";");
8556
- return;
8566
+ propertyValue = this._scanEnumConstValue(valueToken.lexeme);
8567
+ if (propertyValue == undefined) return;
8568
+ // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)
8569
+ lexer.skipCommentsAndSpace();
8570
+ if (lexer.getCurChar() === "|") {
8571
+ if (valueToken.lexeme !== "ColorWriteMask") {
8572
+ this._createCompileError("Bitwise OR '|' is not supported for '" + valueToken.lexeme + "', only bitmask enums like 'ColorWriteMask' support this", valueToken.location);
8573
+ lexer.scanToCharacter(";");
8574
+ return;
8575
+ }
8576
+ while(lexer.getCurChar() === "|"){
8577
+ lexer.advance(1);
8578
+ var nextEnumToken = lexer.scanToken();
8579
+ if (nextEnumToken == undefined || lexer.getCurChar() !== ".") {
8580
+ this._createCompileError("Invalid syntax after '|', expect 'EnumType.Value'", nextEnumToken == null ? void 0 : nextEnumToken.location);
8581
+ lexer.scanToCharacter(";");
8582
+ return;
8583
+ }
8584
+ if (nextEnumToken.lexeme !== valueToken.lexeme) {
8585
+ this._createCompileError("Cannot mix enum types in bitwise OR: expected '" + valueToken.lexeme + "' but got '" + nextEnumToken.lexeme + "'", nextEnumToken.location);
8586
+ lexer.scanToCharacter(";");
8587
+ return;
8588
+ }
8589
+ var nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);
8590
+ if (nextValue == undefined) return;
8591
+ propertyValue = propertyValue | nextValue;
8592
+ lexer.skipCommentsAndSpace();
8593
+ }
8557
8594
  }
8558
8595
  } else {
8559
8596
  propertyValue = valueToken.lexeme;
@@ -8747,6 +8784,7 @@ SourceLexer._symbolLexemeTable = {
8747
8784
  case Keyword.GSCompareFunction:
8748
8785
  case Keyword.GSStencilOperation:
8749
8786
  case Keyword.GSCullMode:
8787
+ case Keyword.GSColorWriteMask:
8750
8788
  this._addPendingContents(start, token.lexeme.length, outGlobalContents);
8751
8789
  this._parseVariableDeclaration();
8752
8790
  start = this._lexer.getShaderPosition(0);
@@ -8771,7 +8809,8 @@ ShaderSourceParser._renderStateConstMap = {
8771
8809
  StencilOperation: StencilOperation,
8772
8810
  BlendOperation: BlendOperation,
8773
8811
  BlendFactor: BlendFactor,
8774
- CullMode: CullMode
8812
+ CullMode: CullMode,
8813
+ ColorWriteMask: ColorWriteMask
8775
8814
  };
8776
8815
  ShaderSourceParser._symbolTableStack = new SymbolTableStack();
8777
8816
  ShaderSourceParser._lexer = new SourceLexer();
@@ -8844,7 +8883,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
8844
8883
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
8845
8884
 
8846
8885
  //@ts-ignore
8847
- var version = "2.0.0-alpha.2";
8886
+ var version = "2.0.0-alpha.21";
8848
8887
  var mode = "Release";
8849
8888
  mode = "Verbose";
8850
8889
  console.log("Galacean Engine ShaderLab Version: " + version + " | Mode: " + mode);