Skip to content

Commit 032a493

Browse files
Copilotriccardobl
andauthored
Default EnvironmentProbe SH baking to FAST and remove AUTO mode (#2817)
* Initial plan * Default env baker SH mode to FAST and remove AUTO path Agent-Logs-Url: https://github.com/jMonkeyEngine/jmonkeyengine/sessions/e70ed475-af44-4c2b-9f29-f76d9a0422b8 Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com> * Harden SH mode deserialization compatibility handling Agent-Logs-Url: https://github.com/jMonkeyEngine/jmonkeyengine/sessions/e70ed475-af44-4c2b-9f29-f76d9a0422b8 Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com> * Simplify legacy SH mode mapping fallback Agent-Logs-Url: https://github.com/jMonkeyEngine/jmonkeyengine/sessions/e70ed475-af44-4c2b-9f29-f76d9a0422b8 Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com> * Avoid NPE catch in SH mode fallback parsing Agent-Logs-Url: https://github.com/jMonkeyEngine/jmonkeyengine/sessions/e70ed475-af44-4c2b-9f29-f76d9a0422b8 Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com> * Remove EnvironmentProbeControlTest per PR feedback --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: riccardobl <4943530+riccardobl@users.noreply.github.com>
1 parent 3433603 commit 032a493

2 files changed

Lines changed: 24 additions & 18 deletions

File tree

jme3-core/src/main/java/com/jme3/environment/EnvironmentProbeControl.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public class EnvironmentProbeControl extends LightProbe implements Control {
8686
private String uuid = "none";
8787
private boolean enabled = true;
8888
private IBLGLEnvBakerLight.SphericalHarmonicsMode sphericalHarmonicsMode =
89-
IBLGLEnvBakerLight.SphericalHarmonicsMode.AUTO;
89+
IBLGLEnvBakerLight.SphericalHarmonicsMode.FAST;
9090
private Predicate<Geometry> filter = (s) -> {
9191
return s.getUserData("tags.env") != null || s.getUserData("tags.env.env" + uuid) != null;
9292
};
@@ -371,6 +371,18 @@ public Spatial getSpatial() {
371371
return spatial;
372372
}
373373

374+
static IBLGLEnvBakerLight.SphericalHarmonicsMode readSphericalHarmonicsMode(String modeName) {
375+
if (modeName == null) {
376+
return IBLGLEnvBakerLight.SphericalHarmonicsMode.FAST;
377+
}
378+
try {
379+
return IBLGLEnvBakerLight.SphericalHarmonicsMode.valueOf(modeName);
380+
} catch (IllegalArgumentException ex) {
381+
// Legacy AUTO and unknown values now fall back to FAST.
382+
return IBLGLEnvBakerLight.SphericalHarmonicsMode.FAST;
383+
}
384+
}
385+
374386
@Override
375387
public void write(JmeExporter ex) throws IOException {
376388
super.write(ex);
@@ -384,7 +396,7 @@ public void write(JmeExporter ex) throws IOException {
384396
oc.write(frustumNear, "frustumNear", 0.001f);
385397
oc.write(uuid, "envProbeControlUUID", "none");
386398
oc.write(sphericalHarmonicsMode, "sphericalHarmonicsMode",
387-
IBLGLEnvBakerLight.SphericalHarmonicsMode.AUTO);
399+
IBLGLEnvBakerLight.SphericalHarmonicsMode.FAST);
388400
}
389401

390402
@Override
@@ -400,9 +412,15 @@ public void read(JmeImporter im) throws IOException {
400412
frustumFar = ic.readFloat("frustumFar", 1000f);
401413
frustumNear = ic.readFloat("frustumNear", 0.001f);
402414
uuid = ic.readString("envProbeControlUUID", "none");
403-
sphericalHarmonicsMode = ic.readEnum("sphericalHarmonicsMode",
404-
IBLGLEnvBakerLight.SphericalHarmonicsMode.class,
405-
IBLGLEnvBakerLight.SphericalHarmonicsMode.AUTO);
415+
try {
416+
sphericalHarmonicsMode = ic.readEnum("sphericalHarmonicsMode",
417+
IBLGLEnvBakerLight.SphericalHarmonicsMode.class,
418+
IBLGLEnvBakerLight.SphericalHarmonicsMode.FAST);
419+
} catch (IllegalArgumentException ex) {
420+
sphericalHarmonicsMode = readSphericalHarmonicsMode(
421+
ic.readString("sphericalHarmonicsMode",
422+
IBLGLEnvBakerLight.SphericalHarmonicsMode.FAST.name()));
423+
}
406424
}
407425

408426
}

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@
4444
import com.jme3.renderer.RenderManager;
4545
import com.jme3.scene.Geometry;
4646
import com.jme3.scene.shape.Box;
47-
import com.jme3.system.JmeSystem;
48-
import com.jme3.system.Platform;
4947
import com.jme3.texture.FrameBuffer;
5048
import com.jme3.texture.Image;
5149
import com.jme3.texture.Texture2D;
@@ -72,11 +70,6 @@ public class IBLGLEnvBakerLight extends IBLHybridEnvBakerLight {
7270
* Selects how spherical harmonics coefficients are baked on the GPU.
7371
*/
7472
public enum SphericalHarmonicsMode {
75-
/**
76-
* Use full cubemap integration on desktop and the Hammersley fast path on
77-
* Android and iOS.
78-
*/
79-
AUTO,
8073
/**
8174
* Use Hammersley sampling.
8275
*/
@@ -87,7 +80,7 @@ public enum SphericalHarmonicsMode {
8780
QUALITY
8881
}
8982

90-
private SphericalHarmonicsMode sphericalHarmonicsMode = SphericalHarmonicsMode.AUTO;
83+
private SphericalHarmonicsMode sphericalHarmonicsMode = SphericalHarmonicsMode.FAST;
9184
private int sphericalHarmonicsFastPathSampleCount = DEFAULT_FAST_SH_SAMPLE_COUNT;
9285
private Texture2D shCoefTexture;
9386
private FrameBuffer shBaker;
@@ -210,11 +203,6 @@ public void bakeSphericalHarmonicsCoefficients() {
210203
mat.setBoolean("UseFastSphericalHarmonics", false);
211204
break;
212205
}
213-
case AUTO: {
214-
Platform.Os os = JmeSystem.getPlatform().getOs();
215-
mat.setBoolean("UseFastSphericalHarmonics", os == Platform.Os.Android || os == Platform.Os.iOS);
216-
break;
217-
}
218206
}
219207

220208
float remapMaxValue = 0;

0 commit comments

Comments
 (0)