shaderStages
shaderStages
一个内部常量数组,定义了 TSL 支持的所有着色器阶段('vertex', 'fragment', 'compute')。它作为“单一事实来源”,确保了代码的健壮性和可维护性,避免了使用易错的硬编码字符串。
核心优势
通过提供一个权威的、集中的着色器阶段列表,极大地提高了代码的可维护性(修改一处即可影响全局)和健壮性(避免了因手写字符串导致的拼写错误)。
常见用途
在系统初始化时,遍历此数组为每个着色器阶段创建独立的上下文环境。
确保节点属性(如 uniform)被正确地声明到所有相关的着色器代码中。
作为输入验证的“白名单”,检查指定的着色器阶段是否受支持。
如何调整
这是一个内部常量,不可在运行时调整。直接修改 Three.js 源码会从根本上改变 TSL 的功能:从此数组中移除一个阶段(如 'compute')将禁用对应的着色器类型;添加一个新阶段(如 'mesh')则是支持新型着色器的第一步。
代码示例
1// 遍历 shaderStages 来为每个阶段创建独立的上下文
2for ( const stage of shaderStages ) {
3 this.stacks[ stage ] = { /* ... 为该阶段准备的特定数据结构 ... */ };
4}