<p>
Shaders are special programs that interact directly with graphics hardware
for special effects using light, darkness, and color within a model's appearance.
</p>
<p>
A
<a href="http://en.wikipedia.org/wiki/Shader" target="_blank">programmable shader</a>
allows authors to directly specify how an object is rendered by providing a method of
programmatically modifying sections of the rendering pipeline. This allows replacement of the traditional
fixed-function graphics API pipeline to support visual effects that typically cannot be implemented using
other node components in this standard.
</p>
<p>
These example scenes illustrate the
<a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shaders.html" target="_blank">X3D Programmable Shaders Component</a>.
Unfortunately, unlike X3D, shader languages are typically hardware-specific and not interoperable across different platforms.
Mutually compatible X3D interfaces and syntax are defined for the
<a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/shaders_glsl.html" target="_blank">OpenGL shading language (GLSL) binding</a>,
<a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/shaders_hlsl.html" target="_blank">Microsoft high level shading language (HLSL) binding</a>
and the
<a href="https://www.web3d.org/files/specifications/19777-2/V3.0/Part2/X3D_Java.html" target="_blank">nVidia Cg shading language binding</a>.
</p>