I haven’t really tested it on lower end devices. It makes heavy use of float textures and shaders. I tried to move as much of the work as possible to the GPU so… lower end GPUs will def. suffer. That said, I’m getting 144 fps on a midrange gaming PC so, maybe the bottleneck on something low-end isn’t raw throughput but something else? What os/gpu are you getting bad performance on? The monkey is using a 1k texture… and that texture has to get repainted a lot per draw operation, to do the UV dilation, to mitigate issues with seams. I suppose using a smaller texture could help too. I just tried it on my pixel 4 and it’s pretty chuggy… but I also noticed I was missing a pointermove event in the code… so it wasn’t even running on mobile. Gonna push that fix…
win10 notebook with on-board intel gpu
There is an expensive shader pass that happens to dilate the texture to prevent seams. This currently happens on every draw… It could be optimized or changed to only do the dilation on mouseup, but then you might vigorously paint on a mesh to remove a seam, only to have the seem disappear when u release the button, and the dilation pass happens. It could also be toggled on a checkbox or something…
I stopped working on the painter bc I got bored and it worked well enough for me… but if someone really needs it optimized, I might be up for it.
To clarify: On this model… In the background is the texture before the dilation happens…
Notice the weird L shaped seam on the top of the head… because of texture filtering across the edges of those triangles…
Then once I click… the dilation happens, and the seam disappears:
And notice how the texture changed to have a blobby skirt around each UV island… that’s the dilation… and it provides the extra data needed for the texture filtering to be able to pull data from the edges of UV islands… to shade edges without seams.