public class Material extends java.lang.Object implements CloneableSmartAsset, java.lang.Cloneable, Savable
Material describes the rendering style for a given
 Geometry.
 A material is essentially a list of parameters,
 those parameters map to uniforms which are defined in a shader.
 Setting the parameters can modify the behavior of a
 shader.
 
| Modifier and Type | Field and Description | 
|---|---|
| static int | SAVABLE_VERSION | 
| Constructor and Description | 
|---|
| Material()Do not use this constructor. | 
| Material(AssetManager contentMan,
        java.lang.String defName) | 
| Material(MaterialDef def) | 
| Modifier and Type | Method and Description | 
|---|---|
| void | clearParam(java.lang.String name)Clear a parameter from this material. | 
| Material | clone()Clones this material. | 
| boolean | contentEquals(java.lang.Object otherObj)Compares two materials and returns true if they are equal. | 
| int | contentHashCode()Works like  Object.hashCode()except it may change together with the material as the material is mutable by definition. | 
| Technique | getActiveTechnique()Returns the currently active technique. | 
| RenderState | getAdditionalRenderState()Acquire the additional  render stateto apply
 for this material. | 
| java.lang.String | getAssetName()Returns the asset key name of the asset from which this material was loaded. | 
| AssetKey | getKey()Returns the asset key that is used to track this asset for garbage
 collection. | 
| MaterialDef | getMaterialDef()Get the material definition (j3md file info) that  thismaterial is implementing. | 
| java.lang.String | getName() | 
| MatParam | getParam(java.lang.String name)Returns the parameter set on this material with the given name,
 returns  nullif the parameter is not set. | 
| java.util.Collection<MatParam> | getParams()Returns a collection of all parameters set on this material. | 
| ListMap<java.lang.String,MatParam> | getParamsMap()Returns the ListMap of all parameters set on this material. | 
| <T> T | getParamValue(java.lang.String name)Returns the current parameter's value. | 
| int | getSortId()Returns the sorting ID or sorting index for this material. | 
| MatParamTexture | getTextureParam(java.lang.String name)Returns the texture parameter set on this material with the given name,
 returns  nullif the parameter is not set. | 
| boolean | isReceivesShadows()Check if the material should receive shadows or not. | 
| boolean | isTransparent()Check if the transparent value marker is set on this material. | 
| void | preload(RenderManager renderManager,
       Geometry geometry)Preloads this material for the given render manager. | 
| void | read(JmeImporter im) | 
| void | render(Geometry geometry,
      LightList lights,
      RenderManager renderManager)Called by  RenderManagerto render the geometry by
 using this material. | 
| void | render(Geometry geom,
      RenderManager rm)Called by  RenderManagerto render the geometry by
 using this material. | 
| void | selectTechnique(java.lang.String name,
               RenderManager renderManager)Select the technique to use for rendering this material. | 
| void | setBoolean(java.lang.String name,
          boolean value)Pass a boolean to the material shader. | 
| void | setColor(java.lang.String name,
        ColorRGBA value)Pass a Color to the material shader. | 
| void | setFloat(java.lang.String name,
        float value)Pass a float to the material shader. | 
| void | setFloat(java.lang.String name,
        java.lang.Float value)Pass a float to the material shader. | 
| void | setInt(java.lang.String name,
      int value)Pass an int to the material shader. | 
| void | setKey(AssetKey key)Set by the  AssetManagerto track this asset. | 
| void | setMatrix4(java.lang.String name,
          Matrix4f value)Pass a Matrix4f to the material shader. | 
| void | setName(java.lang.String name)This method sets the name of the material. | 
| void | setParam(java.lang.String name,
        VarType type,
        java.lang.Object value)Pass a parameter to the material shader. | 
| void | setReceivesShadows(boolean receivesShadows)Set if the material should receive shadows or not. | 
| void | setShaderStorageBufferObject(java.lang.String name,
                            BufferObject value)Pass a shader storage buffer object to the material shader. | 
| void | setTexture(java.lang.String name,
          Texture value)Pass a texture to the material shader. | 
| void | setTextureParam(java.lang.String name,
               VarType type,
               Texture value)Set a texture parameter. | 
| void | setTransparent(boolean transparent)Set the transparent value marker. | 
| void | setUniformBufferObject(java.lang.String name,
                      BufferObject value)Pass an uniform buffer object to the material shader. | 
| void | setVector2(java.lang.String name,
          Vector2f value)Pass a Vector2f to the material shader. | 
| void | setVector3(java.lang.String name,
          Vector3f value)Pass a Vector3f to the material shader. | 
| void | setVector4(java.lang.String name,
          Vector4f value)Pass a Vector4f to the material shader. | 
| java.lang.String | toString() | 
| void | write(JmeExporter ex) | 
public static final int SAVABLE_VERSION
public Material(MaterialDef def)
public Material(AssetManager contentMan, java.lang.String defName)
public Material()
public java.lang.String getAssetName()
This value will be null unless this material was loaded
 from a .j3m file.
public java.lang.String getName()
public void setName(java.lang.String name)
name - the name of the materialpublic void setKey(AssetKey key)
CloneableSmartAssetAssetManager to track this asset. 
 
 Only clones of the asset has this set, the original copy that
 was loaded has this key set to null so that only the clones are tracked
 for garbage collection.setKey in interface CloneableSmartAssetkey - The AssetKey to setpublic AssetKey getKey()
CloneableSmartAssetgetKey in interface CloneableSmartAssetpublic int getSortId()
The sorting ID is used internally by the system to sort rendering of geometries. It sorted to reduce shader switches, if the shaders are equal, then it is sorted by textures.
public Material clone()
clone in interface CloneableSmartAssetclone in class java.lang.Objectpublic boolean contentEquals(java.lang.Object otherObj)
otherObj - the material to compare to this materialpublic int contentHashCode()
Object.hashCode() except it may change together with the material as the material is mutable by definition.public Technique getActiveTechnique()
 The technique is selected automatically by the RenderManager
 based on system capabilities. Users may select their own
 technique by using
 selectTechnique(java.lang.String, com.jme3.renderer.RenderManager).
selectTechnique(java.lang.String, com.jme3.renderer.RenderManager)public boolean isTransparent()
setTransparent(boolean)public void setTransparent(boolean transparent)
This value is merely a marker, by itself it does nothing.
 Generally model loaders will use this marker to indicate further
 up that the material is transparent and therefore any geometries
 using it should be put into the transparent
 bucket.
transparent - the transparent value marker.public boolean isReceivesShadows()
setReceivesShadows(boolean)public void setReceivesShadows(boolean receivesShadows)
This value is merely a marker, by itself it does nothing.
 Generally model loaders will use this marker to indicate
 the material should receive shadows and therefore any
 geometries using it should have RenderQueue.ShadowMode.Receive set
 on them.
receivesShadows - if the material should receive shadows or not.public RenderState getAdditionalRenderState()
render state to apply
 for this material.
 The first call to this method will create an additional render state which can be modified by the user to apply any render states in addition to the ones used by the renderer. Only render states which are modified in the additional render state will be applied.
public MaterialDef getMaterialDef()
this
 material is implementing.public MatParam getParam(java.lang.String name)
null if the parameter is not set.name - The parameter name to look up.public <T> T getParamValue(java.lang.String name)
name - the parameter name to look up.public MatParamTexture getTextureParam(java.lang.String name)
null if the parameter is not set.name - The parameter name to look up.public java.util.Collection<MatParam> getParams()
setParam(java.lang.String, com.jme3.shader.VarType, java.lang.Object)public ListMap<java.lang.String,MatParam> getParamsMap()
setParam(java.lang.String, com.jme3.shader.VarType, java.lang.Object)public void setParam(java.lang.String name,
                     VarType type,
                     java.lang.Object value)
name - the name of the parameter defined in the material definition (j3md)type - the type of the parameter VarTypevalue - the value of the parameterpublic void clearParam(java.lang.String name)
name - the name of the parameter to clearpublic void setTextureParam(java.lang.String name,
                            VarType type,
                            Texture value)
name - The name of the parametertype - The variable type VarTypevalue - The texture value of the parameter.java.lang.IllegalArgumentException - is value is nullpublic void setTexture(java.lang.String name,
                       Texture value)
name - the name of the texture defined in the material definition
 (j3md) (for example Texture for Lighting.j3md)value - the Texture object previously loaded by the asset managerpublic void setMatrix4(java.lang.String name,
                       Matrix4f value)
name - the name of the matrix defined in the material definition (j3md)value - the Matrix4f objectpublic void setBoolean(java.lang.String name,
                       boolean value)
name - the name of the boolean defined in the material definition (j3md)value - the boolean valuepublic void setFloat(java.lang.String name,
                     float value)
name - the name of the float defined in the material definition (j3md)value - the float valuepublic void setFloat(java.lang.String name,
                     java.lang.Float value)
name - the name of the float defined in the material definition (j3md)value - the float valuepublic void setInt(java.lang.String name,
                   int value)
name - the name of the int defined in the material definition (j3md)value - the int valuepublic void setColor(java.lang.String name,
                     ColorRGBA value)
name - the name of the color defined in the material definition (j3md)value - the ColorRGBA valuepublic void setUniformBufferObject(java.lang.String name,
                                   BufferObject value)
name - the name of the buffer object defined in the material definition (j3md).value - the buffer object.public void setShaderStorageBufferObject(java.lang.String name,
                                         BufferObject value)
name - the name of the buffer object defined in the material definition (j3md).value - the buffer object.public void setVector2(java.lang.String name,
                       Vector2f value)
name - the name of the Vector2f defined in the material definition (j3md)value - the Vector2f valuepublic void setVector3(java.lang.String name,
                       Vector3f value)
name - the name of the Vector3f defined in the material definition (j3md)value - the Vector3f valuepublic void setVector4(java.lang.String name,
                       Vector4f value)
name - the name of the Vector4f defined in the material definition (j3md)value - the Vector4f valuepublic void selectTechnique(java.lang.String name,
                            RenderManager renderManager)
 Any candidate technique for selection (either default or named)
 must be verified to be compatible with the system, for that, the
 renderManager is queried for capabilities.
name - The name of the technique to select, pass
 TechniqueDef.DEFAULT_TECHNIQUE_NAME to select one of the default
 techniques.renderManager - The render manager
 to query for capabilities.java.lang.IllegalArgumentException - If no technique exists with the given
 name.java.lang.UnsupportedOperationException - If no candidate technique supports
 the system capabilities.public void preload(RenderManager renderManager, Geometry geometry)
Preloading the material can ensure that when the material is first used for rendering, there won't be any delay since the material has been already been setup for rendering.
renderManager - The render manager to preload forpublic void render(Geometry geometry, LightList lights, RenderManager renderManager)
RenderManager to render the geometry by
 using this material.
 The material is rendered as follows:
Material.selectTechnique(),
 or the first default technique that the renderer supports
 (based on the technique's requested rendering capabilities)Technique.makeCurrent().
 If the technique wants to use a shader to render the model, it should load it at this part -
 the shader should have all the proper defines as declared in the technique definition,
 including those that are bound to material parameters.
 The technique can re-use the shader from the last frame if
 no changes to the defines occurred.RenderState to use for rendering. The render states are
 applied in this order (later RenderStates override earlier RenderStates):Technique Definition's RenderState
 - i.e. specific renderstate that is required for the shader.Material Instance Additional RenderState
 - i.e. ad-hoc renderstate set per modelRenderManager's Forced RenderState
 - i.e. renderstate requested by a SceneProcessor or
 post-processing filter.UniformBindingManager is used for this task.single pass light mode fills the shader's light uniform arrays
 with the first 4 lights and renders the model once.multi pass light mode light mode renders the model multiple times,
 for the first light it is rendered opaque, on subsequent lights it is
 rendered with alpha-additive blending and depth writing disabled.GLRenderer interface):geometry - The geometry to renderlights - Presorted and filtered light list to use for renderingrenderManager - The render manager requesting the renderingpublic void render(Geometry geom, RenderManager rm)
RenderManager to render the geometry by
 using this material.
 Note that this version of the render method
 does not perform light filtering.geom - The geometry to renderrm - The render manager requesting the renderingpublic void write(JmeExporter ex) throws java.io.IOException
public java.lang.String toString()
toString in class java.lang.Objectpublic void read(JmeImporter im) throws java.io.IOException