Table Of Contents
- Introduction
- Cross Product
- Dot Product
- Normalize
- Vector Abs
- Vector Add
- Vector Bias
- Vector Change Range
- Vector Div
- Vector Exp
- Vector Floor
- Vector Frac
- Vector Gain
- Vector Invert
- Vector Length
- Vector Ln
- Vector Log
- Vector Max
- Vector Min
- Vector Mix
- Vector Mod
- Vector Mul
- Vector Neg
- Vector Pow
- Vector Rcp
- Vector Saturate
- Vector Sign
- Vector Sqrt
- Vector Sub
Introduction
Redshift supports a wide variety of commonly used math operation shaders for both scalar (float) values and vectors. All math nodes that process vector values are listed here:
Cross Product
Returns the outer product perpendicular vector of Input 1 and Input 2 vectors, using the following formula:
out.x =
Input1.y*
Input2.z -
Input1.z*
Input2.y
out.y =
Input1.z*
Input2.x -
Input1.x*
Input2.z
out.z =
Input1.x*
Input2.y -
Input1.y*
Input2.x
Dot Product
Returns the inner product of Input 1 and Input 2 vectors, using the following formula: Input1.x * Input2.x + Input1.y * Input2.y + Input1.z * Input2.z
Normalize
Returns a normalized vector of Input, with a new vector length of 1.0.
Vector Abs
Every component of the Input vector will be returned as a positive value. For example, the vector (-1, 0, 1) will be returned as (1, 0, 1).
Vector Add
Returns the result of an addition of the two Input vectors Input 1 and Input 2. For example:
(0.5, 0, 0.2) + (0.5, 1, 0) would result in an output of (1.0, 1, 0.2)
Vector Bias
Returns a curved bias of Input by Bias, using the following Ken Perlin formula: pow(Input, log(Bias)/log(0.5))
Bias components should be in the range between 0.0 and 1.0
Every Input vector component is using the matching component of the Bias vector to finally result in the output vector.
This function will lead to a reduction of the color component values that have a mid-range brightness, especially if set to values of less than 0.5. Bias values greater than 0.5 will brighten the color component values with mid-range intensity correspondingly. Color components that are already very dark or bright will be less affected. A Bias value of 0.5 will result in no changes to the colors that are input.
Vector Change Range
In short, this node returns Input remapped from Old Range values to New Range values, with an optional clamp.
This can be used to adapt, to remap and even to clamp colors or other vector values. For example:
Input = 0.5, 1, 1
Old Range Min = 0, 0, 0
Old Range Max = 1, 1, 1
New Range Min = 0, 0, 0
New Range Max = 2, 0.5, 0.5
You can see that Input.x ist in the middle of the Old Range.x range, so the resulting x component is in the middle of the New Range.x range, which is 1.
The other two components for Input.y and Input.z are equal to the same Old Range Max components and therefore will be equal to the same New Range Max components, which both have a value of 0.5.
The resulting vector is 1, 0.5, 0.5 in this example. Using Input components that are not included in the Old Range will lead to results the are also outside of the New Range. For example using the Input 2, 1, 1 with the above settings would result in an output of 4, 0.5, 0.5, if Clamp To New Range is switched off. Switching this option on will limit the output values to what has been defined with New Range Min and New Range Max.
Vector Div
Returns Input 1 / Input 2.
Vector Exp
Returns the exponential of Input, using the following formula: e^ Input, which is performed for all three vector components individually
This is the inverse function of Ln.
Vector Floor
Returns the integer part of evry Input vector component. For example, the vector 1.5, 0.7, 0 will be returned as 1, 0, 0.
Vector Frac
Returns the fractional part of Input. For example, 1.5, 0.7, 0 will be returned as 0.5, 0.7, 0.
Vector Gain
Returns a contrast gain of Input by Gain, using the following Ken Perlin formula:
Bias( 2 * Input - Gain ) * 0.5 ; if Input < 0.5
1 - Bias( 2 - 2 * Input - Gain ) * 0.5 ; otherwise
Gain and Input components should be in the range between 0.0 and 1.0
Vector Invert
Returns (1, 1, 1) -
Input.
The Input components should be in a range between 0.0 and 1.0.
Vector Length
Returns the length of the vector Input.
Vector Ln
Returns the natural logarithm (to base e) of the Input vector components.
This is the inverse function of Exp.
Vector Log
Returns the logarithm of the Input vector components to Base.
This is the inverse function of Pow.
Vector Max
Compares identical vector components of Input 1 and Input 2 and outputs the largest values in the output vector.
Vector Min
Compares identical vector components of Input 1 and Input 2 and outputs the smallest values in the output vector.
Vector Mix
Returns Input 1 linearly interpolated to Input 2 by Mix. When Mix is 0.0, Input 1 will be returned. When Mix is 1.0, Input 2 will be returned.
So the used formula is: Out = Input 1 + (Input 2 - Input 1) * Mix Amount, with Mix Amout being a value between 0.0 and 1.0.
Vector Mod
Returns the modulo of Input by Divisor. For example 7 modulo 5 will be returned as 2 (7 divided by 5 is 1, leaving a rest of 2.
Vector Mul
Returns Input 1 * Input 2, so every vector component of Input 1 gets multiplied with the same component of Input 2.
Vector Neg
Returns 0 - Input, so the sign of each vector component value is reversed.
Vector Pow
Returns Base^ Exponent for every component of the vectors.
This is the inverse function of Log.
Vector Rcp
Returns 1 / Input.
Having Input component values of 0 would normally not be defined in math, but the node will just output 0 in these cases.
Vector Saturate
Returns Input clamped to values between 0 and 1, inclusively. For example -1.5 will be returned as 0.0 and 1.5 will be returned as 1.0, so all output values will be kept in the standard range for color components.
Vector Sign
Returns -1 if an Input component is a negavitve number and 1 otherwise.
Vector Sqrt
Returns the square-root of every Input component.
Vector Sub
Calculates a subtraction of the two input vectors. Returns Input 1 - Input 2.