I want to create particles that are 2d, and always drawn the exact same size, no matter where they are in the scene, or at what angle, OR what size the final render is.
So if my particle texture is 8x8 pixels, I want it to show up as 8x8 pixels exactly on the final render.
This can be done with an alpha overlay in the compositor, but I'd like to apply it to moving particles, and other objects. It would also be nice if they respected the depth of other objects (so if another object is in front of it, it obscures the particle).
EDIT:
I have found a way to do this with geometry nodes by scaling objects depending on their distance from the camera:
Unfortunately its not quite right, and the sprites frequently get stretched or squashed by 1px, which looks very distracting, especially in animations:
Here are the nodes / .blend
https://blenderartists.org/uploads/short-url/5qs6SVA0ARB0jijR0EDvTBhPTCX.blend
If anyone can figure out how to avoid this, it would be great.