I thought I’d chime in as well. The issue is generally to do with filtering.
That is, you are likely using Nearest
magFilter
option on the texture, and you get he very characteristic pixel boundaries like here
![image](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/9/9/995d9b57185391651bb7716396c77ddc875acf58.png)
and here
![image](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/5/f/5f9cf262d36a316fad059eb84f82331cc9779a62.png)
How to solve that? Well, one relatively simple way is to use higher-order filtering, instead of using Nearest
filter, use Linear
, that will get you a bit further, you’ll still see stair-stepping, but it will be a more like curved steps instead of sharp and jagged ones.
If you want to go further, I recommend cubic-order filters such as CatmullRom, it will required you to write a bit of shader code though. Here is a good example of texture filter differences:
The filters from left to right are:
Nearest, Linear, Cubic Lagrange, Cubic Hermite
Now imagine instead of color boundaries that are very sharp, it would be alpha values (transparency) that is filtered.
With a good cubic-order filter you will get close-enough to a smooth circular outline that the difference will not matter too much I believe. Especially when particles are smaller on screen and are under motion.
PS
Turns out I didn’t read the question in full detail. Still, going to keep the above as it might be useful for some.
Back to your specific question, overlap will help, and will be necessary, but it’s still an aliasing issue, to help hide it I would recommend using some kind of noise and jitter positions of individual particles within a single pixel. A good blue noise will do the trick.
For an easier option with jitter, a repeated Halton sequence will work too.