I query the gl device directly so it does change the blend/vertex/vbo attributes, so stuff after the splat may create artifacts. So next step would be to correctly using Playcanvas vertex buffers and shaders.
I had this once when I was not copying all vbo data after sorting, not sure if the same case or just my GPU/OS/Browser.
I guess you sort by distance and re-arrange the VBO by shuffling all vertex data around. I recently started to experiment with texelFetch in the vertex shader, suppliying all data as texture, just sort the particle indices (@LeXXik yes indices again ) and fetch vertex attributes, which means much less memory copying from the worker and less cpu/gpu transfer.
The speedup is not great for large scenes, maybe its now vertex shader bound, I have to do some benchmarks.
I have been trying to reverse engineer the model viewer code, but its getting a bit too complicated. So, before I implement the whole entire model viewer in my app I am looking for some help with exactly what methods I need without extra stuff like the sidebar and icons.