i released the first version ever of my open source painting program, it's still in early stage but it has the following features:
- No AI, this is a program for real artists
- 100% native, no Web, no Qt, no GTK, no dear imgui
- Advanced Layer System
- Infinite Undo History
- GPU Accelerated Canvas View
- Brush Engine similar to popular manga software
- Bucket Fill with gap closing (proof of concept)
download: https://mrgaturus.itch.io/npainter
@mrgaturus I hope you're immensely proud of this work.
@Gustodon yeah . This is the beginning of a long journey...
@mrgaturus The "for real artists" made me giggle. I tried a previous release long time ago (linux), glad to see you're back at it . Out of curiosity, would you consider vulkan/wayland? (or directly skipping opengl). I think nim supports vulkan.
@icevan Wayland is in my radar but it requires first i can be able to fully migrate to a wayland compositor without back to X11 after 15 minutes due some annoying issues (mostly with graphics tablet).
About Vulkan, one key point of this program is being compatible with at least 2011 PCs (opengl 3.3 core profile & sse4.1 to run the program)
@mrgaturus@mastodon.gamedev.place ...at and GTK are native? Unless this is windows only...
@mrgaturus@mastodon.gamedev.place ...oh, you're using X11 for composing the view. Why?? That's going to be slower than using a toolkit that blits to the X server once every frame, because every single paint call swaps into the X11 process... Nevermind the fact that it's stuck on X11, a dying display protocol...
@julia the whole GUI toolkit uses EGL and OpenGL, so no pixels are blitted using the crappy and old X11 API. I want to port it to Wayland and deprecate X11 code but sadly Wayland is not ready yet for me but not so far to be ready
@mrgaturus@mastodon.gamedev.place oh, okay, apologies for assuming the worst!
If it's just direct GL that's kinda reasonable, though wouldn't you end up making your own component system to do stuff like that?
@julia yeah, I started creating my own component system (gui toolkit) and this program to practice advanced programming topics (opengl, computer graphics) but it ended up to something that can be serious, this is just the beginning
@mrgaturus Interesting UI ... sounds as if gluitk (GL UI ToolKit) will be a byproduct at some point...? ;)
You'd be in good company there, GTK (GIMP ToolKit) started out as a byproduct of developing GIMP... ^^
@anathem the gui toolkit has it's own repository but is not focused for general purposes yet
https://github.com/mrgaturus/nogui
@julia @mrgaturus it's a bold choice, with the number of ancillary things that have to be implemented.
But I haven't seen the results, so I'm going to reserve judgement.
@astraluma @julia you are right, a gui toolkit from scratch is not an easy task
@mrgaturus @julia ok, I gotta ask, why?
@mrgaturus@mastodon.gamedev.place that's kinda cool :3
@mrgaturus@mastodon.gamedev.place yaaaayyy a new open source painting program!
gonna try this out if ever Gimp or Krita doesn't satisfy me
@mrgaturus I use dear imgui with nim (actually nimskull) and I consider it as native as it can get (since it's just a C library that builds a series of commands for my application to run as OpenGL draw calls). I compile it statically and it's really lightweight. Imgui has been more clunky than I expected syntax-wise so I'm not sure if I will stick with it.
Modern Qt and GTK are orders of magnitude more complex and dependency-ridden, but I would still consider them 100% native (as long as we're not using something like QML). Just not light-weight or easily self-contained like raw OpenGL or like imgui.
@starsider I think I did some misleading in that line, I'm expressing I'm not using web or generic libs.
About nimskull my project compiles in that and I was hyped for it but I'm not hyped anymore due:
- there are plans to do a crappy borrow checker that would break all my complex data structures
- without zerbina nimskull doesn't progress
- Nim's upcoming NIF is a lot better plan than nimskull
@mrgaturus what happened with zerbina? I've been busy the past few months so I haven't been in the chats.
@starsider they're quite inactive so nimskull development seems to be inactive
@mrgaturus I wanted to be much more active in nimskull dev but life's getting in the way. Mainline nim is just way too buggy for me. I'll have to read about those borrow checker plans when I have the time, I hope it doesn't break my stuff either (or that is easy enough to fix).
@starsider @mrgaturus tbh I'd consider gtk and Qt more native on their respective platforms but I see what he's getting at
@mrgaturus I tried to open a random webp file and boom, program crashed :x
Still, nice job getting this far without a framework, that's an impressive job
@gkrnours hahaha , file open/close right now is just a proof of concept
@mrgaturus why use no toolkit? That just means you have to do way more work yourself, and you almost completely rule out this being accessible to anybody who relies on literally any assistive technology
@soweliniko
There are many reasons:
- I have been creating the GUI toolkit to learn low level programming topics
- Graphics tablet support is poorly in many GUI libraries
- Nim (the programming language I'm using) doesn't have a proper GUI toolkit but it's potential for GUI programming is huge
- All hard fundamental work is done, the architecture is very simple and flexible for this kind of projects
- like dear imgui, I know my gui is not good enough for accessibility
@soweliniko@fedi.shorks.gay @mrgaturus@mastodon.gamedev.place
accessibility is possible with any toolkit (as long as you take your time to implement it)
Also look into https://accesskit.dev/ :3
Usable with both Rust (as a crate) and any other lang that has a FFI using the C bindings
@soweliniko@fedi.shorks.gay @mrgaturus@mastodon.gamedev.place
It's what's currently being used in egui, slint and even bevy (making it one of the only major game engines with accessibility support): https://docs.rs/bevy/latest/bevy/a11y/index.html
@mrgaturus @starsider Oh gosh this looks great! I use a Mac for all my art so I can’t daily drive this yet, but I’ll definitely give it a try from my Linux machine, and hopefully someone is able to add a Mac port at some point.
Are there any plans for adding a text tool?
@fluffy @starsider I have plans for a Mac port of course.
The Text Tool is a post-roadmap planned feature (1.x)
@mrgaturus @starsider awesome! I’m excited for this. Will definitely be subscribing to updates on itch.
@mrgaturus @starsider I just looked at the roadmap, and your planned features are absolutely spot-on for what I’ve been looking for in an art program.
@mrgaturus @fluffy @starsider I would dive it a try when you’ve got a Mac version ready for testing.
@mrgaturus ooh, does infinite undo mean playback too, like in good old OpenCanvas?
@eobet the "infinite undo" means each undo step is compressed and moved to disk drive to save ram.
So that can be extended to a realtime recovery auto-save feature and then timelapse feature
@mrgaturus
"infinite", eh?
We'll see about that…
@mrgaturus oh hell yeah a good paint(dot) alternative for linux users
@mrgaturus just a note: i, and a lot of other people on here, have a policy of not boosting posts with images that don't have alt text! it wouldn't be a bad idea to add some, i would like to boost this
-F
@mrgaturus I came across this post and shared it with my boyfriend since he's a hobbyist character artist. He tried it and really liked it, so he decided to do a full piece.
Thought I'd share it here so you can see.
Credit to Irakonul (posted with permission, not on Mastodon)
@niraeth oh my godness , I can't believe someone did a fully detailed art piece in this early stage version
(Obviously I will not use this art piece for promotional purposes)
@mrgaturus managed to build and run it on aarch64 linux using https://github.com/DLTcollab/sse2neon as a stand-in for smmintrin.h, and squiggled and flood-filled a bit. very promising and will be watching with great interest
@lifning oooh, thank you for trying it with sse2neon. I will use it for the very future Android version. The program already uses EGL (with Desktop GL 3.3), I tried run it with GLES 3.2 and it worked
@Dero_10 @thekamikazen not yet , but it's planned
@mrgaturus I hope I see this software available in the future on Flathub.
@nikora it's planned, of course, and also a wayland port to deprecate x11 code
@mrgaturus I'll be keeping my eye on this project.
@mrgaturus oh! this looks rad!
i played around with it a little, and it already feels pretty nice to use! as someone who rocks AzPainter, i especially like the space shortcuts and just how dang fast it opens
also, i can confirm that the fill tool seems really solid! i know that's kind of a hard problem, so props for figuring that out this early!
ilo sitelen sin li kama. mi wile e ni: mi wawa sitelen. ni la, mi ken sitelen pona kepeken ilo sin musi a!
I am always open to try new art software so I hope it is fun!
@mrgaturus If you share the #gitlab link as well, I'd give you a star there, too.
@fallbackerik it's hosted in github and i didn't put the source code link because it exceeded the max characters of a mastodon post :p
@mrgaturus !!! no qt no gtk -> tell me more!
@smhs a gui toolkit written for scratch for Nim with full gpu acceleration like dear imgui