private void createLumShaders(){ int w = mainSceneFB.getWidth(); int h = mainSceneFB.getHeight(); hdr64 = createLumShader(w, h, 64, 64, LUMMODE_ENCODE_LUM, maxIterations, mainScene); hdr8 = createLumShader(64, 64, 8, 8, LUMMODE_NONE, maxIterations, scene64); hdr1 = createLumShader(8, 8, 1, 1, LUMMODE_NONE, maxIterations, scene8); }
public void setMaxIterations(int maxIterations){ this.maxIterations = maxIterations; // regenerate shaders if needed if (hdr64 != null) createLumShaders(); }
blendFactor = 0; time = 0; updateAverageLuminance(renderer); }else{ if (curSrc == -1){ updateAverageLuminance(renderer); curSrc = opposite(curSrc); updateAverageLuminance(renderer); renderToneMap(renderer, null);
private void updateAverageLuminance(Renderer r){ renderProcessing(r, scene64FB, hdr64); renderProcessing(r, scene8FB, hdr8); renderProcessing(r, scene1FB[curSrc], hdr1); }
reshape(vp, w, h);
private void updateHdr(){ hdrRender.setWhiteLevel(getWhite()); hdrRender.setThrottle(getLod()); hdrRender.setExposure(getA()); }
private void renderToneMap(Renderer r, FrameBuffer out){ tone.setFloat("A", exposure); tone.setFloat("White", whiteLevel); tone.setTexture("Lum", scene1[oppSrc]); tone.setTexture("Lum2", scene1[curSrc]); tone.setFloat("BlendFactor", blendFactor); renderProcessing(r, out, tone); }
reshape(vp, w, h);
blendFactor = 0; time = 0; updateAverageLuminance(renderer); }else{ if (curSrc == -1){ updateAverageLuminance(renderer); curSrc = opposite(curSrc); updateAverageLuminance(renderer); renderToneMap(renderer, null);
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(); }
private void updateAverageLuminance(Renderer r){ renderProcessing(r, scene64FB, hdr64); renderProcessing(r, scene8FB, hdr8); renderProcessing(r, scene1FB[curSrc], hdr1); }
private void createLumShaders(){ int w = mainSceneFB.getWidth(); int h = mainSceneFB.getHeight(); hdr64 = createLumShader(w, h, 64, 64, LUMMODE_ENCODE_LUM, maxIterations, mainScene); hdr8 = createLumShader(64, 64, 8, 8, LUMMODE_NONE, maxIterations, scene64); hdr1 = createLumShader(8, 8, 1, 1, LUMMODE_NONE, maxIterations, scene8); }
reshape(vp, w, h);
blendFactor = 0; time = 0; updateAverageLuminance(renderer); }else{ if (curSrc == -1){ updateAverageLuminance(renderer); curSrc = opposite(curSrc); updateAverageLuminance(renderer); renderToneMap(renderer, null);
public void setMaxIterations(int maxIterations){ this.maxIterations = maxIterations; // regenerate shaders if needed if (hdr64 != null) createLumShaders(); }
private void updateAverageLuminance(Renderer r){ renderProcessing(r, scene64FB, hdr64); renderProcessing(r, scene8FB, hdr8); renderProcessing(r, scene1FB[curSrc], hdr1); }
private void createLumShaders(){ int w = mainSceneFB.getWidth(); int h = mainSceneFB.getHeight(); hdr64 = createLumShader(w, h, 64, 64, LUMMODE_ENCODE_LUM, maxIterations, mainScene); hdr8 = createLumShader(64, 64, 8, 8, LUMMODE_NONE, maxIterations, scene64); hdr1 = createLumShader(8, 8, 1, 1, LUMMODE_NONE, maxIterations, scene8); }
public void setMaxIterations(int maxIterations){ this.maxIterations = maxIterations; // regenerate shaders if needed if (hdr64 != null) createLumShaders(); }
private void renderToneMap(Renderer r, FrameBuffer out){ tone.setFloat("A", exposure); tone.setFloat("White", whiteLevel); tone.setTexture("Lum", scene1[oppSrc]); tone.setTexture("Lum2", scene1[curSrc]); tone.setFloat("BlendFactor", blendFactor); renderProcessing(r, out, tone); }
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(); }