Jump to content

paint.net 5.0 beta (build 8407)


Recommended Posts

First, check out the post for the first 5.0 alpha build to read about all the latest changes, additions, and fixes. There's a lot!

 

We're now at the beta stage for this release, which means 5.0 is feature complete, translations are complete, and all that's left is to squash any outstanding bugs. If you find any bugs it is very important for you to report them! Do not assume that a bug has already been noticed or will be fixed.

 

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable "Also check for pre-release (beta) versions of paint.net" and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.
 

image.png

Changes

Here's what's been fixed or changed since the previous build (5.0 beta build 8401):

  • New: Gaussian Blur and Bokeh's Gamma slider has been replaced with a Gamma dropdown, giving a choice between sRGB (2.2), Linear(1.0), and Custom, and a Gamma Exponent slider that goes along with it.
  • NOTE: If you have BoltBait's GPU Accelerated Plugin Pack installed, you will need to update it to the newest version (same goes for the Sample Effect Plugins for Paint.NET 5.0)
  • Fixed some alpha channel handling in the Bokeh effect
  • Changed Gaussian Blur's default Quality value from 3 to 4 for systems with capable GPUs
  • Removed Effects -> Blurs -> Unfocus, as its functionality is now superseded by Effects -> Blurs -> Bokeh (this is effectively a rename and an upgrade)
  • Added a new IndirectUI property collection rule, SetTargetWhenSourceEqualsAnyValueRule
  • Added a Direct2D GammaConvertEffect so that GPU plugins may more easily convert between sRGB, Linear, or other custom gamma exponents
  • Added a Direct2D PrecisionEffect to enable GPU effects to more easily narrow or expand precision within a transform graph
  • Updated the bundled AvifFileType plugin to version 1.1.22.0 (thanks @null54!)
  • Updated translations

Downloads

Download the installer here (for any supported CPU and OS). Offline installers, portable ZIPs, and deployable MSIs are available over on GitHub.

System Requirements

  • Windows 10 v1809+ or Windows 11
    • NOTE: Windows 8.1 and Windows 7 SP1 are no longer supported.
  • 64-bit CPU and 64-bit version of Windows
    • Both Intel/AMD x64 and ARM64 are natively supported.
    • NOTE: 32-bit x86 is no longer supported.
  • Optional:
    • A pen or drawing tablet that supports Windows Ink
  • Recommended:
    • A CPU that supports AVX2, which includes most CPUs released since 2013.
      • Note that AVX2 is not required, but it helps performance, especially at app startup.
    • A discrete GPU such as an NVIDIA GeForce, AMD Radeon, or Intel Arc
      • or an AMD Radeon APU (a type of integrated GPU)
      • or an Intel Iris Plus or Iris Xe integrated GPU
    • The GPU must support Direct3D 11. Otherwise the CPU will be used for rendering, which will have poor performance.
    • An Intel CPU with an Intel "HD" or "UHD" iGPU works fine but will probably not show much, if any, performance improvement over previous versions of Paint.NET (which used the CPU for most rendering). The default quality used across the app (e.g. in distortion effects, and the Move Selected Pixels tool) will be automatically lowered to compensate.
  • Like 1

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

The main change in this build is with respect to how Gaussian Blur and Bokeh implement gamma. Prior to this release, Gaussian Blur always operated in linear (1.0) gamma by default, which can crush highlights, while Bokeh was defaulting to 3.0 for aesthetic reasons. Now they both default to sRGB (~2.2) gamma, which means these effects now operate correctly with respect to gamma. Over time I plan to extend this to other areas of Paint.NET, so stay tuned!

 

Here's what the new Gamma options look like for Gaussian Blur and Bokeh:

 

image.png

Changing the Gamma dropdown to sRGB (2.2) or Linear (1.0) will automatically set the Gamma Exponent slider to 2.2 or 1.0, respectively. For Gaussian Blur, a gamma of Linear (1.0) is equivalent to previous versions of Paint.NET.

 

Changing the Gamma Exponent slider will automatically set the Gamma dropdown to Custom. However, if the Gamma Exponent lands on 1.00 or 2.20 exactly, the Gamma dropdown will be updated to be Linear or sRGB, respectively.

 

The relationship between the dropdown and the slider is implemented using the new SetTargetWhenSourceEqualsAnyValueRule. I can provide sample code if someone asks for it.

 

GPU effect plugins that wish to implement gamma-correct rendering (esp. important for blending and sampling) should apply an SrgbToLinearEffect on the input images, and then use the LinearToSrgbEffect as their output. You can also use GammaConvertEffect, which lets you choose between SrgbToLinear, LinearToSrgb, CustomExponent, and InverseCustomExponent (this is what Gaussian Blur and Bokeh use).

  • Like 3

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

  • Rick Brewster changed the title to paint.net 5.0 beta (build 8407)
2 hours ago, Josey21 said:

The Download in this forum downloads 8401 & not 8407. The same at Github. The Download at MajorGeeks is correct. Just an FYI.

Thanks -- I've fixed the download links

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

This is related to the Content Aware File plugin crash reported at https://blog.getpaint.net/2022/12/20/paint-net-5-0-beta-build-8389-is-now-available/#comment-23249

 

Repo steps:

  1. On the default 800x600 canvas create a small selection and fill it with black.
  2. Run the content aware fill plugin.
  3. It works when the selection is expanded by 50 pixels, but the plugin crashes when the selection is expanded by 100 pixels.

In my test the following selections were used:

 

Original selection bounds:  {X = 113 Y = 166 Width = 380 Height = 176}.

The plugin's 100 pixel expanded selection bounds: {X = 13 Y = 66 Width = 580 Height = 376}.

Exception details:

 

Spoiler

System.ArgumentOutOfRangeException
  HResult=0x80131502
  Message=Specified argument was out of the range of valid values. (Parameter 'bounds (0,0,580,376) is not valid (0,0,593,342)')
  Source=PaintDotNet.Primitives
  StackTrace:
   at PaintDotNet.RegionPtr`1.SliceError(RectInt32 bounds)
   at PaintDotNet.RegionPtr`1.Slice(RectInt32 bounds)
   at PaintDotNet.RegionPtrExtensions.Slice[T](RegionPtr`1 region, SizeInt32 size)
   at PaintDotNet.Surface.CopySurface(ISurface`1 source, Rectangle sourceRoi)
   at PaintDotNet.Surface.CopySurface(Surface source, Rectangle sourceRoi)
   at ContentAwareFill.Resynthesizer..ctor(ResynthesizerParameters parameters, Surface source, MaskSurface targetMask, MaskSurface sourceMask, Rectangle sourceROI, Size croppedSourceSize, Action`1 progressCallback)
   at ContentAwareFill.ResynthesizerRunner.Run(Func`1 abortCallback, Action`1 progressCallback)
   at ContentAwareFill.ContentAwareFillConfigDialog.backgroundWorker_DoWork(Object sender, DoWorkEventArgs e)
   at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
   at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

 

I think it could possibly be a bug in RegionPtr<T>.Slice, the same repo steps does not cause any error in PDN 4.3.12.

  • Like 1

PdnSig.png

Plugin Pack | PSFilterPdn | Content Aware Fill | G'MICPaint Shop Pro Filetype | RAW Filetype | WebP Filetype

The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait

 

Link to comment
Share on other sites

I have a large-ish with less than 20 layers. Image 7655 x 4848px.

 

I make a complex selection using the magic wand + Global.

 

Paste into new layer offsets the selection from the source

 

offset-paste.png.

  • Like 1
Link to comment
Share on other sites

13 hours ago, null54 said:

I think it could possibly be a bug in RegionPtr<T>.Slice, the same repo steps does not cause any error in PDN 4.3.12.

 

In this case, I don't think there's an error in Slice(). It is throwing an exception because this.Bounds.Contains(bounds) returns false. You're passing in a bounds that extends 34 pixels taller than the region you're trying to slice. Slice() does not clip -- the given rectangle must be wholly contained within the region. If you want to clip the bounds then you can use RectInt32.Intersect() or whatever is appropriate.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

11 minutes ago, Rick Brewster said:

 

In this case, I don't think there's an error in Slice(). It is throwing an exception because this.Bounds.Contains(bounds) returns false. You're passing in a bounds that extends 34 pixels taller than the region you're trying to slice. Slice() does not clip -- the given rectangle must be wholly contained within the region. If you want to clip the bounds then you can use RectInt32.Intersect() or whatever is appropriate.

Oh wait -- I see you're using Surface.CopySurface() 🤔

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

12 hours ago, Ego Eram Reputo said:

I have a large-ish with less than 20 layers. Image 7655 x 4848px.

 

I make a complex selection using the magic wand + Global.

 

Paste into new layer offsets the selection from the source

 

offset-paste.png.

 

I think I know what's happening here. This is not a change or new bug in 5.0 (or technically even a bug at all), but rather unexpected behavior for your scenario. When something is pasted, where it goes depends on the zoom and scroll position. Paint.NET will generally try to position it relative to the top-left of the current viewport.

 

Imagine you've copied something small, and then you scroll somewhere else and do a paste: it will be pasted into the newly scrolled-to area, not to the original location it was copied from. Otherwise you'd be yanked back to the scroll location where you copied from, and it would be frustrating, especially if you're copy/pasting many times.

 

Unfortunately this is not a perfect solution, as you can see. If you always want the pasted location to match the copied location, use Ctrl+B to zoom all the way out (Fit to Window), then Paste, then Ctrl+B again to restore the zoom/scroll.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

9 hours ago, Rick Brewster said:

I think I know what's happening here. This is not a change or new bug in 5.0 (or technically even a bug at all), but rather unexpected behavior for your scenario. When something is pasted, where it goes depends on the zoom and scroll position. Paint.NET will generally try to position it relative to the top-left of the current viewport.

 

Imagine you've copied something small, and then you scroll somewhere else and do a paste: it will be pasted into the newly scrolled-to area, not to the original location it was copied from. Otherwise you'd be yanked back to the scroll location where you copied from, and it would be frustrating, especially if you're copy/pasting many times.

 

Understood. I assumed paste in to new layer with Ctrl + Shift + V would respect top left and was surprised when things weren't aligned.

 

I've just repo'd this with the attached image, steps:

  1. Open the single layer image
  2. Zoom in a bit using Ctrl + Mousewheel (e.g. 22%)
  3. Shift-select the purple squares with Magic Wand
  4. Ctrl + C
  5. Ctrl + Shift + V

 

 

Gridsquares.zip

Link to comment
Share on other sites

On 1/8/2023 at 7:26 PM, null54 said:

This is related to the Content Aware File plugin crash reported at https://blog.getpaint.net/2022/12/20/paint-net-5-0-beta-build-8389-is-now-available/#comment-23249

 

Repo steps:

  1. On the default 800x600 canvas create a small selection and fill it with black.
  2. Run the content aware fill plugin.
  3. It works when the selection is expanded by 50 pixels, but the plugin crashes when the selection is expanded by 100 pixels.

In my test the following selections were used:

 

Original selection bounds:  {X = 113 Y = 166 Width = 380 Height = 176}.

The plugin's 100 pixel expanded selection bounds: {X = 13 Y = 66 Width = 580 Height = 376}.

Exception details:

 

  Reveal hidden contents

 

I think it could possibly be a bug in RegionPtr<T>.Slice, the same repo steps does not cause any error in PDN 4.3.12.

 

btw this is fixed for the next build/update (@null54 helped test/verify the fix)

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

  • Rick Brewster locked, unfeatured and unpinned this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...