I'm working on rewriting Vertex Block Descent (VBD) in OpenCL. It's a softbody simulation method like Vellum (XPBD), but supposedly faster and better in various ways. I wanted to test this by making a native implementation to compare to Vellum.
Currently it supports Mass-Spring (string) constraints from TinyVBD, and Neo-Hookean (tetrahedral) constraints. StVK is coming soon. It only supports ground collisions currently.
I designed it to work the same as Vellum so it should feel familiar to use.
I added WIP support for dual constraint solving based on avbd-2d. This is the main technique the AVBD paper introduced.
Sadly this makes it around 2x slower, since it means you have to solve both points (VBD) and prims (like Vellum does) For now it's a toggle but in the future it might have to be enabled for all constraint types.
Currently it's only supported for one type of constraint: the new Spring (AVBD) constraint. When the stiffness is infinite it gets solved as a hard constraint. This works OK for ropes, but it's very unstable if used for a full cloth.