docs: function View(props) {
  	props = props || {};
  	this.addCanvasContainerToDOMBody = this.addCanvasContainerToDOMBody.bind(this);
  	this.addCanvasToContainer = this.addCanvasToContainer.bind(this);
  
  	this.adaptiveResolution = props.adaptiveResolution;
  	this.adaptiveResolutionManager = new AdaptiveResolutionManager(props.adaptiveResolutionSettings);
  
  	this.fitAxis = props.fitAxis || 'y';
  
  	this.skipRender = Boolean(props.skipRender);
  	this.scene = props.scene || new THREE.Scene();
  	props.rendererSettings = props.rendererSettings || {};
  	if(props.camera) {
  		this.camera = props.camera;
  	} else {
  		this.camera = new THREE.PerspectiveCamera();
  		this.scene.add(this.camera);
  		this.camera.position.z = 8.50;
  		this.camera.position.y = 8.0;
  		this.camera.lookAt(this.scene.position);
  	}
  	if(this.camera instanceof THREE.PerspectiveCamera) {
  		this.setCamera = this.setCameraPerspective;
  	} else if (this.camera.isOrthographicCamera) {
  		this.setCamera = this.setCameraOthrographic;
  	}
  	this.autoStartRender = props.autoStartRender !== (undefined ? props.autoStartRender : true);
  	this.canvasContainerID = props.canvasContainerID || "WebGLCanvasContainer";
  
  	this.domMode = props.domMode || (props.canvasContainer ? DOMMode.CONTAINER : DOMMode.FULLSCREEN);
  	this.canvasContainer = props.canvasContainer || this.createCanvasContainer(this.canvasContainerID);
  	this.canvasID = props.canvasID || "WebGLCanvas";
  	this.domMode = props.domMode || (this.canvasContainer ? DOMMode.CONTAINER : DOMMode.FULLSCREEN);
  	this.domSize = {x:0, y:0};
  	
  	//use provided canvas or make your own
  	this.canvas = document.getElementById(this.canvasID) || this.createCanvas();
  	this.rendererSettings = defaults(props.rendererSettings, {
  		canvas: this.canvas,
  		antialias: true,
  		preserveDrawingBuffer: false
  	});
  
  
  	if( props.renderer !== undefined) {
  		this.renderer = props.renderer;
  	} else {
  		this.renderer = new THREE.WebGLRenderer(this.rendererSettings);
  	}
  	if(this.rendererSettings.autoClear === false) {
  		this.renderer.autoClear = false;
  		this.renderer.autoClearColor = false;
  	}
  
  	this.renderManager = new RenderManager(this, props.useRafPolyfill);
  	if(this.autoStartRender) this.renderManager.start();
  
  	this.adaptiveResolutionManager.onChange.add(this.onAdaptiveResolutionManagerChangeResolution.bind(this));
  
  	this.renderer.setPixelRatio(window.devicePixelRatio);
  	this.dpr = this.renderer.getPixelRatio();
  
  	this.setupResizing();
  
  	if(props.stats) {
  		this.stats = new RenderStats(this.renderer);
  		this.renderManager.onEnterFrame.add(this.stats.onEnterFrame);
  		this.renderManager.onExitFrame.add(this.stats.onExitFrame);
  	}
  
  }