Rings
Version 0.3

threeD.raytracer.shaders
Class TextureShader

java.lang.Object
  extended byjava.util.AbstractCollection
      extended byjava.util.AbstractSet
          extended byjava.util.HashSet
              extended bythreeD.raytracer.shaders.ShaderSet
                  extended bythreeD.raytracer.shaders.TextureShader
All Implemented Interfaces:
java.lang.Cloneable, java.util.Collection, ColorProducer, Editable, Producer, java.io.Serializable, java.util.Set, Shader

public class TextureShader
extends ShaderSet
implements Editable, Shader

A TextureShader object uses a Texture object as a filter for shader output. The object allows you to set up Shader objects as input properties for Texture objects and takes care of evaluating the shader values with each call of the shade method.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class threeD.raytracer.util.Editable
Editable.Selection
 
Constructor Summary
TextureShader()
          Constructs a new Texture shader object.
TextureShader(Texture t, ShaderFactory factory)
          Constructs a new TextureShader object using the specified Texture and ShaderFactory objects.
 
Method Summary
 RGB evaluate(java.lang.Object[] args)
          Produces a color using the specified arguments.
 ShaderFactory getFactory()
           
 Producer[] getInputPropertyValues()
           
 java.lang.String[] getPropertyDescriptions()
          Returns an array of String objects with descriptions for each editable property of this Editable object.
 java.lang.String[] getPropertyNames()
          Returns an array of String objects with names for each editable property of this Editable object.
 java.lang.Class[] getPropertyTypes()
          Returns an array of Class objects representing the class types of each editable property of this Editable object.
 java.lang.Object[] getPropertyValues()
          Returns the values of the properties of this Editable object as an Object array.
 Texture getTexture()
           
 void setFactory(ShaderFactory factory)
          Sets the ShaderFactory object used by this TextureShader object.
 void setInputPropertyValue(int index, Producer p)
           
 void setPropertyValue(java.lang.Object value, int index)
          Sets the value of the property of this Editable object at the specified index to the specified value.
 void setPropertyValues(java.lang.Object[] values)
          Sets the values of properties of this Editable object to those specified.
 void setTexture(Texture t)
          Sets the Texture object used by this TextureShader object.
 RGB shade(ShaderParameters p)
          Returns an RGB object that represents the shaded color calculated using the values of the specified ShaderParameters object.
 java.lang.String toString()
           
 
Methods inherited from class threeD.raytracer.shaders.ShaderSet
add, addAll
 
Methods inherited from class java.util.HashSet
clear, clone, contains, isEmpty, iterator, remove, size
 
Methods inherited from class java.util.AbstractSet
equals, hashCode, removeAll
 
Methods inherited from class java.util.AbstractCollection
containsAll, retainAll, toArray, toArray
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Set
containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray
 

Constructor Detail

TextureShader

public TextureShader()
Constructs a new Texture shader object.


TextureShader

public TextureShader(Texture t,
                     ShaderFactory factory)
Constructs a new TextureShader object using the specified Texture and ShaderFactory objects.

Parameters:
t - The Texture object to use as a filter.
factory - The ShaderFactory that can be used to create Shader objects as parameters.
Method Detail

setTexture

public void setTexture(Texture t)
Sets the Texture object used by this TextureShader object.

Parameters:
t - The Texture object to be used.

setFactory

public void setFactory(ShaderFactory factory)
Sets the ShaderFactory object used by this TextureShader object.

Parameters:
factory - The ShaderFactory object to use.

getTexture

public Texture getTexture()
Returns:
The Texture object used by this TextureShader object.

getFactory

public ShaderFactory getFactory()
Returns:
The ShaderFactory object used by this TextureShader object.

getPropertyNames

public java.lang.String[] getPropertyNames()
Description copied from interface: Editable
Returns an array of String objects with names for each editable property of this Editable object.

Specified by:
getPropertyNames in interface Editable
See Also:
Editable.getPropertyNames()

getPropertyDescriptions

public java.lang.String[] getPropertyDescriptions()
Description copied from interface: Editable
Returns an array of String objects with descriptions for each editable property of this Editable object.

Specified by:
getPropertyDescriptions in interface Editable
See Also:
Editable.getPropertyDescriptions()

getPropertyTypes

public java.lang.Class[] getPropertyTypes()
Description copied from interface: Editable
Returns an array of Class objects representing the class types of each editable property of this Editable object.

Specified by:
getPropertyTypes in interface Editable
See Also:
Editable.getPropertyTypes()

getPropertyValues

public java.lang.Object[] getPropertyValues()
Description copied from interface: Editable
Returns the values of the properties of this Editable object as an Object array.

Specified by:
getPropertyValues in interface Editable
See Also:
Editable.getPropertyValues()

setPropertyValue

public void setPropertyValue(java.lang.Object value,
                             int index)
Description copied from interface: Editable
Sets the value of the property of this Editable object at the specified index to the specified value.

Specified by:
setPropertyValue in interface Editable
See Also:
Editable.setPropertyValue(java.lang.Object, int)

setPropertyValues

public void setPropertyValues(java.lang.Object[] values)
Description copied from interface: Editable
Sets the values of properties of this Editable object to those specified.

Specified by:
setPropertyValues in interface Editable
See Also:
Editable.setPropertyValues(java.lang.Object[])

getInputPropertyValues

public Producer[] getInputPropertyValues()
Specified by:
getInputPropertyValues in interface Editable
Returns:
An array of Producer objects containing the property values of those properties that are repeatedly evaluated.
See Also:
Editable.getInputPropertyValues()

setInputPropertyValue

public void setInputPropertyValue(int index,
                                  Producer p)
Specified by:
setInputPropertyValue in interface Editable
Parameters:
index - Index of input property (array index from this.getInputPropertyValue).
p - Producer object to use for input property.
See Also:
Editable.setInputPropertyValue(int, threeD.raytracer.util.Producer)

shade

public RGB shade(ShaderParameters p)
Description copied from interface: Shader
Returns an RGB object that represents the shaded color calculated using the values of the specified ShaderParameters object.

Specified by:
shade in interface Shader
Overrides:
shade in class ShaderSet
Returns:
The sum of the values given by the shade method for each Shader object stored by this ShaderSet object.
See Also:
threeD.raytracer.shaders.Shader#shade(threeD.raytracer.engine.ShaderParameters)

evaluate

public RGB evaluate(java.lang.Object[] args)
Description copied from interface: ColorProducer
Produces a color using the specified arguments.

Specified by:
evaluate in interface ColorProducer
Overrides:
evaluate in class ShaderSet
Returns:
this.shade(args[0]).
See Also:
ColorProducer.evaluate(java.lang.Object[])

toString

public java.lang.String toString()
Overrides:
toString in class ShaderSet
Returns:
The string representation of the Texture object used by this TextureShader object plus " Shader".

Rings
Version 0.3

Copyright 2003-05 Mike Murray