expression
expression
允许在 TSL 节点图中直接嵌入一小段自定义的 GLSL 代码片段,并通过一个对象来注入 TSL 节点作为其变量。
核心优势
核心价值在于提供了终极的灵活性和扩展性。它允许开发者用简洁的代码实现任何 TSL 内置节点无法完成的复杂公式或算法,同时必须显式设置返回类型以确保类型安全。
常见用途
实现复杂的程序化图案(如域扭曲噪声)
创建自定义的光照或衰减模型
执行独特的颜色操作(如自定义混合模式)
使用 TSL 未直接封装的 GLSL 特有函数
如何调整
通过改变注入到 `params` 对象中的节点来调整。例如,在脉冲波例子中,增加 `frequency` 这个 uniform 的值会使波纹更密集;减小 `speed` 的值则会使波的扩散速度变慢。
代码示例
1// 使用 GLSL 表达式创建动态脉冲波
2const pulse = expression(
3 'sin(distance(uv, vec2(0.5)) * frequency - time * speed)',
4 {
5 uv: uv(),
6 frequency: uniform(20.0),
7 time: timer(),
8 speed: uniform(3.0)
9 }
10).setNodeType('float'); // 必须显式设置返回类型