Browse Source

Add the option to use "HQ" EnvMap bakes, which provide better results when high-light intense spots look blocky but increases the generation time drastically. (See https://hub.jmonkeyengine.org/t/change-to-pbr-env-map-generation/39600)

MeFisto94 6 years ago
parent
commit
8305425f6c

+ 11 - 1
jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeLightProbe.java

@@ -46,8 +46,9 @@ import org.openide.nodes.Sheet;
  */
 @org.openide.util.lookup.ServiceProvider(service=SceneExplorerNode.class)
 @SuppressWarnings({"unchecked", "rawtypes"})
-public class JmeLightProbe extends JmeLight{
+public class JmeLightProbe extends JmeLight {
     protected LightProbe lightProbe;
+    protected boolean HQBake;
 
     public JmeLightProbe() {
     }
@@ -59,6 +60,14 @@ public class JmeLightProbe extends JmeLight{
         setName("LightProbe");
     }
 
+    public boolean isHQBake() {
+        return HQBake;
+    }
+
+    public void setHQBake(boolean HQBake) {
+        this.HQBake = HQBake;
+    }
+
     @Override
     protected Sheet createSheet() {
         //TODO: multithreading..
@@ -73,6 +82,7 @@ public class JmeLightProbe extends JmeLight{
 
         set.put(makeProperty(obj, Vector3f.class, "getPosition", "setPosition", "Position"));
         set.put(makeEmbedProperty(obj.getArea(), obj.getArea().getClass(), float.class, "getRadius", "setRadius", "Radius"));
+        set.put(makeEmbedProperty(JmeLightProbe.this, JmeLightProbe.class, boolean.class, "isHQBake","setHQBake", "High Quality Bake?"));
         set.put(createButtonProperty());
         sheet.put(set);
         return sheet;

+ 8 - 1
jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeLightProbeButtonProperty.java

@@ -2,6 +2,7 @@ package com.jme3.gde.core.sceneexplorer.nodes;
 
 import com.jme3.environment.EnvironmentCamera;
 import com.jme3.environment.LightProbeFactory;
+import com.jme3.environment.util.EnvMapUtils;
 import com.jme3.gde.core.scene.SceneApplication;
 import com.jme3.gde.core.scene.controller.SceneToolController;
 import com.jme3.gde.core.util.ButtonInplaceEditor;
@@ -56,7 +57,13 @@ public class JmeLightProbeButtonProperty extends PropertyEditorSupport implement
                             } else {
                                 envCam.setPosition(new Vector3f(0, 0, 0));
                             }
-                            LightProbeFactory.updateProbe(probe.getLightProbe(), envCam, spatial, new JmeLightProbeProgressHandler());
+                            LightProbeFactory.updateProbe(probe.getLightProbe(),
+                                    envCam, spatial,
+                                    probe.isHQBake() ? 
+                                            EnvMapUtils.GenerationType.HighQuality:
+                                            EnvMapUtils.GenerationType.Fast,
+                                    new JmeLightProbeProgressHandler()
+                            );
                             probe.setModified();
                             return null;
                         }