浏览代码

improvements

Riccardo Balbo 1 年之前
父节点
当前提交
cbb2166d0a

+ 12 - 24
jme3-core/src/main/java/com/jme3/environment/EnvironmentProbeControl.java

@@ -34,8 +34,6 @@ package com.jme3.environment;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Predicate;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import com.jme3.asset.AssetManager;
 import com.jme3.environment.baker.IBLGLEnvBakerLight;
 import com.jme3.environment.baker.IBLHybridEnvBakerLight;
@@ -79,8 +77,6 @@ import com.jme3.texture.Image.Format;
  * @author Riccardo Balbo
  */
 public class EnvironmentProbeControl extends LightProbe implements Control {
-    private final boolean USE_GL_IR = true;
-    private static final Logger LOG = Logger.getLogger(EnvironmentProbeControl.class.getName());
     private static AtomicInteger instanceCounter = new AtomicInteger(0);
 
     private AssetManager assetManager;
@@ -97,7 +93,10 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
     };
 
     protected EnvironmentProbeControl() {
+        super();
         uuid = System.currentTimeMillis() + "_" + instanceCounter.getAndIncrement();
+        this.setAreaType(AreaType.Spherical);
+        this.getArea().setRadius(Float.MAX_VALUE);
     }
 
     /**
@@ -112,9 +111,7 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
     public EnvironmentProbeControl(AssetManager assetManager, int size) {
         this();
         this.envMapSize = size;
-        this.assetManager = assetManager;
-        this.setAreaType(AreaType.Spherical);
-        this.getArea().setRadius(Float.MAX_VALUE);
+        this.assetManager = assetManager;        
     }
 
     /**
@@ -175,7 +172,7 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
      * Untag spatial as part of the environment for every
      * EnvironmentProbeControl.
      * 
-     * @param s
+     * @param s the spatial
      */
     public static void untagGlobal(Spatial s) {
         if (s instanceof Node) {
@@ -247,7 +244,7 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
     /**
      * Set the minimum distance to render
      * 
-     * @param frustumNear
+     * @param frustumNear the minimum distance to render
      */
     public void setFrustumNear(float frustumNear) {
         this.frustumNear = frustumNear;
@@ -255,6 +252,8 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
 
     /**
      * Set the maximum distance to render
+     * 
+     * @param frustumFar the maximum distance to render
      */
     public void setFrustumFar(float frustumFar) {
         this.frustumFar = frustumFar;
@@ -281,28 +280,17 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
     /**
      * Set the asset manager used to load the shaders needed for the baking
      * 
-     * @param assetManager
+     * @param assetManager the asset manager
      */
     public void setAssetManager(AssetManager assetManager) {
         this.assetManager = assetManager;
     }
 
     void rebakeNow(RenderManager renderManager) {
-        if (assetManager == null) {
-            LOG.log(Level.SEVERE,
-                    "AssetManager is null, cannot bake environment. Please use setAssetManager() to set it.");
-            return;
-        }
-        IBLHybridEnvBakerLight baker;
-        if (!USE_GL_IR) {
-            baker = new IBLHybridEnvBakerLight(renderManager, assetManager, Format.RGB16F, Format.Depth,
-                    envMapSize, envMapSize);
-        } else {
-            baker = new IBLGLEnvBakerLight(renderManager, assetManager, Format.RGB16F, Format.Depth,
-                    envMapSize, envMapSize);
-        }
+        IBLHybridEnvBakerLight baker = new IBLGLEnvBakerLight(renderManager, assetManager, Format.RGB16F, Format.Depth,
+                envMapSize, envMapSize);
+                    
         baker.setTexturePulling(isRequiredSavableResults());
-
         baker.bakeEnvironment(spatial, getPosition(), frustumNear, frustumFar, filter);
         baker.bakeSpecularIBL();
         baker.bakeSphericalHarmonicsCoefficients();

+ 1 - 1
jme3-core/src/main/java/com/jme3/environment/baker/EnvBaker.java

@@ -39,7 +39,7 @@ import com.jme3.scene.Spatial;
 import com.jme3.texture.TextureCubeMap;
 
 /**
- * An environment baker. It bakes the environment.
+ * An environment baker to bake a 3d environment into a cubemap
  *
  * @author Riccardo Balbo
  */

+ 13 - 5
jme3-core/src/main/java/com/jme3/environment/baker/GenericEnvBaker.java

@@ -176,7 +176,9 @@ public abstract class GenericEnvBaker implements EnvBaker {
             envbakers[i].addColorTarget(FrameBufferTarget.newTarget(env).face(TextureCubeMap.Face.values()[i]));
         }
 
-        if (isTexturePulling()) startPulling();
+        if (isTexturePulling()) {
+            startPulling();
+        }
 
         for (int i = 0; i < 6; i++) {
             FrameBuffer envbaker = envbakers[i];
@@ -198,11 +200,15 @@ public abstract class GenericEnvBaker implements EnvBaker {
             renderManager.renderViewPort(viewPort, 0.16f);
             renderManager.setRenderFilter(ofilter);
 
-            if (isTexturePulling()) pull(envbaker, env, i);
+            if (isTexturePulling()) {
+                pull(envbaker, env, i);
+            }
 
         }
 
-        if (isTexturePulling()) endPulling(env);
+        if (isTexturePulling()) {
+            endPulling(env);
+        }
 
         env.getImage().clearUpdateNeeded();
 
@@ -228,7 +234,7 @@ public abstract class GenericEnvBaker implements EnvBaker {
      *            the texture to pull into
      * @param faceId
      *            id of face if cubemap or 0 otherwise
-     * @return
+     * @return the ByteBuffer containing the pulled data
      */
     protected ByteBuffer pull(FrameBuffer fb, Texture env, int faceId) {
 
@@ -276,7 +282,9 @@ public abstract class GenericEnvBaker implements EnvBaker {
     }
 
     protected int limitMips(int nbMipMaps, int baseW, int baseH, RenderManager rm) {
-        if (nbMipMaps > 6) nbMipMaps = 6;
+        if (nbMipMaps > 6) {
+            nbMipMaps = 6;
+        }
         return nbMipMaps;
     }
 

+ 32 - 11
jme3-core/src/main/java/com/jme3/environment/baker/IBLGLEnvBaker.java

@@ -60,7 +60,7 @@ import com.jme3.ui.Picture;
  * @author Riccardo Balbo
  */
 public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
-    private final Logger LOGGER = Logger.getLogger(IBLHybridEnvBakerLight.class.getName());
+    private static final Logger LOGGER = Logger.getLogger(IBLHybridEnvBakerLight.class.getName());
 
     protected Texture2D brtf;
     protected TextureCubeMap irradiance;
@@ -142,7 +142,9 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
             renderManager.getRenderer().setFrameBuffer(specularbaker);
             renderManager.renderGeometry(screen);
 
-            if (isTexturePulling()) pull(specularbaker, specular, i);
+            if (isTexturePulling()) {
+                pull(specularbaker, specular, i);
+            }
 
         }
         for (int i = 0; i < 6; i++) {
@@ -160,7 +162,9 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
         mat.setTexture("EnvMap", env);
         screen.setMaterial(mat);
 
-        if (isTexturePulling()) startPulling();
+        if (isTexturePulling()) {
+            startPulling();
+        }
 
         int mip = 0;
         for (; mip < specular.getImage().getMipMapSizes().length; mip++) {
@@ -189,7 +193,9 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
             }
         }
 
-        if (isTexturePulling()) endPulling(specular);
+        if (isTexturePulling()) {
+            endPulling(specular);
+        }
         specular.getImage().clearUpdateNeeded();
 
     }
@@ -205,7 +211,9 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
         brtfbaker.setSrgb(false);
         brtfbaker.addColorTarget(FrameBufferTarget.newTarget(brtf));
 
-        if (isTexturePulling()) startPulling();
+        if (isTexturePulling()) {
+            startPulling();
+        }
 
         Camera envcam = updateAndGetInternalCamera(0, brtf.getImage().getWidth(), brtf.getImage().getHeight(), Vector3f.ZERO, 1, 1000);
 
@@ -220,11 +228,15 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
         screen.updateGeometricState();
         renderManager.renderGeometry(screen);
 
-        if (isTexturePulling()) pull(brtfbaker, brtf, 0);
+        if (isTexturePulling()) {
+            pull(brtfbaker, brtf, 0);
+        }
 
         brtfbaker.dispose();
 
-        if (isTexturePulling()) endPulling(brtf);
+        if (isTexturePulling()) {
+            endPulling(brtf);
+        }
         brtf.getImage().clearUpdateNeeded();
 
         return brtf;
@@ -239,9 +251,14 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
         FrameBuffer irradiancebaker = new FrameBuffer(irradiance.getImage().getWidth(), irradiance.getImage().getHeight(), 1);
         irradiancebaker.setSrgb(false);
 
-        if (isTexturePulling()) startPulling();
+        if (isTexturePulling()) {
+            startPulling();
+        }
 
-        for (int i = 0; i < 6; i++) irradiancebaker.addColorTarget(FrameBufferTarget.newTarget(irradiance).face(TextureCubeMap.Face.values()[i]));
+        for (int i = 0; i < 6; i++) {
+            irradiancebaker.addColorTarget(
+                    FrameBufferTarget.newTarget(irradiance).face(TextureCubeMap.Face.values()[i]));
+        }
 
         Material mat = new Material(assetManager, "Common/IBL/IBLKernels.j3md");
         mat.setBoolean("UseIrradiance", true);
@@ -260,12 +277,16 @@ public class IBLGLEnvBaker extends GenericEnvBaker implements IBLEnvBaker {
             renderManager.getRenderer().setFrameBuffer(irradiancebaker);
             renderManager.renderGeometry(screen);
 
-            if (isTexturePulling()) pull(irradiancebaker, irradiance, i);
+            if (isTexturePulling()) {
+                pull(irradiancebaker, irradiance, i);
+            }
         }
 
         irradiancebaker.dispose();
 
-        if (isTexturePulling()) endPulling(irradiance);
+        if (isTexturePulling()) {
+            endPulling(irradiance);
+        }
         irradiance.getImage().clearUpdateNeeded();
 
     }

+ 1 - 1
jme3-core/src/main/java/com/jme3/environment/baker/IBLGLEnvBakerLight.java

@@ -61,7 +61,7 @@ import com.jme3.util.BufferUtils;
  * @author Riccardo Balbo
  */
 public class IBLGLEnvBakerLight extends IBLHybridEnvBakerLight {
-    public final static int NUM_SH_COEFFICIENT = 9;
+    private static final int NUM_SH_COEFFICIENT = 9;
     private static final Logger LOG = Logger.getLogger(IBLGLEnvBakerLight.class.getName());
 
     /**

+ 10 - 4
jme3-core/src/main/java/com/jme3/environment/baker/IBLHybridEnvBakerLight.java

@@ -61,7 +61,7 @@ import com.jme3.texture.image.ColorSpace;
  * @author Riccardo Balbo
  */
 public class IBLHybridEnvBakerLight extends GenericEnvBaker implements IBLEnvBakerLight {
-    private final Logger LOGGER = Logger.getLogger(IBLHybridEnvBakerLight.class.getName());
+    private static final Logger LOGGER = Logger.getLogger(IBLHybridEnvBakerLight.class.getName());
     protected TextureCubeMap specular;
     protected Vector3f[] shCoef;
 
@@ -134,7 +134,9 @@ public class IBLHybridEnvBakerLight extends GenericEnvBaker implements IBLEnvBak
             renderManager.getRenderer().setFrameBuffer(specularbaker);
             renderManager.renderGeometry(screen);
 
-            if (isTexturePulling()) pull(specularbaker, specular, i);
+            if (isTexturePulling()) {
+                pull(specularbaker, specular, i);
+            }
 
         }
         for (int i = 0; i < 6; i++) {
@@ -152,7 +154,9 @@ public class IBLHybridEnvBakerLight extends GenericEnvBaker implements IBLEnvBak
         mat.setTexture("EnvMap", env);
         screen.setMaterial(mat);
 
-        if (isTexturePulling()) startPulling();
+        if (isTexturePulling()) {
+          startPulling();  
+        } 
 
         int mip = 0;
         for (; mip < specular.getImage().getMipMapSizes().length; mip++) {
@@ -181,7 +185,9 @@ public class IBLHybridEnvBakerLight extends GenericEnvBaker implements IBLEnvBak
             }
         }
 
-        if (isTexturePulling()) endPulling(specular);
+        if (isTexturePulling()) {
+            endPulling(specular);
+        }
         specular.getImage().clearUpdateNeeded();
 
     }

+ 1 - 1
jme3-examples/src/main/java/jme3test/light/pbr/TestPBRSimple.java

@@ -43,7 +43,7 @@ import com.jme3.util.SkyFactory;
 import com.jme3.util.mikktspace.MikktspaceTangentGenerator;
 
 /**
- * TestPBRSimple
+ * A simpler PBR example that uses EnvironmentProbeControl to bake the environment
  */
 public class TestPBRSimple extends SimpleApplication {
     private boolean REALTIME_BAKING = false;