Skip to content

Commit 3d87866

Browse files
committed
Merge pull request mrdoob#8109 from borismus/dev
Support for renderRect from WebVR spec
2 parents e39520a + 85c4922 commit 3d87866

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

examples/js/effects/VREffect.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
THREE.VREffect = function ( renderer, onError ) {
1313

1414
var vrHMD;
15-
var eyeTranslationL, eyeFOVL;
16-
var eyeTranslationR, eyeFOVR;
15+
var eyeTranslationL, eyeFOVL, renderRectL;
16+
var eyeTranslationR, eyeFOVR, renderRectR;
1717

1818
function gotVRDevices( devices ) {
1919

@@ -102,6 +102,8 @@ THREE.VREffect = function ( renderer, onError ) {
102102
eyeTranslationR = eyeParamsR.eyeTranslation;
103103
eyeFOVL = eyeParamsL.recommendedFieldOfView;
104104
eyeFOVR = eyeParamsR.recommendedFieldOfView;
105+
renderRectL = eyeParamsL.renderRect;
106+
renderRectR = eyeParamsR.renderRect;
105107

106108
if ( Array.isArray( scene ) ) {
107109

@@ -127,13 +129,24 @@ THREE.VREffect = function ( renderer, onError ) {
127129
cameraR.translateX( eyeTranslationR.x * this.scale );
128130

129131
// render left eye
130-
renderer.setViewport( 0, 0, size.width / 2, size.height );
131-
renderer.setScissor( 0, 0, size.width / 2, size.height );
132+
if ( renderRectL === undefined ) {
133+
134+
renderRectL = { x: 0, y: 0, width: size.width / 2, height: size.height };
135+
136+
}
137+
renderer.setViewport( renderRectL.x, renderRectL.y, renderRectL.width, renderRectL.height );
138+
renderer.setScissor( renderRectL.x, renderRectL.y, renderRectL.width, renderRectL.height );
132139
renderer.render( scene, cameraL );
133140

134141
// render right eye
135-
renderer.setViewport( size.width / 2, 0, size.width / 2, size.height );
136-
renderer.setScissor( size.width / 2, 0, size.width / 2, size.height );
142+
if ( renderRectR === undefined ) {
143+
144+
renderRectR = { x: size.width / 2, y: 0, width: size.width / 2, height: size.height };
145+
146+
}
147+
148+
renderer.setViewport( renderRectR.x, renderRectR.y, renderRectR.width, renderRectR.height );
149+
renderer.setScissor( renderRectR.x, renderRectR.y, renderRectR.width, renderRectR.height );
137150
renderer.render( scene, cameraR );
138151

139152
renderer.setScissorTest( false );

0 commit comments

Comments
 (0)