title: Can anyone explain what is going on in this code for Three.js StereoEffect
body: <p>Can someone who understands stereo rendering give an explanation of what each of these functions is doing to create the VR stereo effect. There's little to no documentation on functions like <code>StereoCamera(), setScissor(), setViewPort()</code> in the three.js library. </p>
  
  <p>I would greatly appreciate any sort of high/low-level explanation. </p>
  
  <p>Also, a bug I'm having is when I try to change the eyeSep value it has no effect on the final render.  </p>
  
  <pre><code>/**
   * @author alteredq / http://alteredqualia.com/
   * @authod mrdoob / http://mrdoob.com/
   * @authod arodic / http://aleksandarrodic.com/
   * @authod fonserbc / http://fonserbc.github.io/
  */
  
  THREE.StereoEffect = function ( renderer ) {
  
      var _stereo = new THREE.StereoCamera();
      _stereo.aspect = 0.5;
      var size = new THREE.Vector2();
  
      this.setEyeSeparation = function ( eyeSep ) {
  
          _stereo.eyeSep = eyeSep;
  
      };
  
      this.setSize = function ( width, height ) {
  
          renderer.setSize( width, height );
  
      };
  
      this.render = function ( scene, camera ) {
  
          scene.updateMatrixWorld();
  
          if ( camera.parent === null ) camera.updateMatrixWorld();
  
          _stereo.update( camera );
  
          renderer.getSize( size );
  
          if ( renderer.autoClear ) renderer.clear();
          renderer.setScissorTest( true );
  
          renderer.setScissor( 0, 0, size.width / 2, size.height );
          renderer.setViewport( 0, 0, size.width / 2, size.height );
          renderer.render( scene, _stereo.cameraL );
  
          renderer.setScissor( size.width / 2, 0, size.width / 2, size.height );
          renderer.setViewport( size.width / 2, 0, size.width / 2, size.height );
          renderer.render( scene, _stereo.cameraR );
  
          renderer.setScissorTest( false );
  
      };
  
  };
  
  module.exports = THREE.StereoEffect;
  </code></pre>