Color Handling in OSL Shaders
An OSL shader corresponds to a Node in our node system. Input parameters show up as input pins on the OSL texture node. There is a single Output parameter corresponding to the output value of the node.
The I/O types in OSL code correspond to the following Octane attribute pin types:
color - Octane Texture attribute
point - Octane Projection attribute (UV, spherical, cylindrical…)
vector, normal - Octane Float attribute (X, Y, Z)
matrix - Octane Transform attribute
float - Octane Float attribute (1D-value)
int - Octane Int attribute (1D-value)
string - Octane Filename or Enum ⁽¹⁾ attribute
Default values in the function signature are used as the default values for the input pins.
OSL allows metadata for shaders that provide more control of how the node parameters display. OctaneRender® supports the following:
Metadata For All Inputs
string label - Overrides the name shown in the Node Inspector. Normally, the variable name is shown.
string help - Provides a tool tip for the pin when you hover your mouse over the pin.
string page - Groups pins into categories.
Metadata For Int And Float Inputs
float/int min, max - Specifies the minimum and maximum values for a Float or Int input. There's no guarantee that the actual value for the variable in the shader is inside these bounds.
float/int slidermin, slidermax - Specifies a narrower value range for the sliders. You can still enter values outside this range (but within min/max) by holding down the right mouse button, and by entering a value.
float/int sensitivity - Specifies the steps for a Float/Int type variable.
float/int sliderexponent - Sets up the skew factor for the slider. OctaneRender®, supports just the linear (sliderexponent == 1) and logarithmic (sliderexponent > 1) are supported.
Metadata For Int Inputs
string widget = "checkBox" - Shows a checkbox instead of a slider. The input value will be 0 or 1.
string widget = "boolean" - Synonym for checkBox.
string widget = "mapper" - Turns the input value into an enum value (PT_ENUM), which OctaneRender® represents with a dropdown menu.
string options - Use a combo box. Options are separated by pipe characters, the keys, and value by a colon, e.g., option one:1|option two:2|option three:3.
Metadata For Matrix Inputs
int dim - Set to either 2 or 3, this specifies if the matrix should show as a 2D or 3D transform.
Metadata For String Inputs
string widget = "popup"/string options - Use a combo box, using the options in the given string. Options are separated by pipe characters, e.g., option one|option two|option three.
int editable - If set to 1, you can enter string values in a combo box that are not in the list of options.
File name inputs always displays as a file input, regardless of any given metadata.
To learn more about programming with the Open Shader Language, see the OSL guide here: https://docs.otoy.com/osl/