Program: 94227
Project: 94227
Buggy source:
public static void main(){
  profiler.stop("String_Node_Str");
  if (restartOnExport && Gdx.files.internal("String_Node_Str").lastModified() > startMillis) {
    startMillis=System.currentTimeMillis();
    restart();
  }
  boolean screenShadersUsed=false;
  for (  Scene scene : scenes) {
    if (scene.screenShaders.size() > 0) {
      screenShadersUsed=true;
      break;
    }
  }
  profiler.start("String_Node_Str");
  Gdx.gl.glClearColor(display.clearColor.r,display.clearColor.g,display.clearColor.b,display.clearColor.a);
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  Gdx.gl.glClearColor(0,0,0,0);
  Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
  profiler.stop("String_Node_Str");
  time+=TICK_TIME * timeSpeed;
  ++GdxProcessor.currentTick;
  fingers.clear();
  for (  Finger f : allocatedFingers) {
    if (f.down() || f.up())     fingers.add(f);
  }
  profiler.stop("String_Node_Str");
  for (  Component c : components) {
    if (c.state != null)     c.state.main();
  }
  profiler.stop("String_Node_Str");
  Viewport vp;
  ArrayListScenes newSceneList=(ArrayListScenes)scenes.clone();
  boolean depthBufferCleared=false;
  boolean colorBufferCleared=false;
  ArrayList<Scene> depthRenderScenes=new ArrayList<Scene>();
  for (int s=0; s < scenes.size(); s++) {
    Scene scene=scenes.get(s);
    for (    ScreenShader filter : scene.screenShaders) {
      if (filter.usingDepthTexture()) {
        depthRenderScenes.add(scene);
        for (int ns=s; ns >= 0; ns--) {
          if (scenes.get(ns).renderPassthrough)           depthRenderScenes.add(scenes.get(ns));
 else           break;
        }
        break;
      }
    }
  }
  for (int i=0; i < newSceneList.size(); i++) {
    final Scene scene=newSceneList.get(i);
    boolean prevSceneRenderPassthrough=false;
    boolean nextSceneRenderPassthrough=false;
    if (i > 0)     prevSceneRenderPassthrough=newSceneList.get(i - 1).renderPassthrough;
    if (i < newSceneList.size() - 1)     nextSceneRenderPassthrough=newSceneList.get(i + 1).renderPassthrough;
    if (!prevSceneRenderPassthrough) {
      colorBufferCleared=false;
      depthBufferCleared=false;
    }
    scene.update();
    profiler.stop("String_Node_Str");
    if (!scene.valid() || !scene.visible)     continue;
    vp=scene.viewport;
    vp.apply();
    final float vpw=vp.w;
    final float vph=vp.h;
    if (defaultScreenShaderUniformSet == null) {
      defaultScreenShaderUniformSet=new UniformSet(){
        @Override public void set(        ShaderProgram program){
          program.setUniformf("String_Node_Str",Bdx.time);
          program.setUniformi("String_Node_Str",1);
          program.setUniformi("String_Node_Str",2);
          program.setUniformf("String_Node_Str",vpw);
          program.setUniformf("String_Node_Str",vph);
          program.setUniformf("String_Node_Str",scene.camera.near());
          program.setUniformf("String_Node_Str",scene.camera.far());
        }
      }
;
    }
    depthShaderProvider.update(scene);
    shaderProvider.update(scene);
    for (    Camera cam : scene.cameras) {
      if (cam.renderToTexture) {
        cam.update();
        if (cam.renderBuffer == null) {
          cam.initRenderBuffer();
        }
        cam.renderBuffer.begin();
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT | GL20.GL_COLOR_BUFFER_BIT);
        renderWorld(modelBatch,scene,cam);
        cam.renderBuffer.end();
      }
    }
    boolean frameBufferInUse=false;
    if (display.downsample != 1 || scene.screenShaders.size() > 0 || (screenShadersUsed && scene.renderPassthrough)) {
      frameBuffer.begin();
      frameBufferInUse=true;
      if (!colorBufferCleared) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        colorBufferCleared=true;
      }
    }
    Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
    renderWorld(modelBatch,scene,scene.camera);
    if (frameBufferInUse) {
      frameBuffer.end();
      if (depthRenderScenes.contains(scene)) {
        Gdx.gl.glClearColor(1,1,1,1);
        depthBuffer.begin();
        if (!depthBufferCleared) {
          Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
          depthBufferCleared=true;
        }
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
        renderWorld(depthBatch,scene,scene.camera);
        depthBuffer.end();
        depthBuffer.getColorBufferTexture().bind(2);
      }
      scene.lastFrameBuffer.getColorBufferTexture().bind(1);
      Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
      Gdx.gl.glClearColor(0,0,0,0);
      for (      ScreenShader filter : scene.screenShaders) {
        filter.compile();
        if (!filter.active)         continue;
        if (!filter.uniformSets.contains(defaultScreenShaderUniformSet))         filter.uniformSets.add(defaultScreenShaderUniformSet);
        if (!availableTempBuffers.containsKey(filter.renderScale.x * display.downsample())) {
          int fx=Math.max(1,(int)(Gdx.graphics.getWidth() * display.downsample()));
          int fy=Math.max(1,(int)(Gdx.graphics.getHeight() * display.downsample()));
          availableTempBuffers.put(filter.renderScale.x * display.downsample(),new RenderBuffer(spriteBatch,fx,fy));
        }
        RenderBuffer tempBuffer=availableTempBuffers.get(filter.renderScale.x * display.downsample);
        tempBuffer.clear();
        frameBuffer.drawTo(tempBuffer,filter,0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
        if (!filter.overlay)         frameBuffer.clear();
        tempBuffer.drawTo(frameBuffer);
      }
      if (!scene.renderPassthrough || scene == newSceneList.get(newSceneList.size() - 1) || !nextSceneRenderPassthrough)       frameBuffer.drawTo(null,null,vp.x,vp.y,vp.w,vp.h);
      scene.lastFrameBuffer.clear();
      frameBuffer.drawTo(scene.lastFrameBuffer);
    }
    scene.executeDrawCommands();
    Bullet.DebugDrawer debugDrawer=(Bullet.DebugDrawer)scene.world.getDebugDrawer();
    debugDrawer.drawWorld(scene.world,scene.camera.data);
    profiler.stop("String_Node_Str");
  }
  mouse.wheelMove=0;
  Bdx.display.changed=false;
  profiler.stop("String_Node_Str");
  if (profiler.active()) {
    if (profiler.gl.active()) {
      profiler.gl.updateStats();
    }
    profiler.updateVariables();
    profiler.updateSubsystems();
    if (profiler.visible()) {
      profiler.updateVisible();
      profiler.scene.update();
      Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
      renderWorld(modelBatch,profiler.scene,profiler.scene.camera);
      profiler.scene.executeDrawCommands();
    }
    if (profiler.gl.active()) {
      profiler.gl.reset();
      profiler.gl.updateFields();
    }
  }
  if (requestedRestart) {
    requestedRestart=false;
    Scene.clearColorDefaultSet=false;
    dispose();
    for (    Scene scene : new ArrayList<Scene>(scenes)) {
      scenes.remove(scene);
      scene.end();
    }
    profiler.end();
    init();
    scenes.add(firstScene);
  }
  shaderProvider.handleMaterialShaderChanges();
  profiler.start("String_Node_Str");
}

Fixed version (ground truth):
public static void main(){
  profiler.stop("String_Node_Str");
  if (restartOnExport && Gdx.files.internal("String_Node_Str").lastModified() > startMillis) {
    startMillis=System.currentTimeMillis();
    restart();
  }
  boolean screenShadersUsed=false;
  for (  Scene scene : scenes) {
    if (scene.screenShaders.size() > 0) {
      screenShadersUsed=true;
      break;
    }
  }
  profiler.start("String_Node_Str");
  Gdx.gl.glClearColor(display.clearColor.r,display.clearColor.g,display.clearColor.b,display.clearColor.a);
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  Gdx.gl.glClearColor(0,0,0,0);
  Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
  profiler.stop("String_Node_Str");
  time+=TICK_TIME * timeSpeed;
  ++GdxProcessor.currentTick;
  fingers.clear();
  for (  Finger f : allocatedFingers) {
    if (f.down() || f.up())     fingers.add(f);
  }
  profiler.stop("String_Node_Str");
  for (  Component c : components) {
    if (c.state != null)     c.state.main();
  }
  profiler.stop("String_Node_Str");
  Viewport vp;
  ArrayListScenes newSceneList=(ArrayListScenes)scenes.clone();
  boolean depthBufferCleared=false;
  boolean colorBufferCleared=false;
  ArrayList<Scene> depthRenderScenes=new ArrayList<Scene>();
  for (int s=0; s < scenes.size(); s++) {
    Scene scene=scenes.get(s);
    for (    ScreenShader filter : scene.screenShaders) {
      if (filter.usingDepthTexture()) {
        depthRenderScenes.add(scene);
        for (int ns=s; ns >= 0; ns--) {
          if (scenes.get(ns).renderPassthrough)           depthRenderScenes.add(scenes.get(ns));
 else           break;
        }
        break;
      }
    }
  }
  for (int i=0; i < newSceneList.size(); i++) {
    final Scene scene=newSceneList.get(i);
    boolean prevSceneRenderPassthrough=false;
    boolean nextSceneRenderPassthrough=false;
    if (i > 0)     prevSceneRenderPassthrough=newSceneList.get(i - 1).renderPassthrough;
    if (i < newSceneList.size() - 1)     nextSceneRenderPassthrough=newSceneList.get(i + 1).renderPassthrough;
    if (!prevSceneRenderPassthrough) {
      colorBufferCleared=false;
      depthBufferCleared=false;
    }
    scene.update();
    profiler.stop("String_Node_Str");
    if (!scene.valid() || !scene.visible)     continue;
    vp=scene.viewport;
    vp.apply();
    final float vpw=vp.w;
    final float vph=vp.h;
    if (defaultScreenShaderUniformSet == null) {
      defaultScreenShaderUniformSet=new UniformSet(){
        @Override public void set(        ShaderProgram program){
          program.setUniformf("String_Node_Str",Bdx.time);
          program.setUniformi("String_Node_Str",1);
          program.setUniformi("String_Node_Str",2);
          program.setUniformf("String_Node_Str",vpw * display.downsample());
          program.setUniformf("String_Node_Str",vph * display.downsample());
          program.setUniformf("String_Node_Str",scene.camera.near());
          program.setUniformf("String_Node_Str",scene.camera.far());
        }
      }
;
    }
    depthShaderProvider.update(scene);
    shaderProvider.update(scene);
    for (    Camera cam : scene.cameras) {
      if (cam.renderToTexture) {
        cam.update();
        if (cam.renderBuffer == null)         cam.updateRenderBuffer();
        cam.renderBuffer.begin();
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT | GL20.GL_COLOR_BUFFER_BIT);
        renderWorld(modelBatch,scene,cam);
        cam.renderBuffer.end();
      }
    }
    boolean frameBufferInUse=false;
    if (display.downsample != 1 || scene.screenShaders.size() > 0 || (screenShadersUsed && scene.renderPassthrough)) {
      frameBuffer.begin();
      frameBufferInUse=true;
      if (!colorBufferCleared) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        colorBufferCleared=true;
      }
    }
    Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
    renderWorld(modelBatch,scene,scene.camera);
    if (frameBufferInUse) {
      frameBuffer.end();
      if (depthRenderScenes.contains(scene)) {
        Gdx.gl.glClearColor(1,1,1,1);
        depthBuffer.begin();
        if (!depthBufferCleared) {
          Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
          depthBufferCleared=true;
        }
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
        renderWorld(depthBatch,scene,scene.camera);
        depthBuffer.end();
        depthBuffer.getColorBufferTexture().bind(2);
      }
      scene.lastFrameBuffer.getColorBufferTexture().bind(1);
      Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
      Gdx.gl.glClearColor(0,0,0,0);
      for (      ScreenShader filter : scene.screenShaders) {
        filter.compile();
        if (!filter.active)         continue;
        if (!filter.uniformSets.contains(defaultScreenShaderUniformSet))         filter.uniformSets.add(defaultScreenShaderUniformSet);
        if (!availableTempBuffers.containsKey(filter.renderScale.x)) {
          int fx=Math.max(1,(int)(vp.size().x * filter.renderScale.x * display.downsample()));
          int fy=Math.max(1,(int)(vp.size().y * filter.renderScale.y * display.downsample()));
          availableTempBuffers.put(filter.renderScale.x,new RenderBuffer(spriteBatch,fx,fy));
        }
        RenderBuffer tempBuffer=availableTempBuffers.get(filter.renderScale.x);
        tempBuffer.clear();
        frameBuffer.drawTo(tempBuffer,filter,0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
        if (!filter.overlay)         frameBuffer.clear();
        tempBuffer.drawTo(frameBuffer);
      }
      if (!scene.renderPassthrough || scene == newSceneList.get(newSceneList.size() - 1) || !nextSceneRenderPassthrough)       frameBuffer.drawTo(null,null,vp.x,vp.y,vp.w,vp.h);
      scene.lastFrameBuffer.clear();
      frameBuffer.drawTo(scene.lastFrameBuffer);
    }
    scene.executeDrawCommands();
    Bullet.DebugDrawer debugDrawer=(Bullet.DebugDrawer)scene.world.getDebugDrawer();
    debugDrawer.drawWorld(scene.world,scene.camera.data);
    profiler.stop("String_Node_Str");
  }
  mouse.wheelMove=0;
  Bdx.display.changed=false;
  profiler.stop("String_Node_Str");
  if (profiler.active()) {
    if (profiler.gl.active()) {
      profiler.gl.updateStats();
    }
    profiler.updateVariables();
    profiler.updateSubsystems();
    if (profiler.visible()) {
      profiler.updateVisible();
      profiler.scene.update();
      Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
      renderWorld(modelBatch,profiler.scene,profiler.scene.camera);
      profiler.scene.executeDrawCommands();
    }
    if (profiler.gl.active()) {
      profiler.gl.reset();
      profiler.gl.updateFields();
    }
  }
  if (requestedRestart) {
    requestedRestart=false;
    Scene.clearColorDefaultSet=false;
    dispose();
    for (    Scene scene : new ArrayList<Scene>(scenes)) {
      scenes.remove(scene);
      scene.end();
    }
    profiler.end();
    init();
    scenes.add(firstScene);
  }
  shaderProvider.handleMaterialShaderChanges();
  profiler.start("String_Node_Str");
}