VarIntent
VarIntent
显式声明“要创建变量”的意图。与 Var 类似,但会强制在生成的着色器中创建一个局部变量,即使优化器认为可以内联也不会被合并。仅在 Fn() 的 TSL 执行栈内生效;若在栈外调用(无当前栈)将直接返回传入节点,不做改动。
核心优势
稳定产出一个具名中间变量,固定求值顺序,避免重复计算,提升可读性与可调试性;便于在生成的 GLSL/WGSL 中定位该值。
常见用途
需要观察或命名某个中间值,避免被内联掉
在函数体内复用昂贵计算并确保只求值一次
为调试或性能分析明确保留中间变量
如何调整
VarIntent 的输出取决于其输入节点。若要改变结果,修改传入的节点树即可;若不再需要强制创建变量,可改用 Var 或直接使用原表达式。注意:在 Fn() 之外调用时不会创建变量,而是原样返回输入节点。
代码示例
1// 仅在 Fn() 作用域内生效
2const shader = Fn( () => {
3 // 复杂计算,强制生成局部变量
4 const heavy = VarIntent( noise( uv().mul(8.0) ) );
5 // 作为颜色与其他步骤复用
6 return color( heavy, heavy, one().sub(heavy) );
7} );