@galacean/engine-shaderlab 1.6.5 → 1.6.7

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/main.js CHANGED
@@ -4964,7 +4964,9 @@ var PpUtils = /*#__PURE__*/ function() {
4964
4964
  generatedIdx = generatedIdxEnd;
4965
4965
  }
4966
4966
  ret.push(source.slice(startIdx));
4967
- return ret.join("");
4967
+ var result = ret.join("");
4968
+ // Replace multiple consecutive newlines with a single newline to clean up the output
4969
+ return result.replace(/\n\s*\n+/g, "\n");
4968
4970
  };
4969
4971
  return PpUtils;
4970
4972
  }();
@@ -7609,12 +7611,19 @@ SourceLexer._symbolLexemeTable = {
7609
7611
  for(var i = 0, n = shaderSource.subShaders.length; i < n; i++){
7610
7612
  var subShader = shaderSource.subShaders[i];
7611
7613
  var curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);
7612
- var constMap = _extends({}, shaderRenderStates.constantMap, subShader.renderStates.constantMap);
7613
- var variableMap = _extends({}, shaderRenderStates.variableMap, subShader.renderStates.variableMap);
7614
+ var globalSubShaderStates = {
7615
+ constantMap: _extends({}, shaderRenderStates.constantMap),
7616
+ variableMap: _extends({}, shaderRenderStates.variableMap)
7617
+ };
7618
+ this._mergeRenderStates(globalSubShaderStates, subShader.renderStates);
7614
7619
  for(var j = 0, m = subShader.passes.length; j < m; j++){
7615
7620
  var pass = subShader.passes[j];
7616
- Object.assign(pass.renderStates.constantMap, constMap);
7617
- Object.assign(pass.renderStates.variableMap, variableMap);
7621
+ var globalPassRenderStates = {
7622
+ constantMap: _extends({}, globalSubShaderStates.constantMap),
7623
+ variableMap: _extends({}, globalSubShaderStates.variableMap)
7624
+ };
7625
+ this._mergeRenderStates(globalPassRenderStates, pass.renderStates);
7626
+ pass.renderStates = globalPassRenderStates;
7618
7627
  if (pass.isUsePass) continue;
7619
7628
  var passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);
7620
7629
  pass.contents = passGlobalStatements.map(function(item) {
@@ -7666,7 +7675,7 @@ SourceLexer._symbolLexemeTable = {
7666
7675
  }
7667
7676
  }
7668
7677
  };
7669
- ShaderSourceParser._parseRenderStateDeclarationOrAssignment = function _parseRenderStateDeclarationOrAssignment(renderStates, stateToken) {
7678
+ ShaderSourceParser._parseRenderStateDeclarationOrAssignment = function _parseRenderStateDeclarationOrAssignment(outRenderStates, stateToken) {
7670
7679
  var lexer = this._lexer;
7671
7680
  var token = lexer.scanToken();
7672
7681
  if (token.type === ETokenType.ID) {
@@ -7676,19 +7685,37 @@ SourceLexer._symbolLexemeTable = {
7676
7685
  var symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);
7677
7686
  this._symbolTableStack.insert(symbol);
7678
7687
  } else if (token.lexeme === "=") {
7679
- // Assignment
7680
- var variable = lexer.scanToken();
7681
- lexer.scanLexeme(";");
7682
- var lookupSymbol = this._lookupSymbol;
7683
- lookupSymbol.set(variable.lexeme, stateToken.type);
7684
- var sm = this._symbolTableStack.lookup(lookupSymbol);
7685
- if (!(sm == null ? void 0 : sm.value)) {
7686
- this._createCompileError('Invalid "' + stateToken.lexeme + '" variable: ' + variable.lexeme, variable.location);
7688
+ // Check if it's direct assignment syntax sugar or variable assignment
7689
+ var nextToken = lexer.scanToken();
7690
+ var renderState1;
7691
+ if (nextToken.lexeme === "{") {
7692
+ // Syntax: DepthState = { ... }
7693
+ renderState1 = this._parseRenderStateProperties(stateToken.lexeme);
7694
+ } else {
7695
+ // Syntax: DepthState = customDepthState;
7696
+ lexer.scanLexeme(";");
7697
+ var lookupSymbol = this._lookupSymbol;
7698
+ lookupSymbol.set(nextToken.lexeme, stateToken.type);
7699
+ var sm = this._symbolTableStack.lookup(lookupSymbol);
7700
+ if (!(sm == null ? void 0 : sm.value)) {
7701
+ this._createCompileError('Invalid "' + stateToken.lexeme + '" variable: ' + nextToken.lexeme, nextToken.location);
7702
+ }
7703
+ renderState1 = sm.value;
7687
7704
  }
7688
- var renderState1 = sm.value;
7689
- Object.assign(renderStates.constantMap, renderState1.constantMap);
7690
- Object.assign(renderStates.variableMap, renderState1.variableMap);
7691
- return;
7705
+ this._mergeRenderStates(outRenderStates, renderState1);
7706
+ }
7707
+ };
7708
+ ShaderSourceParser._mergeRenderStates = function _mergeRenderStates(outTarget, source) {
7709
+ // For each key in the source, remove it from the opposite map in target to ensure proper override
7710
+ var targetConstantMap = outTarget.constantMap, targetVariableMap = outTarget.variableMap;
7711
+ var sourceConstantMap = source.constantMap, sourceVariableMap = source.variableMap;
7712
+ for(var key in sourceConstantMap){
7713
+ delete targetVariableMap[key];
7714
+ targetConstantMap[key] = sourceConstantMap[key];
7715
+ }
7716
+ for(var key1 in sourceVariableMap){
7717
+ delete targetConstantMap[key1];
7718
+ targetVariableMap[key1] = sourceVariableMap[key1];
7692
7719
  }
7693
7720
  };
7694
7721
  ShaderSourceParser._parseVariableDeclaration = function _parseVariableDeclaration() {
@@ -8033,7 +8060,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
8033
8060
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
8034
8061
 
8035
8062
  //@ts-ignore
8036
- var version = "1.6.5";
8063
+ var version = "1.6.7";
8037
8064
  var mode = "Release";
8038
8065
  console.log("Galacean Engine ShaderLab Version: " + version + " | Mode: " + mode);
8039
8066