color
color
一个工厂函数,用于在 TSL 中创建一个颜色节点(`ColorNode`)。它将各种颜色格式(如十六进制数)转换为着色器中可用的 `vec3` 或 `vec4` 颜色向量。
核心优势
提供了统一、便捷且类型安全的方式来在着色器图中引入颜色。它将用户友好的颜色表示(如 `0xff0000`)自动转换成 GLSL 所需的 `vec3(1.0, 0.0, 0.0)`,极大地简化了颜色定义。
常见用途
为材质定义一个静态的基础颜色。
创建可供其他节点(如 `mix` 或数学运算)使用的颜色常量。
将一个从 JavaScript 传入的 `THREE.Color` 对象包装成一个可动态更新的 uniform 颜色节点。
在 `cond` 或 `switch` 逻辑中,定义不同条件下应返回的颜色值。
如何调整
通过改变传递给 `color()` 函数的参数来调整。你可以直接修改十六进制颜色值(例如,从 `color(0xff0000)` 改为 `color(0x00ff00)`)。如果传入的是一个 `THREE.Color` 对象,则可以在 JavaScript 中修改该对象的颜色,效果会自动同步到所有使用此节点的材质中。
代码示例
1// 使用十六进制数创建两个颜色节点
2const primaryColor = color( 0xff0000 ); // 红色
3const secondaryColor = color( 0x0000ff ); // 蓝色
4
5// 在两种颜色之间进行混合
6const mixedColor = mix( primaryColor, secondaryColor, myFactor );