convert
convert
一个通用的类型转换函数,可以将一个节点的数据安全地转换为指定的目标类型,例如从 `vec3` 到 `float`,或从 `float` 到 `vec3`。
核心优势
它将繁琐的数据拆分/重组操作(如用多个节点从颜色中提取亮度)简化为一步,并明确表达了类型转换的意图,从而提高了代码的可读性和类型安全性,避免了因类型不匹配导致的编译错误。
常见用途
从单值创建灰度颜色:`convert(myFloat, 'vec3')`
从颜色中提取单个通道/亮度值:`convert(myColor, 'float')`
可视化调试数据:`convert(uv(), 'vec3')` 以查看 UV 坐标
适配函数参数:`convert(myVec4, 'vec3')` 以匹配 `dot()` 等函数
如何调整
通过改变其目标类型参数(如从 'float' 到 'vec3'),可以完全改变数据被下游节点解读的方式。例如,将 `uv()` 转换为 'float' 会得到一个水平渐变,而转换为 'vec3' 则会得到一个二维的红绿调试图。它决定了数据的维度和结构,从而根本上改变视觉输出。
代码示例
1// 将一个在 [-1, 1] 间振荡的浮点值 (wave) 转换为灰度颜色
2// wave: 0.5 -> vec3(0.5, 0.5, 0.5)
3const grayPulse = convert( wave, 'vec3' );
4
5// 使用这个脉动的灰度值来偏移一个基础蓝色,创造“呼吸”效果
6const finalColor = baseBlueColor.add( grayPulse );