@galacean/engine-shaderlab 1.6.5 → 1.6.6

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
@@ -7605,12 +7605,19 @@ SourceLexer._symbolLexemeTable = {
7605
7605
  for(var i = 0, n = shaderSource.subShaders.length; i < n; i++){
7606
7606
  var subShader = shaderSource.subShaders[i];
7607
7607
  var curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);
7608
- var constMap = _extends({}, shaderRenderStates.constantMap, subShader.renderStates.constantMap);
7609
- var variableMap = _extends({}, shaderRenderStates.variableMap, subShader.renderStates.variableMap);
7608
+ var globalSubShaderStates = {
7609
+ constantMap: _extends({}, shaderRenderStates.constantMap),
7610
+ variableMap: _extends({}, shaderRenderStates.variableMap)
7611
+ };
7612
+ this._mergeRenderStates(globalSubShaderStates, subShader.renderStates);
7610
7613
  for(var j = 0, m = subShader.passes.length; j < m; j++){
7611
7614
  var pass = subShader.passes[j];
7612
- Object.assign(pass.renderStates.constantMap, constMap);
7613
- Object.assign(pass.renderStates.variableMap, variableMap);
7615
+ var globalPassRenderStates = {
7616
+ constantMap: _extends({}, globalSubShaderStates.constantMap),
7617
+ variableMap: _extends({}, globalSubShaderStates.variableMap)
7618
+ };
7619
+ this._mergeRenderStates(globalPassRenderStates, pass.renderStates);
7620
+ pass.renderStates = globalPassRenderStates;
7614
7621
  if (pass.isUsePass) continue;
7615
7622
  var passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);
7616
7623
  pass.contents = passGlobalStatements.map(function(item) {
@@ -7662,7 +7669,7 @@ SourceLexer._symbolLexemeTable = {
7662
7669
  }
7663
7670
  }
7664
7671
  };
7665
- ShaderSourceParser._parseRenderStateDeclarationOrAssignment = function _parseRenderStateDeclarationOrAssignment(renderStates, stateToken) {
7672
+ ShaderSourceParser._parseRenderStateDeclarationOrAssignment = function _parseRenderStateDeclarationOrAssignment(outRenderStates, stateToken) {
7666
7673
  var lexer = this._lexer;
7667
7674
  var token = lexer.scanToken();
7668
7675
  if (token.type === ETokenType.ID) {
@@ -7672,19 +7679,37 @@ SourceLexer._symbolLexemeTable = {
7672
7679
  var symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);
7673
7680
  this._symbolTableStack.insert(symbol);
7674
7681
  } else if (token.lexeme === "=") {
7675
- // Assignment
7676
- var variable = lexer.scanToken();
7677
- lexer.scanLexeme(";");
7678
- var lookupSymbol = this._lookupSymbol;
7679
- lookupSymbol.set(variable.lexeme, stateToken.type);
7680
- var sm = this._symbolTableStack.lookup(lookupSymbol);
7681
- if (!(sm == null ? void 0 : sm.value)) {
7682
- this._createCompileError('Invalid "' + stateToken.lexeme + '" variable: ' + variable.lexeme, variable.location);
7682
+ // Check if it's direct assignment syntax sugar or variable assignment
7683
+ var nextToken = lexer.scanToken();
7684
+ var renderState1;
7685
+ if (nextToken.lexeme === "{") {
7686
+ // Syntax: DepthState = { ... }
7687
+ renderState1 = this._parseRenderStateProperties(stateToken.lexeme);
7688
+ } else {
7689
+ // Syntax: DepthState = customDepthState;
7690
+ lexer.scanLexeme(";");
7691
+ var lookupSymbol = this._lookupSymbol;
7692
+ lookupSymbol.set(nextToken.lexeme, stateToken.type);
7693
+ var sm = this._symbolTableStack.lookup(lookupSymbol);
7694
+ if (!(sm == null ? void 0 : sm.value)) {
7695
+ this._createCompileError('Invalid "' + stateToken.lexeme + '" variable: ' + nextToken.lexeme, nextToken.location);
7696
+ }
7697
+ renderState1 = sm.value;
7683
7698
  }
7684
- var renderState1 = sm.value;
7685
- Object.assign(renderStates.constantMap, renderState1.constantMap);
7686
- Object.assign(renderStates.variableMap, renderState1.variableMap);
7687
- return;
7699
+ this._mergeRenderStates(outRenderStates, renderState1);
7700
+ }
7701
+ };
7702
+ ShaderSourceParser._mergeRenderStates = function _mergeRenderStates(outTarget, source) {
7703
+ // For each key in the source, remove it from the opposite map in target to ensure proper override
7704
+ var targetConstantMap = outTarget.constantMap, targetVariableMap = outTarget.variableMap;
7705
+ var sourceConstantMap = source.constantMap, sourceVariableMap = source.variableMap;
7706
+ for(var key in sourceConstantMap){
7707
+ delete targetVariableMap[key];
7708
+ targetConstantMap[key] = sourceConstantMap[key];
7709
+ }
7710
+ for(var key1 in sourceVariableMap){
7711
+ delete targetConstantMap[key1];
7712
+ targetVariableMap[key1] = sourceVariableMap[key1];
7688
7713
  }
7689
7714
  };
7690
7715
  ShaderSourceParser._parseVariableDeclaration = function _parseVariableDeclaration() {
@@ -8029,7 +8054,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
8029
8054
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
8030
8055
 
8031
8056
  //@ts-ignore
8032
- var version = "1.6.5";
8057
+ var version = "1.6.6";
8033
8058
  var mode = "Release";
8034
8059
  console.log("Galacean Engine ShaderLab Version: " + version + " | Mode: " + mode);
8035
8060