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