[LayaAir3]多Pass下,宏被剔除了

随便定义了一个宏TEST给Pass2用
如果Pass1中没有用到这个宏,就被剔除了,Pass2中就获取不到了
 
 
 
Shader代码中有一段注释代码,解除注释宏生效,不解除宏就没了
已邀请:

Heured

赞同来自:

分析源码执行流程发现 WebGLRenderElement3D._compileShader 函数里第一个循环执行完 pass.withCompile 之后 comDef._length 发生变化
(pass.withCompile() => WebShaderPass.getCacheShader() => WebDefineDatas._intersectionDefineDatas()), 后续循环中 comDef._length 没有重置到 comDef._mask 的长度, 导致后续pass没有正常编译

要回复问题请先

商务合作
商务合作