beginSurfaceWithClear() {
    if (!this._redirectingToSurfacePass && !this.getIsCachingScreen() && !this.getIsCachingSurface()) {
      // clear previous depth pass and set to max depth
      this.passes.depth.beginWithClear(255.0, 255.0, 255.0, 255.0);
      this.passes.depth.end();

      // set current passes
      // we alternate passes to reduce the number of fullscreen draw calls needed
      // we can cheat in some cases and use the last surface pass to read while we're writing the current surface pass
      if (this._currentSurfacePass !== this.passes.surfaceB) {
        this._currentSurfacePass = this.passes.surfaceB;
        this._refractMap = this.passes.surfaceA.texture;
        this._currentBloomCompositePass = this.passes.bloomCompositeB;
        this._previousBloomCompositePass = this.passes.bloomCompositeA;
      } else {
        this._currentSurfacePass = this.passes.surfaceA;
        this._refractMap = this.passes.surfaceB.texture;
        this._currentBloomCompositePass = this.passes.bloomCompositeA;
        this._previousBloomCompositePass = this.passes.bloomCompositeB;
      }

      // redirect all drawing into surface pass
      this._currentSurfacePass.beginWithResetClear(this._postProcessingRenderPassStackId);
      this._redirectingToSurfacePass = true;
    }
  }
Begins fx frame by redirecting drawing into framebuffers for post processing such as bloom, distortion, etc.
NOTE: This should be called once per frame by a FXCompositeLayer just before drawing anything that should be affected by post processing.