compute
compute
compute 节点是 TSL 中用于通用 GPU 计算(GPGPU)的核心。它允许开发者利用 GPU 强大的并行处理能力,执行独立于传统渲染管线的大规模计算任务,如物理模拟、粒子系统等。
核心优势
解锁 GPU 数千个核心的并行计算能力,为复杂模拟带来数量级的性能提升。它独立于渲染管线运行,并通过存储缓冲区(Storage Buffer)提供灵活的数据读写,是实现高性能粒子系统、物理模拟和程序化内容生成的关键。
常见用途
大规模粒子系统
物理模拟(布料、流体)
高性能图像处理
程序化几何体生成
如何调整
主要通过两种方式调整:1. 改变传入计算逻辑的 `uniform` 全局变量,如修改一个 `forceStrength` 变量来实时控制模拟中的力。 2. 修改 `count` 参数来增减被模拟的元素(如粒子)数量。最终的视觉效果取决于渲染管线如何使用计算后更新的缓冲区数据。
代码示例
1// 定义计算逻辑:获取当前线程对应的缓冲区元素并为其赋予新值
2// 新值由元素索引(instanceIndex)和时间(timerLocal)共同决定
3const computeLogic = myBuffer.element(instanceIndex).assign(
4 instanceIndex.mul(0.01).add(timerLocal())
5);
6
7// 创建 compute 节点,封装计算逻辑和要处理的元素总数
8const particleUpdater = compute(computeLogic, PARTICLE_COUNT);