3232package com .jme3 .shadow ;
3333
3434import com .jme3 .asset .AssetManager ;
35- import com .jme3 .export .InputCapsule ;
36- import com .jme3 .export .JmeExporter ;
37- import com .jme3 .export .JmeImporter ;
38- import com .jme3 .export .OutputCapsule ;
3935import com .jme3 .material .Material ;
4036import com .jme3 .material .RenderState ;
4137import com .jme3 .math .Matrix4f ;
4541import com .jme3 .renderer .ViewPort ;
4642import com .jme3 .renderer .queue .RenderQueue ;
4743import com .jme3 .texture .FrameBuffer ;
44+ import com .jme3 .util .TempVars ;
4845import com .jme3 .util .clone .Cloner ;
4946import com .jme3 .util .clone .JmeCloneable ;
5047
51- import java .io .IOException ;
52-
5348/**
5449 * Generic abstract filter that holds common implementations for the different
5550 * shadow filters
5651 *
5752 * @author Rémy Bouquet aka Nehon
5853 */
59- public abstract class AbstractShadowFilter <T extends AbstractShadowRenderer > extends Filter implements Cloneable , JmeCloneable {
54+ public abstract class AbstractShadowFilter <T extends AbstractShadowRenderer > extends Filter implements JmeCloneable {
6055
6156 protected T shadowRenderer ;
6257 protected ViewPort viewPort ;
6358
59+ private final Vector4f tempVec4 = new Vector4f ();
60+ private final Matrix4f tempMat4 = new Matrix4f ();
61+
6462 /**
6563 * For serialization only. Do not use.
6664 */
6765 protected AbstractShadowFilter () {
6866 }
69-
67+
7068 /**
71- * Abstract class constructor
69+ * Creates an AbstractShadowFilter. Subclasses invoke this constructor.
7270 *
73- * @param manager the application asset manager
74- * @param shadowMapSize the size of the rendered shadowmaps (512,1024,2048,
75- * etc...)
76- * @param shadowRenderer the shadowRenderer to use for this Filter
71+ * @param assetManager The application's asset manager.
72+ * @param shadowMapSize The size of the rendered shadow maps (e.g., 512, 1024, 2048).
73+ * @param shadowRenderer The shadowRenderer to use for this Filter
7774 */
78- @ SuppressWarnings ("all" )
79- protected AbstractShadowFilter (AssetManager manager , int shadowMapSize , T shadowRenderer ) {
75+ protected AbstractShadowFilter (AssetManager assetManager , int shadowMapSize , T shadowRenderer ) {
8076 super ("Post Shadow" );
8177 this .shadowRenderer = shadowRenderer ;
8278 // this is legacy setting for shadows with backface shadows
@@ -93,18 +89,21 @@ protected boolean isRequiresDepthTexture() {
9389 return true ;
9490 }
9591
92+ /**
93+ * @deprecated Use {@link #getMaterial()} instead.
94+ * @return The Material used by this filter.
95+ */
96+ @ Deprecated
9697 public Material getShadowMaterial () {
9798 return material ;
9899 }
99100
100- Vector4f tmpv = new Vector4f ();
101-
102101 @ Override
103102 protected void preFrame (float tpf ) {
104103 shadowRenderer .preFrame (tpf );
105- material .setMatrix4 ("ViewProjectionMatrixInverse" , viewPort .getCamera ().getViewProjectionMatrix ().invert ());
106104 Matrix4f m = viewPort .getCamera ().getViewProjectionMatrix ();
107- material .setVector4 ("ViewProjectionMatrixRow2" , tmpv .set (m .m20 , m .m21 , m .m22 , m .m23 ));
105+ material .setMatrix4 ("ViewProjectionMatrixInverse" , tempMat4 .set (m ).invertLocal ());
106+ material .setVector4 ("ViewProjectionMatrixRow2" , tempVec4 .set (m .m20 , m .m21 , m .m22 , m .m23 ));
108107 }
109108
110109 @ Override
@@ -337,15 +336,4 @@ public void cloneFields(final Cloner cloner, final Object original) {
337336 shadowRenderer .setPostShadowMaterial (material );
338337 }
339338
340- @ Override
341- public void write (JmeExporter ex ) throws IOException {
342- super .write (ex );
343- OutputCapsule oc = ex .getCapsule (this );
344- }
345-
346- @ Override
347- public void read (JmeImporter im ) throws IOException {
348- super .read (im );
349- InputCapsule ic = im .getCapsule (this );
350- }
351339}
0 commit comments