@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.
@@ -8369,12 +8369,19 @@ SourceLexer._symbolLexemeTable = {
8369
8369
  for(var i = 0, n = shaderSource.subShaders.length; i < n; i++){
8370
8370
  var subShader = shaderSource.subShaders[i];
8371
8371
  var curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);
8372
- var constMap = _extends({}, shaderRenderStates.constantMap, subShader.renderStates.constantMap);
8373
- var variableMap = _extends({}, shaderRenderStates.variableMap, subShader.renderStates.variableMap);
8372
+ var globalSubShaderStates = {
8373
+ constantMap: _extends({}, shaderRenderStates.constantMap),
8374
+ variableMap: _extends({}, shaderRenderStates.variableMap)
8375
+ };
8376
+ this._mergeRenderStates(globalSubShaderStates, subShader.renderStates);
8374
8377
  for(var j = 0, m = subShader.passes.length; j < m; j++){
8375
8378
  var pass = subShader.passes[j];
8376
- Object.assign(pass.renderStates.constantMap, constMap);
8377
- Object.assign(pass.renderStates.variableMap, variableMap);
8379
+ var globalPassRenderStates = {
8380
+ constantMap: _extends({}, globalSubShaderStates.constantMap),
8381
+ variableMap: _extends({}, globalSubShaderStates.variableMap)
8382
+ };
8383
+ this._mergeRenderStates(globalPassRenderStates, pass.renderStates);
8384
+ pass.renderStates = globalPassRenderStates;
8378
8385
  if (pass.isUsePass) continue;
8379
8386
  var passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);
8380
8387
  pass.contents = passGlobalStatements.map(function(item) {
@@ -8426,7 +8433,7 @@ SourceLexer._symbolLexemeTable = {
8426
8433
  }
8427
8434
  }
8428
8435
  };
8429
- ShaderSourceParser._parseRenderStateDeclarationOrAssignment = function _parseRenderStateDeclarationOrAssignment(renderStates, stateToken) {
8436
+ ShaderSourceParser._parseRenderStateDeclarationOrAssignment = function _parseRenderStateDeclarationOrAssignment(outRenderStates, stateToken) {
8430
8437
  var lexer = this._lexer;
8431
8438
  var token = lexer.scanToken();
8432
8439
  if (token.type === ETokenType.ID) {
@@ -8436,20 +8443,38 @@ SourceLexer._symbolLexemeTable = {
8436
8443
  var symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);
8437
8444
  this._symbolTableStack.insert(symbol);
8438
8445
  } else if (token.lexeme === "=") {
8439
- // Assignment
8440
- var variable = lexer.scanToken();
8441
- lexer.scanLexeme(";");
8442
- var lookupSymbol = this._lookupSymbol;
8443
- lookupSymbol.set(variable.lexeme, stateToken.type);
8444
- var sm = this._symbolTableStack.lookup(lookupSymbol);
8445
- if (!(sm == null ? void 0 : sm.value)) {
8446
- this._createCompileError('Invalid "' + stateToken.lexeme + '" variable: ' + variable.lexeme, variable.location);
8447
- return;
8446
+ // Check if it's direct assignment syntax sugar or variable assignment
8447
+ var nextToken = lexer.scanToken();
8448
+ var renderState1;
8449
+ if (nextToken.lexeme === "{") {
8450
+ // Syntax: DepthState = { ... }
8451
+ renderState1 = this._parseRenderStateProperties(stateToken.lexeme);
8452
+ } else {
8453
+ // Syntax: DepthState = customDepthState;
8454
+ lexer.scanLexeme(";");
8455
+ var lookupSymbol = this._lookupSymbol;
8456
+ lookupSymbol.set(nextToken.lexeme, stateToken.type);
8457
+ var sm = this._symbolTableStack.lookup(lookupSymbol);
8458
+ if (!(sm == null ? void 0 : sm.value)) {
8459
+ this._createCompileError('Invalid "' + stateToken.lexeme + '" variable: ' + nextToken.lexeme, nextToken.location);
8460
+ return;
8461
+ }
8462
+ renderState1 = sm.value;
8448
8463
  }
8449
- var renderState1 = sm.value;
8450
- Object.assign(renderStates.constantMap, renderState1.constantMap);
8451
- Object.assign(renderStates.variableMap, renderState1.variableMap);
8452
- return;
8464
+ this._mergeRenderStates(outRenderStates, renderState1);
8465
+ }
8466
+ };
8467
+ ShaderSourceParser._mergeRenderStates = function _mergeRenderStates(outTarget, source) {
8468
+ // For each key in the source, remove it from the opposite map in target to ensure proper override
8469
+ var targetConstantMap = outTarget.constantMap, targetVariableMap = outTarget.variableMap;
8470
+ var sourceConstantMap = source.constantMap, sourceVariableMap = source.variableMap;
8471
+ for(var key in sourceConstantMap){
8472
+ delete targetVariableMap[key];
8473
+ targetConstantMap[key] = sourceConstantMap[key];
8474
+ }
8475
+ for(var key1 in sourceVariableMap){
8476
+ delete targetConstantMap[key1];
8477
+ targetVariableMap[key1] = sourceVariableMap[key1];
8453
8478
  }
8454
8479
  };
8455
8480
  ShaderSourceParser._parseVariableDeclaration = function _parseVariableDeclaration() {
@@ -8821,7 +8846,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
8821
8846
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
8822
8847
 
8823
8848
  //@ts-ignore
8824
- var version = "1.6.5";
8849
+ var version = "1.6.6";
8825
8850
  var mode = "Release";
8826
8851
  mode = "Verbose";
8827
8852
  console.log("Galacean Engine ShaderLab Version: " + version + " | Mode: " + mode);