Skip to content

Commit 4f055d1

Browse files
authored
Merge pull request #2393 from jMonkeyEngine/yaRnMcDonuts-patch-2
Add debugging to PBRTerrainTests to troubleshoot rendering issue
2 parents 985ac2c + 49ffddd commit 4f055d1

File tree

3 files changed

+109
-5
lines changed

3 files changed

+109
-5
lines changed

jme3-examples/src/main/java/jme3test/terrain/PBRTerrainAdvancedTest.java

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,20 @@ public void onAction(String name, boolean pressed, float tpf) {
189189
isNight = !isNight;
190190
// Ambient and directional light are faded smoothly in update loop below.
191191
}
192+
193+
if(name.length() == 1 && !pressed){
194+
if(name.equals("-")){
195+
matTerrain.setInt("DebugValuesMode", -1);
196+
}else{
197+
try{
198+
int debugValueMode = Integer.parseInt(name);
199+
matTerrain.setInt("DebugValuesMode", debugValueMode);
200+
}
201+
catch(Exception e){
202+
203+
}
204+
}
205+
}
192206
}
193207
};
194208

@@ -364,16 +378,51 @@ private void setupKeys() {
364378
inputManager.addMapping("triPlanar", new KeyTrigger(KeyInput.KEY_P));
365379
inputManager.addMapping("toggleNight", new KeyTrigger(KeyInput.KEY_N));
366380

381+
inputManager.addMapping("0", new KeyTrigger(KeyInput.KEY_0)); // toggleDebugModeForAlbedo
382+
inputManager.addMapping("1", new KeyTrigger(KeyInput.KEY_1)); // toggleDebugModeForNormalMap
383+
inputManager.addMapping("2", new KeyTrigger(KeyInput.KEY_2)); // toggleDebugModeForRoughness
384+
inputManager.addMapping("3", new KeyTrigger(KeyInput.KEY_3)); // toggleDebugModeForMetallic
385+
inputManager.addMapping("4", new KeyTrigger(KeyInput.KEY_4)); // toggleDebugModeForAo
386+
inputManager.addMapping("5", new KeyTrigger(KeyInput.KEY_5)); // toggleDebugModeForEmissive
387+
inputManager.addMapping("6", new KeyTrigger(KeyInput.KEY_6)); // toggleDebugModeForExposure
388+
inputManager.addMapping("7", new KeyTrigger(KeyInput.KEY_7)); // toggleDebugModeForAlpha
389+
inputManager.addMapping("8", new KeyTrigger(KeyInput.KEY_8)); // toggleDebugModeForGeometryNormals
390+
391+
inputManager.addMapping("-", new KeyTrigger(KeyInput.KEY_MINUS)); // - key will disable dbug mode
392+
367393
inputManager.addListener(actionListener, "triPlanar");
368394
inputManager.addListener(actionListener, "toggleNight");
369395

396+
inputManager.addListener(actionListener, "0");
397+
inputManager.addListener(actionListener, "1");
398+
inputManager.addListener(actionListener, "2");
399+
inputManager.addListener(actionListener, "3");
400+
inputManager.addListener(actionListener, "4");
401+
inputManager.addListener(actionListener, "5");
402+
inputManager.addListener(actionListener, "6");
403+
inputManager.addListener(actionListener, "7");
404+
inputManager.addListener(actionListener, "8");
405+
inputManager.addListener(actionListener, "-");
406+
370407
keybindingsText = new BitmapText(assetManager.loadFont("Interface/Fonts/Default.fnt"));
371-
keybindingsText.setText("Press 'N' to toggle day/night fade (takes a moment) \nPress 'P' to toggle tri-planar mode");
408+
keybindingsText.setText("Press N to toggle day/night fade (takes a moment) \n"
409+
+ "Press P to toggle tri-planar mode\n\n"
410+
+ "Press - for Final Render (disable debug view)\n"
411+
+ "Press 0 for Albedo debug view\n"
412+
+ "Press 1 for Normal Map debug view\n"
413+
+ "Press 2 for Roughness debug view\n"
414+
+ "Press 3 for Metallic debug view\n"
415+
+ "Press 4 for Ambient Occlusion (ao) debug view\n"
416+
+ "Press 5 for Emissive debug view\n"
417+
+ "Press 6 for Exposure debug view\n"
418+
+ "Press 7 for Alpha debug view\n"
419+
+ "Press 8 for Geoemtry Normals debug view\n");
420+
372421

373422
getGuiNode().attachChild(keybindingsText);
374423
keybindingsText.move(new Vector3f(200, 120, 0));
424+
keybindingsText.move(new Vector3f(5, cam.getHeight() * 0.995f, 0));
375425
}
376-
377426
@Override
378427
public void simpleUpdate(float tpf) {
379428
super.simpleUpdate(tpf);

jme3-examples/src/main/java/jme3test/terrain/PBRTerrainTest.java

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,22 @@ public void onAction(String name, boolean pressed, float tpf) {
153153
isNight = !isNight;
154154
// Ambient and directional light are faded smoothly in update loop below.
155155
}
156+
157+
if(name.length() == 1 && !pressed){
158+
if(name.equals("-")){
159+
matTerrain.setInt("DebugValuesMode", -1);
160+
}else{
161+
try{
162+
int debugValueMode = Integer.parseInt(name);
163+
matTerrain.setInt("DebugValuesMode", debugValueMode);
164+
}
165+
catch(Exception e){
166+
167+
}
168+
}
169+
170+
}
171+
156172
}
157173
};
158174

@@ -270,14 +286,49 @@ private void setupKeys() {
270286
inputManager.addMapping("triPlanar", new KeyTrigger(KeyInput.KEY_P));
271287
inputManager.addMapping("toggleNight", new KeyTrigger(KeyInput.KEY_N));
272288

289+
inputManager.addMapping("0", new KeyTrigger(KeyInput.KEY_0)); // toggleDebugModeForAlbedo
290+
inputManager.addMapping("1", new KeyTrigger(KeyInput.KEY_1)); // toggleDebugModeForNormalMap
291+
inputManager.addMapping("2", new KeyTrigger(KeyInput.KEY_2)); // toggleDebugModeForRoughness
292+
inputManager.addMapping("3", new KeyTrigger(KeyInput.KEY_3)); // toggleDebugModeForMetallic
293+
inputManager.addMapping("4", new KeyTrigger(KeyInput.KEY_4)); // toggleDebugModeForAo
294+
inputManager.addMapping("5", new KeyTrigger(KeyInput.KEY_5)); // toggleDebugModeForEmissive
295+
inputManager.addMapping("6", new KeyTrigger(KeyInput.KEY_6)); // toggleDebugModeForExposure
296+
inputManager.addMapping("7", new KeyTrigger(KeyInput.KEY_7)); // toggleDebugModeForAlpha
297+
inputManager.addMapping("8", new KeyTrigger(KeyInput.KEY_8)); // toggleDebugModeForGeometryNormals
298+
299+
inputManager.addMapping("-", new KeyTrigger(KeyInput.KEY_MINUS)); // - key will disable dbug mode
300+
273301
inputManager.addListener(actionListener, "triPlanar");
274302
inputManager.addListener(actionListener, "toggleNight");
275303

304+
inputManager.addListener(actionListener, "0");
305+
inputManager.addListener(actionListener, "1");
306+
inputManager.addListener(actionListener, "2");
307+
inputManager.addListener(actionListener, "3");
308+
inputManager.addListener(actionListener, "4");
309+
inputManager.addListener(actionListener, "5");
310+
inputManager.addListener(actionListener, "6");
311+
inputManager.addListener(actionListener, "7");
312+
inputManager.addListener(actionListener, "8");
313+
inputManager.addListener(actionListener, "-");
314+
276315
keybindingsText = new BitmapText(assetManager.loadFont("Interface/Fonts/Default.fnt"));
277-
keybindingsText.setText("Press 'N' to toggle day/night fade (takes a moment) \nPress 'P' to toggle tri-planar mode");
316+
keybindingsText.setText("Press N to toggle day/night fade (takes a moment) \n"
317+
+ "Press P to toggle tri-planar mode\n\n"
318+
+ "Press - for Final Render (disable debug view)\n"
319+
+ "Press 0 for Albedo debug view\n"
320+
+ "Press 1 for Normal Map debug view\n"
321+
+ "Press 2 for Roughness debug view\n"
322+
+ "Press 3 for Metallic debug view\n"
323+
+ "Press 4 for Ambient Occlusion (ao) debug view\n"
324+
+ "Press 5 for Emissive debug view\n"
325+
+ "Press 6 for Exposure debug view\n"
326+
+ "Press 7 for Alpha debug view\n"
327+
+ "Press 8 for Geoemtry Normals debug view\n");
328+
278329

279330
getGuiNode().attachChild(keybindingsText);
280-
keybindingsText.move(new Vector3f(200, 120, 0));
331+
keybindingsText.move(new Vector3f(5, cam.getHeight() * 0.995f, 0));
281332
}
282333

283334
@Override

jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Modular/PBRTerrainUtils.glsllib

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@
9999
break;
100100
}
101101

102+
finalAlphaBlendForLayer = clamp(finalAlphaBlendForLayer, 0.0, 1.0);
103+
102104
return finalAlphaBlendForLayer;
103105
}
104106

@@ -210,7 +212,9 @@
210212
//_______________________________
211213

212214
//blend layer function. This mixes each layer's pbr vars over top of the current surface values based on the layer's blendValue
213-
void PBRTerrainUtils_blendPBRTerrainLayer(inout PBRSurface surface, inout PBRTerrainTextureLayer layer){
215+
void PBRTerrainUtils_blendPBRTerrainLayer(inout PBRSurface surface, inout PBRTerrainTextureLayer layer){
216+
layer.ao = clamp(layer.ao, 0.0, 1.0);
217+
214218
surface.albedo = mix(surface.albedo, layer.albedo.rgb, layer.blendValue);
215219
surface.normal = normalize(mix(surface.normal.rgb, layer.normal, layer.blendValue));
216220
surface.metallic = mix(surface.metallic, layer.metallic, layer.blendValue);

0 commit comments

Comments
 (0)