From 67eb998ef4c20d6195089750ea49cabfa9f5d35a Mon Sep 17 00:00:00 2001 From: Daniel Johansson Date: Tue, 22 Dec 2015 10:55:43 +0000 Subject: [PATCH] Added numLights to statistics. This tells us how many lights are left to render after filtering has occurred. Also did some tidy up of javadoc in RenderManager. --- .../java/com/jme3/renderer/RenderManager.java | 19 +++++----- .../java/com/jme3/renderer/Statistics.java | 36 +++++++++++++------ 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java b/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java index aab301b6f..4261edb27 100644 --- a/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java +++ b/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java @@ -533,7 +533,9 @@ public class RenderManager { lightFilter.filterLights(g, filteredLightList); lightList = filteredLightList; } - + + // Report the number of lights we're about to render to the statistics. + renderer.getStatistics().onLights(lightList.size()); //if forcedTechnique we try to force it for render, //if it does not exists in the mat def, we check for forcedMaterial and render the geom if not null @@ -556,7 +558,7 @@ public class RenderManager { forcedRenderState = tmpRs; //Reverted this part from revision 6197 - //If forcedTechnique does not exists, and frocedMaterial is not set, the geom MUST NOT be rendered + //If forcedTechnique does not exists, and forcedMaterial is not set, the geom MUST NOT be rendered } else if (forcedMaterial != null) { // use forced material forcedMaterial.render(g, lightList, this); @@ -641,10 +643,8 @@ public class RenderManager { *

* In addition to enqueuing the visible geometries, this method * also scenes which cast or receive shadows, by putting them into the - * RenderQueue's - * {@link RenderQueue#addToShadowQueue(com.jme3.scene.Geometry, com.jme3.renderer.queue.RenderQueue.ShadowMode) - * shadow queue}. Each Spatial which has its - * {@link Spatial#setShadowMode(com.jme3.renderer.queue.RenderQueue.ShadowMode) shadow mode} + * RenderQueue's {@link RenderQueue#renderShadowQueue(GeometryList, RenderManager, Camera, boolean) shadow queue}. + * Each Spatial which has its {@link Spatial#setShadowMode(com.jme3.renderer.queue.RenderQueue.ShadowMode) shadow mode} * set to not off, will be put into the appropriate shadow queue, note that * this process does not check for frustum culling on any * {@link ShadowMode#Cast shadow casters}, as they don't have to be @@ -991,13 +991,12 @@ public class RenderManager { * (see {@link #renderTranslucentQueue(com.jme3.renderer.ViewPort) }) *

  • If any objects remained in the render queue, they are removed * from the queue. This is generally objects added to the - * {@link RenderQueue#renderShadowQueue(com.jme3.renderer.queue.RenderQueue.ShadowMode, com.jme3.renderer.RenderManager, com.jme3.renderer.Camera, boolean) - * shadow queue} + * {@link RenderQueue#renderShadowQueue(GeometryList, RenderManager, Camera, boolean) shadow queue} * which were not rendered because of a missing shadow renderer.
  • * * - * @param vp - * @param tpf + * @param vp View port to render + * @param tpf Time per frame value */ public void renderViewPort(ViewPort vp, float tpf) { if (!vp.isEnabled()) { diff --git a/jme3-core/src/main/java/com/jme3/renderer/Statistics.java b/jme3-core/src/main/java/com/jme3/renderer/Statistics.java index 9d44e6566..243dd0914 100644 --- a/jme3-core/src/main/java/com/jme3/renderer/Statistics.java +++ b/jme3-core/src/main/java/com/jme3/renderer/Statistics.java @@ -36,7 +36,6 @@ import com.jme3.shader.Shader; import com.jme3.texture.FrameBuffer; import com.jme3.texture.Image; import com.jme3.util.IntMap; -import java.util.HashSet; /** * The statistics class allows tracking of real-time rendering statistics. @@ -50,6 +49,7 @@ public class Statistics { protected boolean enabled = false; protected int numObjects; + protected int numLights; protected int numTriangles; protected int numVertices; protected int numShaderSwitches; @@ -80,6 +80,7 @@ public class Statistics { "Uniforms", "Objects", + "Lights", "Shaders (S)", "Shaders (F)", @@ -107,18 +108,19 @@ public class Statistics { data[1] = numTriangles; data[2] = numUniformsSet; data[3] = numObjects; + data[4] = numLights; - data[4] = numShaderSwitches; - data[5] = shadersUsed.size(); - data[6] = memoryShaders; + data[5] = numShaderSwitches; + data[6] = shadersUsed.size(); + data[7] = memoryShaders; - data[7] = numTextureBinds; - data[8] = texturesUsed.size(); - data[9] = memoryTextures; + data[8] = numTextureBinds; + data[9] = texturesUsed.size(); + data[10] = memoryTextures; - data[10] = numFboSwitches; - data[11] = fbosUsed.size(); - data[12] = memoryFrameBuffers; + data[11] = numFboSwitches; + data[12] = fbosUsed.size(); + data[13] = memoryFrameBuffers; } /** @@ -223,6 +225,7 @@ public class Statistics { fbosUsed.clear(); numObjects = 0; + numLights = 0; numTriangles = 0; numVertices = 0; numShaderSwitches = 0; @@ -287,6 +290,19 @@ public class Statistics { memoryFrameBuffers --; } + /** + * Called by the RenderManager once filtering has happened. + * + * @param lightCount the number of lights which will be passed to the materials for inclusion in rendering. + */ + public void onLights(final int lightCount) { + if (!enabled) { + return; + } + + numLights += lightCount; + } + /** * Called when video memory is cleared. */