Package com.jme3.shadow
Class DirectionalLightShadowRendererVR
java.lang.Object
com.jme3.shadow.AbstractShadowRendererVR
com.jme3.shadow.DirectionalLightShadowRendererVR
- All Implemented Interfaces:
- Savable,- SceneProcessor
DirectionalLightShadowRenderer renderer use Parallel Split Shadow Mapping
 technique (pssm)
It splits the view frustum in several parts and compute a shadow map for each one.
splits are distributed so that the closer they are from the camera, the smaller they are to maximize the resolution used of the shadow map.
This results in a better quality shadow than standard shadow mapping.
for more information on this read http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html
It splits the view frustum in several parts and compute a shadow map for each one.
splits are distributed so that the closer they are from the camera, the smaller they are to maximize the resolution used of the shadow map.
This results in a better quality shadow than standard shadow mapping.
for more information on this read http://http.developer.nvidia.com/GPUGems3/gpugems3_ch10.html
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected floatprotected DirectionalLightprotected Vector3f[]protected Cameraprotected ColorRGBAprotected float[]Fields inherited from class com.jme3.shadow.AbstractShadowRendererVRassetManager, debug, dispPic, dummyTex, edgeFilteringMode, edgesThickness, fadeInfo, fadeLength, forcedRenderState, frustumCam, lightReceivers, lightViewProjectionsMatrices, matCache, nbShadowMaps, needsfallBackMaterial, postshadowMat, postTechniqueName, preshadowMat, profiler, renderBackFacesShadows, renderManager, shadowCompareMode, shadowFB, shadowIntensity, shadowMapOccluders, shadowMaps, shadowMapSize, skipPostPass, viewPort, zFarOverride
- 
Constructor SummaryConstructorsConstructorDescriptionUsed for serialization use DirectionalLightShadowRenderer#DirectionalLightShadowRenderer(AssetManager assetManager, int shadowMapSize, int nbSplits)DirectionalLightShadowRendererVR(AssetManager assetManager, int shadowMapSize, int nbSplits) Creates a DirectionalLight shadow renderer.
- 
Method SummaryModifier and TypeMethodDescriptionprotected booleancheckCulling(Camera viewCam) Directional light is always in the view frustumprotected voidclearMaterialParameters(Material material) This method is called once per frame and is responsible for clearing any material parameters that subclasses may need to clear on the post material.protected voiddoDisplayFrustumDebug(int shadowMapIndex) responsible for displaying the frustum of the shadow cam for debug purposefloatreturns the lambda parameter see #setLambda(float lambda)getLight()return the light used to cast shadowsprotected GeometryListgetOccludersToRender(int shadowMapIndex, GeometryList shadowMapOccluders) Returns a subclass-specific geometryList containing the occluders to be rendered in the shadow mapprotected voidgetReceivers(GeometryList lightReceivers) protected CameragetShadowCam(int shadowMapIndex) return the shadow camera to use for rendering the shadow map according the given indexprotected voiddelegates the initialization of the frustum cam to child renderersbooleanCheck if the stabilization is enabled.voidread(JmeImporter im) De-serialize this instance, for example when loading from a J3O file.voidsetEnabledStabilization(boolean stabilize) Enables the stabilization of the shadow's edges.voidsetLambda(float lambda) Adjusts the partition of the shadow extend into shadow maps.voidsetLight(DirectionalLight light) Sets the light to use to cast shadowsprotected voidsetMaterialParameters(Material material) This method is called once per frame and is responsible for setting any material parameters that subclasses may need to set on the post material.protected voidupdateShadowCams(Camera viewCam) Invoked once per frame to update the shadow cams according to the light view.voidwrite(JmeExporter ex) Serialize this instance, for example when saving to a J3O file.Methods inherited from class com.jme3.shadow.AbstractShadowRendererVRcleanup, createFrustum, displayDebug, displayFrustum, displayShadowMap, getEdgeFilteringMode, getEdgesThickness, getPreShadowForcedRenderState, getShadowCompareMode, getShadowIntensity, getShadowZExtend, getShadowZFadeLength, initForcedRenderState, initialize, isFlushQueues, isInitialized, isRenderBackFacesShadows, postFrame, postQueue, preFrame, renderShadowMap, reshape, setEdgeFilteringMode, setEdgesThickness, setPostShadowMaterial, setPostShadowParams, setProfiler, setRenderBackFacesShadows, setShadowCompareMode, setShadowIntensity, setShadowZExtend, setShadowZFadeLengthMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.jme3.post.SceneProcessorrescale
- 
Field Details- 
lambdaprotected float lambda
- 
shadowCam
- 
splits
- 
splitsArrayprotected float[] splitsArray
- 
light
- 
points
 
- 
- 
Constructor Details- 
DirectionalLightShadowRendererVRpublic DirectionalLightShadowRendererVR()Used for serialization use DirectionalLightShadowRenderer#DirectionalLightShadowRenderer(AssetManager assetManager, int shadowMapSize, int nbSplits)
- 
DirectionalLightShadowRendererVRCreates a DirectionalLight shadow renderer. 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 yield better quality, fewer fps.)
 
 
- 
- 
Method Details- 
initFrustumCamprotected void initFrustumCam()Description copied from class:AbstractShadowRendererVRdelegates the initialization of the frustum cam to child renderers- Specified by:
- initFrustumCamin class- AbstractShadowRendererVR
 
- 
getLightreturn the light used to cast shadows- Returns:
- the DirectionalLight
 
- 
setLightSets the light to use to cast shadows- Parameters:
- light- a DirectionalLight
 
- 
updateShadowCamsDescription copied from class:AbstractShadowRendererVRInvoked once per frame to update the shadow cams according to the light view.- Specified by:
- updateShadowCamsin class- AbstractShadowRendererVR
- Parameters:
- viewCam- the scene cam
 
- 
getOccludersToRenderDescription copied from class:AbstractShadowRendererVRReturns a subclass-specific geometryList containing the occluders to be rendered in the shadow map- Specified by:
- getOccludersToRenderin class- AbstractShadowRendererVR
- Parameters:
- shadowMapIndex- the index of the shadow map being rendered
- shadowMapOccluders- the list of occluders
- Returns:
- a list of occluders
 
- 
getReceivers- Specified by:
- getReceiversin class- AbstractShadowRendererVR
 
- 
getShadowCamDescription copied from class:AbstractShadowRendererVRreturn the shadow camera to use for rendering the shadow map according the given index- Specified by:
- getShadowCamin class- AbstractShadowRendererVR
- Parameters:
- shadowMapIndex- the index of the shadow map being rendered
- Returns:
- the shadowCam
 
- 
doDisplayFrustumDebugprotected void doDisplayFrustumDebug(int shadowMapIndex) Description copied from class:AbstractShadowRendererVRresponsible for displaying the frustum of the shadow cam for debug purpose- Overrides:
- doDisplayFrustumDebugin class- AbstractShadowRendererVR
 
- 
setMaterialParametersDescription copied from class:AbstractShadowRendererVRThis method is called once per frame and is responsible for setting any material parameters that subclasses may need to set on the post material.- Specified by:
- setMaterialParametersin class- AbstractShadowRendererVR
- Parameters:
- material- the material to use for the post shadow pass
 
- 
clearMaterialParametersDescription copied from class:AbstractShadowRendererVRThis method is called once per frame and is responsible for clearing any material parameters that subclasses may need to clear on the post material.- Specified by:
- clearMaterialParametersin class- AbstractShadowRendererVR
- Parameters:
- material- the material that was used for the post shadow pass
 
- 
getLambdapublic float getLambda()returns the lambda parameter see #setLambda(float lambda)- Returns:
- lambda
 
- 
setLambdapublic 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.
 
- 
isEnabledStabilizationpublic boolean isEnabledStabilization()Check if the stabilization is enabled.- Returns:
- trueif stabilization is enabled and- falseotherwise.
 
- 
setEnabledStabilizationpublic 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-- trueif stabilization has to be enabled and- falseotherwise.
 
- 
readDescription copied from class:AbstractShadowRendererVRDe-serialize this instance, for example when loading from a J3O file.- Specified by:
- readin interface- Savable
- Overrides:
- readin class- AbstractShadowRendererVR
- Parameters:
- im- importer (not null)
- Throws:
- IOException
 
- 
writeDescription copied from class:AbstractShadowRendererVRSerialize this instance, for example when saving to a J3O file.- Specified by:
- writein interface- Savable
- Overrides:
- writein class- AbstractShadowRendererVR
- Parameters:
- ex- exporter (not null)
- Throws:
- IOException
 
- 
checkCullingDirectional light is always in the view frustum- Specified by:
- checkCullingin class- AbstractShadowRendererVR
- Parameters:
- viewCam-
- Returns:
- true
 
 
-