Package com.jme3.shadow
Class DirectionalLightShadowFilterVR
java.lang.Object
com.jme3.post.Filter
com.jme3.shadow.AbstractShadowFilterVR<DirectionalLightShadowRendererVR>
com.jme3.shadow.DirectionalLightShadowFilterVR
- All Implemented Interfaces:
Savable
- Direct Known Subclasses:
InstancedDirectionalShadowFilter
public class DirectionalLightShadowFilterVR
extends AbstractShadowFilterVR<DirectionalLightShadowRendererVR>
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;
-
Nested Class Summary
Nested classes/interfaces inherited from class com.jme3.post.Filter
Filter.Pass
-
Field Summary
Fields inherited from class com.jme3.shadow.AbstractShadowFilterVR
shadowRenderer, viewPort
Fields inherited from class com.jme3.post.Filter
defaultPass, enabled, material, postRenderPasses, processor
-
Constructor Summary
ConstructorDescriptionDirectionalLightShadowFilterVR
(AssetManager assetManager, int shadowMapSize, int nbSplits) Creates a DirectionalLightShadowFilter Shadow Filter More info on the technique at http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.htmlDirectionalLightShadowFilterVR
(AssetManager assetManager, int shadowMapSize, int nbSplits, String useMatDef) Creates a DirectionalLight shadow filter. -
Method Summary
Modifier and TypeMethodDescriptionfloat
returns the lambda parametergetLight()
return the light used to cast shadowsboolean
Check if stabilization is enabled.void
read
(JmeImporter im) 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);void
setEnabledStabilization
(boolean stabilize) Enables the stabilization of the shadow's edges.void
setLambda
(float lambda) Adjusts the partition of the shadow extend into shadow maps.void
setLight
(DirectionalLight light) Sets the light to use to cast shadowsvoid
write
(JmeExporter ex) 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);Methods inherited from class com.jme3.shadow.AbstractShadowFilterVR
getEdgeFilteringMode, getEdgesThickness, getMaterial, getPreShadowForcedRenderState, getShadowCompareMode, getShadowIntensity, getShadowMaterial, getShadowZExtend, getShadowZFadeLength, initFilter, isFlushQueues, isRenderBackFacesShadows, isRequiresDepthTexture, postFrame, postQueue, preFrame, setEdgeFilteringMode, setEdgesThickness, setRenderBackFacesShadows, setShadowCompareMode, setShadowIntensity, setShadowZExtend, setShadowZFadeLength
Methods inherited from class com.jme3.post.Filter
cleanup, cleanUpFilter, getDefaultPassDepthFormat, getDefaultPassTextureFormat, getName, getPostRenderPasses, getRenderedTexture, getRenderFrameBuffer, init, isEnabled, isRequiresBilinear, isRequiresSceneTexture, postFilter, setDepthTexture, setEnabled, setName, setProcessor, setRenderedTexture, setRenderFrameBuffer
-
Constructor Details
-
DirectionalLightShadowFilterVR
Creates a DirectionalLightShadowFilter Shadow Filter More info on the technique at http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html- Parameters:
assetManager
- the application asset managershadowMapSize
- the size of the rendered shadowmaps (512, 1024, 2048, etcetera)nbSplits
- the number of shadow maps rendered (More shadow maps yield better quality, fewer fps.)
-
DirectionalLightShadowFilterVR
public DirectionalLightShadowFilterVR(AssetManager assetManager, int shadowMapSize, int nbSplits, String useMatDef) 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 managershadowMapSize
- the size of the rendered shadowmaps (512, 1024, 2048, etc...)nbSplits
- the number of shadow maps rendered (More shadow maps yield better quality, fewer fps.)useMatDef
- the material to attach to this filter.
-
-
Method Details
-
getLight
return the light used to cast shadows- Returns:
- the DirectionalLight
-
setLight
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()Check if stabilization is enabled.- Returns:
true
if the stabilization is enabled andfalse
otherwise.- See Also:
-
setEnabledStabilization
public void setEnabledStabilization(boolean stabilize) Enables the stabilization of the shadow's edges. (default istrue
) 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
if the stabilization has to be enabled andfalse
otherwise.- See Also:
-
write
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 interfaceSavable
- Overrides:
write
in classAbstractShadowFilterVR<DirectionalLightShadowRendererVR>
- Parameters:
ex
- the exporter (not null)- Throws:
IOException
- from the exporter
-
read
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 interfaceSavable
- Overrides:
read
in classAbstractShadowFilterVR<DirectionalLightShadowRendererVR>
- Throws:
IOException
-