Performance differences with POINTS between 1.11 and 2.0

There is no reason Processing couldn’t support floating-point textures using JOGL and a switch to Vulkan wouldn’t necessarily make anything easier. Processing simply has a large and deep code base that assumes colors are 8-bit uints per channel and it would take a lot of effort to duplicate it all using floats.

As to references, I use https://webglfundamentals.org/ and https://learnopengl.com/ and figure the rest out on my own. If you have any questions about my sketches, I’m happy to explain anything.

Let me point out that in the examples that do collision detection, they are “lossy” in that only the last particle in a texture grid location is stored. If A and B are in the same grid cell, A will write its id, then B will overwrite it. When they resolve their collision, A will see B in its cell and bounce off of it, but B will only see itself and so not bounce. In contrast, in OpenGL we can use atomic operations to create a linked list per grid cell to store all the particles and have them all see each other such as in https://genart.social/deck/@scdollins/114229170722618153.