|
@@ -94,10 +94,10 @@ THREE.VREffect = function ( renderer, onError ) {
|
|
|
var requestFullscreen;
|
|
|
var exitFullscreen;
|
|
|
var fullscreenElement;
|
|
|
- var leftBounds = [ 0.0, 0.0, 0.5, 1.0 ];
|
|
|
- var rightBounds = [ 0.5, 0.0, 0.5, 1.0 ];
|
|
|
+ var defaultLeftBounds = [ 0.0, 0.0, 0.5, 1.0 ];
|
|
|
+ var defaultRightBounds = [ 0.5, 0.0, 0.5, 1.0 ];
|
|
|
|
|
|
- function onFullscreenChange() {
|
|
|
+ function onVRDisplayPresentChange() {
|
|
|
|
|
|
var wasPresenting = scope.isPresenting;
|
|
|
scope.isPresenting = vrDisplay !== undefined && vrDisplay.isPresenting;
|
|
@@ -108,16 +108,6 @@ THREE.VREffect = function ( renderer, onError ) {
|
|
|
var eyeWidth = eyeParamsL.renderWidth;
|
|
|
var eyeHeight = eyeParamsL.renderHeight;
|
|
|
|
|
|
- var layers = vrDisplay.getLayers();
|
|
|
- if ( layers.length ) {
|
|
|
-
|
|
|
- var layer = layers[0];
|
|
|
-
|
|
|
- leftBounds = layer.leftBounds !== null && layer.leftBounds.length === 4 ? layer.leftBounds : [ 0.0, 0.0, 0.5, 1.0 ];
|
|
|
- rightBounds = layer.rightBounds !== null && layer.rightBounds.length === 4 ? layer.rightBounds : [ 0.5, 0.0, 0.5, 1.0 ];
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
if ( !wasPresenting ) {
|
|
|
|
|
|
rendererPixelRatio = renderer.getPixelRatio();
|
|
@@ -137,7 +127,7 @@ THREE.VREffect = function ( renderer, onError ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- window.addEventListener( 'vrdisplaypresentchange', onFullscreenChange, false );
|
|
|
+ window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );
|
|
|
|
|
|
this.setFullScreen = function ( boolean ) {
|
|
|
|
|
@@ -260,17 +250,36 @@ THREE.VREffect = function ( renderer, onError ) {
|
|
|
// When rendering we don't care what the recommended size is, only what the actual size
|
|
|
// of the backbuffer is.
|
|
|
var size = renderer.getSize();
|
|
|
+ var layers = vrDisplay.getLayers();
|
|
|
+ var leftBounds;
|
|
|
+ var rightBounds;
|
|
|
+
|
|
|
+ if ( layers.length ) {
|
|
|
+
|
|
|
+ var layer = layers[ 0 ];
|
|
|
+
|
|
|
+ leftBounds = layer.leftBounds !== null && layer.leftBounds.length === 4 ? layer.leftBounds : defaultLeftBounds;
|
|
|
+ rightBounds = layer.rightBounds !== null && layer.rightBounds.length === 4 ? layer.rightBounds : defaultRightBounds;
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ leftBounds = defaultLeftBounds;
|
|
|
+ rightBounds = defaultRightBounds;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
renderRectL = {
|
|
|
x: Math.round( size.width * leftBounds[ 0 ] ),
|
|
|
y: Math.round( size.height * leftBounds[ 1 ] ),
|
|
|
width: Math.round( size.width * leftBounds[ 2 ] ),
|
|
|
- height: Math.round(size.height * leftBounds[ 3 ] )
|
|
|
+ height: Math.round(size.height * leftBounds[ 3 ] )
|
|
|
};
|
|
|
renderRectR = {
|
|
|
x: Math.round( size.width * rightBounds[ 0 ] ),
|
|
|
y: Math.round( size.height * rightBounds[ 1 ] ),
|
|
|
width: Math.round( size.width * rightBounds[ 2 ] ),
|
|
|
- height: Math.round(size.height * rightBounds[ 3 ] )
|
|
|
+ height: Math.round(size.height * rightBounds[ 3 ] )
|
|
|
};
|
|
|
|
|
|
if ( renderTarget ) {
|
|
@@ -278,7 +287,7 @@ THREE.VREffect = function ( renderer, onError ) {
|
|
|
renderer.setRenderTarget( renderTarget );
|
|
|
renderTarget.scissorTest = true;
|
|
|
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
|
|
|
renderer.setRenderTarget( null );
|
|
|
renderer.setScissorTest( true );
|
|
@@ -311,7 +320,6 @@ THREE.VREffect = function ( renderer, onError ) {
|
|
|
cameraL.projectionMatrix = fovToProjection( eyeParamsL.fieldOfView, true, camera.near, camera.far );
|
|
|
cameraR.projectionMatrix = fovToProjection( eyeParamsR.fieldOfView, true, camera.near, camera.far );
|
|
|
|
|
|
-
|
|
|
}
|
|
|
|
|
|
// render left eye
|