call
call
调用一个由 `tslFn` 定义的可复用函数,并将 TSL 节点作为参数传入,以在节点图的不同位置执行相同的逻辑。
核心优势
核心价值在于实现逻辑的模块化和复用(DRY原则)。它允许将复杂的节点组合封装成一个有意义的函数(如 `woodGrainPattern`),然后在主流程中通过清晰的 `.call()` 进行调用,极大地提高了节点图的可读性和可维护性。
常见用途
调用程序化图案生成函数(如砖块、木纹)
执行自定义光照模型(如卡通渲染)
应用封装好的复杂数学公式(如颜色空间转换)
混合不同材质层的函数调用结果
如何调整
效果完全取决于传入 `.call()` 的参数。例如,对于一个绘制圆形的函数,将其 `center` 参数从一个静态的 `vec2(0.5)` 替换为一个由 `timerLocal()` 驱动的动态向量,可以使静态的圆变为上下移动的动画。
代码示例
1// 假设 circleFn( { uv, center, radius } ) 已定义
2
3// 使用动态参数调用函数,创建移动的圆
4const movingCenter = vec2(0.7, sin(timerLocal()).mul(0.25).add(0.5));
5const movingCircle = circleFn.call({
6 uv: uv(),
7 center: movingCenter,
8 radius: float(0.2)
9});