dynamicBufferAttribute
dynamicBufferAttribute
创建一个专用的高性能通道,用于将 CPU 端(JavaScript)频繁变化的逐顶点数据(如粒子位置、水面位移)高效地发送到 GPU 着色器。
核心优势
核心优势在于性能。它通过向 GPU 发出 `DynamicDrawUsage` 信号,采用最适合频繁更新的内存策略,是实现 CPU 驱动的顶点动画(如物理模拟、程序化变形)的标准且最高效的方式。
常见用途
CPU 驱动的粒子系统(更新位置、颜色)
程序化几何体变形(如水面波纹、旗帜飘动)
实时数据可视化(如音频频谱仪)
交互式顶点编辑(如 3D 雕刻工具)
如何调整
调整效果主要通过在 JavaScript 动画循环中修改其背后的数组并设置 `.needsUpdate = true` 来实现。例如,在一个平面上,通过 JS 循环计算出一个随时间扩散的正弦波涟漪数据并写入数组,着色器读取该数据作为顶点高度偏移。最终视觉效果就是一个从中心扩散的生动水波纹,其形态完全由 CPU 端的计算驱动。
代码示例
1// 在顶点着色器中,将 CPU 计算出的动态偏移量应用到顶点 Y 坐标
2// rippleOffset 的数据源是一个在 JS 中每帧更新的 dynamicBufferAttribute
3position.y = position.y.add( rippleOffset );