preGlowPass = new Pass(); preGlowPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth); extractPass = new Pass() { extractPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, extractMat); postRenderPasses.add(extractPass); horizontalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, hBlurMat); postRenderPasses.add(horizontalBlur); verticalalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, vBlurMat); postRenderPasses.add(verticalalBlur); material.setTexture("BloomTex", verticalalBlur.getRenderedTexture());
for (Iterator<Filter.Pass> it1 = filter.getPostRenderPasses().iterator(); it1.hasNext();) { Filter.Pass pass = it1.next(); if (prof != null) prof.spStep(SpStep.ProcPostFrame, FPP, filter.getName(), pass.toString()); pass.beforeRender(); if (pass.requiresSceneAsTexture()) { pass.getPassMaterial().setTexture("Texture", tex); if (tex.getImage().getMultiSamples() > 1) { pass.getPassMaterial().setInt("NumSamples", tex.getImage().getMultiSamples()); } else { pass.getPassMaterial().clearParam("NumSamples"); if (pass.requiresDepthAsTexture()) { pass.getPassMaterial().setTexture("DepthTexture", depthTexture); if (msDepth) { pass.getPassMaterial().setInt("NumSamplesDepth", depthTexture.getImage().getMultiSamples()); } else { pass.getPassMaterial().clearParam("NumSamplesDepth"); renderProcessing(r, pass.getRenderFrameBuffer(), pass.getPassMaterial());
/** * cleanup this filter * @param r */ protected final void cleanup(Renderer r) { processor = null; if (defaultPass != null) { defaultPass.cleanup(r); } if (postRenderPasses != null) { for (Iterator<Pass> it = postRenderPasses.iterator(); it.hasNext();) { Pass pass = it.next(); pass.cleanup(r); } } cleanUpFilter(r); }
reflectionPass = new Pass(); reflectionPass.init(renderManager.getRenderer(), reflectionMapSize, reflectionMapSize, Format.RGBA8, Format.Depth); reflectionCam = new Camera(reflectionMapSize, reflectionMapSize); reflectionView = new ViewPort("reflectionView", reflectionCam); reflectionView.setClearFlags(true, true, true); reflectionView.attachScene(reflectionScene); reflectionView.setOutputFrameBuffer(reflectionPass.getRenderFrameBuffer()); plane = new Plane(Vector3f.UNIT_Y, new Vector3f(0, waterHeight, 0).dot(Vector3f.UNIT_Y)); reflectionProcessor = new ReflectionProcessor(reflectionCam, reflectionPass.getRenderFrameBuffer(), plane); reflectionProcessor.setReflectionClipPlane(plane); reflectionView.addProcessor(reflectionProcessor); material.setTexture("FoamMap", foamTexture); material.setTexture("NormalMap", normalTexture); material.setTexture("ReflectionMap", reflectionPass.getRenderedTexture());
reflectionPass = new Pass(); reflectionPass.init(renderManager.getRenderer(), reflectionMapSize, reflectionMapSize, Format.RGBA8, Format.Depth); reflectionCam = new Camera(reflectionMapSize, reflectionMapSize); reflectionView = new ViewPort("reflectionView", reflectionCam); reflectionView.setClearFlags(true, true, true); reflectionView.attachScene(reflectionScene); reflectionView.setOutputFrameBuffer(reflectionPass.getRenderFrameBuffer()); plane = new Plane(Vector3f.UNIT_Y, new Vector3f(0, waterHeight, 0).dot(Vector3f.UNIT_Y)); reflectionProcessor = new ReflectionProcessor(reflectionCam, reflectionPass.getRenderFrameBuffer(), plane); reflectionProcessor.setReflectionClipPlane(plane); reflectionView.addProcessor(reflectionProcessor); material.setTexture("FoamMap", foamTexture); material.setTexture("NormalMap", normalTexture); material.setTexture("ReflectionMap", reflectionPass.getRenderedTexture());
reflectionPass = new Pass(); reflectionPass.init(renderManager.getRenderer(), reflectionMapSize, reflectionMapSize, Format.RGBA8, Format.Depth); reflectionCam = new Camera(reflectionMapSize, reflectionMapSize); reflectionView = new ViewPort("reflectionView", reflectionCam); reflectionView.setClearFlags(true, true, true); reflectionView.attachScene(reflectionScene); reflectionView.setOutputFrameBuffer(reflectionPass.getRenderFrameBuffer()); plane = new Plane(Vector3f.UNIT_Y, new Vector3f(0, waterHeight, 0).dot(Vector3f.UNIT_Y)); reflectionProcessor = new ReflectionProcessor(reflectionCam, reflectionPass.getRenderFrameBuffer(), plane); reflectionView.addProcessor(reflectionProcessor); material.setTexture("FoamMap", foamTexture); material.setTexture("NormalMap", normalTexture); material.setTexture("ReflectionMap", reflectionPass.getRenderedTexture());
for (Iterator<Filter.Pass> it1 = filter.getPostRenderPasses().iterator(); it1.hasNext();) { Filter.Pass pass = it1.next(); if (prof != null) prof.spStep(SpStep.ProcPostFrame, FPP, filter.getName(), pass.toString()); pass.beforeRender(); if (pass.requiresSceneAsTexture()) { pass.getPassMaterial().setTexture("Texture", tex); if (tex.getImage().getMultiSamples() > 1) { pass.getPassMaterial().setInt("NumSamples", tex.getImage().getMultiSamples()); } else { pass.getPassMaterial().clearParam("NumSamples"); if (pass.requiresDepthAsTexture()) { pass.getPassMaterial().setTexture("DepthTexture", depthTexture); if (msDepth) { pass.getPassMaterial().setInt("NumSamplesDepth", depthTexture.getImage().getMultiSamples()); } else { pass.getPassMaterial().clearParam("NumSamplesDepth"); renderProcessing(r, pass.getRenderFrameBuffer(), pass.getPassMaterial());
preGlowPass = new Pass(); preGlowPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth); extractPass = new Pass() { extractPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, extractMat); postRenderPasses.add(extractPass); horizontalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, hBlurMat); postRenderPasses.add(horizontalBlur); verticalalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, vBlurMat); postRenderPasses.add(verticalalBlur); material.setTexture("BloomTex", verticalalBlur.getRenderedTexture());
preGlowPass = new Pass(); preGlowPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth); extractPass = new Pass() { extractPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, extractMat); postRenderPasses.add(extractPass); horizontalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, hBlurMat); postRenderPasses.add(horizontalBlur); verticalalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, vBlurMat); postRenderPasses.add(verticalalBlur); material.setTexture("BloomTex", verticalalBlur.getRenderedTexture());
for (Iterator<Filter.Pass> it1 = filter.getPostRenderPasses().iterator(); it1.hasNext();) { Filter.Pass pass = it1.next(); pass.beforeRender(); if (pass.requiresSceneAsTexture()) { pass.getPassMaterial().setTexture("Texture", tex); if (tex.getImage().getMultiSamples() > 1) { pass.getPassMaterial().setInt("NumSamples", tex.getImage().getMultiSamples()); } else { pass.getPassMaterial().clearParam("NumSamples"); if (pass.requiresDepthAsTexture()) { pass.getPassMaterial().setTexture("DepthTexture", depthTexture); if (msDepth) { pass.getPassMaterial().setInt("NumSamplesDepth", depthTexture.getImage().getMultiSamples()); } else { pass.getPassMaterial().clearParam("NumSamplesDepth"); renderProcessing(r, pass.getRenderFrameBuffer(), pass.getPassMaterial());
preGlowPass = new Pass(); preGlowPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth); extractPass = new Pass() { extractPass.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, extractMat); postRenderPasses.add(extractPass); horizontalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, hBlurMat); postRenderPasses.add(horizontalBlur); verticalalBlur.init(renderManager.getRenderer(), screenWidth, screenHeight, Format.RGBA8, Format.Depth, 1, vBlurMat); postRenderPasses.add(verticalalBlur); material.setTexture("BloomTex", verticalalBlur.getRenderedTexture());
postRenderPasses = new ArrayList<Pass>(); normalPass = new Pass(); normalPass.init(renderManager.getRenderer(), (int) (screenWidth / downSampleFactor), (int) (screenHeight / downSampleFactor), Format.RGBA8, Format.Depth); ssaoMat.setTexture("Normals", normalPass.getRenderedTexture()); Texture random = manager.loadTexture("Common/MatDefs/SSAO/Textures/random.png"); random.setWrap(Texture.WrapMode.Repeat); ssaoMat.setTexture("RandomMap", random); ssaoPass = new Pass("SSAO pass") { ssaoPass.init(renderManager.getRenderer(), (int) (screenWidth / downSampleFactor), (int) (screenHeight / downSampleFactor), Format.RGBA8, Format.Depth, 1, ssaoMat); material.setTexture("SSAOMap", ssaoPass.getRenderedTexture());
postRenderPasses = new ArrayList<Pass>(); normalPass = new Pass(); normalPass.init(renderManager.getRenderer(), (int) (screenWidth / downSampleFactor), (int) (screenHeight / downSampleFactor), Format.RGBA8, Format.Depth); ssaoMat.setTexture("Normals", normalPass.getRenderedTexture()); Texture random = manager.loadTexture("Common/MatDefs/SSAO/Textures/random.png"); random.setWrap(Texture.WrapMode.Repeat); ssaoMat.setTexture("RandomMap", random); ssaoPass = new Pass() { ssaoPass.init(renderManager.getRenderer(), (int) (screenWidth / downSampleFactor), (int) (screenHeight / downSampleFactor), Format.RGBA8, Format.Depth, 1, ssaoMat); ssaoPass.getRenderedTexture().setMinFilter(Texture.MinFilter.Trilinear); ssaoPass.getRenderedTexture().setMagFilter(Texture.MagFilter.Bilinear); postRenderPasses.add(ssaoPass); material = new Material(manager, "Common/MatDefs/SSAO/ssaoBlur.j3md"); material.setTexture("SSAOMap", ssaoPass.getRenderedTexture());
postRenderPasses = new ArrayList<Pass>(); normalPass = new Pass(); normalPass.init(renderManager.getRenderer(), (int) (screenWidth / downSampleFactor), (int) (screenHeight / downSampleFactor), Format.RGBA8, Format.Depth); ssaoMat.setTexture("Normals", normalPass.getRenderedTexture()); Texture random = manager.loadTexture("Common/MatDefs/SSAO/Textures/random.png"); random.setWrap(Texture.WrapMode.Repeat); ssaoMat.setTexture("RandomMap", random); ssaoPass = new Pass() { ssaoPass.init(renderManager.getRenderer(), (int) (screenWidth / downSampleFactor), (int) (screenHeight / downSampleFactor), Format.RGBA8, Format.Depth, 1, ssaoMat); ssaoPass.getRenderedTexture().setMinFilter(Texture.MinFilter.Trilinear); ssaoPass.getRenderedTexture().setMagFilter(Texture.MagFilter.Bilinear); postRenderPasses.add(ssaoPass); material = new Material(manager, "Common/MatDefs/SSAO/ssaoBlur.j3md"); material.setTexture("SSAOMap", ssaoPass.getRenderedTexture());
fields.addAll(Arrays.asList(fields2)); Material m = new Material(); Filter.Pass p = filter.new Pass(); try { for (Field field : fields) { field.setAccessible(true); p = (Filter.Pass) field.get(filter); if (p!= null && p.getPassMaterial() != null) { Material mat = reloadMaterial(p.getPassMaterial()); if (mat == null) { return; } else { p.setPassMaterial(mat); if (passes != null) { for (Pass pass : passes) { Material mat = reloadMaterial(pass.getPassMaterial()); if (mat == null) { return; } else { pass.setPassMaterial(mat);
/** * cleanup this filter * @param r */ protected final void cleanup(Renderer r) { processor = null; if (defaultPass != null) { defaultPass.cleanup(r); } if (postRenderPasses != null) { for (Iterator<Pass> it = postRenderPasses.iterator(); it.hasNext();) { Pass pass = it.next(); pass.cleanup(r); } } cleanUpFilter(r); }
/** * cleanup this filter * @param r */ protected final void cleanup(Renderer r) { processor = null; if (defaultPass != null) { defaultPass.cleanup(r); } if (postRenderPasses != null) { for (Iterator<Pass> it = postRenderPasses.iterator(); it.hasNext();) { Pass pass = it.next(); pass.cleanup(r); } } cleanUpFilter(r); }
/** * * initialize this filter * use InitFilter for overriding filter initialization * @param manager the assetManager * @param renderManager the renderManager * @param vp the viewport * @param w the width * @param h the height */ protected final void init(AssetManager manager, RenderManager renderManager, ViewPort vp, int w, int h) { // cleanup(renderManager.getRenderer()); defaultPass = new Pass(); defaultPass.init(renderManager.getRenderer(), w, h, getDefaultPassTextureFormat(), getDefaultPassDepthFormat()); initFilter(manager, renderManager, vp, w, h); }
@Override protected void initFilter(AssetManager manager, RenderManager renderManager, ViewPort vp, int w, int h) { this.renderManager = renderManager; this.viewPort = vp; normalPass = new Pass(); normalPass.init(renderManager.getRenderer(), w, h, Format.RGBA8, Format.Depth); material = new Material(manager, "Common/MatDefs/Post/CartoonEdge.j3md"); material.setFloat("EdgeWidth", edgeWidth); material.setFloat("EdgeIntensity", edgeIntensity); material.setFloat("NormalThreshold", normalThreshold); material.setFloat("DepthThreshold", depthThreshold); material.setFloat("NormalSensitivity", normalSensitivity); material.setFloat("DepthSensitivity", depthSensitivity); material.setColor("EdgeColor", edgeColor); }
@Override protected void initFilter(AssetManager manager, RenderManager renderManager, ViewPort vp, int w, int h) { this.renderManager = renderManager; this.viewPort = vp; normalPass = new Pass(); normalPass.init(renderManager.getRenderer(), w, h, Format.RGBA8, Format.Depth); material = new Material(manager, "Common/MatDefs/Post/CartoonEdge.j3md"); material.setFloat("EdgeWidth", edgeWidth); material.setFloat("EdgeIntensity", edgeIntensity); material.setFloat("NormalThreshold", normalThreshold); material.setFloat("DepthThreshold", depthThreshold); material.setFloat("NormalSensitivity", normalSensitivity); material.setFloat("DepthSensitivity", depthSensitivity); material.setColor("EdgeColor", edgeColor); }