subBuild
subBuild
将一段着色器逻辑封装成一个可复用的命名组件,以便在不同地方(如顶点和片元着色器)高效共享,并自动管理跨阶段的数据流。
核心优势
它实现了“定义一次,多处使用”的模式,能被TSL自动优化以避免代码重复,并在需要时自动管理顶点到片元着色器的数据传递,从而极大地简化了复杂着色器的开发。
常见用途
生成在顶点和片元阶段都使用的程序化噪声
在顶点着色器中计算几何属性(如曲率)并在片元着色器中使用
创建模块化的、可组合的着色器特效库
如何调整
通过修改其内部的节点逻辑来调整,这个改动会同步到所有使用该节点的地方。若在顶点和片元着色器中都使用了同一个`subBuild`节点,TSL会自动创建`varying`来传递数据。
代码示例
1// 将核心逻辑封装成一个可复用的组件
2const wavePattern = subBuild( sin( uv().x.mul( 20 ) ), 'wavePattern' );
3
4// 在顶点着色器中使用它来产生位移...
5material.positionNode = position.add( vec3( 0, wavePattern.mul( 0.1 ), 0 ) );
6
7// ...并在片元着色器中复用它来上色
8material.colorNode = color( wavePattern );