scriptable
scriptable
允许将一个包含自定义 GLSL 函数的 `code` 节点封装起来,并将其输入参数映射到其他 TSL 节点,从而在节点图中无缝使用自定义逻辑。
核心优势
核心价值在于提供了终极的灵活性和无缝的互操作性。它允许你将任何复杂的 GLSL 算法(如自定义噪声、外部代码片段)像标准节点一样集成到 TSL 工作流中,实现标准节点无法提供的独特效果。
常见用途
实现自定义的程序化噪声或图案(如 Worley 噪声)
集成并适配外部 GLSL 代码片段(如来自 ShaderToy 的效果)
在顶点着色器中编写复杂的几何体形变逻辑
如何调整
通过改变传入 `parameters` 对象的 TSL 节点来调整。例如,在上述代码中,将 `freq` 这个 uniform 的值从 `10.0` 增加到 `50.0`,会使 `sin` 函数的频率增加,视觉上模型表面的条纹图案会变得更加密集。
代码示例
1// 1. 在 code 节点中定义一个 GLSL 函数
2const customFunc = code(`
3 vec3 myPattern(vec2 coords, float freq) {
4 return vec3(sin(coords.x * freq), coords.y, 0.0);
5 }
6`);
7
8// 2. 使用 scriptable 调用它,并将 TSL 节点映射到其参数
9const result = scriptable(
10 customFunc,
11 { coords: uv(), freq: uniform(10.0) }
12);