Home | History | Annotate | Download | only in post
      1 package jme3test.post;
      2 
      3 import com.jme3.app.SimpleApplication;
      4 import com.jme3.light.AmbientLight;
      5 import com.jme3.light.DirectionalLight;
      6 import com.jme3.material.Material;
      7 import com.jme3.math.*;
      8 import com.jme3.post.FilterPostProcessor;
      9 import com.jme3.post.ssao.SSAOFilter;
     10 import com.jme3.renderer.queue.RenderQueue.Bucket;
     11 import com.jme3.renderer.queue.RenderQueue.ShadowMode;
     12 import com.jme3.scene.Geometry;
     13 import com.jme3.scene.Spatial;
     14 import com.jme3.scene.shape.Quad;
     15 
     16 public class TestTransparentSSAO extends SimpleApplication {
     17 
     18     public static void main(String[] args) {
     19         TestTransparentSSAO app = new TestTransparentSSAO();
     20         app.start();
     21     }
     22 
     23     public void simpleInitApp() {
     24         renderManager.setAlphaToCoverage(true);
     25         cam.setLocation(new Vector3f(0.14914267f, 0.58147097f, 4.7686534f));
     26         cam.setRotation(new Quaternion(-0.0044764364f, 0.9767943f, 0.21314798f, 0.020512417f));
     27 
     28 //        cam.setLocation(new Vector3f(2.0606942f, 3.20342f, 6.7860126f));
     29 //        cam.setRotation(new Quaternion(-0.017481906f, 0.98241085f, -0.12393151f, -0.13857932f));
     30 
     31         viewPort.setBackgroundColor(ColorRGBA.DarkGray);
     32 
     33         Quad q = new Quad(20, 20);
     34         q.scaleTextureCoordinates(Vector2f.UNIT_XY.mult(5));
     35         Geometry geom = new Geometry("floor", q);
     36         Material mat = assetManager.loadMaterial("Textures/Terrain/Pond/Pond.j3m");
     37         geom.setMaterial(mat);
     38 
     39         geom.rotate(-FastMath.HALF_PI, 0, 0);
     40         geom.center();
     41         geom.setShadowMode(ShadowMode.Receive);
     42         rootNode.attachChild(geom);
     43 
     44         // create the geometry and attach it
     45         Spatial teaGeom = assetManager.loadModel("Models/Tree/Tree.mesh.j3o");
     46         teaGeom.setQueueBucket(Bucket.Transparent);
     47         teaGeom.setShadowMode(ShadowMode.Cast);
     48 
     49         AmbientLight al = new AmbientLight();
     50         al.setColor(ColorRGBA.White.mult(2));
     51         rootNode.addLight(al);
     52 
     53         DirectionalLight dl1 = new DirectionalLight();
     54         dl1.setDirection(new Vector3f(1, -1, 1).normalizeLocal());
     55         dl1.setColor(new ColorRGBA(0.965f, 0.949f, 0.772f, 1f).mult(0.7f));
     56         rootNode.addLight(dl1);
     57 
     58         DirectionalLight dl = new DirectionalLight();
     59         dl.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
     60         dl.setColor(new ColorRGBA(0.965f, 0.949f, 0.772f, 1f).mult(0.7f));
     61         rootNode.addLight(dl);
     62 
     63         rootNode.attachChild(teaGeom);
     64 
     65         FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
     66 
     67         SSAOFilter ssao = new SSAOFilter(0.49997783f, 42.598858f, 35.999966f, 0.39299846f);
     68         fpp.addFilter(ssao);
     69 
     70         SSAOUI ui = new SSAOUI(inputManager, ssao);
     71 
     72         viewPort.addProcessor(fpp);
     73     }
     74 }
     75