Package com.jme3.post.filters
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 -
Method Summary
Modifier and TypeMethodDescriptionfloatreturns the blur scalefloatreturns the blur threshold.booleanfloatreturns the focus distancefloatreturns the focus rangeprotected com.jme3.material.Materialprotected voidinitFilter(com.jme3.asset.AssetManager assets, com.jme3.renderer.RenderManager renderManager, com.jme3.renderer.ViewPort vp, int w, int h) protected booleanvoidread(com.jme3.export.JmeImporter im) voidsetBlurScale(float f) Sets the blur amount by scaling the convolution filter up or down.voidsetBlurThreshold(float f) Sets the minimum blur factor before the convolution filter is calculated.voidsetDebugUnfocus(boolean b) Turns on/off debugging of the 'unfocus' value that is used to mix the convolution filter.voidsetFocusDistance(float f) Sets the distance at which objects are purely in focus.voidsetFocusRange(float f) Sets the range to either side of focusDistance where the objects go gradually out of focus.voidwrite(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
-
Constructor Details
-
DepthOfFieldFilter
public DepthOfFieldFilter()Creates a DepthOfField filter
-
-
Method Details
-
isRequiresDepthTexture
protected boolean isRequiresDepthTexture()- Overrides:
isRequiresDepthTexturein classcom.jme3.post.Filter
-
getMaterial
protected com.jme3.material.Material getMaterial()- Specified by:
getMaterialin classcom.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:
initFilterin classcom.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
- Specified by:
writein interfacecom.jme3.export.Savable- Overrides:
writein classcom.jme3.post.Filter- Throws:
IOException
-
read
- Specified by:
readin interfacecom.jme3.export.Savable- Overrides:
readin classcom.jme3.post.Filter- Throws:
IOException
-