Visual Math – Building A Subtractive Saturation Node Tree In DaVinci Resolve

January 14, 2022

'Subtractive saturation' is a hot topic with colorists. Learn how to manually build this tool in DaVinci Resolve for more natural results.


Series

Learn how Subtractive Saturation works by building it yourself

Series Note: Cullen Kelly recently finished a series on coding your own DCTL ResolveFX plug-in to create a split-tone look. Today, Cullen starts a new multi-part series teaching you how to use the Layer Mixer node to build really useful tools without going the DCTL or plug-in route.


Math.

In the end, all of our color grading tools are essentially mathematical operations on the red, green, and blue values of each pixel captured by our cameras (or rendered out of software). But some operations are more complicated than others.

The value of many of our favorite plug-ins lies in their ability to make the complex, simple. The cost of this simplicity is that we never learn how to do these things ourselves. We lose insight into what’s going on ‘under the hood’. But if we know the underlying math, we can (potentially) manually recreate the math even if we don’t have access to those plugins.

One of the most powerful ‘math-based’ instruments in the DaVinci Resolve toolbox on the Color Page is the Layer Mixer node (if you need it, at the bottom of this Insight are a few Mixing Light links to get you up to speed on the Layer Mixer node). This node lets you perform math operations in the form of blending modes (as you’d find in Photoshop or After Effects).

Subtractive Saturation: Combining Layer Mixer node math with node-specific color space processing

If you combine the Layer Mixer’s blending modes with Resolve’s ability to switch the color space of the node(s) feeding the Layer Mixer node, you can build sophisticated tools that give you targeted control beyond RGB math.

In this Insight, we learn about one of the hot topics in color grading circles, Subtractive Saturation. In a nutshell, a subtractive saturation tool allows you to add saturation without adding brightness. This behavior has a much more natural look and feel. It also limits your need to follow up saturation increases with isolations to reduce excessively bright saturated elements.

Sign up for a 7-Day Test Drive to explore this topic (and more)

This free Insight is just the tip of the iceberg! We’ve been teaching these topics for a decade.


View Membership options

In this Insight Series, you’ll notice a common theme

We’re building side-branches to our main node trees that allow us to perform a specific set of complicated operations giving us a custom tool for nuanced behaviors not found in the core Resolve toolset. Once you build these node trees, you’ll probably want to save this ‘branch operation’ as a PowerGrade, to add to your node graph while working.

If you like to work with fixed node trees then you can build these side branches into your node trees and hide them as Compound Nodes – reducing node tree clutter.

Premium Members can download the final Subtractive Saturation PowerGrade, built in this Insight. Feel free to use it, deconstruct it, or modify it to your preferences.

Start or Join a discussion in the Comments below

We’re always curious about your thoughts, confusions, questions, or observations – and are happy to answer. Please use the comments below to discuss this Insight!


Feb 16, 2022 : The Additional Download of Cullen’s node tree has been updated with the proper DRX for Premium members to download.

Additional Downloads

Sorry... downloads are available for Premium Members only.

Become a Premium Member

Comments

Homepage Forums Visual Math – Building A Subtractive Saturation Node Tree In DaVinci Resolve

Viewing 29 reply threads

    • Jonathan R
      Guest

      Is there a difference in output between using a CST node and a combiner to right clicking menu a node to HSV and switching of the r,g channels? And if these two options differ only in style is there a guiding reason choosing this more explicit way? As in a philosophy, style guide or a set of best practices? As in using standardized building blocks, node tree idioms or design patterns.
      Same goes to using an invert color effect vs flipping in the curve tool.

      P.S. thank you Cullen. I find your tutorials extremely insightful.


    • Cullen Kelly
      Guest

      Hey Jonathan! The main difference between using a CST vs setting color space by right clicking a node is that the latter only affects that particular node, not any nodes that come after it. So if I want to convert to HSV and then split/combine the channels, I need to use a CST. If I just set my node to HSV and then create a splitter combiner from there, I won’t have H, S, and V channels.

      Re inverting color, I simply trust the Invert Color plugin more than my hands — IMO there’s no benefit to introducing the variability inherent in performing the inversion with curves.


    • Austin G
      Guest

      Excellent tutorial! Keep these subtractive color videos coming. I will pay money to understand in depth best practices/methods to create subtractive color.


    • Antonino D
      Guest

      Awesome tutorial Cullen, clear and very useful. More stuff like that it’d be much appreciated!! Also, it would be nice to see how you can build a look with this technique. Like where would you put it on your node structure? Or can I use it as node to control the saturation (as opposite to Saturation know which we know it does other stuff as well). Thanks


    • charles w rodriguez
      Guest

      (aka Bill Ravens) I’m a devoted follower of Cullen’s various presentations. Over the past few months he has completely affected a change to my workflow with his tutorials. The net result is not only a more consistent result, but, a much easier node graph.


    • David C
      Guest

      Thanks for the insight, Cullen. I was just curious if you need to put a CST after all of this to bring the OCS back to its original value if this will be used in a dedicated pipeline with secondaries and look design afterwards. I would think so, since it essentially means everything after that first CST would have HSV Color space, correct? Also, if this is pocketed away in a compound node, does that Color Space stay nested away in there, or does it continue outside the nest as well?


    • Cullen Kelly
      Guest

      Glad you found it useful Austin! More videos coming on this topic for sure


    • Cullen Kelly
      Guest

      Great question David! No, you don’t need a CST at the tail, because we’re not actually in HSV. We’re simply calculating HSV in a separate “dead” branch, then borrowing only the ‘V’ channel, which we subtract and ultimately add back to the original image. Hope that makes sense!


    • Cullen Kelly
      Guest

      My guy! Glad you’re seeing great results, you’ve been putting in the work of pushing your knowledge and asking great questions


    • Cullen Kelly
      Guest

      Thanks Antonino! Yes, could be fun to demo deploying this in a practical node tree, will chew on this!


    • David C
      Guest

      Thanks, Cullen! I think it does. It’s due to the first node being in RGB, then having the HSV Value branch layered/mixed over top, correct? In that way, we’re essentially staying in RGB since it’s the bottom layer of the mixer, but dipping into HSV just to get the parts we like to use. The “Branch” of HSV stops at the layer mixer, which is why we need to send it out to another lone node in order to have the HSV V mix into the second layer mixer, right? I’ll dive into the Resolve Manual and see how it discusses layer mixers in regards to color space awareness just to touch up on it some more, always more to learn!


    • Pat Inhofer
      Guest

      David – The key to these latest Insights from Cullen (more coming) is the Splitter node. Once you flip the node colorspace to, say, HSV, all RGB operations within that node now happen within the HSV color space – but only within that node!

      BUT – if you immediately attach a splitter node, you can extract the internal color model of that node and reroute H/S/V (or whichever model you’ve chosen) to R/G/B in whatever channel order you desire. From that point on in that node branch, you’re technically performing RGB operations – but upon the channels that got split out. Then, to get back to R/G/B output, you’ll either use a Combiner node to put the channel back in proper order OR you do what Cullen is doing in this series and use a Layer Mixer node to use ‘operators’ to interact with an underlying RGB signal.

      Does that explanation help?


    • Pat Inhofer
      Guest

      Also – here’s a series on the Splitter-Combiner: https://mixinglight.com/tutorial-series/using-resolves-splitter-combiner-nodes/

      I’ll add this to the Related Insights on this post.


    • David C
      Guest

      Gotcha! That helps a ton Patrick. I’ve never had the need for splitter nodes within my current workflow, but it’s always good to continue learning should the need to use them ever arise.


    • Austin G
      Guest

      Excellent tutorial! Please keep making more of these!


    • Yoav A
      Guest

      amazing. ‘m already starting to thing how can i translate everything to code and just make a dctl with sliders and values instead of doing modes


    • Sönke H
      Guest

      Great stuff, Cullen. Thank you very much.
      Just thinking out loud: wouldnt it be interesting to apply the colormatrix from e.g. logc to rec709 in a subtractive manner?
      Wouldnt it be a more accurate way of emulating film?


    • Planemo
      Guest

      Hi, will this workflow with the CST Node work on an ACES Color managed project? If not, how would you do then to be able to create a substractive color saturation on a ACES? Thanks


    • Lucas M
      Guest

      Awesome workflow, thanks Cullen. I think your .DRX isn’t working correctly though, or didn’t work for me – just a single node.


    • Cullen Kelly
      Guest

      Thanks Austin!


    • Cullen Kelly
      Guest

      Nice! That’s exactly the kind of creative thinking I’m hoping to spark in this series!


    • Cullen Kelly
      Guest

      Great question! One of the main things I hope we all take away from this Insight is the need to sharpen our definitions a bit. What would it mathematically look like to apply a matrix subtractively vs additively?


    • Cullen Kelly
      Guest

      Yep, this works great in ACES!


    • tyler f
      Participant

      For practicality purposes within a PowerGrade, would it make sense to increase the subtractive color’s intensity with the node tree to a desired amount, then create a compound node containing all of the tree. That way when this compound node within the rest of the grade’s color tree, you could increase or back off the key output (to create the same effect?) with a much cleaner node tree combined with the grade.


      • Cullen Kelly
        Participant

        Great idea Tyler! This would absolutely make for a more practical node graph. And there’s of course always the option of coding this behavior into a DCTL!


    • Evan A
      Participant

      @Joey D’Anna has a nice Sub-Sat dctl that I use from time to time.


      • tyler f
        Participant

        Also would like to check that out!

        https://www.liftgammagain.com/forum/index.php?threads/subtractive-node-tree.14690/

        I came across this node tree and have been trying to recreate it myself to better understand how CMY is working in a subtractive model, but the tree I’ve created doesn’t feel much different than an inverse of the normal controls. Forgive me for my lack of knowledge in the subject for the following question.. but do each channel Cyan, Magenta, and Yellow have different luminosity values that need to be “corrected for in a curve adjustment”? And that’s the piece of puzzle I’m missing, perhaps? In his node tree, the thumbnails for each CMY  channel look slightly different in contrast/luminosity and for that reason I ask!

        Very much appreciate the communities help


    • Cullen Kelly
      Participant

      Had no idea! Gotta check this out


    • Cullen Kelly
      Participant

      Tyler, I haven’t had the chance to check out Dado’s video linked in that thread, which I assume is what you’re referring to? Maybe someone else here has?

      • This reply was modified 4 months, 1 week ago by Cullen Kelly.

      • tyler f
        Participant

        Thanks Cullen, from what I’ve found online, just Dado has the answer which is coded into his LookDesigner OFX.  I’ve been 3 days with it trying to figure it out and it’s driving me a bit mad haha.


    • Igor Riđanović
      Participant

      Very useful Cullen and a great presentation.


    • Cullen Kelly
      Participant

      Thanks Igor, glad you found this one useful!

Viewing 29 reply threads
  • You must be logged in to reply to this topic.

Hundreds of Free Tutorials

Get full access to our entire library of 900+ color tutorials for an entire week!


Start Your Free Trial
Loading...