Add a check to see if the NB_PROBES identifier is defined. Fixes #1340

master
rvandoosselaer 5 years ago committed by Stephen Gold
parent b48391399b
commit 76210fe415
  1. 3
      jme3-core/src/main/resources/Common/ShaderLib/PBR.glsllib
  2. 66
      jme3-examples/src/main/java/jme3test/light/pbr/TestIssue1340.java

@ -2,6 +2,9 @@
#ifndef PI
#define PI 3.14159265358979323846264
#endif
#ifndef NB_PROBES
#define NB_PROBES 0
#endif
//Specular fresnel computation
vec3 F_Shlick(float vh, vec3 F0){

@ -0,0 +1,66 @@
package jme3test.light.pbr;
import com.jme3.app.SimpleApplication;
import com.jme3.asset.plugins.UrlLocator;
import com.jme3.environment.EnvironmentCamera;
import com.jme3.environment.LightProbeFactory;
import com.jme3.environment.generation.JobProgressAdapter;
import com.jme3.light.DirectionalLight;
import com.jme3.light.LightProbe;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Spatial;
import com.jme3.system.AppSettings;
/**
* @author: rvandoosselaer
*/
public class TestIssue1340 extends SimpleApplication {
public static void main(String[] args) {
TestIssue1340 testIssue1340 = new TestIssue1340();
testIssue1340.setSettings(createSettings());
testIssue1340.start();
}
private static AppSettings createSettings() {
AppSettings settings = new AppSettings(true);
settings.setRenderer(AppSettings.LWJGL_OPENGL32);
return settings;
}
@Override
public void simpleInitApp() {
stateManager.attach(new EnvironmentCamera(32));
DirectionalLight light = new DirectionalLight(Vector3f.UNIT_Y.negate(), ColorRGBA.White);
rootNode.addLight(light);
assetManager.registerLocator("https://github.com/KhronosGroup/glTF-Sample-Models/raw/master/2.0/RiggedFigure/", UrlLocator.class);
Spatial model = assetManager.loadModel("/glTF-Embedded/RiggedFigure.gltf");
rootNode.attachChild(model);
viewPort.setBackgroundColor(ColorRGBA.LightGray);
}
/**
* #ifndef NB_PROBES
* #define NB_PROBES 0
* #endif
*/
int frame;
@Override
public void simpleUpdate(float tpf) {
frame++;
if (frame == 2) {
LightProbeFactory.makeProbe(stateManager.getState(EnvironmentCamera.class), rootNode, new JobProgressAdapter<LightProbe>() {
@Override
public void done(LightProbe result) {
enqueue(() -> rootNode.addLight(result));
}
});
}
}
}
Loading…
Cancel
Save