textureStore
textureStore
一个专用于向存储纹理(Storage Texture)的指定像素坐标写入数据的命令式节点。它是执行通用计算(GPGPU)任务,如物理模拟和过程化生成的核心操作,用于保存计算结果。
核心优势
提供了一个意图明确、用法简洁的“写入”命令,是构建多阶段GPU计算流程的基础。它允许以精确的像素坐标更新纹理,从而将一个计算阶段的结果无缝传递给下一个阶段。
常见用途
在GPU粒子模拟中记录粒子状态
更新实时流体或物理模拟中的物理场
在过程化内容生成或交互式绘画中写入像素
如何调整
通过改变输入参数来精确控制写入的位置 (`uvNode`) 和内容 (`storeNode`)。例如,让 `storeNode` 的值随时间变化,可以使目标像素闪烁;让 `uvNode` 的坐标随时间变化,则可以在纹理上动态地“绘制”出一条路径。
代码示例
1// 获取当前线程的像素坐标 (ivec2)
2const uv = dispatchThreadID.xy;
3
4// 根据坐标计算一个颜色值
5const color = vec4( uv.x.tofloat().div( 512 ), uv.y.tofloat().div( 512 ), 0.5, 1.0 );
6
7// 执行写入命令,将颜色存入纹理
8textureStore( myStorageTexture, uv, color );