Jump to content
You must now use your email address to sign in [click for more info] ×

Accumulation vs Flow - what's the difference?


Recommended Posts

I've heard people say in articles/videos that accumulation is how diluted your paint is, and flow is how much paint you have on your brush. Ok, fine - but of course in reality there is no paint on my brush.

I've also heard it said that accumulation is equivalent to opacity; however this is clearly untrue, as I understand that opacity functions quite differently e.g. in photoshop, if you reduce opacity then your whole brush stroke has a smoothly reduced opacity, while accumulation and/or flow reductions still lead to a fully opaque stroke building up.

Furthermore, having run some tests where I set flow and accumulation to various levels, I can't see any difference in effect between e.g. 10% flow and 50% accumulation, vs 50% flow and 10% accumulation. They seem to be completely interchangeable, albeit I don't have much of an artist's eye so I may be missing some subtle difference. You can see this in the attached image - accumulation increases on the x axis, flow on the y axis.

So what's the practical difference between flow and accumulation? In what circumstances would it be important to choose one over the other?

Different strokes.jpg

Link to comment
Share on other sites

Hi, nice chart 👍🏼
To spot the difference, you need to take into account what happens

  • if you make several strokes atop each other, 
  • influence of underlying existing color in pixel layer (non-white)

 

Mac mini M1 A2348 | Windows 10 - AMD Ryzen 9 5900x - 32 GB RAM - Nvidia GTX 1080

LG34WK950U-W, calibrated to DCI-P3 with LG Calibration Studio / Spider 5

iPad Air Gen 5 (2022) A2589

Special interest into procedural texture filter, edit alpha channel, RGB/16 and RGB/32 color formats, stacking, finding root causes for misbehaving files, finding creative solutions for unsolvable tasks, finding bugs in Apps.

 

Link to comment
Share on other sites

That's a great video, but it doesn't answer the question. The main point it makes about opacity is to say that if you paint over the same spot again and again without lifting your brush, the opacity will remain constant. And it says that accumulation is the same as opacity. Well, I tried this with various opacity/accumulation/flow settings and - see below - basically they all work the same way.

You can see that the lower opacity setting leads to a lighter colour, but I think that's just because the scale is slightly different. If I do a further 10 strokes on the bottom row (20 total), with opacity set to 10%, I get the exact same results as doing 10 strokes total with flow or accumulation set to 10%.

So all this seems to be telling me is that flow and accumulation are indeed the same as opacity (albeit with a weirdly different scale) and also the same as each other. I am still none the wiser as to how I might use flow differently from accumulation - if indeed they are at all different.

Different strokes 2.jpg

Link to comment
Share on other sites

There is a big difference between opacity and flow, most visible when you compare 10/100 with 100/10.

At 100% opacity, 10% flow, each individual brush stroke can create a fully saturated blue as it adds on itself as long you do not stop and go over the same pixel several times.

At 100% flow, 10% opacity, each individual brush stroke will remain 10% saturated, and only where multiple strokes cross it will reach 100% blue.

The accumuluation is a opacity setting defined for each brush individually in the brush tool panel.

The global opacity / flow settings will affect all brushes, even when you switch brushes between strokes.

image.thumb.png.ff481702de4016535388459b24ee8832.png

To summarize:

  • flow: global setting (unchanged if you swicth to a different brush). One brush stroke will add more color if you brush over the same pixel multiple times.
  • opacity: global setting. (unchanged if you swicth to a different brush). One brush stroke does not add more color if you brush over the same pixel multiple times.
  • accumulation: brush specific setting. If you change brushes, you will get the the value defined by each brsuh. One brush stroke does not add more color if you brush over the same pixel multiple times.

So in principle you are right, all are similar animals, but the different settings allow you to optimize your workflow if you want to mix multiple brushes and settings.

 

image.thumb.png.3e5af2391fe5e1a0228731dd5369fa90.png

Mac mini M1 A2348 | Windows 10 - AMD Ryzen 9 5900x - 32 GB RAM - Nvidia GTX 1080

LG34WK950U-W, calibrated to DCI-P3 with LG Calibration Studio / Spider 5

iPad Air Gen 5 (2022) A2589

Special interest into procedural texture filter, edit alpha channel, RGB/16 and RGB/32 color formats, stacking, finding root causes for misbehaving files, finding creative solutions for unsolvable tasks, finding bugs in Apps.

 

Link to comment
Share on other sites

Thanks @NotMyFault. Long story short, I tried replicating your second graphic above, and it worked exactly as above for opacity vs flow, but when I tried it setting accumulation (12/50/100) on the x axis instead of opacity (and holding opacity constant at 50%), it looked nothing like your graphic, and indeed the result was that I got essentially identical crosses in every row and column, except the top left which was fainter than the rest. (Checking with the dropper shows the increase in flow and accumulation very slightly changes the RGB values in each part of the cross, but only by 1-2 units of whatever RGB is measured in.)

(I've attached the graphic although it probably qualifies as the most boring graphic in this thread...)

So while you are saying the same thing everyone else is saying, that accumulation is essentially opacity but brush-specific, the behaviour of the brush when I vary accumulation but hold global opacity constant - does not look at all like a brush-specific opacity. It looks... exactly like flow again. So what's going on here?

By the way: every time I go into my brush settings to change accumulation, global opacity resets to 100%. This seems strange to me if the intent is that opacity should be a global value that doesn't vary between brushes. But I guess my behaviour during this experiment - which is to go into a single brush and change its accumulation at each stage - is a little weird. Probably Affinity assume that I'm gonna create three brushes with varying accumulation, and not keep going in to change the settings.

Different strokes 3.jpg

Link to comment
Share on other sites

 

The following is in the context of AP 1.9.1 on macOS.

 

17 hours ago, NotMyFault said:

flow: global setting (unchanged if you swicth to a different brush) [...]

No, Flow is a brush property, not a "global setting".

Say Flow is 100% in the context toolbar and then you select a brush preset that has 25% Flow: the 100 changes to 25 in the context toolbar.

 

17 hours ago, NotMyFault said:

opacity: global setting. (unchanged if you swicth to a different brush) [...]

No, Opacity is a brush property, not a "global setting".

An Opacity control is missing from the brush editor but Opacity is a brush property and the current value in the context toolbar gets stored in a brush preset when a preset is created.

Say Opacity is 100% in the context toolbar and then you select a brush preset that has 50% Opacity: the 100 changes to 50 in the context toolbar.

 

17 hours ago, NotMyFault said:

accumulation: brush specific setting. If you change brushes, you will get the the value defined by each brsuh. One brush stroke does not add more color if you brush over the same pixel multiple times.

Yes, Accumulation is a brush property, but Accumulation appears to be identical to Flow, not Opacity, with one exception, as far as I can see. The exception is when the brush has a textured nozzle and Flow Jitter is 0% and Flow Jitter Controller is not "None", in which case Flow operates at 100% regardless of the specified value. That ignoring of the Flow value smells like a bug.

Accumulation and Flow both scale the opacity of a brush's nozzle, which enables the build-up effect where the nozzle applications overlap, whereas Opacity scales the opacity of an entire brush stroke.

I cannot see a reason for Accumulation and Flow both existing if they really do not differ (other than the aforementioned exception that smells like a bug), so I look forward to someone providing an example of them being different.

 

Edited by anon2
Link to comment
Share on other sites

3 hours ago, Rabalias said:

So while you [@NotMyFault] are saying the same thing everyone else is saying, that accumulation is essentially opacity but brush-specific, the behaviour of the brush when I vary accumulation but hold global opacity constant - does not look at all like a brush-specific opacity. It looks... exactly like flow again. So what's going on here?

Everybody is not saying the same thing :)

Opacity, Flow and Accumulation are all brush-specific. Their values are stored in a brush preset when a preset is created and their values are loaded when a brush preset is picked.

Both Accumulation and Flow scale the opacity of a brush's nozzle, which enables the build-up effect where the nozzle applications overlap during the painting of a brush stroke, whereas Opacity scales the opacity of an entire brush stroke.

Accumulation and Flow provide identical effect in my experience, except for one situation. The exception is when the brush has a textured nozzle and Flow Jitter is 0% and Flow Jitter Controller is not "None", in which case Flow operates at 100% regardless of the specified value. That ignoring of the Flow value smells like a bug.

Link to comment
Share on other sites

@anon2 if opacity is a brush setting, that setting seems to be hard-coded at 100%. Every time I switch brushes or edit my current brush, opacity returns to 100% - and this is true even if I edit the context menu opacity slider while editing a brush. It appears impossible to set brush opacity at anything other than 100%.

Link to comment
Share on other sites

1 minute ago, Rabalias said:

@anon2 if opacity is a brush setting, that setting seems to be hard-coded at 100%. Every time I switch brushes or edit my current brush, opacity returns to 100% - and this is true even if I edit the context menu opacity slider while editing a brush. It appears impossible to set brush opacity at anything other than 100%.

The app (AP 1.9.1) is not limited in that way on my Mac.

If I create a brush preset when Opacity is, for example, 30% in the context toolbar, then the 30% is stored in the brush preset.

Whenever I select that brush preset, Opacity in the context toolbar immediately jumps to the 30% that was stored in the preset.

Link to comment
Share on other sites

@Rabalias, I am following this thread with great interest. I thought it was me that did not understand these brush settings due lack of expertise and feeling very blond at times. I just found out that if you set the opacity at a brush, DUPLICATE the brush, the opacity is now in the NEW brush settings. If I adjust the opacity and close the brush or use the X in de top right corner of the brush panel, it does not. Or sometimes it does. Or not....... I am missing a SAVE button, so I am sure the adjustments will stay in the brush.

At least, this happens op Windows10 PC.

For now I am setting the flow and accumulation both at the same % when changing anything, including under dynamics: the jitters. For me, that seem to work.

FOLLOWING....

Greetings, Yolanda

Link to comment
Share on other sites

Well this has just got weirder (for me at least).

I have tried plotting various flow, accumulation and opacity numbers to see how they compare. In each of the examples below, I swished my brush around a bit on a spot, without taking the pen off the sheet, just to get an even level of coverage. (Reducing opacity seems to lead to an instant reduction in coverage, without needing to swish around, whereas reducing accumulation or flow seems to lead to a higher reduction in coverage initially, but swishing around then brings you up to a ceiling coverage within a couple of seconds.)

If you set flow to 1%, opacity to 100% and accumulation to 100%, this is roughly equivalent to setting flow and accumulation to 100% and opacity to 83%.

This is also approximately equivalent to setting flow to 2%, opacity to 100% and accumulation to 60%, or flow to 2%, opacity to 93% and accumulation to 100%.

This is also approximately equivalent to setting flow and accumulation to 11% (opacity at 100%).

I could spew out a bunch more numbers here - see attachment for the experiments I've seen fit to record - but the lesson seems to be that the relationship between opacity and flow/accumulation is far from straightforward.

It looks like Affinity is probably doing something close-ish to multiplying flow by accumulation - hence (roughly) if you reduce flow by a factor of 10, you have to increase accumulation by a factor of 10 to keep the output constant. Which... just, really confusing way of doing things.

Working out how opacity then fits into all this is just very confusing indeed. You can see that in my data, the relationship between column 2 and column 3 is the same for opacity and accumulation: if you halve one and get a given result, then instead halving the other will also have the same effect. And yet: the same relationship does not hold for column 1, or between the different levels of flow. For instance, if you multiply flow by 10, you should divide accumulation by 10(ish) to get the same output. But you do not divide opacity by 10. ¯\_(ツ)_/¯

I feel I need a mathematician or Affinity coder to explain to me what on earth is going on here TBH.

Different strokes 4.jpg

Link to comment
Share on other sites

9 minutes ago, Rabalias said:

I feel I need a mathematician or Affinity coder to explain to me what on earth is going on here TBH.

I already told you what is happening. In this thread I wrote:

"Both Accumulation and Flow scale the opacity of a brush's nozzle, which enables the build-up effect where the nozzle applications overlap during the painting of a brush stroke, whereas Opacity scales the opacity of an entire brush stroke.

Accumulation and Flow provide identical effect in my experience, except for one situation. The exception is when the brush has a textured nozzle and Flow Jitter is 0% and Flow Jitter Controller is not "None", in which case Flow operates at 100% regardless of the specified value. That ignoring of the Flow value smells like a bug."

 

Link to comment
Share on other sites

1 hour ago, Rabalias said:

@anon2 I'm not sure I follow - your earlier post, while helpful, does not seem to explain the weirdly non-linear way these three numbers work? That was what I was referring to in my sentence that you quote above.

The results make sense when you consider the mathematics of alpha blending and the the software's method of producing a brush stroke by successive applications of a nozzle.

Edited by anon2
grammar
Link to comment
Share on other sites

[Wrote this while you were writing your most recent comment @anon2 - perhaps what I'm describing below is simply "the mathematics of alpha blending"?]

Ok, I think I see what's going on (and your comments make a bit more sense to me now @anon2).

If the colour of your brush is set to pure black, then accumulation x flow ~= the effective opacity of your brush.

So e.g. at 70% flow and accumulation you get the same output as opacity 50%, provided you make just one click of your brush, no swiping.

If you click hold and swipe, you pretty much get the equivalent to 100% opacity, regardless of flow/accumulation because each spot of paint is additive with the rest, so it doesn't take long to add up to a fully saturated spot of black. (Sort of. See next para.)

What's still a bit weird is, click-hold-swipe seems to cap out at a number slightly short of black, at lower flow/accumulation rates. For example, if you set flow/accum at 10%, then no matter how much you swipe back and forth, your paint spot won't go below RGB=49. If you lift your pen and paint one stroke over another then it will get back down to pure black; but if you keep swiping back and forth then it doesn't.

So flow and accumulation (combined) create a sort of single-spot opacity, while accumulating over the length of a brush stroke into a fully opaque version of whatever colour you've chosen, except that at low values this isn't completely true, and I'm not sure why that is.

Link to comment
Share on other sites

  • 2 months later...
On 3/13/2021 at 1:35 PM, Rabalias said:

I've heard people say in articles/videos that accumulation is how diluted your paint is, and flow is how much paint you have on your brush. Ok, fine - but of course in reality there is no paint on my brush.

I've also heard it said that accumulation is equivalent to opacity; however this is clearly untrue, as I understand that opacity functions quite differently e.g. in photoshop, if you reduce opacity then your whole brush stroke has a smoothly reduced opacity, while accumulation and/or flow reductions still lead to a fully opaque stroke building up.

Furthermore, having run some tests where I set flow and accumulation to various levels, I can't see any difference in effect between e.g. 10% flow and 50% accumulation, vs 50% flow and 10% accumulation. They seem to be completely interchangeable, albeit I don't have much of an artist's eye so I may be missing some subtle difference. You can see this in the attached image - accumulation increases on the x axis, flow on the y axis.

So what's the practical difference between flow and accumulation? In what circumstances would it be important to choose one over the other?

Different strokes.jpg

If I understand correctly, then this is a bug. In version 1.8, Accumulation worked like Opacity. And in version 1.9 Accumulation works like Flow. Here's the link: https://forum.affinity.serif.com/index.php?/topic/126116-painting-brush-opacityaccumulation-buggy-in-beta/. I also noticed that the Sub brush is now selected on Right mouse click , and earlier selected on Left mouse click.
Hope it gets fixed.

Link to comment
Share on other sites

  • 5 months later...

I fully agree with Rabalias's claim. I was also in trouble that the accumulation was not working. Hope it's a bug and will be fixed. However, I found one interesting phenomenon. The difference seems to be visible when the accumulation is very small value, for example, when the accumulation is 1% or 2%.  Above 20% it doesn't seem to work.

Edited by Makoto Fujita
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.