Class DepthOfFieldFilter

java.lang.Object
com.jme3.post.Filter
com.jme3.post.filters.DepthOfFieldFilter
All Implemented Interfaces:
com.jme3.export.Savable

public class DepthOfFieldFilter extends com.jme3.post.Filter
A post-processing filter that performs a depth range blur using a scaled convolution filter.
Author:
Paul Speed
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.jme3.post.Filter

    com.jme3.post.Filter.Pass
  • Field Summary

    Fields inherited from class com.jme3.post.Filter

    defaultPass, enabled, material, postRenderPasses, processor
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a DepthOfField filter
  • Method Summary

    Modifier and Type
    Method
    Description
    float
    returns the blur scale
    float
    returns the blur threshold.
    boolean
     
    float
    returns the focus distance
    float
    returns the focus range
    protected com.jme3.material.Material
     
    protected void
    initFilter(com.jme3.asset.AssetManager assets, com.jme3.renderer.RenderManager renderManager, com.jme3.renderer.ViewPort vp, int w, int h)
     
    protected boolean
     
    void
    read(com.jme3.export.JmeImporter im)
     
    void
    setBlurScale(float f)
    Sets the blur amount by scaling the convolution filter up or down.
    void
    Sets the minimum blur factor before the convolution filter is calculated.
    void
    setDebugUnfocus(boolean b)
    Turns on/off debugging of the 'unfocus' value that is used to mix the convolution filter.
    void
    Sets the distance at which objects are purely in focus.
    void
    setFocusRange(float f)
    Sets the range to either side of focusDistance where the objects go gradually out of focus.
    void
    write(com.jme3.export.JmeExporter ex)
     

    Methods inherited from class com.jme3.post.Filter

    cleanup, cleanUpFilter, getDefaultPassDepthFormat, getDefaultPassTextureFormat, getName, getPostRenderPasses, getRenderedTexture, getRenderFrameBuffer, init, isEnabled, isRequiresBilinear, isRequiresSceneTexture, postFilter, postFrame, postQueue, preFrame, setDepthTexture, setEnabled, setName, setProcessor, setRenderedTexture, setRenderFrameBuffer

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DepthOfFieldFilter

      public DepthOfFieldFilter()
      Creates a DepthOfField filter
  • Method Details

    • isRequiresDepthTexture

      protected boolean isRequiresDepthTexture()
      Overrides:
      isRequiresDepthTexture in class com.jme3.post.Filter
    • getMaterial

      protected com.jme3.material.Material getMaterial()
      Specified by:
      getMaterial in class com.jme3.post.Filter
    • initFilter

      protected void initFilter(com.jme3.asset.AssetManager assets, com.jme3.renderer.RenderManager renderManager, com.jme3.renderer.ViewPort vp, int w, int h)
      Specified by:
      initFilter in class com.jme3.post.Filter
    • setFocusDistance

      public void setFocusDistance(float f)
      Sets the distance at which objects are purely in focus.
      Parameters:
      f - the desired distance (in world units, default=50)
    • getFocusDistance

      public float getFocusDistance()
      returns the focus distance
      Returns:
      the distance
    • setFocusRange

      public void setFocusRange(float f)
      Sets the range to either side of focusDistance where the objects go gradually out of focus. Less than focusDistance - focusRange and greater than focusDistance + focusRange, objects are maximally "blurred".
      Parameters:
      f - the desired half extent (in world units, default=10)
    • getFocusRange

      public float getFocusRange()
      returns the focus range
      Returns:
      the distance
    • setBlurScale

      public void setBlurScale(float f)
      Sets the blur amount by scaling the convolution filter up or down. A value of 1 (the default) performs a sparse 5x5 evenly distributed convolution at pixel level accuracy. Higher values skip more pixels, and so on until you are no longer blurring the image but simply hashing it. The sparse convolution is as follows: %MINIFYHTMLc3d0cd9fab65de6875a381fd3f83e1b338%* Where 'x' is the texel being modified. Setting blur scale higher than 1 spaces the samples out.
      Parameters:
      f - the desired filter scale (default=1)
    • getBlurScale

      public float getBlurScale()
      returns the blur scale
      Returns:
      the scale
    • setBlurThreshold

      public void setBlurThreshold(float f)
      Sets the minimum blur factor before the convolution filter is calculated. The default is 0.2 which means if the "unfocus" amount is less than 0.2 (where 0 is no blur and 1.0 is full blurScale) then no blur will be applied at all. Depending on the GPU implementation, this may be an optimization since it uses branching to skip the expensive convolution filter.

      In scenes where the focus distance is close (like 0) and the focus range is relatively large, this threshold will remove some subtlety in the near-camera blurring and should be set smaller than the default or to 0 to disable completely. Sometimes that cut-off is desired if mid-to-far field unfocusing is all that is desired.

      Parameters:
      f - the desired blur factor (default=0.2)
    • getBlurThreshold

      public float getBlurThreshold()
      returns the blur threshold.
      Returns:
      the threshold
    • setDebugUnfocus

      public void setDebugUnfocus(boolean b)
      Turns on/off debugging of the 'unfocus' value that is used to mix the convolution filter. When this is on, the 'unfocus' value is rendered as gray scale. This can be used to more easily visualize where in your view the focus is centered and how steep the gradient/cutoff is, etcetera.
      Parameters:
      b - true to enable debugging, false to disable it (default=false)
    • getDebugUnfocus

      public boolean getDebugUnfocus()
    • write

      public void write(com.jme3.export.JmeExporter ex) throws IOException
      Specified by:
      write in interface com.jme3.export.Savable
      Overrides:
      write in class com.jme3.post.Filter
      Throws:
      IOException
    • read

      public void read(com.jme3.export.JmeImporter im) throws IOException
      Specified by:
      read in interface com.jme3.export.Savable
      Overrides:
      read in class com.jme3.post.Filter
      Throws:
      IOException