com.jme3.material
Class TechniqueDef

java.lang.Object
  extended by com.jme3.material.TechniqueDef
All Implemented Interfaces:
Savable

public class TechniqueDef
extends java.lang.Object
implements Savable

Describes a technique definition.


Nested Class Summary
static class TechniqueDef.LightMode
          Describes light rendering mode.
static class TechniqueDef.ShadowMode
           
 
Field Summary
static int SAVABLE_VERSION
          Version #1: Separate shader language for each shader source.
 
Constructor Summary
TechniqueDef()
          Serialization only.
TechniqueDef(java.lang.String name)
          Creates a new technique definition.
 
Method Summary
 void addShaderParamDefine(java.lang.String paramName, java.lang.String defineName)
          Adds a define linked to a material parameter.
 void addShaderPresetDefine(java.lang.String defineName, VarType type, java.lang.Object value)
          Adds a preset define.
 boolean addWorldParam(java.lang.String name)
          Adds a new world parameter by the given name.
 java.lang.String getFragmentShaderLanguage()
          Returns the language of the fragment shader used in this technique.
 java.lang.String getFragmentShaderName()
          Returns the name of the fragment shader used by the technique, or null if no fragment shader is specified.
 TechniqueDef.LightMode getLightMode()
          Returns the light mode.
 java.lang.String getName()
          Returns the name of this technique as specified in the J3MD file.
 RenderState getRenderState()
          Returns the render state that this technique is using
 java.util.EnumSet<Caps> getRequiredCaps()
          Gets the renderer capabilities that are required by this technique.
 java.lang.String getShaderLanguage()
          Deprecated. Use getVertexShaderLanguage() instead.
 java.lang.String getShaderParamDefine(java.lang.String paramName)
          Returns the define name which the given material parameter influences.
 DefineList getShaderPresetDefines()
          Returns the DefineList for the preset defines.
 TechniqueDef.ShadowMode getShadowMode()
          Returns the shadow mode.
 java.lang.String getVertexShaderLanguage()
          Returns the language of the vertex shader used in this technique.
 java.lang.String getVertexShaderName()
          Returns the name of the vertex shader used by the technique, or null if no vertex shader is specified.
 java.util.List<UniformBinding> getWorldBindings()
          Returns a list of world parameters that are used by this technique definition.
 boolean isUsingShaders()
          Returns true if this technique uses shaders, false otherwise.
 void read(JmeImporter im)
           
 void setLightMode(TechniqueDef.LightMode lightMode)
          Set the light mode
 void setRenderState(RenderState renderState)
          Sets the render state that this technique is using.
 void setShaderFile(java.lang.String vertexShader, java.lang.String fragmentShader, java.lang.String vertLanguage, java.lang.String fragLanguage)
          Sets the shaders that this technique definition will use.
 void setShadowMode(TechniqueDef.ShadowMode shadowMode)
          Set the shadow mode.
 void write(JmeExporter ex)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SAVABLE_VERSION

public static final int SAVABLE_VERSION
Version #1: Separate shader language for each shader source.

See Also:
Constant Field Values
Constructor Detail

TechniqueDef

public TechniqueDef(java.lang.String name)
Creates a new technique definition.

Used internally by the J3M/J3MD loader.

Parameters:
name - The name of the technique, should be set to null for default techniques.

TechniqueDef

public TechniqueDef()
Serialization only. Do not use.

Method Detail

getName

public java.lang.String getName()
Returns the name of this technique as specified in the J3MD file. Default techniques have the name "Default".

Returns:
the name of this technique

getLightMode

public TechniqueDef.LightMode getLightMode()
Returns the light mode.

Returns:
the light mode.
See Also:
TechniqueDef.LightMode

setLightMode

public void setLightMode(TechniqueDef.LightMode lightMode)
Set the light mode

Parameters:
lightMode - the light mode
See Also:
TechniqueDef.LightMode

getShadowMode

public TechniqueDef.ShadowMode getShadowMode()
Returns the shadow mode.

Returns:
the shadow mode.

setShadowMode

public void setShadowMode(TechniqueDef.ShadowMode shadowMode)
Set the shadow mode.

Parameters:
shadowMode - the shadow mode.
See Also:
TechniqueDef.ShadowMode

getRenderState

public RenderState getRenderState()
Returns the render state that this technique is using

Returns:
the render state that this technique is using
See Also:
setRenderState(com.jme3.material.RenderState)

setRenderState

public void setRenderState(RenderState renderState)
Sets the render state that this technique is using.

Parameters:
renderState - the render state that this technique is using.
See Also:
RenderState

isUsingShaders

public boolean isUsingShaders()
Returns true if this technique uses shaders, false otherwise.

Returns:
true if this technique uses shaders, false otherwise.
See Also:
#setShaderFile(java.lang.String, java.lang.String, java.lang.String)

getRequiredCaps

public java.util.EnumSet<Caps> getRequiredCaps()
Gets the renderer capabilities that are required by this technique.

Returns:
the required renderer capabilities

setShaderFile

public void setShaderFile(java.lang.String vertexShader,
                          java.lang.String fragmentShader,
                          java.lang.String vertLanguage,
                          java.lang.String fragLanguage)
Sets the shaders that this technique definition will use.

Parameters:
vertexShader - The name of the vertex shader
fragmentShader - The name of the fragment shader
shaderLanguage - The shader language

getShaderParamDefine

public java.lang.String getShaderParamDefine(java.lang.String paramName)
Returns the define name which the given material parameter influences.

Parameters:
paramName - The parameter name to look up
Returns:
The define name
See Also:
addShaderParamDefine(java.lang.String, java.lang.String)

addShaderParamDefine

public void addShaderParamDefine(java.lang.String paramName,
                                 java.lang.String defineName)
Adds a define linked to a material parameter.

Any time the material parameter on the parent material is altered, the appropriate define on the technique will be modified as well. See the method DefineList.set(java.lang.String, com.jme3.shader.VarType, java.lang.Object) on the exact details of how the material parameter changes the define.

Parameters:
paramName - The name of the material parameter to link to.
defineName - The name of the define parameter, e.g. USE_LIGHTING

getShaderPresetDefines

public DefineList getShaderPresetDefines()
Returns the DefineList for the preset defines.

Returns:
the DefineList for the preset defines.
See Also:
addShaderPresetDefine(java.lang.String, com.jme3.shader.VarType, java.lang.Object)

addShaderPresetDefine

public void addShaderPresetDefine(java.lang.String defineName,
                                  VarType type,
                                  java.lang.Object value)
Adds a preset define.

Preset defines do not depend upon any parameters to be activated, they are always passed to the shader as long as this technique is used.

Parameters:
defineName - The name of the define parameter, e.g. USE_LIGHTING
type - The type of the define. See DefineList.set(java.lang.String, com.jme3.shader.VarType, java.lang.Object) to see why it matters.
value - The value of the define

getFragmentShaderName

public java.lang.String getFragmentShaderName()
Returns the name of the fragment shader used by the technique, or null if no fragment shader is specified.

Returns:
the name of the fragment shader to be used.

getVertexShaderName

public java.lang.String getVertexShaderName()
Returns the name of the vertex shader used by the technique, or null if no vertex shader is specified.

Returns:
the name of the vertex shader to be used.

getShaderLanguage

@Deprecated
public java.lang.String getShaderLanguage()
Deprecated. Use getVertexShaderLanguage() instead.


getFragmentShaderLanguage

public java.lang.String getFragmentShaderLanguage()
Returns the language of the fragment shader used in this technique.


getVertexShaderLanguage

public java.lang.String getVertexShaderLanguage()
Returns the language of the vertex shader used in this technique.


addWorldParam

public boolean addWorldParam(java.lang.String name)
Adds a new world parameter by the given name.

Parameters:
name - The world parameter to add.
Returns:
True if the world parameter name was found and added to the list of world parameters, false otherwise.

getWorldBindings

public java.util.List<UniformBinding> getWorldBindings()
Returns a list of world parameters that are used by this technique definition.

Returns:
The list of world parameters

write

public void write(JmeExporter ex)
           throws java.io.IOException
Specified by:
write in interface Savable
Throws:
java.io.IOException

read

public void read(JmeImporter im)
          throws java.io.IOException
Specified by:
read in interface Savable
Throws:
java.io.IOException