159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage jme3test.post;
259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.app.SimpleApplication;
459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.AmbientLight;
559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.DirectionalLight;
659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.Material;
759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.*;
859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.post.FilterPostProcessor;
959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.post.ssao.SSAOFilter;
1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.renderer.queue.RenderQueue.Bucket;
1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.renderer.queue.RenderQueue.ShadowMode;
1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Geometry;
1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Spatial;
1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Quad;
1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic class TestTransparentSSAO extends SimpleApplication {
1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static void main(String[] args) {
1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        TestTransparentSSAO app = new TestTransparentSSAO();
2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        app.start();
2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void simpleInitApp() {
2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        renderManager.setAlphaToCoverage(true);
2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        cam.setLocation(new Vector3f(0.14914267f, 0.58147097f, 4.7686534f));
2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        cam.setRotation(new Quaternion(-0.0044764364f, 0.9767943f, 0.21314798f, 0.020512417f));
2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta//        cam.setLocation(new Vector3f(2.0606942f, 3.20342f, 6.7860126f));
2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta//        cam.setRotation(new Quaternion(-0.017481906f, 0.98241085f, -0.12393151f, -0.13857932f));
3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        viewPort.setBackgroundColor(ColorRGBA.DarkGray);
3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Quad q = new Quad(20, 20);
3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        q.scaleTextureCoordinates(Vector2f.UNIT_XY.mult(5));
3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Geometry geom = new Geometry("floor", q);
3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Material mat = assetManager.loadMaterial("Textures/Terrain/Pond/Pond.j3m");
3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        geom.setMaterial(mat);
3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        geom.rotate(-FastMath.HALF_PI, 0, 0);
4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        geom.center();
4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        geom.setShadowMode(ShadowMode.Receive);
4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        rootNode.attachChild(geom);
4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        // create the geometry and attach it
4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Spatial teaGeom = assetManager.loadModel("Models/Tree/Tree.mesh.j3o");
4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        teaGeom.setQueueBucket(Bucket.Transparent);
4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        teaGeom.setShadowMode(ShadowMode.Cast);
4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        AmbientLight al = new AmbientLight();
5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        al.setColor(ColorRGBA.White.mult(2));
5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        rootNode.addLight(al);
5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        DirectionalLight dl1 = new DirectionalLight();
5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        dl1.setDirection(new Vector3f(1, -1, 1).normalizeLocal());
5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        dl1.setColor(new ColorRGBA(0.965f, 0.949f, 0.772f, 1f).mult(0.7f));
5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        rootNode.addLight(dl1);
5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        DirectionalLight dl = new DirectionalLight();
5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        dl.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        dl.setColor(new ColorRGBA(0.965f, 0.949f, 0.772f, 1f).mult(0.7f));
6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        rootNode.addLight(dl);
6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        rootNode.attachChild(teaGeom);
6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        SSAOFilter ssao = new SSAOFilter(0.49997783f, 42.598858f, 35.999966f, 0.39299846f);
6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        fpp.addFilter(ssao);
6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        SSAOUI ui = new SSAOUI(inputManager, ssao);
7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        viewPort.addProcessor(fpp);
7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta}
75