anchor.diff:    Texture texInit;
     final _fbo0;
     final _fbo1;
  +  FBO _fboTarget = null;
     ViewportPlan plan;
     FullScreenRectangle rectangle;
   
  
positive.code:     rectangle.init(gl);
    }
  
    run() {
      if (filters.length == 0) return;
      plan.setup(gl);
      var tex0 = texInit;
      if (plan.viewWidth != _fbo0.width || plan.viewHeight != _fbo0.height) {
        _fbo0.make(width: plan.viewWidth, height: plan.viewHeight, hasDepthBuff: false);
        _fbo1.make(width: plan.viewWidth, height: plan.viewHeight, hasDepthBuff: false);
      }
      var dest = _fbo0;
      //gl.disable(BLEND);
      //gl.disable(DEPTH_TEST);
      for(var i = 0; i < filters.length; ++i){
  
negative.code:     }
      gl.bindFramebuffer(FRAMEBUFFER, null);
    }
  
    dispose() {
      _fbo0.dispose();
      _fbo1.dispose();
  //    filters.forEach((x){
  //      x.ctx.delete();
  //    });
      filters.clear();
    }
  }
  