storageTexture
storageTexture
允许着色器(尤其在计算着色器中)对纹理的任意像素进行读写操作。它将纹理从只读资源转变为一块 GPU 上的可写“画布”,是程序化生成和 GPGPU 模拟的核心。
核心优势
实现了对纹理的任意位置写入(Random Access Write),让 GPU 可以直接、高效地生成或修改图像数据,为复杂的空间算法(如流体模拟)提供了原生的数据结构。
常见用途
实时程序化纹理生成(如噪声、分形)
基于网格的物理模拟(如流体、布料)
高性能图像后处理
如何调整
该节点的效果主要通过创造性地构建写入内容(`storeNode`)和写入位置(`uvNode`)来调整。例如,将一个含时间的 `noise` 节点连接到 `storeNode` 可生成动态噪声纹理;通过“先读取、再计算、后写回”的模式,可以创建反馈循环,实现随时间衰减或迭代处理的效果。
代码示例
1// 获取当前计算线程对应的像素坐标
2const writeUV = globalInvocationID.xy;
3
4// 基于坐标计算一个颜色值
5const colorValue = vec4( writeUV.x.div( 512 ), writeUV.y.div( 512 ), 0.5, 1.0 );
6
7// 将颜色值写入到 storageTexture 的指定坐标处
8storageTexture( myGpuTexture, writeUV, colorValue ).toStack();