如何使用 WebGL/OpenGL 在 GPU 上高效地计算生命游戏?
How to efficiently compute the Game of Life on the GPU using WebGL/OpenGL?
为了在 Open/WebGL 上计算自动机,我天真的方法是将自动机的状态编码为纹理,将每个像素视为一个自动机单元;然后我将片段着色器称为该纹理,计算下一个状态并将其渲染回来。然后我会无限期地重复这个过程。
我的问题是:这不会导致每次调用片段着色器时在 CPU/GPU 之间传输内存吗?理想情况下,我想在 CPU/GPU; 之间没有任何通信的情况下多次(数千次)调用片段着色器;可能,充分利用处理单元的本地内存。
这可能吗?
为什么计算下一个状态时需要通过CPU传输纹理数据?
您将需要两个纹理。将单元格的当前状态放入其中一个,并使用着色器将下一个状态绘制到第二个纹理中。然后执行相反的操作:将下一个状态绘制到第一个纹理中,同时将第二个状态用作当前状态。根据需要重复多次。
为了在 Open/WebGL 上计算自动机,我天真的方法是将自动机的状态编码为纹理,将每个像素视为一个自动机单元;然后我将片段着色器称为该纹理,计算下一个状态并将其渲染回来。然后我会无限期地重复这个过程。
我的问题是:这不会导致每次调用片段着色器时在 CPU/GPU 之间传输内存吗?理想情况下,我想在 CPU/GPU; 之间没有任何通信的情况下多次(数千次)调用片段着色器;可能,充分利用处理单元的本地内存。
这可能吗?
为什么计算下一个状态时需要通过CPU传输纹理数据?
您将需要两个纹理。将单元格的当前状态放入其中一个,并使用着色器将下一个状态绘制到第二个纹理中。然后执行相反的操作:将下一个状态绘制到第一个纹理中,同时将第二个状态用作当前状态。根据需要重复多次。