Skip to content

Commit ed475e7

Browse files
committed
jme3-examples: add tests for issue #1903
1 parent 29e0761 commit ed475e7

File tree

3 files changed

+170
-0
lines changed

3 files changed

+170
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Copyright (c) 2023 jMonkeyEngine
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions are
7+
* met:
8+
*
9+
* * Redistributions of source code must retain the above copyright
10+
* notice, this list of conditions and the following disclaimer.
11+
*
12+
* * Redistributions in binary form must reproduce the above copyright
13+
* notice, this list of conditions and the following disclaimer in the
14+
* documentation and/or other materials provided with the distribution.
15+
*
16+
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17+
* may be used to endorse or promote products derived from this software
18+
* without specific prior written permission.
19+
*
20+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22+
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
*/
32+
package jme3test.light.pbr;
33+
34+
import com.jme3.app.SimpleApplication;
35+
import com.jme3.light.LightProbe;
36+
import com.jme3.material.Material;
37+
import com.jme3.scene.Geometry;
38+
import com.jme3.scene.Mesh;
39+
import com.jme3.scene.shape.CenterQuad;
40+
import com.jme3.system.AppSettings;
41+
42+
/**
43+
* Reproduces an issue where PBR materials render much darker with the Core 3.2
44+
* profile than with the Compatibility profile.
45+
*
46+
* <p>This test relies on AppSettings set in main(), so it shouldn't be run
47+
* from the jme3-examples TestChooser!
48+
*
49+
* <p>Compare the window rendered by this test with that rendered by
50+
* TestIssue1903Core. If they differ, you have reproduced the issue.
51+
* If they are identical, then you haven't reproduced it.
52+
*/
53+
public class TestIssue1903Compat extends SimpleApplication {
54+
/**
55+
* Main entry point for the TestIssue1903Compat application.
56+
*
57+
* @param unused array of command-line arguments
58+
*/
59+
public static void main(String[] unused) {
60+
boolean loadDefaults = true;
61+
AppSettings appSettings = new AppSettings(loadDefaults);
62+
appSettings.setGammaCorrection(true);
63+
appSettings.setRenderer(AppSettings.LWJGL_OPENGL2); // Compatibility profile
64+
appSettings.setTitle("Compatibility");
65+
66+
TestIssue1903Compat application = new TestIssue1903Compat();
67+
application.setSettings(appSettings);
68+
application.setShowSettings(false); // to speed up testing
69+
application.start();
70+
}
71+
72+
@Override
73+
public void simpleInitApp() {
74+
flyCam.setEnabled(false);
75+
76+
// Attach a 9x9 quad at the origin.
77+
Mesh mesh = new CenterQuad(9f, 9f);
78+
Geometry quad = new Geometry("quad", mesh);
79+
rootNode.attachChild(quad);
80+
81+
// Apply a PBR material to the quad.
82+
String materialAssetPath = "TestIssue1903.j3m";
83+
Material material = assetManager.loadMaterial(materialAssetPath);
84+
quad.setMaterial(material);
85+
86+
// Add a LightProbe.
87+
String lightProbePath = "Scenes/LightProbes/quarry_Probe.j3o";
88+
LightProbe probe = (LightProbe) assetManager.loadAsset(lightProbePath);
89+
rootNode.addLight(probe);
90+
}
91+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Copyright (c) 2023 jMonkeyEngine
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions are
7+
* met:
8+
*
9+
* * Redistributions of source code must retain the above copyright
10+
* notice, this list of conditions and the following disclaimer.
11+
*
12+
* * Redistributions in binary form must reproduce the above copyright
13+
* notice, this list of conditions and the following disclaimer in the
14+
* documentation and/or other materials provided with the distribution.
15+
*
16+
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17+
* may be used to endorse or promote products derived from this software
18+
* without specific prior written permission.
19+
*
20+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22+
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
*/
32+
package jme3test.light.pbr;
33+
34+
import com.jme3.app.SimpleApplication;
35+
import com.jme3.system.AppSettings;
36+
37+
/**
38+
* Reproduces an issue where PBR materials render much darker with the Core 3.2
39+
* profile than with the Compatibility profile.
40+
*
41+
* <p>This test relies on AppSettings set in main(), so it shouldn't be run
42+
* from the jme3-examples TestChooser!
43+
*
44+
* <p>Compare the window rendered by this test with that rendered by
45+
* TestIssue1903Compat. If they differ, you have reproduced the issue.
46+
* If they are identical, then you haven't reproduced it.
47+
*/
48+
public class TestIssue1903Core extends SimpleApplication {
49+
/**
50+
* Main entry point for the TestIssue1903Core application.
51+
*
52+
* @param unused array of command-line arguments
53+
*/
54+
public static void main(String[] unused) {
55+
boolean loadDefaults = true;
56+
AppSettings appSettings = new AppSettings(loadDefaults);
57+
appSettings.setGammaCorrection(true);
58+
appSettings.setRenderer(AppSettings.LWJGL_OPENGL32); // Core 3.2 profile
59+
appSettings.setTitle("Core 3.2");
60+
61+
TestIssue1903Compat application = new TestIssue1903Compat();
62+
application.setSettings(appSettings);
63+
application.setShowSettings(false); // to speed up testing
64+
application.start();
65+
}
66+
67+
@Override
68+
public void simpleInitApp() {
69+
throw new AssertionError(); // never reached
70+
}
71+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// PBR material used in TestIssue1903Compat and TestIssue1903Core
2+
3+
Material TestIssue1903: Common/MatDefs/Light/PBRLighting.j3md {
4+
MaterialParameters {
5+
Metallic: 0.01
6+
NormalMap: Repeat Textures/Terrain/BrickWall/BrickWall_normal.jpg
7+
}
8+
}

0 commit comments

Comments
 (0)