Bind groups are abstracted. So Babylon.js creates a few new bind groups every frame, whenever we change the used storage buffer.
Bind groups aren't a thing, so we can't use the same compute shader twice with different buffers. So we're creating a separate compute shader just for that.
Currently we're using Babylon.js abstractions. Which come with some performance losses, since the abstractions aren't always ideal.
StorageBuffer
abstraction doesn't let one provide initial data, so one has to make a buffer write-able. https://github.com/cg-tuwien/ShadertoyOfParametricModeling/blob/7729953eb4a01b130880db66fc64017e06f12a09/src/components/VirtualModel.vue#L116-L122