Bruce Bowyer-Smyth

  • Content Count

  • Joined

  • Last visited

Everything posted by Bruce Bowyer-Smyth

  1. Webuser magazine #277 - 20 Oct 2011 Article - "Hack your free software" (By adding plugins, don't stress ), "Photo" section Part 1 - "Blur pictures faster in Paint.NET", by using the Hardware Accelerated Blur Pack Part 2 - "Download plug-in packs for Paint.NET", intructions on where to find them
  2. Version 2.1 released with updates to Gaussian, Motion and Channel blurs to handle any sized image that Paint.NET can. Radial and Zoom blurs still depend on your video card ram size. Faster zoom blur.
  3. Version 2 released with updates to the Radial, Motion and Zoom blurs for more speed.
  4. I thought I would throw this in here just in case there is a race condition against a disposed object. Although it could be unrelated. It only happened once and I think I closed the app before it was fully loaded, but again not really sure (Go Team! ). Version 3.5.6 Exception details: System.ObjectDisposedException: Cannot access a disposed object. Object name: 'PaintDotNet.Document'. at PaintDotNet.IsDisposedExtensions.VerifyNotDisposed[T](T theObject) in D:\src\pdn\pdn_35x\src\Base\IsDisposedExtensions.cs:line 24 at PaintDotNet.Document.get_Layers() in D:\src\pdn\pdn_35x\src\Data\Document.cs:line 820 at PaintDotNet.Controls.LayerControl.TearDownOldDocument() in D:\src\pdn\pdn_35x\src\PaintDotNet\Controls\LayerControl.cs:line 288 at PaintDotNet.Controls.LayerControl.Workspace_ActiveDocumentWorkspaceChanging(Object sender, EventArgs e) in D:\src\pdn\pdn_35x\src\PaintDotNet\Controls\LayerControl.cs:line 521 at System.EventHandler.Invoke(Object sender, EventArgs e) at PaintDotNet.Controls.AppWorkspace.OnActiveDocumentWorkspaceChanging() in D:\src\pdn\pdn_35x\src\PaintDotNet\Controls\AppWorkspace.cs:line 978 at PaintDotNet.Controls.AppWorkspace.set_ActiveDocumentWorkspace(DocumentWorkspace value) in D:\src\pdn\pdn_35x\src\PaintDotNet\Controls\AppWorkspace.cs:line 774 at PaintDotNet.Controls.AppWorkspace.RemoveDocumentWorkspace(DocumentWorkspace documentWorkspace) in D:\src\pdn\pdn_35x\src\PaintDotNet\Controls\AppWorkspace.cs:line 899 at PaintDotNet.Actions.CloseAllWorkspacesAction.PerformAction(AppWorkspace appWorkspace) in D:\src\pdn\pdn_35x\src\PaintDotNet\Actions\CloseAllWorkspacesAction.cs:line 156 at PaintDotNet.Controls.AppWorkspace.PerformAction(AppWorkspaceAction performMe) in D:\src\pdn\pdn_35x\src\PaintDotNet\Controls\AppWorkspace.cs:line 1878 at PaintDotNet.Dialogs.MainForm.OnClosing(CancelEventArgs e) in D:\src\pdn\pdn_35x\src\PaintDotNet\Dialogs\MainForm.cs:line 575 at System.Windows.Forms.Form.WmClose(Message& m) at PaintDotNet.PdnBaseForm.OurWndProc(Message& m) in D:\src\pdn\pdn_35x\src\Core\PdnBaseForm.cs:line 1374 at PaintDotNet.Dialogs.MainForm.WndProc(Message& m) in D:\src\pdn\pdn_35x\src\PaintDotNet\Dialogs\MainForm.cs:line 97 at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  5. Version 1.1.1 has been released - Added support for vertical and horizontal text alignment options. - Added support for the long awaited image and text clipping. - Fix for default font color.
  6. Minor 1.0.4 release to fix the background fill on a polygon in a rare situation
  7. Pleabo, The image size comes from the metafile itself. They typically contain recommended dimensions to place the vector image into. I have considered displaying an import settings window on file open where you could set the scaling and background behaviour but thought that it may become annoying being shown every time. Maybe when the Paint.NET v4 settings dialog comes along I can do something there. File type plugins get handed the file that was opened and return a Paint.NET document based off that file. I don't think I can access any other application state like the currently open canvas.
  8. Version 1.0.3 has been released. It contains one bug fix for proper handling of vertical text.
  9. InfoWorld - 10 great free desktop productivity tools that aren't #5 Paint.NET 3.5.5 I even got a special mention for the GPU plugin
  10. Glad you like it. Performance difference is dependent on the cpu and gpu combination but as you say the weaker video card still far out performs your quad core. Nice. The particular figure I posted was from my dual core and 8800GTS setup and a 4800x6400 image. 16m 47.6 seconds versus 3.166 seconds.
  11. The UI is almost the same as the built-in effects. Some have a extra checkbox to control how pixels on the edge of the image are blurred and some have an extra dropdown list to limit the blur directions.
  12. ATI only support DirectCompute from the HD 4700 onwards. So it looks like you just missed out on this one.
  13. I have released a new version over on the published thread. For the motion and gaussian blur I have implemented a completely custom region slicing if the effect is being run against a whole image. With just this change the 960x1280 image goes from 426ms to 189ms. So very important to keep the GPU pipeline full and avoid stalls by copying the results back too often. Large image is up to 31,725% faster.
  14. Not that I know of. Would be interesting to know but probably not your average designer's setup.
  15. Wow thanks for that and for the pin. As a celebration there is more free performance for everyone! Better handling of small to medium sized images for the motion and gaussian effects. This also helps break through the 30K% barrier on the motion blur. Enjoy.
  16. Just noticed I had a typo in the filename of that last build so you would have got the previous version. Effect has now been published. Hardware Accelerated Blur Pack Thanks for everyones help in getting it this far.
  17. Hardware Accelerated Blur Pack uses your video card’s GPU to process images at a potentially huge performance leap. The blurs in this pack are modelled after the built in Paint.NET effects. Differences have been noted below. System Requirements Note: These additional requirements are for this plugin pack only. They are not required for use in general. Windows 8, Windows 7 or Windows Vista with the DirectX 11 platform update (x86, x64). (Win XP is NOT supported as it does not have DX11) Latest Video Drivers from NVIDIA or AMD/ATI DirectX 10 or later video card that supports DirectCompute (see troubleshooting section for how to determine this) Installation Extract all files from the zip file into the Paint.NET Effects folder. Download for v4 >>> Hardware Accelerated Blur Pack <<< Included Effects Motion Blur (up to 54,800% faster!) Added Edge Behaviour option Radial Blur (up to 12,300% faster) No quality option but it is equivalent to high-quality "5" in the standard Paint.NET blur. Zoom Blur (up to 5,300% faster) Gaussian Blur (up to 3,000% faster) Main improvement is for large images or radius Added Blur Dimensions option (Horizontal and Vertical, Horizontal Only, Vertical Only) Added Edge Behaviour option Channel Blur (new effect) A separate and unique gaussian blur for each color channel Each channel has it’s own independent radius option Troubleshooting Device creation error message Firstly make sure you have up to date video drivers Download GPU-Z and confirm that the DirectCompute checkbox is checked. If it isn’t you may have an unsupported video card. This means for NVIDIA you need an 8 series or later. For AMD/ATI the HD 4700 series or later. Intel HD Graphics 4000/2500 may be supported but I haven't tested that. Out of Memory error message You now have a reason for that hardware upgrade. The image needs to fit into the memory of the video card. The amount of a ram you have determines the size of the image these effects can process. Version History 3.1.0 - Fix for Radial Blur in PDN 4 and images with sub-selections. 3.0.0 - PDN 4 compatible. Switched to use SharpDX. 2.4.0 - Bug fix for "tall" motion blurs 2.3.0 - Bug fix for partial image width selections 2.2.0 - Fixed plugin load wanring. Fixed some blurs being off by half a pixel. Added support for Win 8 software device driver. 2.1.0 - Gaussian, Motion and Channel blurs can handle any sized image. Faster zoom. 2.0.0 - Faster Radial, motion and zoom. 1.0.7 - Increased perf on small to medium sized images for motion and gaussian blur
  18. The StructuredBuffer has a 32bit index so it will handle that dimension but similarly the problem is memory which of course there is a lot less of on the video card. There would be ways around that (virtual texturing?, streaming?) but it might be one for the pro's rather than my level of creating a "Hello Massively Parallel World" effect
  19. Ok new build is up. Not wanting to give up the texture performance for the most common scenarios I have made it switch to the StructuredBuffer only when the width or height is greater than 8k. This can certainly be done a lot better but for a V1 release it's workable. Let me know how it goes as I don't have enough video memory to process the full 70 megapixel image.
  20. If you can figure out an generic way to pass parameters then that would be a great setup. Hmm DX11 has a texture dimension limit of 16k but it turns out that when running on DX10 hardware the limit is still 8k. I may have to bring back the StructuredBuffer for large images...
  21. I knew you’d be back Rick. Let me know if you decide to go ahead with it and want to trial anything. With point-and-click cameras now averaging about 12 megapixels and climbing it may be soon become a requirement for some types of effects seeing that CPU’s haven’t been keeping up with that race. I did actually check out how installation would go but pretty quickly ran into all the troubles that Promit from SlimDX goes on about in this rant. It would have been nice to pre-check a few things like driver versions and display a "<Product Name> could perform faster on your computer" type message but that is one of the trade-offs. Here's hoping that the installer team have resolved this already and we can expect a "Web Deployment Package" style installer in the future?
  22. Well I'm back from my dependency squashing expedition with some pretty favourable results. Apart from the Vista platform update there is now nothing to install. I’ve created a custom build of SlimDX that just contains D3D11 and is repointed to the DirectX11 RTM version so that neither it nor the DirectX February update needs to be installed. The custom build can just be copied to the effects folder. The package now includes the effect dll, and 2 SlimDX dll’s (x86 and x64). Extract all of them into your Paint.NET Effects folder. I have also fixed up the channel blur alpha handling and removed the reference driver fall back as that was basically not an option. Let me know if you have any issues with this build and I will release it to the general population if all is well.
  23. Yes that was my thinking as well due to the huge amount of sampling and the scattered reads. Also when the radius increased the performance went down even though the same amount of work was being done. Probably thrashing the limited cache. But every roadblock has a detour and this one's name is... Texture2D and the texture cache. If what I have read is correct then StructuredBuffer doesn't use the texture cache. Treating the source image as a texture has meant that caching is better and I could remove the calculations to convert a point to a position in a 1D array and also the manual bit shifting on the pixel read. The performance is now a more respectable constant 4400% when the radius is increased so this definitely looks like the way to go. The same technique on the large image motion blur takes it up to 27K%. After implementing the code for proper alpha averaging that comes back down to 25K% but still a win there.
  24. 3.5.5 Radial blur: angle 10 Using the below image the first row and first column of pixels remain untouched by the blur. Looks like an off by one bug.
  25. Yes I would have thought so too but it seems to be capped between about 2500% and 3500%. I've got some kind of bottle neck going on there but thats a good start. Didn't bother with the quality setting and just used the equivalent of the high-quality "5" option in's radial blur. The algorithms are not the same but the final image is pretty close. New version posted, includes the zoom blur as well.