Creating a Core Mechanic Similar to PowerWash Simulator?

Hi all, wondered if anyone may be able to help me with the following…

I’m looking to create a core mechanic like PowerWash Simulator, where the player cleans things… but I’m running into some challenges and I’m not sure of the best approach to resolve them.

I looked at a tutorial for RealTime Render Target Painting which was kinda in the right direction, but it still leaves a few unsolved issues. In that tutorial you’d effectively be painting a “clean” texture over the “dirty” texture - that could work, but I would need to know “how much” of the “dirt” was still left on the object in order to know when the object was cleaned fully.

I wondered whether having a “clean” texture exposed gradually by changing the opacity of a “dirt” texture over the top might work, but I’d only want the areas that were “hit” to be cleaned, so I dont think that approach would work.

In all scenarios, knowing how much is left is important.

Not sure if anyone has done anything similar, or could give me a point in the right direction, perhaps there’s a certain approach that I just need some keywords for so I can get better results from Google etc…

I should add… I did consider vertex painting, which may give me a handle on how much is still left to clean (e.g. total number of vertices and then look at which ones have been changed), but, that will then require us to have much higher density 3D models to look any good.

Any thoughts/suggestions/ideas would be really welcomed - so thank you in advance :slightly_smiling_face:

As an example, something like this:

PowerWash

A what simulator? Haha. I guess it would not be that different from this approach:

edit: sorry I posted this before I read your post with enough understanding of what is really needed.

1 Like

hehe, yeah, I was surprised by the type of game, apparently its supposed to be very fulfilling and relaxing… not really my thing but it does look very clever :slight_smile:

I’ll take a look at the video you’ve provided, its all good learning, may be similar to the approach in the tutorial I followed. Thanks :slight_smile:

Just circling back to see if anyone else has any thoughts on this? Would really appreciate any help.

Thanks in advance :slight_smile:

1 Like

I’m still looking for an answer also. Please let me know if you found anything.

the amount left is measurable if you keep the clean progress in its own mask rt. draw the brush as white into that mask while you paint the visual clean texture, then remaining dirt is 1 minus (painted pixels / total pixels).

for per object cleaning use one small mask per cleanable object (even 128x128 is fine for a percentage) and read a downscaled copy on a timer, count pixels over your threshold. dont read the full res mask every stroke is what makes this feel heavy, the mask read is a sync gpu to cpu copy and it will hitch.

you can also try Async Render Target Reader, a render target readback plugin for Unreal Engine that reads the mask pixels async with no game thread stall: Async Render Target Reader — Non-Blocking GPU Pixel Readback for Blueprints | Fab