32
32
package com .jme3 .shadow ;
33
33
34
34
import 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 ;
39
35
import com .jme3 .material .Material ;
40
36
import com .jme3 .material .RenderState ;
41
37
import com .jme3 .math .Matrix4f ;
45
41
import com .jme3 .renderer .ViewPort ;
46
42
import com .jme3 .renderer .queue .RenderQueue ;
47
43
import com .jme3 .texture .FrameBuffer ;
44
+ import com .jme3 .util .TempVars ;
48
45
import com .jme3 .util .clone .Cloner ;
49
46
import com .jme3 .util .clone .JmeCloneable ;
50
47
51
- import java .io .IOException ;
52
-
53
48
/**
54
49
* Generic abstract filter that holds common implementations for the different
55
50
* shadow filters
56
51
*
57
52
* @author Rémy Bouquet aka Nehon
58
53
*/
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 {
60
55
61
56
protected T shadowRenderer ;
62
57
protected ViewPort viewPort ;
63
58
59
+ private final Vector4f tempVec4 = new Vector4f ();
60
+ private final Matrix4f tempMat4 = new Matrix4f ();
61
+
64
62
/**
65
63
* For serialization only. Do not use.
66
64
*/
67
65
protected AbstractShadowFilter () {
68
66
}
69
-
67
+
70
68
/**
71
- * Abstract class constructor
69
+ * Creates an AbstractShadowFilter. Subclasses invoke this constructor.
72
70
*
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
77
74
*/
78
- @ SuppressWarnings ("all" )
79
- protected AbstractShadowFilter (AssetManager manager , int shadowMapSize , T shadowRenderer ) {
75
+ protected AbstractShadowFilter (AssetManager assetManager , int shadowMapSize , T shadowRenderer ) {
80
76
super ("Post Shadow" );
81
77
this .shadowRenderer = shadowRenderer ;
82
78
// this is legacy setting for shadows with backface shadows
@@ -93,18 +89,21 @@ protected boolean isRequiresDepthTexture() {
93
89
return true ;
94
90
}
95
91
92
+ /**
93
+ * @deprecated Use {@link #getMaterial()} instead.
94
+ * @return The Material used by this filter.
95
+ */
96
+ @ Deprecated
96
97
public Material getShadowMaterial () {
97
98
return material ;
98
99
}
99
100
100
- Vector4f tmpv = new Vector4f ();
101
-
102
101
@ Override
103
102
protected void preFrame (float tpf ) {
104
103
shadowRenderer .preFrame (tpf );
105
- material .setMatrix4 ("ViewProjectionMatrixInverse" , viewPort .getCamera ().getViewProjectionMatrix ().invert ());
106
104
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 ));
108
107
}
109
108
110
109
@ Override
@@ -337,15 +336,4 @@ public void cloneFields(final Cloner cloner, final Object original) {
337
336
shadowRenderer .setPostShadowMaterial (material );
338
337
}
339
338
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
- }
351
339
}
0 commit comments