private void setupFilter() { FilterPostProcessor fpp = new FilterPostProcessor(assetManager); BloomFilter bloom = new BloomFilter(BloomFilter.GlowMode.Objects); fpp.addFilter(bloom); viewPort.addProcessor(fpp); }
private void makeSoftParticleEmitter(Spatial scene, boolean enabled) { if (scene instanceof Node) { Node n = (Node) scene; for (Spatial child : n.getChildren()) { makeSoftParticleEmitter(child, enabled); } } if (scene instanceof ParticleEmitter) { ParticleEmitter emitter = (ParticleEmitter) scene; if (enabled) { enabledSoftParticles = enabled; emitter.getMaterial().selectTechnique("SoftParticles", renderManager); if( processor.getNumSamples()>1){ emitter.getMaterial().setInt("NumSamplesDepth", processor.getNumSamples()); } emitter.getMaterial().setTexture("DepthTexture", processor.getDepthTexture()); emitter.setQueueBucket(RenderQueue.Bucket.Translucent); logger.log(Level.FINE, "Made particle Emitter {0} soft.", emitter.getName()); } else { emitter.getMaterial().clearParam("DepthTexture"); emitter.getMaterial().selectTechnique("Default", renderManager); // emitter.setQueueBucket(RenderQueue.Bucket.Transparent); logger.log(Level.FINE, "Particle Emitter {0} is not soft anymore.", emitter.getName()); } } } }
/** * Adds a filter to the filters list<br> * @param filter the filter to add */ public void addFilter(Filter filter) { if (filter == null) { throw new IllegalArgumentException("Filter cannot be null."); } filters.add(filter); if (isInitialized()) { initFilter(filter, viewPort); } setFilterState(filter, filter.isEnabled()); }
public void setupFilters(){ if (renderer.getCaps().contains(Caps.GLSL100)){ fpp=new FilterPostProcessor(assetManager); //fpp.setNumSamples(4); int numSamples = getContext().getSettings().getSamples(); if( numSamples > 0 ) { fpp.setNumSamples(numSamples); } CartoonEdgeFilter toon=new CartoonEdgeFilter(); toon.setEdgeColor(ColorRGBA.Yellow); fpp.addFilter(toon); viewPort.addProcessor(fpp); } }
rightPostProcessor = new FilterPostProcessor(environment.getApplication().getAssetManager()); leftPostProcessor = new FilterPostProcessor(environment.getApplication().getAssetManager()); rightPostProcessor.removeAllFilters(); leftPostProcessor.removeAllFilters(); getLeftViewPort().clearProcessors(); getRightViewPort().clearProcessors(); for(Filter f : ((FilterPostProcessor)sceneProcessor).getFilterList() ) { if( f instanceof TranslucentBucketFilter ) { ((FilterPostProcessor)sceneProcessor).removeFilter(f); } else { leftPostProcessor.addFilter(f); rightPostProcessor.addFilter(f2); leftPostProcessor.addFilter(new TranslucentBucketFilter()); rightPostProcessor.addFilter(new TranslucentBucketFilter()); } else { throw new IllegalStateException("This VR environment is not attached to any application.");
public void simpleInitApp() { this.flyCam.setMoveSpeed(10); cam.setLocation(new Vector3f(0.028406568f, 2.015769f, 7.386517f)); cam.setRotation(new Quaternion(-1.0729783E-5f, 0.9999721f, -0.0073241726f, -0.0014647911f)); makeScene(); //Creating the main view port post processor FilterPostProcessor fpp = new FilterPostProcessor(assetManager); fpp.addFilter(new ColorOverlayFilter(ColorRGBA.Blue)); viewPort.addProcessor(fpp); //creating a frame buffer for the mainviewport FrameBuffer mainVPFrameBuffer = new FrameBuffer(cam.getWidth(), cam.getHeight(), 1); Texture2D mainVPTexture = new Texture2D(cam.getWidth(), cam.getHeight(), Image.Format.RGBA8); mainVPFrameBuffer.addColorTexture(mainVPTexture); mainVPFrameBuffer.setDepthBuffer(Image.Format.Depth); viewPort.setOutputFrameBuffer(mainVPFrameBuffer); //creating the post processor for the gui viewport final FilterPostProcessor guifpp = new FilterPostProcessor(assetManager); guifpp.setFrameBufferFormat(Image.Format.RGBA8); guifpp.addFilter(new ColorOverlayFilter(ColorRGBA.Red)); //this will compose the main viewport texture with the guiviewport back buffer. //Note that you can switch the order of the filters so that guiviewport filters are applied or not to the main viewport texture guifpp.addFilter(new ComposeFilter(mainVPTexture)); guiViewPort.addProcessor(guifpp); //compositing is done by mixing texture depending on the alpha channel, //it's important that the guiviewport clear color alpha value is set to 0 guiViewPort.setBackgroundColor(ColorRGBA.BlackNoAlpha); guiViewPort.setClearColor(true); }
@Override protected void initFilter(AssetManager manager, RenderManager rm, ViewPort vp, int w, int h) { this.renderManager = rm; this.viewPort = vp; material = new Material(manager, "Common/MatDefs/Post/Overlay.j3md"); material.setColor("Color", ColorRGBA.White); Texture2D tex = processor.getFilterTexture(); material.setTexture("Texture", tex); if (tex.getImage().getMultiSamples() > 1) { material.setInt("NumSamples", tex.getImage().getMultiSamples()); } else { material.clearParam("NumSamples"); } renderManager.setHandleTranslucentBucket(false); if (enabledSoftParticles && depthTexture != null) { initSoftParticles(vp, true); } }
/** * compute the index of the last filter to render */ private void updateLastFilterIndex() { lastFilterIndex = -1; for (int i = filters.size() - 1; i >= 0 && lastFilterIndex == -1; i--) { if (filters.get(i).isEnabled()) { lastFilterIndex = i; //the Fpp is initialized, but the viwport framebuffer is the //original out framebuffer so we must recover from a situation //where no filter was enabled. So we set th correc framebuffer //on the viewport if(isInitialized() && viewPort.getOutputFrameBuffer()==outputBuffer){ setupViewPortFrameBuffer(); } return; } } if (isInitialized() && lastFilterIndex == -1) { //There is no enabled filter, we restore the original framebuffer //to the viewport to bypass the fpp. viewPort.setOutputFrameBuffer(outputBuffer); } }
initFilter(filter, vp); setupViewPortFrameBuffer();
public void postFrame(FrameBuffer out) { FrameBuffer sceneBuffer = renderFrameBuffer; if (renderFrameBufferMS != null && !renderer.getCaps().contains(Caps.OpenGL32)) { renderer.copyFrameBuffer(renderFrameBufferMS, renderFrameBuffer, true); } else if (renderFrameBufferMS != null) { sceneBuffer = renderFrameBufferMS; } renderFilterChain(renderer, sceneBuffer); renderer.setFrameBuffer(outputBuffer); //viewport can be null if no filters are enabled if (viewPort != null) { renderManager.setCamera(viewPort.getCamera(), false); } }
public void initialize(RenderManager rm, ViewPort vp) { renderManager = rm; renderer = rm.getRenderer(); viewPort = vp; fsQuad = new Picture("filter full screen quad"); fsQuad.setWidth(1); fsQuad.setHeight(1); if (!renderer.getCaps().contains(Caps.PackedFloatTexture)) { if (!renderer.getCaps().contains(Caps.FloatTexture)) { fbFormat = Format.RGB8; } else { fbFormat = Format.RGB16F; } } Camera cam = vp.getCamera(); //save view port diensions left = cam.getViewPortLeft(); right = cam.getViewPortRight(); top = cam.getViewPortTop(); bottom = cam.getViewPortBottom(); originalWidth = cam.getWidth(); originalHeight = cam.getHeight(); //first call to reshape reshape(vp, cam.getWidth(), cam.getHeight()); }
renderProcessing(r, pass.getRenderFrameBuffer(), pass.getPassMaterial()); renderProcessing(r, buff, mat); if (prof != null) prof.spStep(SpStep.ProcPostFrame, FPP, filter.getName(), "postFilter"); filter.postFilter(r, buff);
protected void simpleInit() { this.fpp = new FilterPostProcessor(assetManager); // Base Setup deflogger = Logger.getLogger(""); niftylogger = Logger.getLogger("de.lessvoid.nifty"); niftyinput = Logger.getLogger("NiftyInputEventHandlingLog"); deflogger.setLevel(Level.SEVERE); niftylogger.setLevel(Level.SEVERE); niftyinput.setLevel(Level.SEVERE); viewPort.setBackgroundColor(ColorRGBA.Black); stateManager.getState(StatsAppState.class).toggleStats(); initRoot(); initRenderer(complexShadows); initAudio(); initNifty(); initCam(); initSelection(); initCustom(); }
initFilter(filter, vp);
public void simpleInitApp() { this.flyCam.setMoveSpeed(50); Node mainScene=new Node(); cam.setLocation(new Vector3f(-34.74095f, 95.21318f, -287.4945f)); cam.setRotation(new Quaternion(0.023536969f, 0.9361278f, -0.016098259f, -0.35050195f)); // load sky mainScene.attachChild(SkyFactory.createSky(assetManager, "Textures/Sky/Bright/BrightSky.dds", SkyFactory.EnvMapType.CubeMap)); createTerrain(mainScene); DirectionalLight sun = new DirectionalLight(); Vector3f lightDir=new Vector3f(-0.37352666f, -0.50444174f, -0.7784704f); sun.setDirection(lightDir); sun.setColor(ColorRGBA.White.clone().multLocal(2)); mainScene.addLight(sun); rootNode.attachChild(mainScene); fpp=new FilterPostProcessor(assetManager); //fpp.setNumSamples(4); int numSamples = getContext().getSettings().getSamples(); if( numSamples > 0 ) { fpp.setNumSamples(numSamples); } fog=new FogFilter(); fog.setFogColor(new ColorRGBA(0.9f, 0.9f, 0.9f, 1.0f)); fog.setFogDistance(155); fog.setFogDensity(1.0f); fpp.addFilter(fog); viewPort.addProcessor(fpp); initInputs(); }
rightPostProcessor = new FilterPostProcessor(environment.getApplication().getAssetManager()); leftPostProcessor = new FilterPostProcessor(environment.getApplication().getAssetManager()); getRightPostProcessor().removeAllFilters(); getLeftPostProcessor().removeAllFilters(); getLeftViewPort().clearProcessors(); getRightViewPort().clearProcessors(); for(Filter f : ((FilterPostProcessor)sceneProcessor).getFilterList() ) { if( f instanceof TranslucentBucketFilter ) { ((FilterPostProcessor)sceneProcessor).removeFilter(f); } else { getLeftPostProcessor().addFilter(f); getRightPostProcessor().addFilter(f2); getLeftPostProcessor().addFilter(new TranslucentBucketFilter()); getRightPostProcessor().addFilter(new TranslucentBucketFilter()); } else { throw new IllegalStateException("The VR environment is not attached to any application.");
@Override protected void initFilter(AssetManager manager, RenderManager rm, ViewPort vp, int w, int h) { this.renderManager = rm; this.viewPort = vp; material = new Material(manager, "Common/MatDefs/Post/Overlay.j3md"); material.setColor("Color", ColorRGBA.White); Texture2D tex = processor.getFilterTexture(); material.setTexture("Texture", tex); if (tex.getImage().getMultiSamples() > 1) { material.setInt("NumSamples", tex.getImage().getMultiSamples()); } else { material.clearParam("NumSamples"); } renderManager.setHandleTranslucentBucket(false); if (enabledSoftParticles && depthTexture != null) { initSoftParticles(vp, true); } }
/** * compute the index of the last filter to render */ private void updateLastFilterIndex() { lastFilterIndex = -1; for (int i = filters.size() - 1; i >= 0 && lastFilterIndex == -1; i--) { if (filters.get(i).isEnabled()) { lastFilterIndex = i; //the Fpp is initialized, but the viwport framebuffer is the //original out framebuffer so we must recover from a situation //where no filter was enabled. So we set th correc framebuffer //on the viewport if(isInitialized() && viewPort.getOutputFrameBuffer()==outputBuffer){ setupViewPortFrameBuffer(); } return; } } if (isInitialized() && lastFilterIndex == -1) { //There is no enabled filter, we restore the original framebuffer //to the viewport to bypass the fpp. viewPort.setOutputFrameBuffer(outputBuffer); } }
initFilter(filter, vp); setupViewPortFrameBuffer();
public void postFrame(FrameBuffer out) { FrameBuffer sceneBuffer = renderFrameBuffer; if (renderFrameBufferMS != null && !renderer.getCaps().contains(Caps.OpenGL32)) { renderer.copyFrameBuffer(renderFrameBufferMS, renderFrameBuffer, true); } else if (renderFrameBufferMS != null) { sceneBuffer = renderFrameBufferMS; } renderFilterChain(renderer, sceneBuffer); renderer.setFrameBuffer(outputBuffer); //viewport can be null if no filters are enabled if (viewPort != null) { renderManager.setCamera(viewPort.getCamera(), false); } }