How to archieve a spraypaint effect?


I’m struggling to find the best way to archieve a spraypaint effect like this.

The target platform is the Oculus Quest, so resources are limited but the spraying will be the main feature, so it can eat up a good amount of what the Quest is able to handle.

I was thinking about shooting particles and checking for collision to make them stick but particles are kind of costly and have a limited lifetime. Also, when I use scene depth for the collision, lots of particles seem to get stuck midair. Distance field seems very imprecise unless I crank up the distance field resolution scale way beyond comfort.

Maybe I could spawn the particles directly on the surface I want to paint but at the moment I’m not sure how to accomplish that.

I was also thinking about Nvidia Flex but that seems outdated and I don’t think I could get that to run on the Quest.

Maybe render targets are the way to go? But as far as I get it, it seems like it’s not that easy to “paint” across multiple objects that aren’t planes.

So, I was hoping somebody could point me in the right direction before I realize a few weeks from now that my approach had no chance of success in the first place.

Thank you for your time.

did you achieve that result already?

I know this is old but since it was resurrected… yeah use render targets. It’s not fun, but if each paintable component (might be a good idea to merge them maybe) has its own target and dynamic material instance, you can do a trace from the sprayer to the component, grab the UV, material index, and whatever else you need, and have that component update the render target in its material accordingly. Maybe you’ll need to do multiple traces to catch edges or weird spray patterns.