ShaderNode
ShaderNode
一个特殊的元编程节点,允许你使用 JavaScript 逻辑(如 if/else)来动态构建和组织着色器节点图。
核心优势
实现了着色器的元编程,是封装复杂效果、创建可配置材质和连接 JS 动态逻辑与 GLSL 静态代码的终极抽象工具。
常见用途
创建可配置的“超级材质”(Uber Material)
封装复杂的程序化效果,如水面或火焰
实现自定义光照模型,如卡通渲染
构建多功能的工具节点
如何调整
通过在编译前改变传递给节点的 JavaScript 属性(例如一个布尔值),可以触发其内部 `jsFunc` 运行不同的逻辑分支。这会从根本上改变生成的 GLSL 代码结构,例如,从采样一个纹理切换到采样另一个完全不同的纹理。
代码示例
1new ShaderNode( ( inputs ) => {
2 // 这是在 JS 中!不是 GLSL!
3 if ( inputs.useSecondaryTexture === true ) {
4 return texture( secondaryTexture );
5 } else {
6 return texture( primaryTexture );
7 }
8} )