Color > Multiply doesn't multiply alpha channels #112267

Closed
opened 2023-09-12 07:20:12 +02:00 by Rely · 11 comments

System Information
Operating system: Win11
Graphics card: RX580

Blender Version
Broken: (example: 2.80, edbf15d3c0, master, 2018-11-28, as found on the splash screen) 4.0.0 alpha
Worked: (newest version of Blender that worked as expected) 3.6.2

Short description of error
The Color > Multiply section in a video sequencer strip no longer multiplies the alpha channel when that feature is pretty important for creating outlines using the glow effect. Perhaps adding an option whether to multiply alpha or not would be beneficial?

Exact steps for others to reproduce the error
Start up blender 4.0.0
Switch to Video Editing workspace
Add a white color strip with 0.1 opacity
Adjust the Color > Multiply value and notice how it doesn't affect alpha anymore

**System Information** Operating system: Win11 Graphics card: RX580 **Blender Version** Broken: (example: 2.80, edbf15d3c044, master, 2018-11-28, as found on the splash screen) 4.0.0 alpha Worked: (newest version of Blender that worked as expected) 3.6.2 **Short description of error** The Color > Multiply section in a video sequencer strip no longer multiplies the alpha channel when that feature is pretty important for creating outlines using the glow effect. Perhaps adding an option whether to multiply alpha or not would be beneficial? **Exact steps for others to reproduce the error** Start up blender 4.0.0 Switch to Video Editing workspace Add a white color strip with 0.1 opacity Adjust the Color > Multiply value and notice how it doesn't affect alpha anymore
Rely added the
Priority
Normal
Type
Report
Status
Needs Triage
labels 2023-09-12 07:20:13 +02:00
Member

@iss Ok so how exactly should we approach this 😅 ... A toggle option?

This is changed to fix #110635 since you don't really see any image editor that multiplies alpha either, doing that would be pretty confusing too.

@iss Ok so how exactly should we approach this 😅 ... A toggle option? This is changed to fix #110635 since you don't really see any image editor that multiplies alpha either, doing that would be pretty confusing too.
Author

@iss Ok so how exactly should we approach this 😅 ... A toggle option?

This is changed to fix #110635 since you don't really see any image editor that multiplies alpha either, doing that would be pretty confusing too.

🤣

> @iss Ok so how exactly should we approach this 😅 ... A toggle option? > > This is changed to fix #110635 since you don't really see any image editor that multiplies alpha either, doing that would be pretty confusing too. 🤣
Contributor

@RelyGFX
I'll look into the glow effect. can you provide a file that damonstrates your workflow?

@ChengduLittleA
As discussed in the initial issue: to multiply the alpha there's the alpha factor of the blend mode so another switch migth lead to even more confuion...

@RelyGFX I'll look into the glow effect. can you provide a file that damonstrates your workflow? @ChengduLittleA As discussed in the initial issue: to multiply the alpha there's the alpha factor of the blend mode so another switch migth lead to even more confuion...

I would also like to see demo file how this breaks workflow.

to multiply the alpha there's the alpha factor of the blend mode so another switch migth lead to even more confuion...

Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image of the strip, but rather modifies how strips are blended.

There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel.

I would also like to see demo file how this breaks workflow. > to multiply the alpha there's the alpha factor of the blend mode so another switch migth lead to even more confuion... Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image of the strip, but rather modifies how strips are blended. There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel.
Contributor

Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image
of the strip, but rather modifies how strips are blended.

For replace mode, the the strip alpha is multiplied to the color factor to properly fade the colors to black. In fact, this ignores any additional alpha channel info as far as I can tell.

There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel.

This would limit the factor essentially to 0 to 1.0.
And this should essentially be the same (even less flexible) as adding a color strip with the multiply blend mode.

> Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image of the strip, but rather modifies how strips are blended. For replace mode, the the strip alpha is multiplied to the color factor to properly fade the colors to black. In fact, this ignores any additional alpha channel info as far as I can tell. > There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel. This would limit the factor essentially to 0 to 1.0. And this should essentially be the same (even less flexible) as adding a color strip with the multiply blend mode.

Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image
of the strip, but rather modifies how strips are blended.

For replace mode, the the strip alpha is multiplied to the color factor to properly fade the colors to black. In fact, this ignores any additional alpha channel info as far as I can tell.

I see now. That sounds like a bug to me - it's called Opacity in UI after all. So this was broken by eda58d6419
So the replace blend mode is a fake blend mode, but that is kinda incorrect, because it modifies image colors before blending. But since replace blend mode means no blending so you wouldn't notice until you try to use this strip as mask for some modifier.
Eeh, well nobody noticed this for 5 odd years, so not sure if this has to be redesigned completely, but it should work in a same way as it did before. So to me it seems, that multibuf should be able to optionaly multiply alpha channel for this case at least.

Now in order to not do multiplication over the whole buffer twice, it could use float[4] as argument at least internally.

There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel.

This would limit the factor essentially to 0 to 1.0.
And this should essentially be the same (even less flexible) as adding a color strip with the multiply blend mode.

You can set color channel value to higher than 1, but it may be bit more cumbersome to do so compared to simple slider. I agree with that.

> > Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image > of the strip, but rather modifies how strips are blended. > > For replace mode, the the strip alpha is multiplied to the color factor to properly fade the colors to black. In fact, this ignores any additional alpha channel info as far as I can tell. I see now. That sounds like a bug to me - it's called Opacity in UI after all. So this was broken by eda58d6419 So the replace blend mode is a fake blend mode, but that is kinda incorrect, because it modifies image colors before blending. But since replace blend mode means no blending so you wouldn't notice until you try to use this strip as mask for some modifier. Eeh, well nobody noticed this for 5 odd years, so not sure if this has to be redesigned completely, but it should work in a same way as it did before. So to me it seems, that `multibuf` should be able to optionaly multiply alpha channel for this case at least. Now in order to not do multiplication over the whole buffer twice, it could use `float[4]` as argument at least internally. > > There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel. > > This would limit the factor essentially to 0 to 1.0. > And this should essentially be the same (even less flexible) as adding a color strip with the multiply blend mode. You can set color channel value to higher than 1, but it may be bit more cumbersome to do so compared to simple slider. I agree with that.
Contributor

Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image
of the strip, but rather modifies how strips are blended.

For replace mode, the the strip alpha is multiplied to the color factor to properly fade the colors to black. In fact, this ignores any additional alpha channel info as far as I can tell.

I see now. That sounds like a bug to me - it's called Opacity in UI after all. So this was broken by eda58d6419
So the replace blend mode is a fake blend mode, but that is kinda incorrect, because it modifies image colors before blending. But since replace blend mode means no blending so you wouldn't notice until you try to use this strip as mask for some modifier.
Eeh, well nobody noticed this for 5 odd years, so not sure if this has to be redesigned completely, but it should work in a same way as it did before. So to me it seems, that multibuf should be able to optionaly multiply alpha channel for this case at least.

No, Replace mode is broken either way. In fact, this is a perfect example of how the code was broken before:

  • the color factor is multiplied by strip transparency
  • this fades the colors to black according to strip transparency
  • then the premultiplied color factor was applied to the alpha channel
  • if the combination of color factor and transparency and the original alpha was below 1.0 you would get some random transparency value. If you had a color factor cancelling out strip transparency you would get a color fade to black but no alpha transparency.
  • if the render output format supports alpha (which most video formats don't) your would have applied strip transparency twice. once by color multiplication and once by alpha.

Now in order to not do multiplication over the whole buffer twice, it could use float[4] as argument at least internally.

I agree, at least for replace multibf should multiply the alpha channel with strip alpha.

There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel.

This would limit the factor essentially to 0 to 1.0.
And this should essentially be the same (even less flexible) as adding a color strip with the multiply blend mode.

You can set color channel value to higher than 1, but it may be bit more cumbersome to do so compared to simple slider. I agree with that.

Yes, since float color is basically a float[4]. But four separate sliders would break legacy UI and files and using a true color typed input would create the range limit I was talking about. I agree to separate control for color and alpha. That's why I keep asking about use cases where you would need a separate alpha control other then strip transparency.
I'd like some more control over color, exposure and stuff at the basic strip level but implementing that will break all kinds of legacy stuff and there are the modifiers for finer control.

> > > Well it doesn't necessarily do that. If you use replace blend mode for exampe. Also the Opacity property does not change the image > > of the strip, but rather modifies how strips are blended. > > > > For replace mode, the the strip alpha is multiplied to the color factor to properly fade the colors to black. In fact, this ignores any additional alpha channel info as far as I can tell. > > I see now. That sounds like a bug to me - it's called Opacity in UI after all. So this was broken by eda58d6419 > So the replace blend mode is a fake blend mode, but that is kinda incorrect, because it modifies image colors before blending. But since replace blend mode means no blending so you wouldn't notice until you try to use this strip as mask for some modifier. > Eeh, well nobody noticed this for 5 odd years, so not sure if this has to be redesigned completely, but it should work in a same way as it did before. So to me it seems, that `multibuf` should be able to optionaly multiply alpha channel for this case at least. > No, Replace mode is broken either way. In fact, this is a perfect example of how the code was broken before: - the color factor is multiplied by strip transparency - this fades the colors to black according to strip transparency - then the premultiplied color factor was applied to the alpha channel - if the combination of color factor and transparency and the original alpha was below 1.0 you would get some random transparency value. If you had a color factor cancelling out strip transparency you would get a color fade to black but no alpha transparency. - if the render output format supports alpha (which most video formats don't) your would have applied strip transparency twice. once by color multiplication and once by alpha. > Now in order to not do multiplication over the whole buffer twice, it could use `float[4]` as argument at least internally. > I agree, at least for replace `multibf` should multiply the alpha channel with strip alpha. > > > There could be an option, alternatively this float property could be replaced with color property which would give more flexibility to define factor per channel. > > > > This would limit the factor essentially to 0 to 1.0. > > And this should essentially be the same (even less flexible) as adding a color strip with the multiply blend mode. > > You can set color channel value to higher than 1, but it may be bit more cumbersome to do so compared to simple slider. I agree with that. Yes, since float color is basically a `float[4]`. But four separate sliders would break legacy UI and files and using a true color typed input would create the range limit I was talking about. I agree to separate control for color and alpha. That's why I keep asking about use cases where you would need a separate alpha control other then strip transparency. I'd like some more control over color, exposure and stuff at the basic strip level but implementing that will break all kinds of legacy stuff and there are the modifiers for finer control.
Author

Here's the caption i made and use in my projects. you'll have to load it in 3.6.2 or something so the multiply thing works. it still looks okay in 4.0.0 alpha but the outlines arent clear at all.

you could achieve this same effect in 4.0.0 but it would be way more annoying to make and you'd have to use more masks.

Here's the caption i made and use in my projects. you'll have to load it in 3.6.2 or something so the multiply thing works. it still looks okay in 4.0.0 alpha but the outlines arent clear at all. you could achieve this same effect in 4.0.0 but it would be way more annoying to make and you'd have to use more masks.
Author

Making a new caption that is based on the new functionality so don't stress about this issue if it doesnt fit what the program needs going forward. Also any ideas how to change box select back to left click drag? The new system of pressing "B" is way slower.

Making a new caption that is based on the new functionality so don't stress about this issue if it doesnt fit what the program needs going forward. Also any ideas how to change box select back to left click drag? The new system of pressing "B" is way slower.
Member

You know what, I guess maybe we should revert the fix for #110635 since there got to be a handful of people using this feature (multiply also applies to alpha) to their advantages. And since the behaviour has been in there like this since forever, changing this without an option to toggle behaviours might be a problem. Should have thought this more thoroughly...

You know what, I guess maybe we should revert the fix for #110635 since there got to be a handful of people using this feature (multiply also applies to alpha) to their advantages. And since the behaviour has been in there like this since forever, changing this without an option to toggle behaviours might be a problem. Should have thought this more thoroughly...
Contributor

@ChengduLittleA
I don't think simply reverting is a good idea.

Using the color mulitply to basically clip the transparency gradient created by the glow effect is what I'd consider a hack, not a functionality.

Reverting the fix on the other hand prevents the user from actually using color mulitply for any values less than 1 because it creates unwanted transparency on othewise non transparent footage.

I see that this kind of hack doesn't work with the strip opacity as this is limited to values between 0 and 1. So the acutal fix woud be to add this kind of clipping behaviour to the glow modifier or add an dilate effect to get the same result. I know adding features is not top of the list, but if we prevent using this hack, we should provide the proper functionality instead.

@ChengduLittleA I don't think simply reverting is a good idea. Using the color mulitply to basically clip the transparency gradient created by the glow effect is what I'd consider a hack, not a functionality. Reverting the fix on the other hand prevents the user from actually using color mulitply for any values less than 1 because it creates unwanted transparency on othewise non transparent footage. I see that this kind of hack doesn't work with the strip opacity as this is limited to values between 0 and 1. So the acutal fix woud be to add this kind of clipping behaviour to the glow modifier or add an dilate effect to get the same result. I know adding features is not top of the list, but if we prevent using this hack, we should provide the proper functionality instead.
Blender Bot added
Status
Resolved
and removed
Status
Needs Info from Developers
labels 2023-10-23 02:37:57 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#112267
No description provided.