My liquid system did the block updates per region, instead of per block.
So instead of a queue of blocks, you would use a queue of regions.
To update a region, the required data would first be copied into a (3D) array, the input array.
Then you would just run an update kernel on each block. The...