使用基于Web的方法的简单粒子系统。
我分配了两个位置缓冲区,并使用一个缓冲区来计算位置,同时用另一个缓冲区绘制屏幕。每当启动新框架时,我都换了两个缓冲区。
在使用gpgpu(例如计算位置)时,在WebGL中,通常有两个主要方法:使用转换反馈功能将来自顶点着色器的输出值存储到缓冲区中,或使用来自片段着色器中的计算使用来自Pixel Data纹理。我选择了以前的方法。
虽然WebGPU支持用于GPGPU任务的计算着色器,但由于我不熟悉与WebGPU相关的新阴暗器语言,我选择坚持使用WebGL。 (WebGL2还引入了对计算着色器的实验支持,但似乎不再可用,可能是由于WebGPU的出现。)
我提到了this example中提供的代码。为了增强代码清晰度并封装管道,我以类型的安全方式进行了重组和重新编写逻辑。