Class DirectionalLightShadowFilter

All Implemented Interfaces:
Savable, JmeCloneable, Cloneable

public class DirectionalLightShadowFilter extends AbstractShadowFilter<DirectionalLightShadowRenderer>
This Filter does basically the same as a DirectionalLightShadowRenderer except it renders the post shadow pass as a fullscreen quad pass instead of a geometry pass. It's mostly faster than PssmShadowRenderer as long as you have more than about ten shadow receiving objects. The expense is the drawback that the shadow Receive mode set on spatial is ignored. So basically all and only objects that render depth in the scene receive shadows. See this post for more details http://jmonkeyengine.org/groups/general-2/forum/topic/silly-question-about-shadow-rendering/#post-191599 API is basically the same as the PssmShadowRenderer;
  • Constructor Details

    • DirectionalLightShadowFilter

      public DirectionalLightShadowFilter()
      Used for serialization. Use DirectionalLightShadowFilter#DirectionalLightShadowFilter (AssetManager assetManager, int shadowMapSize, int nbSplits) instead.
    • DirectionalLightShadowFilter

      public DirectionalLightShadowFilter(AssetManager assetManager, int shadowMapSize, int nbSplits)
      Creates a DirectionalLight shadow filter. More info on the technique at http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html
      Parameters:
      assetManager - the application's asset manager
      shadowMapSize - the size of the rendered shadowmaps (512, 1024, 2048, etcetera)
      nbSplits - the number of shadow maps rendered (More shadow maps mean better quality, fewer frames per second.)
  • Method Details

    • getLight

      public DirectionalLight getLight()
      return the light used to cast shadows
      Returns:
      the DirectionalLight
    • setLight

      public void setLight(DirectionalLight light)
      Sets the light to use to cast shadows
      Parameters:
      light - a DirectionalLight
    • getLambda

      public float getLambda()
      returns the lambda parameter
      Returns:
      lambda
      See Also:
    • setLambda

      public void setLambda(float lambda)
      Adjusts the partition of the shadow extend into shadow maps. Lambda is usually between 0 and 1. A low value gives a more linear partition, resulting in consistent shadow quality over the extend, but near shadows could look very jagged. A high value gives a more logarithmic partition, resulting in high quality for near shadows, but quality decreases rapidly with distance. The default value is 0.65 (the theoretical optimum).
      Parameters:
      lambda - the lambda value.
    • isEnabledStabilization

      public boolean isEnabledStabilization()
      returns true if stabilization is enabled
      Returns:
      true if stabilization is enabled
    • setEnabledStabilization

      public void setEnabledStabilization(boolean stabilize)
      Enables the stabilization of the shadow's edges. (default is true) This prevents shadow edges from flickering when the camera moves. However, it can lead to some loss of shadow quality in particular scenes.
      Parameters:
      stabilize - true to stabilize, false to disable stabilization
    • write

      public void write(JmeExporter ex) throws IOException
      Description copied from class: Filter
      Override this method if you want to save extra properties when the filter is saved else only basic properties of the filter will be saved This method should always begin by super.write(ex);
      Specified by:
      write in interface Savable
      Overrides:
      write in class AbstractShadowFilter<DirectionalLightShadowRenderer>
      Parameters:
      ex - the exporter (not null)
      Throws:
      IOException - from the exporter
    • read

      public void read(JmeImporter im) throws IOException
      Description copied from class: Filter
      Override this method if you want to load extra properties when the filter is loaded else only basic properties of the filter will be loaded This method should always begin by super.read(im);
      Specified by:
      read in interface Savable
      Overrides:
      read in class AbstractShadowFilter<DirectionalLightShadowRenderer>
      Throws:
      IOException