Class SSAOFilter

java.lang.Object
com.jme3.post.Filter
com.jme3.post.ssao.SSAOFilter
All Implemented Interfaces:
com.jme3.export.Savable

public class SSAOFilter extends com.jme3.post.Filter
SSAO stands for screen space ambient occlusion It's a technique that fakes ambient lighting by computing shadows that nearby objects would cast on each other. under the effect of an ambient light more info on this in this blog post http://jmonkeyengine.org/2010/08/16/screen-space-ambient-occlusion-for-jmonkeyengine-3-0/
Author:
Rémy Bouquet aka Nehon
  • 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
    Create a Screen Space Ambient Occlusion Filter
    SSAOFilter(float sampleRadius, float intensity, float scale, float bias)
    Create a Screen Space Ambient Occlusion Filter
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    cleanUpFilter(com.jme3.renderer.Renderer r)
     
    float
    Returns the bias value used in the SSAO calculation.
    float
    Returns the ambient occlusion intensity.
    protected com.jme3.material.Material
     
    float
    Returns the sample radius used in the SSAO calculation.
    float
    Returns the scale value used in the SSAO calculation.
    protected void
    initFilter(com.jme3.asset.AssetManager assetManager, com.jme3.renderer.RenderManager renderManager, com.jme3.renderer.ViewPort vp, int w, int h)
     
    boolean
    Checks if approximate normals are being used for SSAO calculation.
    protected boolean
     
    boolean
    debugging only, will be removed
    boolean
    debugging only, will be removed
    protected void
    postQueue(com.jme3.renderer.queue.RenderQueue queue)
     
    void
    read(com.jme3.export.JmeImporter im)
     
    void
    setApproximateNormals(boolean approximateNormals)
    Sets whether to use approximate normals for the SSAO calculation.
    void
    setBias(float bias)
    Sets the width of the occlusion cone considered by the occludee.
    void
    setIntensity(float intensity)
    Sets the ambient occlusion intensity.
    void
    setSampleRadius(float sampleRadius)
    Sets the radius of the area where random samples will be picked for SSAO.
    void
    setScale(float scale)
    Sets the distance between occluders and occludee for SSAO.
    void
    setUseAo(boolean useAo)
    debugging only, will be removed
    void
    setUseOnlyAo(boolean useOnlyAo)
    debugging only, will be removed
    void
    write(com.jme3.export.JmeExporter ex)
     

    Methods inherited from class com.jme3.post.Filter

    cleanup, getDefaultPassDepthFormat, getDefaultPassTextureFormat, getName, getPostRenderPasses, getRenderedTexture, getRenderFrameBuffer, init, isEnabled, isRequiresBilinear, isRequiresSceneTexture, postFilter, postFrame, 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

    • SSAOFilter

      public SSAOFilter()
      Create a Screen Space Ambient Occlusion Filter
    • SSAOFilter

      public SSAOFilter(float sampleRadius, float intensity, float scale, float bias)
      Create a Screen Space Ambient Occlusion Filter
      Parameters:
      sampleRadius - The radius of the area where random samples will be picked. default 5.1f
      intensity - intensity of the resulting AO. default 1.5f
      scale - distance between occluders and occludee. default 0.2f
      bias - the width of the occlusion cone considered by the occludee. default 0.1f
  • Method Details

    • isRequiresDepthTexture

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

      protected void postQueue(com.jme3.renderer.queue.RenderQueue queue)
      Overrides:
      postQueue 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 assetManager, com.jme3.renderer.RenderManager renderManager, com.jme3.renderer.ViewPort vp, int w, int h)
      Specified by:
      initFilter in class com.jme3.post.Filter
    • cleanUpFilter

      protected void cleanUpFilter(com.jme3.renderer.Renderer r)
      Overrides:
      cleanUpFilter in class com.jme3.post.Filter
    • getBias

      public float getBias()
      Returns the bias value used in the SSAO calculation.
      Returns:
      The bias value.
      See Also:
    • setBias

      public void setBias(float bias)
      Sets the width of the occlusion cone considered by the occludee. A higher bias means a wider cone, resulting in less self-occlusion.
      Parameters:
      bias - The desired bias value (default: 0.1f).
    • getIntensity

      public float getIntensity()
      Returns the ambient occlusion intensity.
      Returns:
      The intensity value.
    • setIntensity

      public void setIntensity(float intensity)
      Sets the ambient occlusion intensity. A higher intensity makes the ambient occlusion effect more pronounced.
      Parameters:
      intensity - The desired intensity (default: 1.5f).
    • getSampleRadius

      public float getSampleRadius()
      Returns the sample radius used in the SSAO calculation.
      Returns:
      The sample radius.
      See Also:
    • setSampleRadius

      public void setSampleRadius(float sampleRadius)
      Sets the radius of the area where random samples will be picked for SSAO. A larger radius considers more distant occluders.
      Parameters:
      sampleRadius - The desired radius (default: 5.1f).
    • getScale

      public float getScale()
      Returns the scale value used in the SSAO calculation.
      Returns:
      The scale value.
      See Also:
    • setScale

      public void setScale(float scale)
      Sets the distance between occluders and occludee for SSAO. This essentially controls the "thickness" of the ambient occlusion.
      Parameters:
      scale - The desired distance (default: 0.2f).
    • setApproximateNormals

      public void setApproximateNormals(boolean approximateNormals)
      Sets whether to use approximate normals for the SSAO calculation. If `true`, normals are derived from the depth buffer. If `false`, a separate normal pass is rendered.
      Parameters:
      approximateNormals - `true` to use approximate normals, `false` to use a normal pass.
    • isApproximateNormals

      public boolean isApproximateNormals()
      Checks if approximate normals are being used for SSAO calculation.
      Returns:
      `true` if approximate normals are used, `false` otherwise.
    • isUseAo

      public boolean isUseAo()
      debugging only, will be removed
      Returns:
      true if using ambient occlusion
    • setUseAo

      public void setUseAo(boolean useAo)
      debugging only, will be removed
      Parameters:
      useAo - true to enable, false to disable (default=true)
    • isUseOnlyAo

      public boolean isUseOnlyAo()
      debugging only, will be removed
      Returns:
      useOnlyAo
    • setUseOnlyAo

      public void setUseOnlyAo(boolean useOnlyAo)
      debugging only, will be removed
      Parameters:
      useOnlyAo - true to enable, false to disable (default=false)
    • 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