Stack
Stack
一个直通辅助函数:若存在活动的 currentStack,则把传入节点登记到该堆栈并原样返回;若无活动堆栈则不做任何事并返回原节点。用于在构建期收集节点清单。
核心优势
零成本副作用。既不改变数值也不改变类型,只在正确的构建上下文里记录节点,便于后续统一声明、代码生成或更新。
常见用途
在已设置的堆栈上下文中收集特定节点,方便统一处理(如声明、varying 传递、uniform 注册)
在链式表达式里放置一个“捕获点”,用于调试或统计哪些节点被使用
将临时计算结果提升到当前作用域,确保即使只在分支路径中使用也会被纳入构建
如何调整
不可调。关键在上下文:先通过 setCurrentStack(...) 切换到目标堆栈,再对需要被收集的节点包一层 Stack(...)。若未设置堆栈,调用不会产生登记效果,但返回值仍可正常参与计算。
代码示例
1// 将混合颜色的结果加入当前堆栈,并作为材质颜色
2material.colorNode = Stack(
3 mix( color(0x4444ff), color(0xff4444), checker( uv().mul(8.0) ) )
4);