The Shader object is the abstract base class for programmable
shader code. Currently, only text-based source code shaders are
supported, so the only subclass of Shader is SourceCodeShader. We
leave open the possibility for binary (object code) shaders in the
future.
Each instance of a Shader object allows an application to specify
the source code used in programming the Graphics Pipeline Unit
(GPU) of the graphics accelerator. A Shader object is constructed
with modes that specify the shading language and the
shader type.
The shading language specifies the language and runtime environment
used to program the GPU. The currently defined shading languages
are GLSL (also known as the OpenGL 2.0 shading language) and
Cg. Note that not all shading languages are supported on all
platforms. It is up to the application or utility to query whether
a particular shading language is supported before using it. The
value of the shadingLanguage mode is one of:
SHADING_LANGUAGE_GLSL or
SHADING_LANGUAGE_CG .
The shader type specifies whether the shader is a vertex
shader or a fragment shader. A vertex shader replaces
the fixed-function graphics pipeline for vertex operations
(transformation and lighting). A fragment shader replaces the
fixed-function graphics pipeline for fragment shading operations
(texture mapping, texture application, coloring, shading, and so
forth). The value of the shaderType mode is one of:
SHADER_TYPE_VERTEX or
SHADER_TYPE_FRAGMENT .
Both the shading language and shader type are immutable modes of
the Shader object.
NOTE: Applications should not extend this class.
See Also: ShaderProgram See Also: Canvas3D.isShadingLanguageSupported since: Java 3D 1.4 |