parent
6a1383a155
commit
c4c72f2969
@ -0,0 +1,119 @@ |
||||
package jme3test.light.pbr; |
||||
|
||||
import com.jme3.app.SimpleApplication; |
||||
import com.jme3.bounding.BoundingSphere; |
||||
import com.jme3.environment.EnvironmentCamera; |
||||
import com.jme3.environment.LightProbeFactory; |
||||
import com.jme3.environment.generation.JobProgressAdapter; |
||||
import com.jme3.environment.util.EnvMapUtils; |
||||
import com.jme3.input.KeyInput; |
||||
import com.jme3.input.controls.ActionListener; |
||||
import com.jme3.input.controls.KeyTrigger; |
||||
import com.jme3.light.LightProbe; |
||||
import com.jme3.material.Material; |
||||
import com.jme3.math.ColorRGBA; |
||||
import com.jme3.math.Quaternion; |
||||
import com.jme3.math.Vector3f; |
||||
import com.jme3.scene.Geometry; |
||||
import com.jme3.scene.Node; |
||||
import com.jme3.scene.Spatial; |
||||
import com.jme3.util.MaterialDebugAppState; |
||||
|
||||
/** |
||||
* test |
||||
* |
||||
* @author nehon |
||||
*/ |
||||
public class RefEnv extends SimpleApplication { |
||||
|
||||
private Node tex; |
||||
|
||||
public static void main(String[] args) { |
||||
System.err.println(Math.min(1, 8192)); |
||||
System.err.println(Math.min(1 << (6), 8192)); |
||||
System.err.println(Math.min(1 << (8), 8192)); |
||||
System.err.println(Math.min(1 << (10), 8192)); |
||||
System.err.println(Math.min(1 << (12), 8192)); |
||||
System.err.println(Math.min(1 << (14), 8192)); |
||||
RefEnv app = new RefEnv(); |
||||
app.start(); |
||||
} |
||||
|
||||
@Override |
||||
public void simpleInitApp() { |
||||
|
||||
cam.setLocation(new Vector3f(-3.0286736f, 2.8702848f, 5.153083f)); |
||||
cam.setRotation(new Quaternion(0.06595449f, 0.9340066f, -0.24384351f, 0.2526304f)); |
||||
Spatial sc = assetManager.loadModel("Scenes/PBR/spheres.j3o"); |
||||
rootNode.attachChild(sc); |
||||
rootNode.getChild("Scene").setCullHint(Spatial.CullHint.Always); |
||||
|
||||
stateManager.attach(new EnvironmentCamera()); |
||||
|
||||
inputManager.addMapping("tex", new KeyTrigger(KeyInput.KEY_SPACE)); |
||||
inputManager.addMapping("switch", new KeyTrigger(KeyInput.KEY_RETURN)); |
||||
inputManager.addListener(new ActionListener() { |
||||
|
||||
@Override |
||||
public void onAction(String name, boolean isPressed, float tpf) { |
||||
if (name.equals("tex") && isPressed) { |
||||
if (tex == null) { |
||||
return; |
||||
} |
||||
if (tex.getParent() == null) { |
||||
guiNode.attachChild(tex); |
||||
} else { |
||||
tex.removeFromParent(); |
||||
} |
||||
} |
||||
|
||||
if (name.equals("switch") && isPressed) { |
||||
switchMat(rootNode.getChild("Scene")); |
||||
} |
||||
} |
||||
}, "tex", "switch"); |
||||
|
||||
} |
||||
|
||||
private void switchMat(Spatial s) { |
||||
if (s instanceof Node) { |
||||
Node n = (Node) s; |
||||
for (Spatial children : n.getChildren()) { |
||||
switchMat(children); |
||||
} |
||||
} else if (s instanceof Geometry) { |
||||
Geometry g = (Geometry) s; |
||||
Material mat = g.getMaterial(); |
||||
if (((Float) mat.getParam("Metallic").getValue()) == 1f) { |
||||
mat.setFloat("Metallic", 0); |
||||
mat.setColor("BaseColor", ColorRGBA.Black); |
||||
} else { |
||||
mat.setFloat("Metallic", 1); |
||||
mat.setColor("BaseColor", ColorRGBA.White); |
||||
} |
||||
} |
||||
} |
||||
|
||||
private int frame = 0; |
||||
|
||||
@Override |
||||
public void simpleUpdate(float tpf) { |
||||
frame++; |
||||
|
||||
if (frame == 2) { |
||||
final LightProbe probe = LightProbeFactory.makeProbe(stateManager.getState(EnvironmentCamera.class), rootNode, new JobProgressAdapter<LightProbe>() { |
||||
|
||||
@Override |
||||
public void done(LightProbe result) { |
||||
System.err.println("Done rendering env maps"); |
||||
tex = EnvMapUtils.getCubeMapCrossDebugViewWithMipMaps(result.getPrefilteredEnvMap(), assetManager); |
||||
// guiNode.attachChild(tex);
|
||||
rootNode.getChild("Scene").setCullHint(Spatial.CullHint.Dynamic); |
||||
} |
||||
}); |
||||
((BoundingSphere) probe.getBounds()).setRadius(100); |
||||
rootNode.addLight(probe); |
||||
|
||||
} |
||||
} |
||||
} |
Binary file not shown.
Loading…
Reference in new issue