Arithmetic operations as shaders in graphs and Phenomena

In constructing the examples for Writing mental ray shaders, I focused on the variety of fundamental shaders types that are possible in mental ray. However, very simple shaders that perform a single arithmetic operation are also useful in constructing shader graphs and Phenomena. Using a Python script, I have constructed a set of combinations for various arithmetic operations on scalars, colors and vectors.
C source file arithmetic_operators.c
Declaration file arithmetic_operators.mi
In operations that mix scalars with either colors or vectors, the scalar value is used for all the components of the color or vector.

Addition

op_add_cc   Add a color to a color to define a color
op_add_cv   Add a color to a vector to define a color
op_add_cs   Add a color to a scalar to define a color
op_add_vc   Add a vector to a color to define a vector
op_add_vv   Add a vector to a vector to define a vector
op_add_vs   Add a vector to a scalar to define a vector
op_add_ss   Add a scalar to a scalar to define a scalar

Subtraction

op_sub_cc   Subtract a color from a color to define a color
op_sub_cv   Subtract a color from a vector to define a color
op_sub_cs   Subtract a color from a scalar to define a color
op_sub_vc   Subtract a vector from a color to define a vector
op_sub_vv   Subtract a vector from a vector to define a vector
op_sub_vs   Subtract a vector from a scalar to define a vector
op_sub_ss   Subtract a scalar from a scalar to define a scalar

Multiplication

op_mul_cc   Multiply a color by a color to define a color
op_mul_cv   Multiply a color by a vector to define a color
op_mul_cs   Multiply a color by a scalar to define a color
op_mul_vc   Multiply a vector by a color to define a vector
op_mul_vv   Multiply a vector by a vector to define a vector
op_mul_vs   Multiply a vector by a scalar to define a vector
op_mul_ss   Multiply a scalar by a scalar to define a scalar

Division

op_div_cc   Divide a color by a color to define a color
op_div_cv   Divide a color by a vector to define a color
op_div_cs   Divide a color by a scalar to define a color
op_div_vc   Divide a vector by a color to define a vector
op_div_vv   Divide a vector by a vector to define a vector
op_div_vs   Divide a vector by a scalar to define a vector
op_div_ss   Divide a scalar by a scalar to define a scalar

Minimum

op_min_cc   Find the minimum of a color and a color to define a color
op_min_cv   Find the minimum of a color and a vector to define a color
op_min_cs   Find the minimum of a color and a scalar to define a color
op_min_vc   Find the minimum of a vector and a color to define a vector
op_min_vv   Find the minimum of a vector and a vector to define a vector
op_min_vs   Find the minimum of a vector and a scalar to define a vector
op_min_ss   Find the minimum of a scalar and a scalar to define a scalar

Maximum

op_max_cc   Find the maximum of a color and a color to define a color
op_max_cv   Find the maximum of a color and a vector to define a color
op_max_cs   Find the maximum of a color and a scalar to define a color
op_max_vc   Find the maximum of a vector and a color to define a vector
op_max_vv   Find the maximum of a vector and a vector to define a vector
op_max_vs   Find the maximum of a vector and a scalar to define a vector
op_max_ss   Find the maximum of a scalar and a scalar to define a scalar

Exponentiation

op_pow_cc   Raise a color to the power of a color to define a color
op_pow_cv   Raise a color to the power of a vector to define a color
op_pow_cs   Raise a color to the power of a scalar to define a color
op_pow_vc   Raise a vector to the power of a color to define a vector
op_pow_vv   Raise a vector to the power of a vector to define a vector
op_pow_vs   Raise a vector to the power of a scalar to define a vector
op_pow_ss   Raise a scalar to the power of a scalar to define a scalar

Mix

op_mix_ccs   Mix a color with a color using a scalar to define a color
op_mix_ccc   Mix a color with a color using a color to define a color
20 April 2008 18:40:13