Rick Brewster

Rick Brewster

@rickbrew.bsky.social

I'm Rick Brewster, author of Paint​.NET! I'll be tweeting about .NET, C#, Paint​.NET, graphics, Windows things. https://paint.net

1.8K followers312 following509 posts

Pinned

I GOT THE DOMAIN! I FINALLY GOT IT!!!!!!!!!!1 🥳🎉 Paint​.NET is now at paint.net! Well, it will be just as soon as I push all the buttons to migrate content and set up redirects from getpaint​.net etc. For now it's just a "hey go here" redirect page.

I just posted what should be the final beta for Paint​.NET v5.2. There's a bug fix, a new translation (Uzbek), a plugin SDK nuget package (finally!), and a new Nearest Neighbor (Antialiased) resampling mode for the Move Pixels tool forums.paint.net/topic/134610...

forums.paint.netPaint.NET 5.2 Beta (build 9793)This should be the last beta release of Paint.NET 5.2 before the final, stable release which I'm planning for the day of-or-after the release of .NET 11. That should be the second week of November. Th...
View full thread

The Wine packages have some good progress to report as well. PNG and JPEG are now fully operational, including metadata. GPU effect plugins that use Sergio Pedri's ComputeSharp.D2D1 are working now. Stability and memory usage should also be greatly improved.

The final/stable release of 5.2 should be some time in early November. I'll be timing it for roughly the same time as Microsoft's official release of .NET 11.

I just posted what should be the final beta for Paint​.NET v5.2. There's a bug fix, a new translation (Uzbek), a plugin SDK nuget package (finally!), and a new Nearest Neighbor (Antialiased) resampling mode for the Move Pixels tool forums.paint.net/topic/134610...

forums.paint.netPaint.NET 5.2 Beta (build 9793)This should be the last beta release of Paint.NET 5.2 before the final, stable release which I'm planning for the day of-or-after the release of .NET 11. That should be the second week of November. Th...

Nearest Neighbor (Antialiased) is very similar to what the emulator community calls "bilinear sharp." It upscales to the ceiling of the requested scaling factor (e.g. from 100% to 700% instead of from 100% to 632%), and then bilinear downscale to the target (700% -> 632%).

This retains the blocky/pixelated look of Nearest Neighbor, but with the added effect of antialiased edges. This works for both scaling and rotation. (Credit to ConcernedApe's Stardew Valley for that sprite)

Although I think they scaled back the "cross-platform" goals, it's not like you can use it on Android. Maybe someday. Or maybe by "cross-platform" they meant Win10, Win11, and XBOX ¯\_(ツ)_/¯ In any case, it does seem to work on Wine!

Notably, I integrated DWriteCore so that text rendering is consistent and stable. I also got UI animations to work, sidestepping WINE's implementation of UIAnimation.dll that is mostly just empty stubs.

I'll make sure that there's a new build of Paint.NET-on-Wine for every update of the standard Paint​.NET package, but now I can more easily push out builds with targeted fixes and extra debugging information.

Someone even got it to run on a Mac 😯 This was not on my bingo card for this decade Obviously still lots of rough and sharp edges, but this is major progress seeing as how it hasn't been able to boot on Mac since 2014 or so

Experimental Wine 🍷 support has been moved into a separate package with its own Releases page and Issues tracker: github.com/paintdotnet/... It has installation and run scripts, no need for /wine anymore. And I'll be updating it independently(-ish) from the main Windows release.

github.comGitHub - paintdotnet/Paint.NET-on-Wine: Download packages and issue tracker for Paint.NET-on-WineDownload packages and issue tracker for Paint.NET-on-Wine - paintdotnet/Paint.NET-on-Wine

Alright everyone, message received. I was not expecting this response, I honestly had no idea before I made the post Like I said, the code is experimental. A proof of concept showing that PDN-on-WINE is possible. It's not finished. I can literally just delete it. It won't be part of the next build.

This post is unavailable.

Alright everyone, message received. I was not expecting this response, I honestly had no idea before I made the post Like I said, the code is experimental. A proof of concept showing that PDN-on-WINE is possible. It's not finished. I can literally just delete it. It won't be part of the next build.

This post is unavailable.

There are also some new command-line parameters being used to aid in the WINE effort. These disable things like UIAnimation, Composition, and the use of Win11's DisplayInformation.

These aren't generally useful, the WINE effort is in a separate branch. I'm just trying to prevent merges from getting too painful. Should have something interesting to share relatively soon tho. Finishing 5.2 is the priority.

The new effects are across 4 of the submenus: - Artistic: Linocut, Mosaic, Pointillism, and Stained Glass - Color: Ordered Dither - Distort: Spherize, Waves - Stylize: Halftone

I just pushed a new alpha build for Paint​.NET 5.2! This is the build that adds support for CICP metadata and HDR->SDR tone mapping when opening HDR images of a supported type (AVIF, HEIC, JPEG XL, JPEG XR, PNG) forums.paint.net/topic/134511...

forums.paint.netPaint.NET 5.2 Alpha (build 9688)This new alpha build has a quality of life improvement for the Move tools, support for CICP metadata, and good quality HDR->SDR tone mapping when opening HDR images with supported file types (includin...

I previously talked about the new CICP and HDR->SDR tone mapping support here: bsky.app/profile/rick...

Rick Brewster@rickbrew.bsky.social

Some new functionality I'm adding for the upcoming paint.net v5.2 release, which will be in the next alpha build: - CICP metadata support - HDR -> SDR tone mapping support when loading images

View full thread

(That screenshot is sRGB, so the example is illustrative, not literal. It's unfortunate that Windows 11 still does not have a good way of capturing HDR or WCG (wide color gamut) screenshots.)

View full thread

Now, I don't really consider HDR to be an important scenario for paint.net, not yet anyway. But I do consider CICP and HDR to be a necessary part of the foundation for a modern image editor. When you toss an image into PDN, it's important that it looks correct!

View full thread

Then, because PDN 5.2 is still limited to SDR, it will automatically tone map from HDR to SDR (BGRA UI8, aka BGRA32). When PDN 6.0 adds high bit-depth support the image will be imported as RGBA UI16 (still SDR). When 6.x adds HDR support, it will be RGBA FP16/FP32 and HDR.

The plugin itself won't need to change for any of this to work. Here's another example where the image, a Cyberpunk 2077 screenshot taken in HDR (PQ), has blown up brightness in PDN 5.1, but looks quite decent in 5.2:

View full thread

(The HDR->SDR image doesn't look exactly like the SDR image because it's not supposed to. The SDR version was created and/or tone mapped differently by something else.)

The plugin doesn't have to do this tone mapping itself. It provides the RGBA FP16 or RGBA FP32 bitmap to PDN, the CICP values, sets IsHdr=true, and optionally specifies the image's "content max luminance" (MaxCLL) value.

View full thread
View full thread

Paint.NET does not yet have HDR support, and any plugins that were capable of importing HDR into SDR had to do the tone mapping themselves. This resulted in some pretty poor results -- HDR tone mapping can get pretty complicated and it's very confusing.

CICP, or "code independent code points", is a way to encode an image's color space using just 4 bytes. Obviously it's not as flexible as an ICC profile, but it can do some things ICC can't and it's only 4 bytes. It can do PQ and HLG (both HDR), for starters.

I GOT THE DOMAIN! I FINALLY GOT IT!!!!!!!!!!1 🥳🎉 Paint​.NET is now at paint.net! Well, it will be just as soon as I push all the buttons to migrate content and set up redirects from getpaint​.net etc. For now it's just a "hey go here" redirect page.

View full thread

And when you're making a post here or elsewhere about Paint​.NET, just type Paint​.NET. No need to use "paint .net" or "paintdotnet" or "/paint.net" or (my favorite) "Paint​.NET" (with invisible zero-width space). No need to fear the auto-linkification of the text.

I GOT THE DOMAIN! I FINALLY GOT IT!!!!!!!!!!1 🥳🎉 Paint​.NET is now at paint.net! Well, it will be just as soon as I push all the buttons to migrate content and set up redirects from getpaint​.net etc. For now it's just a "hey go here" redirect page.

View full thread

Finally in December the latest (previous 😂) owner started hosting content that was all about Paint​.NET, trying to deceive users into thinking it was the official website. Bad links, ads, etc. They were making money off of my registered trademark.

I GOT THE DOMAIN! I FINALLY GOT IT!!!!!!!!!!1 🥳🎉 Paint​.NET is now at paint.net! Well, it will be just as soon as I push all the buttons to migrate content and set up redirects from getpaint​.net etc. For now it's just a "hey go here" redirect page.

So now when you want to find Paint​.NET just open up your browser and type in paint​.net somewhere, hit enter, and there you go. No more confusion. I've been trying to get this domain for 22 years. This is a big fucking deal.