Painter delivers an incredible amount of power to create brushes of all kinds. There are many different brush technologies available, each with various options. Part of the power of Painter is the ability to create custom brushes with all of these options available.
When I create custom brushes, I usually take a few minutes to tweak the settings to optimize my brush speed. There are many ways to do this, and I would like to share just a few of the quick and easy tricks I use to optimize the performance of my brush variants.
Depending on which brush technology you are using for your brush, some of there tricks may not apply. Also, depending on your particular hardware or system configurations, your results will vary from mine.
1. Spacing (spacing and min spacing)
If your brush is a "stamp" brush, meaning that is is a brush which "stamps" bitmaps in sequence, then spacing will have a huge impact on performance.
Here is an example of how you can tweak spacing to improve performance.
Using the "Acrylics - Wet Acrylic" brush, I resize the brush radius from 30 to 200 pixels. The brush is now obviously slower than it was at 30.
If I open the "Spacing" panel in the brush controls I see the following settings:
I then increase the minimum spacing between each "stamp" to 20 pixels. Since the brush radius is 200, using a min distance of 20 still looks good.
Using a benchmark test, I can now measure that the brush is 171% faster. Pretty good for one adjustment! Let's see if we can do better…
I now adjust the spacing between the stamps from 8% to 15%. I find that anything above 15% loses the "look" of the brush.
Using my benchmark test, I see that the brush is now just over 200% faster. Not bad! The only thing I noticed is that the brush is not quite as opaque. So I increase my opacity from 73% to 90%.
There you go, with a few adjustments, my 200 pixel brush is about twice a fast.
For better brush performance, you want to use the highest values possible for spacing and minimum spacing, while still maintaining your brush "look" so that the "stamps" are not too far apart. So start with high values, and work your way down until you like the look of the brush.
Boost is similar to spacing, but is used for brushes that are not "stamp" brushes. Increasing the boost setting, will increase the distance between each connection point in your brush stroke. In Painter 12, the boost slider is located on the spacing panel.
Consider this example, using the "Acrylics - Thick Acrylic Round" variant:
I resize the brush radius from 30 to 200 pixels, and again I notice that it is slower than it was at 30.
I set boost to 15%. Notice that spacing is disabled, because this is not a "stamp" brush, whereas the boost slider is now enabled instead.
Using a benchmark test, I can measure that my brush is now 293% faster. That's almost 3 times faster!
Again the trick here is to use the highest "boost" setting that will still give you the look of the brush you desire. If you don't like how your brush looks, just bring the boost slider down until you find the best setting for both performance and brush look.
Depending on the brush technology used for your brush, the "feature" control can have different meanings.
In this example, "Acrylics - Thick Acrylic Round", feature is the density of the bristles. The denser the brush, the slower it will be because it needs to compute and render more bristles marks.
If I resize this brush from 30 to 200 pixels, I notice that my "feature" setting is automatically scaled from 3.7 to 9.6. This is thanks to a new option in Painter 12, which allows brushes to automatically maintain bristle density as you resize them. This is called "Scale Feature with Brush Size".
Note that a HIGHER FEATURE = LOWER BRISTLE DENSITY
But without this new option, my "feature" setting would have stayed at 3.7. If I measure the performance difference from having feature at 3.7 vs 9.6 using my benchmark test, I can see that the brush is a little over 6x faster! That is a huge difference.
Sometimes though you still want to manually tweak the "feature" setting to get the exact bristle look you want. The key here is to increase feature as high as you can (basically decreasing bristle density), while still keeping the brush looking like you want it.
In this case, I like the look of my brush with a "feature" of 12.0. This gives me a brush that is about 1.4x faster than using a feature of 9.6. And the brush is almost 9x times faster than using a feature of 3.7, which would have happened without the new automatic "Scale feature with Brush Size" option.
The last setting that I wanted to mention, which can really affect brush performance is the new "multicore" option.
If you enable this setting, Painter will distribute the brush "work" to the multiple cores on your computer. For many brushes, this can help performance. However, in some cases, enabling multicore can actually reduce performance. For example, if your brush uses a small radius, or if the brush is not complex enough, then the cost of enabling multicore could be greater than the benefit.
Painter comes with most brushes with this option enabled. However, some brushes have it disabled because in our test systems we found that it would not help for those brushes.
For this example I will use the "Acrylics - Clumpy Brush" variant. If I resize the brush to 400 pixels and measure the performance using my benchmark test, I can see that enabling the multicore option makes my brush approximately 3.5x faster.
My recommendation here is to simply try it. If you feel the brush is the same or faster, then I would leave the multicore option on. Otherwise, just turn it off for that brush.
With just a few minor adjustments to spacing (and min spacing), boost, feature and multicore, you can make a really big impact on your brush performance with little visual impact.
This is especially useful when increasing the size of you brushes.
If you have comments or questions, please send them along!
In the meantime, happy "FAST" painting :)
Very good tutorial! Thank you!
Question though ... HOW are you 'benchmarking' your brushes? It sounds like an intriguing idea.
First I would like to thank you for your excellent blog... I'm really getting a lot out of it... keep up the good work!
My OS is WIN7 x64 with an Intel i5 processor 1GB of video memory and 8GB of main memory with plenty of disk space. I have a windows gadget that shows me what each of my 4 processors are doing in close to real time, along with how much free memory I have. When most (but not all) brushes are running with Multicore enabled, all four processors max out to 100% when using the brush and it brings my system to a crawl. The result don't look any better than without it enabled. These are brush as shipped without any other tweaking on my part. Is this normal? Are you also getting these kinds of result?
Next I'm also curious about how you do the benchmarking of brush speed.
Thanks again Chris!
Thank you so much for this blog. You are giving us all some very very valuable information.
Terrific Chris. I am so grateful that you are taking the time to write this blog. I never understood boost; now I do.
Thanks for all the feedback!!! :)
Question 1: Benchmarking
I forgot to mention that I use a special tool, that is unfortunately not currently available to the public. This "tool" essentially plays back several recorded strokes in Painter using the current brush and measures the time it takes. This way you can calculate numerically the impact of changing some brush settings.
More than numbers, the important thing though, is if you can actually "tell" that the brush is faster while brushing, and hopefully some of these tricks will allow you to create faster brushes.
Question 2: Multicore
If you use default brushes, with multicore ON (as shipped) and they feel slower than with multicore OFF, then I would check if you have another application running in the background using CPU cycles. I would try closing other apps for example.
Robert, can you send me which brush you are using that has this problem? You can use my email address if you like, which should be visible on my profile.
I always wondered about the Spacing and Min Spacing settings. I've never played much with them but, then again, it's extremely rare for me to use brushes over say...oh...80px probably because most of my paintings top out at about 11x14".
That said, I now have a much better feel for these options and a much better understanding of Boost. I have played with Feature a bit when working with the DWC brushes...
Can't wait to read the next installment...'-}}
Chris, thanks for taking the time to share all this knowledge with us!..anything i can do to help my 4 cylinder pc with a tune up is great!..i can always start over if,or when i should say, i muck things all up...learning HOW the program works is as important as learning how to actually paint ,for me anyway...
Warm Brownies and milk for your efforts
Thank you very much Chris. Very timely and useful info. Porky provided a link to this post...thanks Porky.
Yes, I agree that brush performance is more useful for larger brushes :)
Glad to see that some of this is useful... oh and thanks for the brownies lol !
I just wanted to mention that small brushes can actually benefit from multicore as well. It's just that in some cases, for a variety of reasons (combination of using a small brush with a really simple brush technology for instance), the benefits of using multicore can either be not noticeable, or it can make your brush slower. If this is the case, simply turn off multicore for that brush.
Because Painter as so many brush options, the users can create very customized brushes. It is therefore possible to create brushes that will not benefit from multicore.
But for many/most brushes, multicore will give you a performance boost.
I have really enjoyed reading through your blog - as a Painter user over many years I have come across an issue with P12.1 that is pushing me over the edge! ... I was very interested in your article about ticking or not ticking the 'Multicore' dialogue box in general brush controls, and wonder if this might help in any way with a major problem that I am currently trying to solve?
I am experiencing a a virtually un workable brush 'lag' or time delay as I progressively work with P12 - after 10mins the delay os so extreme that I have to close the application then re-open to clear memory or cashe. (this was the advice of Corel support ... it works but it's not exactly the right way to do things is it?)
This is on a brand new MacPro 2 x 2.24 quad core with 20GB of ram and 2TB of clear hard drive space - I only have OSX Lion and the Painter software loaded on the machine - both completely clean fresh installs.
I have just posted a general comment about this problem on the main p12 comments page - do you happen to have any advice or possible solutions that would avoid having to close and re-load P12 every 10mins? ... there is an upside in that I only every loose 10mins work if it crashes! ... however this cannot be the correct or useable way to work.
Strangely since loading P12 in May11, I didn't have this issue until the new patches started to be released late in 2011 ... P12.1 is a big improvement but forgive me, I have to ask the question .... Should P12 have ever been released on the public with evidently so many problems and what seem like untested errors?
I look forward to reading your comments.
© Corel Corporation. The content herein is in the form of a personal web log ("Blog") or forum posting. As such, the views expressed in this site are those of the participants and do not necessarily reflect the views of Corel Corporation, or its affiliates and their respective officers, directors, employees and agents. Terms and Conditions.