glslFn
glslFn
允许将一段完整的 GLSL 函数定义为字符串,并将其封装成一个可在 TSL 节点图中被多次调用的函数模板。
核心优势
核心价值在于实现真正的代码复用(DRY原则)和模块化。它允许你构建一个自定义、可读的函数库(如 `rotateUV`, `rgbToHsv`),从而保持主节点图的整洁并专注于高层逻辑。
常见用途
创建坐标变换工具(如2D旋转函数)
封装颜色空间转换算法(如RGB转HSV)
定义有符号距离场(SDF)基础图元
实现自定义的缓动或动画函数
如何调整
效果通过改变传递给 `.call()` 方法的参数节点来调整。例如,对于一个 `rotateUV` 函数,将其 `angle` 参数连接到一个 `timerLocal()` 节点会产生持续旋转的动画,而连接到一个 `uniform(float)` 则可以手动控制旋转角度。
代码示例
1// 1. 定义一个可复用的旋转函数
2const rotateUVFn = glslFn(`
3 vec2 rotate(vec2 uv, float angle) {
4 mat2 m = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
5 return m * (uv - 0.5) + 0.5;
6 }
7`);
8
9// 2. 使用 TSL 节点作为参数来调用它
10const rotatedUV = rotateUVFn.call({
11 uv: uv(),
12 angle: timerLocal()
13});