提交 43e11a45 编写于 作者: B Brian Chirls 提交者: Mr.doob

VREffect: Check VRLayer configuration on every render (#9778)

* VREffect: Check VRLayer configuration on every render

* mrdoobapproves: spacing fixes #9778
上级 d2842cc9
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册