public HDRRenderer(AssetManager manager, Renderer renderer){ this.manager = manager; this.renderer = renderer; Collection<Caps> caps = renderer.getCaps(); if (caps.contains(Caps.PackedFloatColorBuffer)) bufFormat = Format.RGB111110F; else if (caps.contains(Caps.FloatColorBuffer)) bufFormat = Format.RGB16F; else{ enabled = false; return; } }
public void setupBasicShadow(){ if (renderer.getCaps().contains(Caps.GLSL100)){ dlsr = new DirectionalLightShadowRenderer(assetManager, 1024, 1); viewPort.addProcessor(dlsr); } }
public void setupSkyBox(){ Texture envMap; if (renderer.getCaps().contains(Caps.FloatTexture)){ envMap = assetManager.loadTexture("Textures/Sky/St Peters/StPeters.hdr"); }else{ envMap = assetManager.loadTexture("Textures/Sky/St Peters/StPeters.jpg"); } rootNode.attachChild(SkyFactory.createSky(assetManager, envMap, new Vector3f(-1,-1,-1), SkyFactory.EnvMapType.SphereMap)); }
public void setupSkyBox() { Texture envMap; if (renderer.getCaps().contains(Caps.FloatTexture)) { envMap = assetManager.loadTexture("Textures/Sky/St Peters/StPeters.hdr"); } else { envMap = assetManager.loadTexture("Textures/Sky/St Peters/StPeters.jpg"); } Spatial sky = SkyFactory.createSky(assetManager, envMap, new Vector3f(-1f, -1f, -1f), EnvMapType.SphereMap); rootNode.attachChild(sky); }
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 setupFilters() { if (renderer.getCaps().contains(Caps.GLSL100)) { fpp = new FilterPostProcessor(assetManager); // fpp.setNumSamples(4); // fpp.setNumSamples(4); //fpp.addFilter(new ColorOverlayFilter(ColorRGBA.LightGray)); fpp.addFilter(new RadialBlurFilter()); fade = new FadeFilter(1.0f); fpp.addFilter(fade); viewPort.addProcessor(fpp); } }
public void setupHdr(){ if (renderer.getCaps().contains(Caps.GLSL100)){ toneMapFilter = new ToneMapFilter(); toneMapFilter.setWhitePoint(new Vector3f(3f, 3f, 3f)); FilterPostProcessor fpp = new FilterPostProcessor(assetManager); fpp.addFilter(toneMapFilter); viewPort.addProcessor(fpp); // setPauseOnLostFocus(false); } }
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); } }
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()); }
EnumSet<Caps> rendererCaps = renderManager.getRenderer().getCaps(); List<TechniqueDef> techDefs = def.getTechniqueDefs(name); if (techDefs == null || techDefs.isEmpty()) {
@Override public void simpleInitApp() { flyCam.setMoveSpeed(20); Logger.getLogger("com.jme3").setLevel(Level.WARNING); Box boxshape1 = new Box(1f, 1f, 1f); Geometry cube_tex = new Geometry("A Textured Box", boxshape1); Texture tex = assetManager.loadTexture("Interface/Logo/Monkey.jpg"); Material mat = new Material(assetManager, "Common/MatDefs/Misc/UnshadedNodes.j3md"); mat.selectTechnique(TechniqueDef.DEFAULT_TECHNIQUE_NAME, renderManager); Technique t = mat.getActiveTechnique(); for (Shader.ShaderSource shaderSource : t.getDef().getShader(assetManager, renderer.getCaps(), t.getDynamicDefines()).getSources()) { System.out.println(shaderSource.getSource()); } mat.setColor("Color", ColorRGBA.Yellow); mat.setTexture("ColorMap", tex); cube_tex.setMaterial(mat); rootNode.attachChild(cube_tex); } }
/** * init the pass called internally * @param renderer * @param width * @param height * @param textureFormat * @param depthBufferFormat * @param numSamples */ public void init(Renderer renderer, int width, int height, Format textureFormat, Format depthBufferFormat, int numSamples, boolean renderDepth) { Collection<Caps> caps = renderer.getCaps(); if (numSamples > 1 && caps.contains(Caps.FrameBufferMultisample) && caps.contains(Caps.OpenGL31)) { renderFrameBuffer = new FrameBuffer(width, height, numSamples); renderedTexture = new Texture2D(width, height, numSamples, textureFormat); renderFrameBuffer.setDepthBuffer(depthBufferFormat); if (renderDepth) { depthTexture = new Texture2D(width, height, numSamples, depthBufferFormat); renderFrameBuffer.setDepthTexture(depthTexture); } } else { renderFrameBuffer = new FrameBuffer(width, height, 1); renderedTexture = new Texture2D(width, height, textureFormat); renderFrameBuffer.setDepthBuffer(depthBufferFormat); if (renderDepth) { depthTexture = new Texture2D(width, height, depthBufferFormat); renderFrameBuffer.setDepthTexture(depthTexture); } } renderFrameBuffer.setColorTexture(renderedTexture); }
Collection<Caps> caps = renderer.getCaps();
public void reshape(ViewPort vp, int w, int h){ if (mainSceneFB != null){ renderer.deleteFrameBuffer(mainSceneFB); } mainSceneFB = new FrameBuffer(w, h, 1); mainScene = new Texture2D(w, h, bufFormat); mainSceneFB.setDepthBuffer(Format.Depth); mainSceneFB.setColorTexture(mainScene); mainScene.setMagFilter(fbMagFilter); mainScene.setMinFilter(fbMinFilter); if (msFB != null){ renderer.deleteFrameBuffer(msFB); } tone.setTexture("Texture", mainScene); Collection<Caps> caps = renderer.getCaps(); if (numSamples > 1 && caps.contains(Caps.FrameBufferMultisample)){ msFB = new FrameBuffer(w, h, numSamples); msFB.setDepthBuffer(Format.Depth); msFB.setColorBuffer(bufFormat); vp.setOutputFrameBuffer(msFB); }else{ if (numSamples > 1) logger.warning("FBO multisampling not supported on this GPU, request ignored."); vp.setOutputFrameBuffer(mainSceneFB); } createLumShaders(); }
/** * Preloads this material for the given render manager. * <p> * Preloading the material can ensure that when the material is first * used for rendering, there won't be any delay since the material has * been already been setup for rendering. * * @param renderManager The render manager to preload for */ public void preload(RenderManager renderManager, Geometry geometry) { if (technique == null) { selectTechnique(TechniqueDef.DEFAULT_TECHNIQUE_NAME, renderManager); } TechniqueDef techniqueDef = technique.getDef(); Renderer renderer = renderManager.getRenderer(); EnumSet<Caps> rendererCaps = renderer.getCaps(); if (techniqueDef.isNoRender()) { return; } // Get world overrides SafeArrayList<MatParamOverride> overrides = geometry.getWorldMatParamOverrides(); Shader shader = technique.makeCurrent(renderManager, overrides, null, null, rendererCaps); updateShaderMaterialParameters(renderer, shader, overrides, null); renderManager.getRenderer().setShader(shader); }
if( renderManager.getRenderer().getCaps().contains(Caps.GLSL150) ) { renderManager.setForcedTechnique("PreNormalPass15"); } else {
EnumSet<Caps> rendererCaps = renderer.getCaps();
fpp.addFilter(fade); if (renderer.getCaps().contains(Caps.GLSL100)) { DirectionalLightShadowRenderer dlsr = new DirectionalLightShadowRenderer(assetManager, 512, 1);