I was (and sometimes still am) using Paint Shop Pro 7 even on Linux (via Wine) until recently, but at some point i wanted to do some texture painting and found the whole process of "paint stuff, export to PNG, switch to Blender, reload texture, go back, etc" to be a bit of a PITA. I looked into making a plugin for PSP7 to show the image on a 3D model in a window but PSP7 only supported Photoshop plugins and making Photoshop plugins (for the circa 2000 version of Photoshop) seemed very convoluted as it was a quickly hacked together port of the process used on pre-MacOSX Macintosh.

So i thought i might try Krita instead. TBH i was never a fan of Krita's UI, it was too Photoshop-y for me (which i disliked, i found GIMP's UI better but PSP7's the best) but since it does have some digital painting focus and i prefer Qt apps to Gtk apps these days (GIMP is still on Gtk2 which i find perfectly fine, but very soon the Gtk3 version will replace it and i'm not a fan of Gtk3), i decided to check if i can make what i had in mind and if so stick with it.

I managed to hack together a plugin[0][1][2] for Krita to display a 3D model with the current image as a texture, initially using pure Python but later changed to a combination of Python and C (to do some more complex processing, like a feature in the latest version to force a predefined 8bit palette[3] to a texture). I also have some WIP shader support[4], though it is currently very experimental (as they increase the complexity a ton, but i'd like to be able to do use Krita for making simple materials).

I still think Krita is awkward in various places (i really dislike how paste works with automatic cropping, placing the new paste whenever it feels like and despite the 18913 paste commands there is no something like "paste into selection" to automatically scale the pasted image to fill the selection boundaries, which is extremely useful). These can be worked around of course (and the paste into selection thing can be done with a plugin), but i still find PSP7's UX much better overall.

From a plugin perspective sadly the plugin API is very limited: there is no way to "monitor" an image for changes, for example, so in my plugin (and this is something i've seen many other plugins do) i have to use a timer to constantly grab the image and upload it to the GPU. This is fine for ~1024x1024 and ~2048x2048 textures (depending on yoru PC) but having some sort of "the image changed at rect x1,y1,x2,y2" event would really speed things up. Similarly for things like checking if a document is closed (so you can get rid of its references) you have to enumerate all open views and see if there are any remaining views with the document.

I did consider building Krita myself and trying to contribute improvements but the build process is a bit shaky and even after i managed to build it, it crashed at startup. As Krita is something i'd probably rely on going forward for my own gamedev needs, i'll probably try again though.

[0] http://runtimeterror.com/tools/kritaview3d/

[1] https://i.imgur.com/X4k0qeU.png

[2] https://www.youtube.com/watch?v=ciAZmgKe3Ao

[3] https://www.youtube.com/watch?v=ZAxiXQVLcRw

[4] https://i.imgur.com/I5RXHqy.png