Chapter 17 - Additional GLSL Node Reference
This chapter describes the list of GLSL custom nodes that come bundled with RV. These nodes are grouped into five sections within this chapter based on the nodes “evaluationType” i.e. color, filter, transition, merge or combine. Each sub-section within a section describes a node and its parameters. For a complete description of the GLSL custom node itself, refer to the chapter on that topic i.e. “Chapter 3: Writing a Custom GLSL Node”.The complete collection of GLSL custom nodes that come with each RV distribution are stored in the following two files located at:
Linux & Windows:
<RV install dir>/plugins/Nodes/AdditionalNodes.gto
<RV install dir>/plugins/Support/additional_nodes/AdditionalNodes.zip
Mac:
<RV install dir>/Contents/PlugIns/Nodes/AdditionalNodes.gto
<RV install dir>/Contents/PlugIns/Support/additional_nodes/AdditionalNodes.zip
The file “AdditionalNodes.gto” is a GTO formatted text file that contains the definition of all the nodes described in this chapter. All of the node definitions found in this file are signed for use by all RV4 versions. The GLSL source code that implements the node’s functionality is embedded within the node definition’s function block as an inlined string. In addition, the default values of the node’s parameters can be found within the node definition’s parameter block. The accompanying support file “AdditionalNodes.zip” is a zipped up collection of individually named node “.gto” and “.glsl” files. Users can unzip this package and refer to each node’s .gto/.glsl file as examples of custom written RV GLSL nodes. Note the file “AdditionalNodes.zip” is not used by RV. Instead RV only uses “AdditionalNodes.gto” which was produced from all the files found in “AdditionalNodes.zip”.These nodes can be applied through the session manager to sources, sequences, stacks, layouts or other nodes. First you select a source (for example) and from the session manager “+” pull menu select “New Node by Type” and type in the name of the node in the entry box field of the “New Node by Type” window.
17.1 Color Nodes
This section describes all the GLSL nodes of evaluationType “color” found in “AdditionalNodes.gto”.
17.1.1 Matrix3x3
This node implements a 3x3 matrix multiplication on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.m33 |
float[9] |
[ 1 0 0 0 1 0 0 0 1 ] |
17.1.2 Matrix4x4
This node implements a 4x4 matrix multiplication on the RGBA channels of the inputImage. The inputImage alpha channel is affected by this node.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.m44 |
float[16] |
[ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] |
17.1.3 Premult
This node implements the “premultiply by alpha” operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.4 UnPremult
This node implements the “unpremultiply by alpha” (i.e. divide by alpha) operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.5 Gamma
This node implements the gamma (i.e. pixelColor^gamma) operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node. Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.gamma |
float[3] |
[ 0.4545 0.4545 0.4545 ] |
17.1.6 CDL
This node implements the Color Description List operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Parameter lumaCoefficients defaults to full range Rec709 luma values.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.slope |
float[3] |
[ 1 1 1 ] |
node.parameters.offset |
float[3] |
[ 0 0 0 ] |
node.parameters.power |
float[3] |
[ 1 1 1 ] |
node.parameters.saturation |
float |
[ 1 ] |
node.parameters.lumaCoefficients |
float[3] |
[ 0.2126 0.7152 0.0722 ] |
node.parameters.minClamp |
float |
[ 0 ] |
node.parameters.maxClamp |
float |
[ 1 ] |
17.1.7 CDLForACESLinear
This node implements the Color Description List operation in ACES linear colorspace on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Parameter lumaCoefficients defaults to full range Rec709 luma values.If the inputImage colorspace is NOT in ACES linear, but in some X linear colorspace; then one must set the ‘toACES’ property to the X-to-ACES colorspace conversion matrix and similarly the ‘fromACES’ property to the ACES-to-X colorspace conversion matrix.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.slope |
float[3] |
[ 1 1 1 ] |
node.parameters.offset |
float[3] |
[ 0 0 0 ] |
node.parameters.power |
float[3] |
[ 1 1 1 ] |
node.parameters.saturation |
float |
[ 1 ] |
node.parameters.lumaCoefficients |
float[3] |
[ 0.2126 0.7152 0.0722 ] |
node.parameters.toACES |
float[16] |
[ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] |
node.parameters.fromACES |
float[16] |
[ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] |
node.parameters.minClamp |
float |
[ 0 ] |
node.parameters.maxClamp |
float |
[ 1 ] |
17.1.8 CDLForACESLog
This node implements the Color Description List operation in ACES Log colorspace on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Parameter lumaCoefficients defaults to full range Rec709 luma values.If the inputImage colorspace is NOT in ACES linear, but in some X linear colorspace; then one must set the ‘toACES’ property to the X-to-ACES colorspace conversion matrix and similarly the ‘fromACES’ property to the ACES-to-X colorspace conversion matrix.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.slope |
float[3] |
[ 1 1 1 ] |
node.parameters.offset |
float[3] |
[ 0 0 0 ] |
node.parameters.power |
float[3] |
[ 1 1 1 ] |
node.parameters.saturation |
float |
[ 1 ] |
node.parameters.lumaCoefficients |
float[3] |
[ 0.2126 0.7152 0.0722 ] |
node.parameters.toACES |
float[16] |
[ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] |
node.parameters.fromACES |
float[16] |
[ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] |
node.parameters.minClamp |
float |
[ 0 ] |
node.parameters.maxClamp |
float |
[ 1 ] |
17.1.9 SRGBToLinear
This linearizing node implements the sRGB to linear transfer function operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.10 LinearToSRGB
This node implements the linear to sRGB transfer function operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.11 Rec709ToLinear
This linearizing node implements the Rec709 to linear transfer function operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.12 LinearToRec709
This node implements the linear to Rec709 transfer function operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.13 CineonLogToLinear
This linearizing node implements the Cineon Log to linear transfer function operation on the RGB channels of the inputImage. The implementation is based on Kodak specification “The Cineon Digital Film System”. The inputImage alpha channel is not affected by this node.Input parameters: (values must be specified within the range [0..1023])
Property |
Type |
Default |
---|---|---|
node.parameters.refBlack |
float |
95 |
node.parameters.refWhite |
float |
685 |
node.parameters.softClip |
float |
0 |
17.1.14 LinearToCineonLog
This node implements the linear to Cineon Log film transfer function operation on the RGB channels of the inputImage. The implementation is based on Kodak specification “The Cineon Digital Film System”. The inputImage alpha channel is not affected by this node.Input parameters: (values must be specified within the range [0..1023])
Property |
Type |
Default |
---|---|---|
node.parameters.refBlack |
float |
95 |
node.parameters.refWhite |
float |
685 |
17.1.15 ViperLogToLinear
This linearizing node implements the Viper Log to linear transfer function operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.16 LinearToViperLog
This node implements the linear to Viper Log transfer function operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.17 RGBToYCbCr601
This node implements the RGB to YCbCr 601 conversion operation on the RGB channels of the inputImage. Implementation is based on ITU-R BT.601 specification. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.18 RGBToYCbCr709
This node implements the RGB to YCbCr 709 conversion operation on the RGB channels of the inputImage. Implementation is based on ITU-R BT.709 specification. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.19 RGBToYCgCo
This node implements the RGB to YCgCo conversion operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.20 YCbCr601ToRGB
This node implements the YCbCr 601 to RGB conversion operation on the RGB channels of the inputImage. Implementation is based on ITU-R BT.601 specification. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.21 YCbCr709ToRGB
This node implements the YCbCr 709 to RGB conversion operation on the RGB channels of the inputImage. Implementation is based on ITU-R BT.709 specification. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.22 YCgCoToRGB
This node implements the YCgCo to RGB conversion operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.23 YCbCr601FRToRGB
This node implements the YCbCr 601 “Full Range” to RGB conversion operation on the RGB channels of the inputImage. Implementation is based on ITU-R BT.601 specification. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.24 RGBToYCbCr601FR
This node implements the RGB to YCbCr 601 “Full Range” conversion operation on the RGB channels of the inputImage. Implementation is based on ITU-R BT.601 specification. The inputImage alpha channel is not affected by this node.Input parameters: None
17.1.27 Saturation
This node implements the saturation operation on the RGB channels of the inputImage. The inputImage alpha channel is not affected by this node.Parameter lumaCoefficients defaults to full range Rec709 luma values.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.saturation |
float |
[ 1 ] |
node.parameters.lumaCoefficients |
float[3] |
[ 0.2126 0.7152 0.0722 ] |
node.parameters.minClamp |
float |
[ 0 ] |
node.parameters.maxClamp |
float |
[ 1 ] |
17.2 Transition Nodes
This section describes all the GLSL nodes of evaluationType “transition” found in “AdditionalNodes.gto”.
17.2.1 CrossDissolve
This node implements a simple cross dissolve transition effect on the RGBA channels of two inputImage sources beginning from startFrame until (startFrame + numFrames -1). The inputImage alpha channel is affected by this node.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.startFrame |
float |
40 |
node.parameters.numFrame |
float |
20 |
17.2.2 Wipe
This node implements a simple wipe transition effect on the RGBA channels of two inputImage sources beginning from startFrame until (startFrame + numFrames -1). The inputImage alpha channel is affected by this node.Input parameters:
Property |
Type |
Default |
---|---|---|
node.parameters.startFrame |
float |
40 |
node.parameters.numFrame |
float |
20 |