These are DCTLs that I have developed.
- Utility DCTLS
- Installation
- The Fuses
- The DCTLs:
- Effects
- Bleach Bypass DCTL
- Film Curve DCTL
- Film Grain DCTL
- Halation DCTL
- Hue Curve DCTL
- Lens Distortion DCTL
- Linear Contrast DCTL
- Matrix Manipulator
- MTF Curve DCTL
- Photon Noise DCTL
- Random Channel Mixer
- Random Contrast Curve
- Random Linear Contrast
- RGB Linear Contrast DCTL
- Subtractive Saturation DCTL
- Tone Mapping DCTL
- Vignette DCTL
- Operations
- Addition Function DCTL
- Clamp DCTL
- Color Generator DCTL
- Color Sampler DCTL
- Cross Product DCTL
- Dot Product DCTL
- Gamma Function DCTL
- Invert DCTL
- Log Function
- Luminance Qualifier
- Matrix
- Modulo Function DCTL
- Multiplication Function DCTL
- Polynomial Kernel DCTL
- Power Function DCTL
- Projective Transformation Matrix DCTL
- Root Polynomial Degree 2 DCTL
- Sigmoid Function DCTL
- Sigmoid Kernel DCTL
- Softmax DCTL
- Tanh Function DCTL
- Unit Length DCTL
- Vector Norm DCTL
- Utilities
- ACES Exposure DCTL
- Bit Depth Estimator DCTL
- Blanking Checker DCTL
- Brand Colors DCTL
- Channel Viewer DCTL
- Chroma Subsampling DCTL
- CIELUV DCTL
- ColorChecker DCTL
- Color Ramp DCTL
- Cube Rotate DCTL
- DaVinci Tone Mapping DCTL
- Exposure Chart DCTL
- False Color Generator DCTL
- Gamma Curve DCTL
- Gradient Smoothness Chart DCTL
- Legacy Log Curve DCTL
- Levels Converter
- Log Curve DCTL
- Luminance
- Output Blanking DCTL
- Polarity Checker
- Printer Lights
- Pure Log Curve DCTL
- Quantize
- RGB Chips DCTL
- Safety Lines DCTL
- Spherical Color Space DCTL
- T-Log Curve
- Waveform Guides
- White Mask DCTL
- Effects
DCTLs should be placed in the following folder:
MacOS: /Library/Application Support/Blackmagic Design/DaVinci Resolve/LUT
Windows: C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\LUT
Fuses should be placed in the following folder to install them into the Fusion page of DaVinci Resolve:
MacOS: /Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Fuses
Windows: C:\ProgramData\Blackmagic Design\DaVinci Resolve\Fusion\Fuses
Fuses should also be placed in the following folder to install them for Fusion Studio:
MacOS: /Library/Application Support/Blackmagic Design/Fusion/Fuses
Windows: C:\ProgramData\Blackmagic Design\Fusion\Fuses
If a DCTL is not working, you can usually find logs in these directories. If you find that there is a problem, make an Issue on Github with your OS and Resolve version so I can fix it.
MacOS: [Your user directory]/Library/Application Support/Blackmagic Design/DaVinci Resolve/logs/davinci_resolve.log
or /Library/Application Support/Blackmagic Design/DaVinci Resolve/logs/davinci_resolve.log
Windows: C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\logs\davinci_resolve.log
or [Your user directory]\AppData\Blackmagic Design\DaVinci Resolve\Support\logs\davinci_resolve.log
Adds support for DCTLs within Fusion Studio rather than just Resolve. This is done by reading in a DCTL file and any headers, then rewriting several parts of the source code so it can be run natively within the Fuse DCTL framework (which is somewhat different than the Resolve DCTL framework).
DCTL File: Allows you to specify a .dctl file, anywhere on your system.
Debug to Console: Prints out the changes made to the source code and the quantity of captured params.
Explicitly Typecast Builtin Funcs: The Fuse DCTL framework has a bug where builtin functions like _exp2f()
, when provided with an integer argument, will cause the DCTL to fail to build. As a workaround, if you check this box I parse all the code and inject the appropriate type cast to each parameter. This can have some performance impact if your DCTL is large enough as it's a lot of string manipulations that would take place every frame.
Don't run the DCTL Code: Self explanatory, If your DCTL is causing Fusion to crash, checking this box might help you help me debug it. Doesn't always stop Fusion from crashing though.
Blends together several frames, can be used to retime projects shot at high frame rates. Should certainly be used with a float input, and likely be used with a Linear input.
Number of Frames: quantity of frames to look ahead, including this frame.
Frame Hold: How long to hold the current frame (units are quantity of frames), allowing you to control it so that your resulting frames average nonoverlapping input frames.
Suppose you shot a video at 240fps, 360degree shutter. To simulate 24fps 360degree shutter, you would set Number of Frames to 10, Frame Hold to 10. To simulate 30fps 180degree shutter, you would set Number of Frames to 4, Frame Hold to 8.
For the purpose of stitching HDR (multiple exposure composites) images.
- Take two images of the same scene at different exposures.
- Load the images into post and correct the exposures to match.
- Take the image with the lower clipping point and connect it to the background of this Fuse. Connect the other image with the highlight detail to the foreground of the fuse
- Set the threshold in the Fuse to just below the clipping point in the background image, set the feathering to be around 10% lower than that. Consider bumping the Blur to 1.0 to account for slight misalignment between the images.
Foreground Threshold: Threshold above which the foreground image is copied in.
Feather Threshold: For background code values between Feather Threshold and Foreground Threshold, the two layers are blended together.
Blur Amount: Indicates how much to blur the mask resulting from the above two thresholds.
Show Mask: Shows the mask used. Each of the three channels is masked individually.
Channel Blend Criteria: If you choose "Individual Channels", then this checks each background channel independently. If a channel exceeds the Threshold, then it is replaced with the foreground. If you choose "Largest Channel", then if any of the channels exceed the threshold, the foreground will be used.
Simply multiplies the input values by 2^x
, where x
is the specified Exposure (Stops) value. Expects a Linear input.
Exposure (Stops): Exposure compensation to make in stops.
Applies a 3D gaussian blur convolution on a LUT. Generate a Horizontal HALD image in Fusion via the LUTCubeCreator node. Send it through whatever operations you want and then put it into the LUT Smoother Fuse, which will then crunch numbers and spit out the smoothed LUT.
Saturated Blur Strength: Controls the strength of the blur in more saturated areas. Tune by eye, the fuse is slower the larger this value is set to.
Achromatic Blur Strength: Controls the strength of the blur in the less saturated areas.
Saturation Threshold: Saturation threshold at which we will start using the Saturated Blur Strength. When set to 0.0, the cube is blurred using only the saturated blur strength, otherwise it fades from the Achromatic Blur Strength at sat = 0.0 to the Saturated Blur Strength at Sat = Threshold.
Simply sticks the foreground image to be adjacent to the background image, really quickly so that it doesn't require any work or the necessary three or four nodes. You can choose what direction the two images are concatenated.
This is a higher quality version of the MTF Curve DCTL. Here, we provide 5 frequency bands in which the lower end number of line-pairs per mm can be specified, and the computation of the frequency bands is done in a higher quality way. Importantly, this Fuse requires that your input image is a Float16 or Float32 type image, and it works best on a Log state image. I do not recommend using it with a Linear state image, and I would also recommend clamping the input to be non-negative. This Fuse works using several different discrete frequency bands rather than via a fourier transform, but it largely gives good looking results regardless.
Gate Width: The mm width of your frame.
Band 1-5 LP/mm: This indicates where the frequency band should start for bands 1-5. Technically the resizing operation is imperfect, so if you're trying to match a chart, lower each value slightly. IE if you have a chart with 20 LP/mm on it, set the band to start early at about 5 LP/mm below the value you're trying to target.
Band 1-5 Contrast: This allows you to control the contrast level of each band on a scale from 0 to 2. 1.0 is neutral, and higher is more contrast.
Debug Mode: This pull-down allows you to figure out what each band targets. You can choose from None (runs the plugin normally), Low Pass Mode (shows you the information that's too low frequency to be captured in this band), High Pass Mode (shows the information that's in this band), and High Pass Gray Mode (Same as High Pass mode, but normalized to 0.5 so that the frequency data in this band is more visible).
Debug Band: Allows you to choose which band will be shown in the Debug mode.
Performance Mode: Quality does the right thing, but if you find that it's too slow, you can change this to Performance. Performance uses a lower quality computation for the low frequency information, and importantly it disables all bands except for the last two.
Method: Choose between Quotient and Difference. In most real-world scenarios, the Quotient method provides better looking results, but the Difference method performs more accurately on zebra striped test charts. Here's the math:
quotient_out := (input_value / low_pass5)^band5_contrast * (low_pass5 / low_pass4)^band4_contrast * ... * low_pass1
difference_out := (input_value - low_pass5)*band5_contrast + (low_pass5 - low_pass4)*band4_contrast + ... + low_pass1
Samples the input image at the specified frame interval. Suppose the current frame time is Destination Time Start
, and you want to be looking at the input image at frame Source Time Start
, and you want the next frame outputted from this Fuse to be at Source Time Start + Period * 1
and so on, then this is the Fuse for you.
Essentially, we will compute:
(current_time - destination_time_start) * period + source_time_start
and return the frame at this time.
Source Time Start: Frame number we should consider to be the "First Frame" of the input image.
Destination Time Start: Frame number at which we should output the Source Time Start
frame.
Period: As time progresses one frame, this indicates how many frames later we should sample from the source image.
Samples the specified pixel in the image, then prints out the frame number and rgb values to console.
- Place it somewhere in the render path of your pipeline (it could simply be "rendered" by being sent to the viewer)
- Go to the start of the video file
- Clear the console logs with the CLS button
- Hit the Reload button at the top of the Fuse
- Hit play or scrub through frames, whenever the frame number changes, the Fuse will print to the log.
- Copy and paste the contents of the log to a CSV file or spreadsheet or something, maybe filter by tags later.
Note: In order to make this thing print out on every frame change, I needed the Process function to be called on every frame change and had to use a hack to disable caching. This means that this Fuse and everything downstream of it should be uncachable and this will negatively impact playback and render performance. You probably want to put this at the end of the pipeline.
Pixel Location X/Y: The x/y coordinates of the pixel you want to sample from.
Tags: Any tags you want to add to the end of the line. I figure if you have multiple of these nodes in your pipeline, then you'll probably want to be able to distinguish between them by setting different tags.
Log Header: If you're on Frame 0 and you hit Reload when this is checked, it'll print out aframe,red,green,blue[,tags]
, which would make it useful when copying and pasting your console into spreadsheet software via csv. Uncheck this if you don't want that bit to be printed out.
Allows you to specify a source point that you want to move to a destination coordinate. Useful if you need to align a variety of images that only differ in terms of translation.
Mode: Indicate whether to look at the source image (pre-translation) or destination image (after translation)
Copy Src to Dest/Dest to Src: Allows you to copy the original pixel location to the new pixel location or vice versa, respectively.
Original Pixel Location: X,Y coordinates of some pixel in the source image
New Pixel Location: X,Y coordinates that indicate the desired destination location of the Original Pixel Location.
Rotate the input image in increments of 90 degrees, resizing the canvas as necessary.
Rotation: Indicate the number of degrees to rotate the image, counterclockwise.
Applies a beach bypass look to the image. Expects a Linear image. Uses a custom Overlay implementation designed for Linear images.
Saturation: Indicates how saturated or desaturated the result should be.
Gamma: Controls the contrast of the image.
Middle Gray: Indicates the middle gray value that will be preserved.
Assumes the scene is a linear image, then converts to log10 exposure values, applies a sigmoid characteristic curve to get density, then computes transmittance. Parametric over each of the three channels.
In practice, you should use the following pipeline: 1. Clamp 0+ ==> 2. Film Curve (to simulate the negative) ==> 3. Color Gain ==> 4. Film Curve (to simulate the print) ==> 5. Gain (if you want white to not be 100%) ==> 6. Display Encoding
. (3) represents your printer lights and should make it so that middle gray is preserved at 0.18 from (1) to (4).
Red/Green/Blue Gamma: Film gamma for each channel.
Red/Green/Blue D_MIN: Minimum density for each channel.
Red/Green/Blue D_MAX: Maximum density for each channel.
Red/Green/Blue Offset: indicates how far to the left to move each characteristic curve in the Density vs Log10 Exposure chart.
Mid Gray: Indicates the mid gray value in the input image.
Exposure Gain: Increase or decrease the incoming exposure.
Linear to Exposure: Check to apply the Exposure Gain to convert from scene illuminance to Exposure value
Exposure to Log10 Exposure: Check to apply a Log10 Function to the Exposure value
Characteristic Curve: Check to apply the Sigmoid that converts from Log10 Exposure to Density
Density to Transmittance: Check to convert computed Density to Transmittance.
Draw Characteristic Curve: Draws the characteristic curve on-screen. The fat line in the middle is Lux-Seconds = 0.0, each vertical line is 1.0 Log10 exposure. The horizontal lines represent density in 1.0 increments.
Curve Type: allows you to use Sigmoid of "Quadratic Sigmoid", which follows a similar shape but has a more a brupt rolloff.
Creates a random noise, inspired by statistical film models. You'll need to pass in a linear image and use two of these DCTLs in a pipeline, one for the Neg stock and one for the print stock, as each one returns the Transmittance of the film stock.
D Max: Maximum density
D Min: Minimum density of the film.
Grains Per Pixel: Should control the variance of the noise. More grains results in a finer image.
Num Layers of Grains: Should contribute towards controlling the gamma of the film. Essentially controls how thick the emulsion layer is.
Activation Threshold: Controls the amount of light needed for a grain to be activated.
Photon Gain: Exposure increase applied to the incoming light.
Seed Position X/Y: Indicates where in the image to pull a pixel to start the random seed. Change this if the noise is fixed.
Noise Mode: Indicates a different noise mode. In RGB, noise is computed on each channel independently, In Monochrome Noise mode, I recycle the same random seed for all three channels to avoid introducing chroma noise.
DCTL that physically emulates film halation, intended for Linear input images.
Light passes through three layers of film emulsion and various color filters, ultimately with the bottom channel being Red. Light then passes through the film base and reflects off the back of the film, and this red light then re-exposes the channels in reverse order (red, then green, then blue).
Reflection exposure lost (stops): As light passes through the film base and reflects off the anti-halation layer, it loses brightness. This parameter controls how many stops of light are lost by the time the reflection reaches the red channel again (as well as the other two channels) on the rebound. Use this slider to reduce or increase the overall amount of halation.
Green exposure lost (stops): Controls how much light is lost when the reflected light passes through the red channel and then exposes the green channel. This is added to the Reflection exposure lost.
Blue exposure lost (stops): Controls how much light is lost when the reflected light passes through the green channel and then exposes the blue channel. This is added to the Green exposure lost and the Reflection exposure lost.
Blur Amount (Thousandths of image width): The light reflection is blurry by virtue of being out of focus and by being diffused by the film base and anti-halation layer. This control represents the width/spread of the applied blur.
Blur Type: Choose which kernel to use when emulating the diffusion step.
Red Shift Correction: Because Halation re-exposes the red channel first, it will make the exposed negative more red than it originally was. This allows you to choose how you want to correct for this red tint. If you select Matrix, then it will fully correct, otherwise RGB Gain just corrects the white point and No Correction skips this step and leaves the red tint.
Hue rotation and hue variance adjustments to target a specific hue, much like a hue v hue curve.
A common problem with Hue v Hue adjustments is that it's easy to rotate one hue past its neighbors. This DCTL attempts to address that by providing only adjustments that do not suffer from that flaw. It allows for hue rotations as well as hue v hue slope adjustments in such a way that no hue will be pushed past its neighboring hues (the hue v hue curve always has nonnegative slope), and it allows you to make adjustments to the complementary hue so that you have some chance of smoothness in your grade.
To use this DCTL, convert your image to HSV or spherical or the color model of your choice with Hue being scaled 0-1, then apply this DCTL and indicate which channel in the input image corresponds to the Hue dimension, and transform back to RGB after the DCTL.
Selected Hue: The hue angle, in degrees, that you want to make an adjustment to. 0 is red.
Adjustment Amount: The strength and direction of the adjustment. In Hue Rotation control mode, this rotates the selected hue (specifically, the applied hue rotation is the selection, times 72 degrees). In Variation Control mode, this increases or decreases the slope of the curve for the selected hue (specifically, the new slope will be 1.0 + the adjustment amount
).
Left/Right Feather: Represents the distance left and right of the selected hue that will be affected by the adjustment. It's a different amount for each of the two modes, so just turn on "draw curve" or adjust these by eye.
Draw Curve: Check to draw the working hue v hue curve. the solid vertical line represents the selected hue, and the dashed line, if present, represents the complementary hue (selected hue + 180 degrees).
Curve Type: Indicate whether to target a single hue, or to make a similar adjustment to the complementary hue. You'll easily fail the gradient smoothness checker if this is set to Single Hue, just by the nature of hue v hue adjustments.
Control Type: Indicate whether you want to rotate the selected hue, or adjust the slope of the hue v hue curve at the selected hue.
Channel: Indicate which channel corresponds to hue in the input image.
Applies a basic lens distortion model, uses bilinear sampling to avoid aliasing problems for reasonable choices of
Lens distortion here is modelled with:
X Distortion Amount K1: Chooses the value of
Y Distortion Amount K1: Chooses the value of
X Distortion Amount K2: Chooses the value of
Y Distortion Amount K2: Chooses the value of
Couple XY: If checked, just use the same
Applies a power function to the RGB channels, keeping 0.18 unchanged. This DCTL expects a scene linear image.
The DCTL works in three steps:
- Apply gain to shift Middle gray to 1.0
- Raise the code values to the power of
Neutral Gamma * Color Gamma
if Ungroup RGB is checked, otherwiseNeutral Gamma
- Revert the gain done in step 1 (divide by that scaling rather than multiply)
Neutral Gamma: Gamma applied to all channels
Red Gamma: Gamma to be applied only to the Red Channel
Green Gamma: Gamma to be applied only to the Green Channel
Blue Gamma: Gamma to be applied only to the Blue Channel
Mid Gray: Specifies the middle gray code value that is preserved.
Provides an HSV-like user interface for 3x3 Matrix operations, analogous to adjusting the RGB chromaticity coordinates for a 3x3 Matrix. Apply this to a linear image. Aims to map a pure red, green, or blue input to a specific hue/saturation (but not value), and to map a pure white
Red/Green/Blue Hue: Indicate the HSV hue adjustment you you want to make to a pure Red/Green/Blue input. The angle specified here is added to the hue angle corresponding to a pure Red/Green/Blue input. Value not necessarily preserved.
Red/Green/Blue Sat: Indicate the HSV sat adjustment you you want to make to a pure Red/Green/Blue input. This is multiplied by the input saturation.
Gives you control over a MTF-like curve. Internally makes passes of different frequencies which can be increased or reduced in gain before combining them back together. Highly recommend using the Quotient method and feeding this DCTL a log image.
Band 16-1:1 Contrast: Applies a gain to the information captured only by this band. Set to 0 to soften the image and raise up to 2 to increase sharpness. The bands are relative to the timeline resolution, with a 16:1 blur, 8:1 blur, 4:1 blur, and 2:1 blur.
Debug Band: Specifies which band is viewed when the Debug Mode isn't None.
Debug Mode: This pull-down allows you to figure out what each band targets. You can choose from None (runs the plugin normally), Low Pass Mode (shows you the information that's too low frequency to be captured in this band), High Pass Mode (shows the information that's in this band), and High Pass Gray Mode (Same as High Pass mode, but normalized to 0.5 so that the frequency data in this band is more visible).
Method: Allows you to choose between Quotient and Difference, which correspond to different ways to compute the frequency bands. In most real-world scenarios, the Quotient method provides better looking results, but the Difference method performs more accurately on zebra striped test charts. Here's the math:
quotient_out := (input_value / low_pass5)^band5_contrast * (low_pass5 / low_pass4)^band4_contrast * ... * low_pass1
difference_out := (input_value - low_pass5)*band5_contrast + (low_pass5 - low_pass4)*band4_contrast + ... + low_pass1
Helps simulate the effect of photon noise, a noise that's approximately poisson distributed, where the variance is proportional to the intensity of the signal. Apply this to a linear image.
Photon Exposure (stops): The input signal is multiplied by _exp2f(photon exposure)
to compute the variance
Noise Mode: Indicates a different noise mode. In RGB, noise is computed on each channel independently, In Monochrome Noise mode, I recycle the same random seed for all three channels to avoid introducing chroma noise.
Seed Position X/Y: Coordinate of the pixel used to generate a random seed.
Constructs a random RGB matrix that is some distance away from the Identity matrix. Useful when trying out lots of different looks, expects image to be converted to Linear before using.
Eps: Maximum acceptable entry-delta from the identity matrix. Essentially controls the intensity of the applied effect. In some cases, a value about 0.33 will result in division by zero errors and numerical instability when rows are rescaled.
Seed: Indicates the random seed used to construct the matrix. Handy if you want to remember the value for later and reproduce a certain look.
Maintain White: If checked, scales each row of the RGB matrix to each sum to 1. This helps keep grays neutral in the final result. If unchecked, the image can take on a tint, with luminance maintained by scaling the entire matrix to sum to 3 (but individual rows can sum to values other than 1).
Show Matrix [OFF, FLOAT VALUE, SCALED TEN BIT VALUE]: If set to "Float Value", the entries of the matrix are displayed, allowing you to copy the values down using the RGB picker in Fusion. If set to "Scaled Ten Bit Value", the entries of the matrix are displayed, and if you have a 10-bit color picker, the difference between the code value and 500 represents the hundreths of a point that you should enter in the corresponding entry in the RGB Mixer. IE if the top middle patch has a 10-bit code value of 496
, you would enter -0.04
for the Green channel in the Red Output section of the RGB Mixer.
Constructs a contrast curve, has the option to procedurally generate one with random parameters so you can try lots of different curves in a moment.
Pivot: Specify the pivot point, which will remain unchanged in color and value.
Toe: Indicates what distance from the pivot to start rolling off the shadows. 0.0 is at the pivot point, 1.0 is near the black point.
Shoulder: Indicates what distance from the pivot to start rolling off the highlights. 0.0 is at the pivot point, 1.0 is near the white point.
Black Point: Specifies the minimum value in the image.
White Point: Specifies the maximum value in the image.
Pivot Slope: Specifies the slope of the curve when measured at the pivot point.
Seed: Random seed, only used if Randomize box is checked.
Show Curve: Check this box to get a graphical display of the curve. Within the gridded area, the x-axis goes from 0.0 to 1.0, negative values are shown to the left and right of the display.
Randomize: Check this box to randomly select parameters for the curve (excluding pivot).
Ungroup RGB: When checked, if Randomize is also checked, then this will randomize a contrast curve for each of the RGB channels.
Expects a linear image, applies linear contrast to each channel via gamma, preserving mid gray, but you can use a random number generator so you can try a lot of different curves in only moments.
Global Contrast: Initial gamma applied to all channels.
Red/Green/Blue Contrast: Gamma added to Global gamma for the corresponding channel.
Random Interval: Maximum amount that a randomly selected gamma can deviate from a per-channel gamma or the global gamma
Random Seed: User selected seed for the random number generator.
Mid Gray: Linear value of mid gray.
Use Random: Choose whether to not use the random number generator, to randomly generate a split tone (randomness is applied only to the per-channel contrasts), to randomly augment the Global Contrast, or both.
(Deprecated - Use "Linear Contrast DCTL" instead.)
You can find the old version of this DCTL here
Applies a power function to the RGB channels, keeping 0.18 unchanged. This DCTL expects a scene linear image.
The DCTL works in three steps:
- Apply gain to shift Middle gray to 1.0
- Raise the code values to the power of
Neutral Gamma * Color Gamma
if Ungroup RGB is checked, otherwiseNeutral Gamma
- Revert the gain done in step 1 (divide by that scaling rather than multiply)
Red Gamma: Gamma to be applied only to the Red Channel (if Ungroup RGB is checked)
Green Gamma: Gamma to be applied only to the Green Channel (if Ungroup RGB is checked)
Blue Gamma: Gamma to be applied only to the Blue Channel (if Ungroup RGB is checked)
Neutral Gamma: Gamma applied to all channels, regardless of Ungroup RGB
Mid Gray: Specifies the middle gray code value.
Ungroup RGB: If unchecked, only applies the Neutral Gamma, otherwise applies both Neutral gamma and the Color Gamma, multiplying together those two powers.
Computes saturation in a way that adds "density" to more saturated colors, making them darker. Expects a Linear image.
Suppose a pixel is a color input
. The DCTL will first compute a Value
(IE luminance) of that pixel using one of many methods, and from there it can compute the input's Color
by taking input / Value
. The color is saturated or desaturated using the Gamma controls (we raise each channel of the Color
to a power). From there, we multiply the Color
by a different luminance called Density
that's calculated using the method specified by the second dropdown menu. The result is scaled so that white is preserved.
Color Gamma: Controls the saturation of the image.
Cyan Gamma: Saturation slider that's combined with the Color Gamma slider, moving this to the right will make the image more cyan.
Magenta Gamma: Similar to Cyan Gamma slider.
Yellow Gamma: Similar to Cyan Gamma slider.
Density: Allows you to control how much density is added, on a scale of 0 (Density
is computed using the same method as Value
), to 1 (Density
is computed using the specified method). The floating scale effectively lets you choose the strength of the specified method.
Value Calculation: Allows you to select how the Value
is computed. I don't recommend the Max or Min methods, and you should generally choose a method that runs large (Arithmetic Mean, Geometric Mean, and L2 Norm are recommended).
Density Calculation: Allows you to choose how the Density
is computed. Again, I don't recommend the Max or Min methods, and you should choose a method that runs small (Harmonic Mean is recommended.)
Applies a sigmoid function to compress highlights. Attempts to target a specific black point, white point, mid_gray, and slope at mid gray. Expects a linear state image and outputs a linear state image.
The DCTL computes the
Target Slope: Linear slope at the output mid gray.
White Point: Maximum output, typically 1.0 corresponds to 100 nits, and
Black Point: This indicates where
Input Mid Gray: Indicate the value corresponding to
Output Mid Gray: Specifies the value corresponding to
Scale Mid Gray with White Point: If checked, the value of output_mid_gray * (white_point - black_point) + black_point
. If unchecked, output_mid_gray
. If you want your mid gray to scale with the max output white point as you change white points, then check this box.
Corrects for a vignette in the image, only handles circular vignettes for now, expects a scene linear image.
Vignette Amount: Uses a model of 1 + ar^2
to determine the amount of vignetting, then multiplies to vignette the image. Vignette amount controls the value of a
.
Show Vignette: If checked, outputs the image that is multiplied by the source image.
Adds a value to each channel. The channels are computed by $\text{Red}{\text{out}} = \text{Red}{\text{in}} + \text{Global Offset} + \text{Red Offset}$ and likewise for the other two channels.
Clamps the code values of the current frame to the specified Min and Max values, such that for any x
, we will then have clamp_min <= x <= clamp_max
Min Clamp: Specifies the value at which we will set x = max(x, Min Clamp)
Max Clamp: Specifies the value at which we will set x = min(x, Max Clamp)
Clamp Min (Checkbox): Uncheck to bypass the Min Clamping step.
Clamp Max (Checkbox): Uncheck to bypass the Max Clamping step.
Generates the specified RGB value across the whole frame. Also allows you to bypass certain channels via the "Pass-through" checkboxes.
Red/Green/Blue: the Red/Green/Blue value that will be returned.
Red/Green/Blue Pass-Through: If checked, just return the red/green/blue value of the input image.
Samples the pixel at the specified coordinate, then fills the frame with the sampled color.
Sample X/Y: X/Y coordinates to sample from
Window Size px: We sample a square region of this width in pixels around the selected x,y coordinate and sample the pixels in the window.
Mode: Choose "Crosshair" to see which pixels you're sampling (located at the intersection of the two lines) and choose "Sampled Color" for the sampled color to be displayed across the whole frame.
Computes the cross product of the current color and the specified vector, or the cross product of the specified vector and the current color if you set the direction to
Takes the dot product of the current color and the specified (r, g, b)
value.
Applies a power function with the reciprocal of the specified exponent.
Gamma: Given some number
Use Reciprocal: If checked, instead raises each RGB component to the power of
Negative Values: For a negative input color component
- Clip 0 - returns
$y = 0$ - y=x - Returns
$y = x$ - y=x/gamma - Returns
$y = x / \gamma$ so the slope somewhat scales according to the choice of exponent. - Positive Reflection - Returns
$y = \lvert x \rvert^\gamma$ - Sign Match Reflection - Returns
$y = -\lvert x \rvert^\gamma$ , returning a negative result if$x$ is negative.
Inverts the values in an image.
Log Mode: When checked, computes the inverse by taking 1 - x
. When unchecked, assumes the image is scene linear and therefore computes 1 / x
.
For each pixel and channel, takes the logarithm.
Log Base: The base of the logarithm, 10.0 by default.
Expects a scene linear image, generates a mask of pixels for which the selected channel is above or below some quantity of stops above/below middle grey.
Threshold: Indicate the number of stops above mid grey you want the mask cutoff to take place at.
Feathering: Indicate the number of stops between 0% mask and 100% mask
Mid Grey: Indicate the value of mid grey
Center Feathering at Thr.: Indicate whether the threshold is mapped to 100% in the mask (if unchecked) or to 50% in the mask, if checked.
Selection: Choose Select Shadows for values between 0 and threshold to be selected, and choose "Select Highlights" to select between the threshold and Infinity.
Channel: Select which number is compared to the threshold to compute the mask. Luminance uses Rec709 Luminance coefficients.
Multiplies the RGB values of the input by a 3x3 matrix with the specified entries. Supports negative values. Given your input
Red/Green/Blue => Red/Green/Blue: Indicates the coefficient corresponding to how much of the left hand side (input) channel will be included in the right hand side channel (output). The entries ending with "=> Red" are the first row of the matrix, the entries ending in "=> Green" are the second row, etc.
Preserve Neutral: Sends
Takes the input
Global Denominator: If Use Per-Channel Denominator is unchecked, then the modulo of all three channels is computed with respect to this number.
Red/Green/Blue Denominator: If Use Per-Channel Denominator is checked, then each channel's modulo will be computed with respect to the corresponding number.
Use Per-Channel Denominator: Check in order to compute modulo with a different denominator for each channel.
Multiplies each channel by a value. The channels are computed by $\text{Red}{\text{out}} = \text{Red}{\text{in}} * \text{Global Gain} + \text{Red Gain}$ and likewise for the other two channels.
For each of
One of the tricks with SVMs is the Polynomial kernel, where you extend your feature vector with
Now, we can convert back to 3 dimensions by multiplying by a
There's an interesting special case when
Red/Green/Blue => Red/Green/Blue: The coefficient corresponding to the original color.
Red/Green/Blue * Red/Green/Blue => Red/Green/Blue: The coefficient corresponding to this
Power: The value of
Mid Gray: Indicates the code value for Mid Gray, that will be restored via RGB gain if Preserve Gray is checked.
Identity Point for Products: By default,
Preserve Gray: If checked, runs mid-gray through the pipeline and applies gain at the end to restore it.
Normalize Powers: If checked, powers will be normalized at the value specified by Identity Point for Products.
Computes the function
Base The base of the exponent, raised to the power of the input pixel.
Rather than applying a 3x3 matrix, we can apply a Projective Transform.
Traditionally, you'd make a matrix
Frequently used in computer graphics, there's a slightly more expressive alternative called Projective Transforms that make use of homogeneous coordinates. You would instead have
You'd then output the color:
You can see that this is strictly more expressive than the
This DCTL allows you to construct
Red/Green/Blue/Bias => Red/Green/Blue/Bias: These are listed in the same order as if you were reading
Preserve Neutral: If checked, applies an RGB gain operation at the end that restores white inputs to (1.0, 1.0, 1.0).
Linearize White: If checked, applies a curve to make the grayscale ramp a straight line.
Applies a
You can fit this matrix with my tool in my rgb-matrix-finder repo.
Mat 00-25: First digit is the row, second digit is the column of the matrix.
Applies the sigmoid function to the inputs. Computes
X Midpoint: Controls the value of
Contrast: Controls the value of
Output White: Controls the value of
Output Black: Controls the value of
Similar to Polynomial Kernele. For each of
One of the tricks with SVMs is the Polynomial kernel, where you extend your feature vector with
Now, we can convert back to 3 dimensions by multiplying by a
Red/Green/Blue => Red/Green/Blue: The coefficient corresponding to the original color.
Red/Green/Blue * Red/Green/Blue => Red/Green/Blue: The coefficient corresponding to this
Power: The value of
Mid Gray: Indicates the code value for Mid Gray, that will be restored via RGB gain if Preserve Gray is checked.
White Point: The value of
Preserve Gray: If checked, runs mid-gray through the pipeline and applies gain at the end to restore it.
Applies a Softmax function, with Temperature. Outputs in the 0-1 range for all real inputs.
Temperature: Scales the input values, so larger values will result in a more extreme output.
Computes a tanh of the input via
Horizontal Offset: Controls the value of
Contrast: Controls the value of
Output White: Controls the value of
Maintain Contrast: If checked, then the Contrast control controls the derivative at x=0 even if the output white is changed (IE
Takes the current (r, g, b)
color value, computes the L2 norm, and divides each component by the norm to convert the vector to unit length.
Computes various norms of the given vector.
Norm Type: Choose between L1 Norm, L2 Norm, Lp Norm, Maximum, Minimum, Arithmetic Mean, Geometric Mean, Harmonic Mean
to choose the norm type.
P-Norm Power: If Lp Norm
is selected for the norm type, this selects the value of p
. Lp norm is computed by
DCTL that allows for adjustment of exposure in ACES. Important: It's probably better to just set your timeline color space to the ACES color space you want to use, and then to use the Exposure slider in the HDR color wheels.
Internally, this DCTL converts ACEScc or ACEScct to Linear, and then applies a gain according to the specified exposure adjustment before converting the image back into the original color space.
ACES Gamma: Pulldown menu in which you select from ACES (Linear), ACEScc, and ACEScct. This is where you specify the gamma of the image that is being fed into this DCTL.
Exposure Adjustment: Specifies the number of stops to increase or decrease (negative) exposure.
Tool to help estimate the true bit depth of a file. It works by comparing the code values in the current pixel to the adjacent pixels and measuring the smallest nonzero difference between the corresponding channels to estimate the effective bit depth for the current pixel.
Target Bit Depth: When Highlight is enabled, Highlights all pixels whose effective bit depth is within 0.1 of this Target Bit Depth.
Highlight: When checked, highlights only pixels whose bit depth is near the Target Bit Depth, otherwise all pixels are replaced with their effective bit depth.
Helps you spot pixels with NaN, infinity, negative, zero, or superwhite channels. Pixels with certain conditions are replaced by a specified highlight color. Optionally, the highlight can be a checkerboard shape.
Highlight Color Red: Red component of the highlight color.
Highlight Color Green: Green component of the highlight color.
Highlight Color Blue: Blue component of the highlight color.
Checkerboard Size: Square size of the generated checkerboard, if set to zero, just uses the Highlight Color.
Lower Bound: Indicates the lower bound used as a comparison point for some of the below sliders.
Upper Bound: Indicates the upper bound used as a comparison point for some of the below sliders
Highlight NaNs: Highlights pixels with a NaN channel.
Highlight -Inf: Highlights pixels with -infinity as at least one channel
Highlight < Lower: Highlights pixels with values less than the specified lower bound.
Highlight == Lower: Highlights pixels that have a channel equal to the specified lower bound.
Highlight == Upper: Highlights pixels that have a channel equal to the specified upper bound.
Highlight > Upper: Highlights pixels that have a channel that exceeds the specified upper bound.
Highlight +Inf: Highlights pixels with +infinity as at least one channel.
Helps you check if you hit the code values required/provided by some brand. Throw this at the very end of your pipeline (after the ODT) and enter the RGB values that the brand expects in the Target Color section. Then, this tool will highlight when code values that are close to the specified color exist in the image.
Interval Range %: Specify what percent difference between the current pixel and the target color will result in a highlight. IE we compute:
low_bound = target_rgb * (1.0 - (percent_error / 100.0))
high_bound = target_rgb * (1.0 + (percent_error / 100.0))
Highlight Red/Green/Blue: If all three channels of the current pixel lie between low_bound
and high_bound
, then the pixel will be colored according to this specified Highlight color.
Highlight Opacity: Indicates how opaque the highlighting color is.
Target Color Red/Green/Blue: Specify the code value of the target color. This can be done on a 0-1 scale, or a 0-255 8-bit scale.
Target RGB Format: Indicate whether the target color is specified on a 0-1 scale, or a 0-255 scale.
Highlight Mode: Choose whether to Generate the Target Color or to highlight pixels that fall within or outside the interval centered on the target RGB.
Emulates the Fusion channel viewer, for Red/Green/Blue channels.
Channel: Allows you to choose whether the full color image will be returned, or only one of the red/green/blue channels (duplicated onto all three channels in the output for visibility).
Applies chroma subsampling to an image by converting to YCbCr, downsampling the Cb and Cr channels via box averaging, then converting back to RGB.
X/Y Offset: Allows you to offset the 2x4 filter box.
Convert to YCbCr: Check this box to have the DCTL bookend itself with a conversion from RGB Rec709 gamut to Y'CbCr. If unchecked, that means you're doing your own conversion before and after the DCTL and this will downsample channels 2 and 3.
Chroma Subsampling Type: Allows you to choose which kind of chroma subsampling to use.
Converts between XYZ and CIELUV, CIELCH, or CIELSH.
White Point x,y: Indicates the xy chromaticity coordinates of the white point. D65 by default.
White Point Luminance: Indicates nits of luminance for the white point.
Generates a synthetic image of the Macbeth ColorChecker based on one of two datasets: the X-Rite post-2014 measured LAB values, or the original paper (you can find in Documentation/ColorChecker.pdf). Outputs in XYZ/Linear color space.
Exposure Adjustment: Stops of exposure adjustment, in case the rendered image isn't your preferred brightness.
Outer Border Width: How much black border to draw around the whole image.
Inner Border Width: How much black border to draw around individual chips.
Dataset: Choose Official to use the X-Rite values, and use McCamy to use the one from the old paper and wikipedia.
Adapt to D65: Check this box to use a bradford chromatic adaptation matrix to best approximate what the chart would look like under a D65 illuminant. Leave unchecked to use the native white point for each dataset (Illuminant A for official, Illuminant C for McCamy).
Creates a color ramp from 0 to 100% Hue, Saturation, or Luminance. This can be used to monitor the output of your tools and overall node pipeline.
Ramp Type: Choose from Luminance, Saturation, or Hue ramp.
Saturation Ramp Hue: If Saturation ramp is selected, then this controls the hue of the ramp.
Hue Ramp Saturation: If Hue ramp is selected, then this controls the saturation of the hue ramp.
Takes the specified vector and rotates the RGB cube (around 0,0,0) so that the given vector is now achromatic.
Color R, Color G, Color B: The RGB components of the vector that will be rotated gray.
Inverse: Rotates the cube the opposite angle, so that the currently white vector rotates to the direction of the specified vector, therefore doing the opposite of the normal version.
Recreation of the DaVinci Tone Mapping setting in the Color Space Transform effect. Expects a linear image and outputs a linear image. Currently only replicates the tone mapping when Adaptation is set to 9.
DaVinci Tone Mapping is simply a function of
Max Input Nits: Quantity of nits that will be mapped to the Max Output Nits. Resolve is scaled so that linear 1.0 means 100 nits.
Max Output Nits: Max Linear value that will be in the output image.
Adaptation: Makes the image brighter or darker.
User Input B: When "Use Custom Adaptation" is checked, we use this value of
Use Custom Adaptation: Allows you to override the selection of
Invert: Inverts the tone mapping with the specified parameters.
Clamp: Allows you to disable white point clamping. Resolve would have this permanently enabled.
Creates a middle gray exposure chart, an exponential ramp, a linear ramp, and several gray exposure chips that are an integer number of stops above and below middle gray. This is intended to be used in a linear gamma timeline.
Number of Steps: Specifies the number of exposure chips to be displayed in the chart. One of the ones in the middle will share its value with middle gray, and each chip to the right will have a code value double of the previous chip.
Middle Gray Value: Specifies the desired value of middle gray, which is 18% by default. This controls the brightness of the large chip in the middle too.
Show Mid Gray Card: Toggle to turn off the grey card in the middle.
Show Linear Ramp: Toggle to turn off the 0-1 scale ramp at the bottom.
Generates a false color conversion for linear, computer generated images (not authorized for use in real photography). Allows you to assign colors to specific regions of the image, in one-stop increments. You set a black point, a shadow point, mid gray, a highlight point, and a white point, and you can assign colors to all regions between and outside of those bounds.
- Load in a linear image
- Apply this DCTL
- Set the clipping point CV to the clipping point of the linear image.
- Set the shadow/highlight stops to the points you feel appropriate
- Set the Black cutoff where the black point is in your clip.
- Convert this pipeline into a LUT.
Black Hue Angle: Hue of colors below the Black Cutoff
Near Black Hue Angle: Hue of colors between Black Cutoff and Shadow Stop
Shadow Hue Angle: Hue of colors between shadow stop and mid gray
Highlight Hue Angle: Hue of colors between mid gray and Highlight Stop
Near white Hue Angle: Hue of colors between Highlight Stop and White Cutoff
White Hue Angle: Hue of colors brighter than the White Cutoff point
Clipped Hue Angle: Hue of colors whose Value exceeds the Clipping Point CV.
Black Cutoff Stop: Number of stops below middle gray below which we'll consider Black.
Shadow Stops: Number of stops below middle gray we'll color with the Shadow Hue Angle
Highlight Stops: Number of stops above middle gray we'll color the Highlight Hue Angle
White Stops: Number of stops above middle grey which we'll color with the White Hue Angle
Clipping Point CV: Linear code value for which if any channel exceeds this value, we will highlight it with the Clipped Hue Angle
Middle Gray Value: Indicates the Linear value we consider to be middle gray.
Log Stops: If "Log Output" is checked, controls the colorfulness and contrast of the output image.
Clip to White: Check this box to render Clipped values as white instead of as whatever hue was selected.
Log Output: Check this box if this DCTL isn't going into another CST that converts to a display or log color space.
Brightness Mode: If Luminance, then we simply take a weighted average of the RGB channels. If Value, then we take the channel with the maximum value before comparing it to any of the cutoffs or mid gray.
Applies the "gamma" Linear To Gamma function or Gamma To Linear function generated by this repo
Gamma, Offset, Scale, Slope, Intercept, Cut: These are plugged into the functions:
def gamma2linear(x):
if x < cut:
return x * slope + intercept
else:
return scale * powf(x, gamma) + offset
def linear2gamma(y):
y_cut = cut * slope + intercept
if y < y_cut:
return (y - intercept) / slope
else:
return powf((y - offset) / scale, 1.0 / gamma)
Linear Gain: This applies an exposure correction to the resulting image. If you're running Gamma2Lin, then the linear image is multiplied by this value. If you're running Lin2Gamma, then the linear image is divided by this value.
Direction: This allows you to specify whether to convert Gamma to Linear, or Linear to Gamma.
Generates a test chart with a series of linear gradients. Each gradient is a full linear interpolation between two colors. For each band drawn, the value of the start and end color is changed. The premise of this DCTL is that you would place it towards the head of your node graph and then look at the 3D Histogram towards the end of the graph. If these straight lines remain smooth, then I would assume your series of operations is going to look reasonably good on a lot of images. If the straight lines have discontinuities or sharp angles (particularly near the achromatic axis), you'll likely have breakage in certain images.
Base Hue: Hue angle of the left edge of the gradients.
Angle Between Patches: Angle added to Base Hue to compute the hue of the right edge of the gradient.
Base Value: Constant multiplied by the Value channel on the left side, if you want to make a gradient that has nonequal values on the left and right.
Saturation: Saturation of left and right edges of the gradient. Computed in HSV.
Number of Bands: Number of gradients to draw on the screen.
Mid Gray: If Band Interval is set to Exponential, this represents the target value for the middle band.
Min/Max Clamp: If Clamp Output is checked, then colors will be replaced with white if any channel goes outside the range of [Min Clamp, Max Clamp]
Continuous: If checked, fills in the plane in the rgb cube between the bands.
Clamp Output: If checked, replaces values > 1 with pure white so that your image doesn't have any values that go outside the unit cube.
Band Interval: If set to Equal, then each band will be a constant code value apart from the previous band. If set to Exponential, each band will be 2x the previous band. For pipelines expecting a log or gamma encoded image, use Equal, and for pipelines expecting a linear image, use Exponential (and probably turn off output clamping).
Applies the "legacy" Linear To Log function or Log To Linear function generated by this repo, which is based on the formation of the old-school ACESlog.
X Shift, Y Shift, Scale, Slope, Intercept, Cut: These are plugged into the functions:
def log2lin(x):
float tmp = _pow(2, x * scale + y_shift) + x_shift
if (tmp < cut)
return tmp * slope + intercept
else:
return tmp
def lin2log(x):
float tmp
if (x < cut):
tmp = (x - intercept) / slope
else:
tmp = x
return (log2(tmp - x_shift) - y_shift) / scale
Linear Gain: This applies an exposure correction to the resulting image. If you're running Log2Lin, then the linear image is multiplied by this value. If you're running Lin2Log, then the linear image is divided by this value.
Direction: This allows you to specify whether to convert Log to Linear, or Linear to Log.
Converts between full and (0-1023) legal levels (64-940)
Mode: Indicates whether to convert to Legal or to Full levels (the direction of the transform)
Clip: Indicates whether to clip extreme values. If Mode is set to Full to Legal
, then Clip will clip values outside of the range 64-940. Otherwise, clip will clip values outside of the range 0-1023.
Applies the "exp" Linear To Log function or Log To Linear function generated by this repo
Base, Offset, Scale, Slope, Intercept, Cut: These are plugged into the functions:
def log2linear(x):
if (x > cut):
return scale * pow(base, x) + offset
else:
return slope * x + intercept
def linear2log(y):
if (y > slope * cut + intercept):
return log((y - offset) / scale) / log(base)
else:
return (y - intercept) / slope
Linear Gain: This applies an exposure correction to the resulting image. If you're running Log2Lin, then the linear image is multiplied by this value. If you're running Lin2Log, then the linear image is divided by this value.
Direction: This allows you to specify whether to convert Log to Linear, or Linear to Log.
Given a color gamut, compute the luminance channel associated with those primaries (IE the Y channel after converting to CIE XYZ). Expects the image to be in a Linear state.
Color Gamut: Select a pre-configured color gamut, or choose Custom. If Custom is selected, then the x,y parameters are used to specify the gamut.
Red/Green/Blue/White x/y: CIEXYZ xy chromaticity coordinates of the four primary values.
Show Luminance Vector: If checked, just outputs the RGB weights of the generated luminance vector, you can take the dot product of this color and your input color to compute the luminance.
Draws black bars on the top/bottom or left/right sides of the frame to mask out all but a specified aspect ratio
Aspect Ratio The aspect ratio you want to keep after pillar/letter boxing.
Lets you check if your operation results in a polarity reversal.
Suppose a camera is pointed at two different spectra. If Spectra 1 has greater or equal energy at all wavelengths than Spectra 2, then we would expect the measured RGB values
This DCTL generates random gradients of increasing energy (left to right), which you'd place before some operation. Then, after the operation, put the DCTL into Gradient Checker
mode, and it'll highlight any pixels for which greater input energy has somehow resulted in reduced output energy.
Seed: Random seed used to generate the gradients when set to Gradient Generator
mode.
Num Bands: Number of bands shown in the frame.
Mode: Choose from Gradient Generator and Gradient Checker.
Photometric printer lights function. This DCTL expects a scene linear image and outputs a scene linear image. Applied gain for one or more channels is computed by
Exposure Trim: This adjusts the printer light setting for all channels.
Red/Green/Blue Trim: Adjusts the printer light setting for the corresponding single channel. Note that only this slider exists in a real film printer.
Cyan/Magenta/Yellow Trim: Adjusts the printer light setting for the corresponding two channels. IE increasing Cyan trim results in increasing Green and Blue trims.
Neg Gamma: Indicate the gamma of the negative film stock that's being printed. This is the term
Applies the "pure_exp" Linear To Log function or Log To Linear function generated by this repo
Base, Offset, Scale: These are plugged into the functions:
def log2linear(x):
return scale * (pow(base, x) + offset)
def linear2log(y):
return log((y / scale) - offset) / log(base)
Linear Gain: This applies an exposure correction to the resulting image. If you're running Log2Lin, then the linear image is multiplied by this value. If you're running Lin2Log, then the linear image is divided by this value.
Direction: This allows you to specify whether to convert Log to Linear, or Linear to Log.
Simulates the effect of saving the current image at a specified bit depth.
Bit Depth: The number of bits to be used to represent the current 0->1 value.
Clip: Specifies whether to clip values greater than 1.0 or less than 0.0.
Quantization Method [ROUND, TRUNCATE, STOCHASTIC]: If set to Round, round each value to the nearest code value, if set to truncate, simply round down to the nearest below code value. If set to Stochastic, round up or round down with a probability equal to how close the value is to the nearest integer.
Creates rows of colored chips at the specified increment of stops. Outputs a Linear image. This is useful in evaluating tone mapping and the "Notorious Six" problem where overexposed pure colors get mapped to pure RGBCMY primaries rather than preserving their hue.
Saturation: Saturation of the chips. In Spherical, this is set so that 1.0 results in positive CMY colors.
Number of Hues: Number of rows with different hues. Set this to 3 if you want pure RGB chips, set to 6 if you want RGB CMY chips. Increase if you want more granularity.
Number of Columns: Number of columns to generate
Mid Gray: Indicates the Value that will be assigned to the middle chip
Min/Max Clamp: If Clamp Output is checked, then if any channel falls outside the range [Min Clamp, Max Clamp], it will be replaced with white.
Clamp Output: Check to remove values that fall outside the Min/Max Clamp range.
Gray Ramp: Adds a gray ramp to the top of the frame.
Vertical: Turns the chart 90 degrees so it's vertical instead.
Band Interval: Indicate whether bands should be placed equidistantly (Equal), or one-stop apart (Exponential). The latter is better suited for pipelines that expect a Linear image.
Model: Choose whether to use HSV or Spherical to generate the chips. The spherical model is scaled such that at 1.0 saturation, all tiles will fit within the cube, and at 1.0 value, white is (1.0, 1.0, 1.0).
Continuous Mode: Choose whether each chip should be discrete, or if hue, exposure, or both should be continuous.
Row Gaps: If set not to None, draws neutral stripes between the colors so adjacent rows don't mess up your perception.
DCTL that creates a white frame to indicate safety boundaries for the image.
Aspect Ratio: Specify the Width to Height ratio for the drawn rectangle.
Scale: Size of the box, if the specified aspect ratio is wider than the frame, then 1.0 means that the width will be matched. If the specified aspect ratio is narrower than the frame, then 1.0 means that the height will be matched. Smaller values indicate a smaller drawn box.
Alpha: Opacity of the drawn lines.
Line Thickness: Thickness of the drawn box.
Shade Darkness: Indicates brightness of the region outside of the box.
Converts between RGB and a spherical color space. Outputs a 3-channel image,
Invert: When unchecked, converts from RGB to spherical, and when checked, converts from spherical to RGB.
Converts between linear and my super cool, fully-logarithmic curve. Spec for this curve is 18% gray maps to 50 IRE, then 100% IRE is middle gray plus num_stops/2
, and 0% is middle gray minus num_stops/2
. Every stop of dynamic range has an equal number of code values given by 100% / num_stops
. Also clamps the linear input to be >= 0.0 to avoid NaNs.
Stops of Dynamic Range: Indicates the value of num_stops
, number of stops between 100% and 0%.
Exposure Compensation: Applies this many stops of gain prior to a lin2log conversion, and removes this many stops of gain after a log2lin conversion. Convenient if you want to map a tone other than 18% gray to 50IRE, but typically you should leave this at 0.
Direction: Indicates whether to convert linear to tlog, or from tlog to linear.
Adds a border to the image and draws on the border so that the luma waveform has a luminance scale drawn on it. Put this after your ODT.
Minor Line Width: Indicates how wide the narrow dashes on the left side of the waveform are.
Line Thickness: How wide you want the lines on the waveform to appear.
Text Size: Height of characters written on the left margin.
Margin for Text: How much horizontal space is allocated to the characters on the left margin
Graticule Brightness: Allows you to increase the brightness of the drawn graticule by repeating the drawn lines and characters.
Num Stops: Indicates how many stops of lines to show when you have ST2084 Stops or Bt1886 Stops selected as the Waveform Scale.
BT1886 White Point: If BT.1886 Annex 1 is selected as the Waveform scale, this controls the white point parameter, specified by
BT1886 Black Point: If BT.1886 Annex 1 is selected as the Waveform scale, this controls the black point parameter, specified by
BT1886 Gamma: Specifies the gamma curve, the recommendation says to fix this at 2.4.
Mid Gray Nits: Specifies the target brightness mid gray on your monitor, as a neutral point for the Stops modes.
Rescale Mode: Choose from None, Fill, or Aspect. As the drawn stuff in the margins changes the remaining space in the viewer, this chooses whether to just crop in on the iamge (None), to scale the image to fill the remaining space (Fill), or to scale the image while preserving its aspect ratio.
Waveform Scale: Choose how the horizontal guides in the waveform are calculated. If you choose the ones that end in "Stops", then the vertical units are in stops above/below mid gray, and if you choose "Nits", then the units are in nits assuming that your display is calibrated for the specified function.
Draws a white matte around the border of the frame, in case you need to spice up your standard viewing environment.
Scaling: The original image is resized down to this scale.
White Point: Code value to draw for the matte.