Skip to content

Commit 3613bfd

Browse files
authored
Merge pull request #2516 from capdevon/capdevon-AbstractShadowFilter
Refactor: AbstractShadowFilter reduce object allocations
2 parents 5193024 + 0ab5def commit 3613bfd

File tree

1 file changed

+18
-30
lines changed

1 file changed

+18
-30
lines changed

jme3-core/src/main/java/com/jme3/shadow/AbstractShadowFilter.java

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@
3232
package com.jme3.shadow;
3333

3434
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;
3935
import com.jme3.material.Material;
4036
import com.jme3.material.RenderState;
4137
import com.jme3.math.Matrix4f;
@@ -45,38 +41,38 @@
4541
import com.jme3.renderer.ViewPort;
4642
import com.jme3.renderer.queue.RenderQueue;
4743
import com.jme3.texture.FrameBuffer;
44+
import com.jme3.util.TempVars;
4845
import com.jme3.util.clone.Cloner;
4946
import 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

Comments
 (0)