code: function Stage(opts) {
    this._progressive = !!(opts && opts.progressive);
  
    // The list of layers in display order (background to foreground).
    this._layers = [];
  
    // The list of renderers; the i-th renderer is for the i-th layer.
    this._renderers = [];
  
    // The lists of tiles to load and render, populated during render().
    this._tilesToLoad = [];
    this._tilesToRender = [];
  
    // Temporary tile lists.
    this._tmpVisible = [];
    this._tmpChildren = [];
  
    // Cached stage dimensions.
    // Start with zero, which inhibits rendering until setSize() is called.
    this._width = 0;
    this._height = 0;
  
    // Temporary variable for rect.
    this._tmpRect = {};
  
    // Temporary variable for size.
    this._tmpSize = {};
  
    // Work queue for createTexture.
    this._createTextureWorkQueue = new WorkQueue();
  
    // Function to emit event when render parameters have changed.
    this._emitRenderInvalid = this._emitRenderInvalid.bind(this);
  
    // The renderer registry maps each geometry/view pair into the respective
    // Renderer class.
    this._rendererRegistry = new RendererRegistry();
  }
docs: Signals that the contents of the stage have been invalidated and must be
  rendered again.
  
  This is used by the {@link RenderLoop} implementation.
  
  @event Stage#renderInvalid
   
  @interface Stage
  @classdesc
  
  A Stage is a container with the ability to render a stack of
  {@link Layer layers}.
  
  This is a superclass containing logic that is common to all implementations;
  it should never be instantiated directly. Instead, use one of the
  subclasses: {@link WebGlStage}, {@link CssStage} or {@link FlashStage}.
  
  @param {Object} opts
  @param {boolean} [opts.progressive=false]
  
  Options listed here may be passed into the `opts` constructor argument of
  subclasses.
  
  The `progressive` option controls whether resolution levels are loaded in
  order, from lowest to highest. This results in a more pleasing effect when
  zooming past several levels in a large panoramas, but consumes additional
  bandwidth.