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:

[Warning]

With some languages (Cg or ARB_language), only one vertex shader, one geometry shader and one fragment shader can be active at the same time. In this case, only the first vertex shader, the first geometry shader, and the first fragment shader are used.

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 , …).