attribute
attribute
在 TSL 着色器中建立一个到几何体顶点数据(如 position, normal, uv)的桥梁,允许在 GPU 上直接访问这些逐顶点的信息。
核心优势
通过抽象底层 GLSL 声明,实现了类型安全、模块化和可配置的顶点数据访问,将 Three.js 的几何体系统与着色器无缝集成,极大地提高了代码的健壮性和可复用性。
常见用途
顶点位移(如水面、旗帜)
程序化顶点着色(如根据高度着色)
读取自定义顶点数据(如粒子大小、出生时间)
纹理混合遮罩(使用顶点色)
如何调整
改变 `name` 参数会切换到不同的顶点数据流,例如从 'uv' 改为 'uv2' 会改变纹理坐标。更强大的调整是在 JavaScript 中动态修改其指向的 BufferAttribute 数据并设置 `.needsUpdate = true`,可以实现顶点动画,如基于自定义随机属性的“沸腾”或“抖动”效果。
代码示例
1const randomVec = attribute('randomness', 'vec3');
2const distortion = randomVec.mul( sin( time.mul(2.0) ) ).mul(0.5);
3
4// 使用自定义属性来扭曲顶点位置
5const finalPosition = position.add( distortion );