21.2. Shader Nodes

Figure 21.4. Shader node classes


Shaders are managed by the node class SoShaderProgram SoShaderProgram SoShaderProgram , a property node that defines the current shader program for all subsequent shapes.

SoShaderObject SoShaderObject SoShaderObject is the abstract class defining the different types of shaders which may be a vertex shader (SoVertexShader SoVertexShader SoVertexShader ), a geometry shader (SoGeometryShader), or a fragment shader (SoFragmentShader SoFragmentShader SoFragmentShader ).

SoShaderParameter SoShaderParameter SoShaderParameter and its derived classes are discussed in the section called “SoShaderParameter Nodes”.

The SoShaderProgram SoShaderProgram SoShaderProgram node has the following field:

The SoShaderObject SoShaderObject SoShaderObject node has the following fields:

These nodes allow you to provide uniform parameters (SoUniformShaderParameter SoUniformShaderParameter SoUniformShaderParameter ) or varying parameters (SoVertexShaderParameter SoVertexShaderParameter SoVertexShaderParameter ) to a shader object and thus to the corresponding vertex and/or geometry and/or fragment shader.

The SoShaderParameter SoShaderParameter SoShaderParameter node has the following fields:

SoShaderParameter SoShaderParameter SoShaderParameter is a base class and its derived classes are actually used to set parameter values. The fields inherited from SoShaderParameter SoShaderParameter SoShaderParameter specify the name/identifier of the parameter, and the fields of the derived class specify the value of the parameter. For example, SoShaderParameter2f SoShaderParameter2f SoShaderParameter2f and SoVertexShaderParameter2f SoVertexShaderParameter2f SoVertexShaderParameter2f store a two-dimensional (float) vector and SoShaderParameterArray3f SoShaderParameterArray3f SoShaderParameterArray3f stores an array of three-dimensional (float) vectors.

Uniform shader parameter nodes (SoUniformShaderParameter SoUniformShaderParameter SoUniformShaderParameter ) can be added directly to the scene graph or added to the parameter field of an SoVertexShader, SoGeometryShader, or SoFragmentShader node, whereas varying parameters (SoVertexShaderParameter SoVertexShaderParameter SoVertexShaderParameter ) should be inserted directly into the scene graph (like other property nodes, such as SoNormal SoNormal SoNormal , …).