# Class ShaderAppearance

java.lang.Object
javax.media.j3d.SceneGraphObject
javax.media.j3d.NodeComponent
javax.media.j3d.Appearance
javax.media.j3d.ShaderAppearance

public class ShaderAppearance extends Appearance

The ShaderAppearance object defines programmable shading attributes that can be set as a component object of a Shape3D node. The ShaderAppearance rendering state adds the following attributes in addition to those defined by Appearance:

- Shader program - specifies the shader program...

- Shader attribute set - specifies the shader parameters, both as explicit attributes and as implicit bindings to Java 3D state...

The ShaderAppearance object modifies the definition of some of the attributes in Appearance:

- Coloring attributes - XXXXX

- Line attributes - XXXXX

- Point attributes - XXXXX

- Polygon attributes - XXXXX

- Rendering attributes - XXXXX

- Transparency attributes - XXXXX

- Material - XXXXX

- Texture - XXXXX

- Texture attributes - XXXXX

- Texture coordinate generation - XXXXX

- Texture unit state - XXXXX

Since:
  Java 3D 1.4
See Also:
  - `ShaderProgram`
  - `ShaderAttributeSet`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ALLOW_SHADER_ATTRIBUTE_SET_READ`
Specifies that this ShaderAppearance object allows reading its ShaderAttributeSet component information.
`static final int`
`ALLOW_SHADER_ATTRIBUTE_SET_WRITE`
Specifies that this ShaderAppearance object allows writing its ShaderAttributeSet component information.
`static final int`
`ALLOW_SHADER_PROGRAM_READ`
Specifies that this ShaderAppearance object allows reading its ShaderProgram component information.
`static final int`
`ALLOW_SHADER_PROGRAM_WRITE`
Specifies that this ShaderAppearance object allows writing its ShaderProgram component information.

### Fields inherited from class Appearance

`ALLOW_COLORING_ATTRIBUTES_READ, ALLOW_COLORING_ATTRIBUTES_WRITE, ALLOW_LINE_ATTRIBUTES_READ, ALLOW_LINE_ATTRIBUTES_WRITE, ALLOW_MATERIAL_READ, ALLOW_MATERIAL_WRITE, ALLOW_POINT_ATTRIBUTES_READ, ALLOW_POINT_ATTRIBUTES_WRITE, ALLOW_POLYGON_ATTRIBUTES_READ, ALLOW_POLYGON_ATTRIBUTES_WRITE, ALLOW_RENDERING_ATTRIBUTES_READ, ALLOW_RENDERING_ATTRIBUTES_WRITE, ALLOW_TEXGEN_READ, ALLOW_TEXGEN_WRITE, ALLOW_TEXTURE_ATTRIBUTES_READ, ALLOW_TEXTURE_ATTRIBUTES_WRITE, ALLOW_TEXTURE_READ, ALLOW_TEXTURE_UNIT_STATE_READ, ALLOW_TEXTURE_UNIT_STATE_WRITE, ALLOW_TEXTURE_WRITE, ALLOW_TRANSPARENCY_ATTRIBUTES_READ, ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE`

## Constructor Summary

Constructors
Constructor
Description
`ShaderAppearance()`
Constructs a ShaderAppearance component object using defaults for all state variables.

## Method Summary

Modifier and Type
Method
Description
`NodeComponent`
`cloneNodeComponent()`
Deprecated.
replaced with cloneNodeComponent(boolean forceDuplicate)
`void`
`duplicateNodeComponent(NodeComponent originalNodeComponent)`
Deprecated.
replaced with duplicateNodeComponent( NodeComponent originalNodeComponent, boolean forceDuplicate)
`ShaderAttributeSet`
`getShaderAttributeSet()`
Retrieves the current ShaderAttributeSet object.
`ShaderProgram`
`getShaderProgram()`
Retrieves the current ShaderProgram object.
`void`
`setShaderAttributeSet(ShaderAttributeSet shaderAttributeSet)`
Sets the ShaderAttributeSet object to the specified object.
`void`
`setShaderProgram(ShaderProgram shaderProgram)`
Sets the ShaderProgram object to the specified object.

### Methods inherited from class Appearance

`getColoringAttributes, getLineAttributes, getMaterial, getPointAttributes, getPolygonAttributes, getRenderingAttributes, getTexCoordGeneration, getTexture, getTextureAttributes, getTextureUnitCount, getTextureUnitState, getTextureUnitState, getTransparencyAttributes, setColoringAttributes, setLineAttributes, setMaterial, setPointAttributes, setPolygonAttributes, setRenderingAttributes, setTexCoordGeneration, setTexture, setTextureAttributes, setTextureUnitState, setTextureUnitState, setTransparencyAttributes`

### Methods inherited from class NodeComponent

`cloneNodeComponent, duplicateNodeComponent, getDuplicateOnCloneTree, setDuplicateOnCloneTree`

### Methods inherited from class SceneGraphObject

`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### ALLOW_SHADER_PROGRAM_READ

public static final int ALLOW_SHADER_PROGRAM_READ
Specifies that this ShaderAppearance object allows reading its ShaderProgram component information.

See Also:
  - Constant Field Values

### ALLOW_SHADER_PROGRAM_WRITE

public static final int ALLOW_SHADER_PROGRAM_WRITE
Specifies that this ShaderAppearance object allows writing its ShaderProgram component information.

See Also:
  - Constant Field Values

### ALLOW_SHADER_ATTRIBUTE_SET_READ

public static final int ALLOW_SHADER_ATTRIBUTE_SET_READ
Specifies that this ShaderAppearance object allows reading its ShaderAttributeSet component information.

See Also:
  - Constant Field Values

### ALLOW_SHADER_ATTRIBUTE_SET_WRITE

public static final int ALLOW_SHADER_ATTRIBUTE_SET_WRITE
Specifies that this ShaderAppearance object allows writing its ShaderAttributeSet component information.

See Also:
  - Constant Field Values

## Constructor Details

### ShaderAppearance

public ShaderAppearance()
Constructs a ShaderAppearance component object using defaults for all state variables. All component object references are initialized to null.

## Method Details

### setShaderProgram

public void setShaderProgram(ShaderProgram shaderProgram)
Sets the ShaderProgram object to the specified object. Setting it to null causes a default pass-through shader to be used ???

Parameters:
  `shaderProgram` - object that specifies the desired shader program
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getShaderProgram

public ShaderProgram getShaderProgram()
Retrieves the current ShaderProgram object.

Returns:
  the ShaderProgram object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setShaderAttributeSet

public void setShaderAttributeSet(ShaderAttributeSet shaderAttributeSet)
Sets the ShaderAttributeSet object to the specified object. Setting it to null is equivalent to specifying an empty set of attributes.

Parameters:
  `shaderAttributeSet` - object that specifies the desired shader attributes
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getShaderAttributeSet

public ShaderAttributeSet getShaderAttributeSet()
Retrieves the current ShaderAttributeSet object.

Returns:
  the ShaderAttributeSet object
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### cloneNodeComponent

public NodeComponent cloneNodeComponent()
Deprecated.
replaced with cloneNodeComponent(boolean forceDuplicate)

Overrides:
  `cloneNodeComponent` in class `Appearance`

### duplicateNodeComponent

public void duplicateNodeComponent(NodeComponent originalNodeComponent)
Deprecated.
replaced with duplicateNodeComponent( NodeComponent originalNodeComponent, boolean forceDuplicate)
NOTE: Applications should not call this method directly. It should only be called by the cloneNode method.

Overrides:
  `duplicateNodeComponent` in class `Appearance`