NodeAccess
NodeAccess
管理着色器中变量的可变性(只读 vs 可读写),明确数据意图,以实现更安全的代码和更高级的算法。
核心优势
它如同 TSL 中的 `const` 和 `let`,通过明确声明变量为只读或可读写,既能防止对输入值的意外修改以增强代码健壮性,又能为编译器提供优化线索,并且是实现循环累加等迭代算法的基石。
常见用途
READ_ONLY: 用于所有输入数据,如 Uniforms、Attributes 和纹理采样结果。
READ_WRITE: 用于创建可修改的状态变量或累加器,尤其是在循环(LoopNode)中。
WRITE_ONLY: 用于指定只写的输出目标,如最终的片元颜色或顶点位置。
如何调整
该节点是常量,无法调整。但选择 `READ_WRITE` 权限是实现某些效果的“钥匙”。例如,没有它,你只能混合几层噪波得到单薄的“云雾”;而通过 `READ_WRITE` 变量在循环中迭代累加,则可以创造出细节丰富的、有层次感的“云层”效果。
代码示例
1let totalNoise = float(0.0); // 创建一个可读可写的累加器
2
3Loop({ end: 5 }, () => {
4 // 在循环中反复读取、修改和写回该变量
5 totalNoise.addAssign( noise( uv().mul(freq) ) );
6});