Removed the redundant camera.update() calls.
Switched many of the lists to SafeArrayList to avoid per frame iterator allocations.
This commit is contained in:
parent
5d6d2b9bd7
commit
852ae28605
@ -40,6 +40,7 @@ import com.jme3.texture.FrameBuffer;
|
||||
import com.jme3.texture.Image.Format;
|
||||
import com.jme3.texture.Texture2D;
|
||||
import com.jme3.ui.Picture;
|
||||
import com.jme3.util.SafeArrayList;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@ -62,7 +63,7 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
private FrameBuffer renderFrameBuffer;
|
||||
private Texture2D filterTexture;
|
||||
private Texture2D depthTexture;
|
||||
private List<Filter> filters = new ArrayList<Filter>();
|
||||
private SafeArrayList<Filter> filters = new SafeArrayList<Filter>(Filter.class);
|
||||
private AssetManager assetManager;
|
||||
private Picture fsQuad;
|
||||
private boolean computeDepth = false;
|
||||
@ -185,7 +186,10 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
if (buff == outputBuffer) {
|
||||
viewPort.getCamera().resize(originalWidth, originalHeight, false);
|
||||
viewPort.getCamera().setViewPort(left, right, bottom, top);
|
||||
viewPort.getCamera().update();
|
||||
// update is redundant because resize and setViewPort will both
|
||||
// run the appropriate (and same) onXXXChange methods.
|
||||
// Also, update() updates some things that don't need to be updated.
|
||||
//viewPort.getCamera().update();
|
||||
renderManager.setCamera( viewPort.getCamera(), false);
|
||||
if (mat.getAdditionalRenderState().isDepthWrite()) {
|
||||
mat.getAdditionalRenderState().setDepthTest(false);
|
||||
@ -194,7 +198,10 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
}else{
|
||||
viewPort.getCamera().resize(buff.getWidth(), buff.getHeight(), false);
|
||||
viewPort.getCamera().setViewPort(0, 1, 0, 1);
|
||||
viewPort.getCamera().update();
|
||||
// update is redundant because resize and setViewPort will both
|
||||
// run the appropriate (and same) onXXXChange methods.
|
||||
// Also, update() updates some things that don't need to be updated.
|
||||
//viewPort.getCamera().update();
|
||||
renderManager.setCamera( viewPort.getCamera(), false);
|
||||
mat.getAdditionalRenderState().setDepthTest(true);
|
||||
mat.getAdditionalRenderState().setDepthWrite(true);
|
||||
@ -216,8 +223,7 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
|
||||
public void postQueue(RenderQueue rq) {
|
||||
|
||||
for (Iterator<Filter> it = filters.iterator(); it.hasNext();) {
|
||||
Filter filter = it.next();
|
||||
for (Filter filter : filters.getArray()) {
|
||||
if (filter.isEnabled()) {
|
||||
filter.postQueue(rq);
|
||||
}
|
||||
@ -330,8 +336,7 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
}
|
||||
}
|
||||
|
||||
for (Iterator<Filter> it = filters.iterator(); it.hasNext();) {
|
||||
Filter filter = it.next();
|
||||
for (Filter filter : filters.getArray()) {
|
||||
if (filter.isEnabled()) {
|
||||
filter.preFrame(tpf);
|
||||
}
|
||||
@ -392,7 +397,7 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
if(renderFrameBufferMS != null){
|
||||
renderFrameBufferMS.dispose();
|
||||
}
|
||||
for (Filter filter : filters) {
|
||||
for (Filter filter : filters.getArray()) {
|
||||
filter.cleanup(renderer);
|
||||
}
|
||||
}
|
||||
@ -457,8 +462,7 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
renderFrameBuffer.setColorTexture(filterTexture);
|
||||
}
|
||||
|
||||
for (Iterator<Filter> it = filters.iterator(); it.hasNext();) {
|
||||
Filter filter = it.next();
|
||||
for (Filter filter : filters.getArray()) {
|
||||
initFilter(filter, vp);
|
||||
}
|
||||
setupViewPortFrameBuffer();
|
||||
@ -504,14 +508,14 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
public void write(JmeExporter ex) throws IOException {
|
||||
OutputCapsule oc = ex.getCapsule(this);
|
||||
oc.write(numSamples, "numSamples", 0);
|
||||
oc.writeSavableArrayList((ArrayList) filters, "filters", null);
|
||||
oc.writeSavableArrayList(new ArrayList(filters), "filters", null);
|
||||
}
|
||||
|
||||
public void read(JmeImporter im) throws IOException {
|
||||
InputCapsule ic = im.getCapsule(this);
|
||||
numSamples = ic.readInt("numSamples", 0);
|
||||
filters = ic.readSavableArrayList("filters", null);
|
||||
for (Filter filter : filters) {
|
||||
filters = new SafeArrayList<Filter>(Filter.class, ic.readSavableArrayList("filters", null));
|
||||
for (Filter filter : filters.getArray()) {
|
||||
filter.setProcessor(this);
|
||||
setFilterState(filter, filter.isEnabled());
|
||||
}
|
||||
@ -543,7 +547,7 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
|
||||
* @return a filter assignable form the given type
|
||||
*/
|
||||
public <T extends Filter> T getFilter(Class<T> filterType) {
|
||||
for (Filter c : filters) {
|
||||
for (Filter c : filters.getArray()) {
|
||||
if (filterType.isAssignableFrom(c.getClass())) {
|
||||
return (T) c;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user