Jump to: Board index » General » Fusion

AlphaDivide all channels vs Nuke Unpremultiply

Learn about 3D compositing, animation, broadcast design and VFX workflows.
  • Author
  • Message
Offline

Kayoattack

  • Posts: 5
  • Joined: Thu Jan 30, 2025 7:47 am
  • Real Name: Petar Petrov

AlphaDivide all channels vs Nuke Unpremultiply

PostWed Jun 18, 2025 9:12 am

As the title says how can I AlphaDivide all channels in a multichannel EXR, when I use the node it divides only the RGBA by its alpha, but the rest of the channels are with full alpha so they don't divide, in Nuke in the Unpremultiply node which does the same thing as AlphaDivide , have an option which channel do you use for the Alpha , in Fusion I don't see a workaround
Attachments
Screenshot 2025-06-18 at 11.29.44.png
Screenshot 2025-06-18 at 11.29.44.png (124.3 KiB) Viewed 1228 times
Screenshot 2025-06-18 at 11.29.44.png
Screenshot 2025-06-18 at 11.29.44.png (124.3 KiB) Viewed 1228 times
Offline
User avatar

Chad Capeland

  • Posts: 3318
  • Joined: Mon Nov 10, 2014 9:40 pm

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostWed Jun 18, 2025 9:40 pm

Bol will work.
Chad Capeland
Indicated, LLC
www.floweffects.com
Offline

Kayoattack

  • Posts: 5
  • Joined: Thu Jan 30, 2025 7:47 am
  • Real Name: Petar Petrov

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostThu Jun 19, 2025 1:07 pm

Can you elaborate , because I tried with Bol and it didn't seem to work the way that I described earlier.
Offline
User avatar

Chad Capeland

  • Posts: 3318
  • Joined: Mon Nov 10, 2014 9:40 pm

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostFri Jun 20, 2025 9:22 pm

Just set the alpha source to the FG input.
Chad Capeland
Indicated, LLC
www.floweffects.com
Offline

Kayoattack

  • Posts: 5
  • Joined: Thu Jan 30, 2025 7:47 am
  • Real Name: Petar Petrov

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostMon Jun 23, 2025 10:54 am

You are missing the whole point of my post , but thanks anyway for your replays .
Offline

Sander de Regt

  • Posts: 4139
  • Joined: Thu Nov 13, 2014 10:09 pm

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostMon Jun 23, 2025 4:06 pm

The replies are the solution to your question. What's the problem?
Sander de Regt

ShadowMaker SdR
The Netherlands
Offline
User avatar

goohoobler1

  • Posts: 101
  • Joined: Wed Jul 27, 2022 9:34 pm
  • Real Name: George Port

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostMon Jun 23, 2025 7:02 pm

Maybe this:
Use the Bitmap mask node to send the default Alpha to the FG Input of the Channel Booleans node (set to Process All Layers) which then sets the Alpha on to all Layers so the Alpha Divide or Alpha Multiply will do as you wish...

Code: Select all
{
   Tools = ordered() {
      Background1_1_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 400, },
            Width = Input { Value = 384, },
            Height = Input { Value = 216, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.188235294117647, },
            TopLeftGreen = Input { Value = 0.188235294117647, },
            TopLeftBlue = Input { Value = 0.188235294117647, }
         },
         ViewInfo = OperatorInfo { Pos = { 2145, 1138.5 } },
      },
      SubtractiveMerge3_1_1 = Merge {
         NameSet = true,
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "AlphaDivide1_1_1",
               Source = "Output",
            },
            SubtractiveAdditive = Input { Value = 0, },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1980, 1138.5 } },
      },
      Merge4 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Loader4",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1980, 1072.5 } },
      },
      Merge2_1_1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "AlphaMultiply1_1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1980, 1204.5 } },
      },
      AlphaDivide1_1_1 = AlphaDivide {
         Inputs = {
            ProcessLayers = Input { Value = FuID { ":All" }, },
            Input = Input {
               SourceOp = "ChannelBooleans1_1_2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1815, 1138.5 } },
      },
      AlphaMultiply1_1_1 = AlphaMultiply {
         Inputs = {
            ProcessLayers = Input { Value = FuID { ":All" }, },
            Input = Input {
               SourceOp = "ChannelBooleans1_1_2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1815, 1204.5 } },
      },
      Bitmap3_1 = BitmapMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Image = Input {
               SourceOp = "Loader4",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1650, 1138.5 } },
      },
      ChannelBooleans1_1_2 = ChannelBoolean {
         Inputs = {
            ProcessLayers = Input { Value = FuID { ":All" }, },
            ToRed = Input { Value = 5, },
            ToGreen = Input { Value = 6, },
            ToBlue = Input { Value = 7, },
            Background = Input {
               SourceOp = "Loader4",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Bitmap3_1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1650, 1204.5 } },
      },
      Loader4 = Loader {
         Clips = {
            Clip {
               ID = "Clip1",
               Filename = "D:\\Temp\\testshotsbs\\EXRs\\multicubesmall.exr",
               FormatID = "OpenEXRFormat",
               StartFrame = -1,
               LengthSetManually = true,
               TrimIn = 0,
               TrimOut = 0,
               ExtendFirst = 0,
               ExtendLast = 0,
               Loop = 0,
               AspectMode = 0,
               Depth = 0,
               TimeCode = 0,
               GlobalStart = 0,
               GlobalEnd = 0
            }
         },
         CtrlWZoom = false,
         Inputs = {
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            ["Clip1.OpenEXRFormat.DeepOutputMode"] = Input { Disabled = true, },
            ["Clip1.OpenEXRFormat.RedName"] = Input { Value = FuID { "ViewLayer.Combined.R" }, },
            ["Clip1.OpenEXRFormat.GreenName"] = Input { Value = FuID { "ViewLayer.Combined.G" }, },
            ["Clip1.OpenEXRFormat.BlueName"] = Input { Value = FuID { "ViewLayer.Combined.B" }, },
            ["Clip1.OpenEXRFormat.AlphaName"] = Input { Value = FuID { "ViewLayer.Combined.A" }, }
         },
         ViewInfo = OperatorInfo { Pos = { 1485, 1072.5 } },
      }
   }
}


Or slightly simpler - Use the Foreground Input of the Channel Booleans to specify the channel with the Alpha (set to Default or [Main] - leaving it on Auto won't make it work correctly...)

Screenshot 2025-06-23 151830.png
Screenshot 2025-06-23 151830.png (156.7 KiB) Viewed 861 times


Code: Select all
{
   Tools = ordered() {
      Loader4_1 = Loader {
         Clips = {
            Clip {
               ID = "Clip1",
               Filename = "D:\\Temp\\testshotsbs\\EXRs\\multicubesmall.exr",
               FormatID = "OpenEXRFormat",
               StartFrame = -1,
               LengthSetManually = true,
               TrimIn = 0,
               TrimOut = 0,
               ExtendFirst = 0,
               ExtendLast = 0,
               Loop = 0,
               AspectMode = 0,
               Depth = 0,
               TimeCode = 0,
               GlobalStart = 0,
               GlobalEnd = 0
            }
         },
         Inputs = {
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            ["Clip1.OpenEXRFormat.DeepOutputMode"] = Input { Disabled = true, },
            ["Clip1.OpenEXRFormat.RedName"] = Input { Value = FuID { "ViewLayer.Combined.R" }, },
            ["Clip1.OpenEXRFormat.GreenName"] = Input { Value = FuID { "ViewLayer.Combined.G" }, },
            ["Clip1.OpenEXRFormat.BlueName"] = Input { Value = FuID { "ViewLayer.Combined.B" }, },
            ["Clip1.OpenEXRFormat.AlphaName"] = Input { Value = FuID { "ViewLayer.Combined.A" }, }
         },
         ViewInfo = OperatorInfo { Pos = { 1430, 1369.5 } },
      },
      AlphaMultiply1_1_1_1 = AlphaMultiply {
         Inputs = {
            ProcessLayers = Input { Value = FuID { ":All" }, },
            Input = Input {
               SourceOp = "ChannelBooleans1_1_2_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1760, 1501.5 } },
      },
      ChannelBooleans1_1_2_1 = ChannelBoolean {
         CtrlWZoom = false,
         Inputs = {
            ProcessLayers = Input { Value = FuID { ":All" }, },
            Foreground_LayerSelect = Input { Value = FuID { ":Default" }, },
            ToRed = Input { Value = 5, },
            ToGreen = Input { Value = 6, },
            ToBlue = Input { Value = 7, },
            Background = Input {
               SourceOp = "Loader4_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Loader4_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1595, 1468.5 } },
      },
      AlphaDivide1_1_1_1 = AlphaDivide {
         Inputs = {
            ProcessLayers = Input { Value = FuID { ":All" }, },
            Input = Input {
               SourceOp = "ChannelBooleans1_1_2_1",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1760, 1435.5 } },
      },
      SubtractiveMerge3_1_1_1 = Merge {
         NameSet = true,
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "AlphaDivide1_1_1_1",
               Source = "Output",
            },
            SubtractiveAdditive = Input { Value = 0, },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1925, 1435.5 } },
      },
      Merge2_1_1_1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "AlphaMultiply1_1_1_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1925, 1501.5 } },
      },
      Merge4_1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1_1_1_1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Loader4_1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, }
         },
         ViewInfo = OperatorInfo { Pos = { 1925, 1369.5 } },
      },
      Background1_1_1_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 400, },
            Width = Input { Value = 384, },
            Height = Input { Value = 216, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.188235294117647, },
            TopLeftGreen = Input { Value = 0.188235294117647, },
            TopLeftBlue = Input { Value = 0.188235294117647, }
         },
         ViewInfo = OperatorInfo { Pos = { 2090, 1435.5 } },
      }
   }
}
Attachments
multicubesmall.zip
Small test EXR with Multilayers and Alpha
(334.25 KiB) Downloaded 7 times
Windows 11 Pro (22H2)
Intel(R) Core(TM) i7-3930K CPU @ 3.20GHz
64.0 GB RAM
Nvidia 4070Ti Super (16GB VRAM)
AMD Ryzen 3970X @ 3.69 GHz
128 GB RAM
Nvidia 3090 (24GB VRAM)
Resolve Studio / Fusion Studio v20.0 Release (Beta 4)
Offline

Kayoattack

  • Posts: 5
  • Joined: Thu Jan 30, 2025 7:47 am
  • Real Name: Petar Petrov

Re: AlphaDivide all channels vs Nuke Unpremultiply

PostWed Jun 25, 2025 1:29 pm

Sander de Regt wrote:The replies are the solution to your question. What's the problem?


I didn't have any problem, just I coudln't understand how to use Bol to do the thing I wanted and simply ' use Bol' wasn't useful to me.


Thanks goohoobler1, those both method works, and the one that uses only channel bol without Bitmap was the thing I wanted, but I guess thats only possible in Fusion 20, because in previous version there was no option to choose which layers to process.

Thanks all !

Return to Fusion

Who is online

Users browsing this forum: No registered users and 14 guests