12
12
THREE . VREffect = function ( renderer , onError ) {
13
13
14
14
var vrHMD ;
15
- var eyeTranslationL , eyeFOVL ;
16
- var eyeTranslationR , eyeFOVR ;
15
+ var eyeTranslationL , eyeFOVL , rectL ;
16
+ var eyeTranslationR , eyeFOVR , rectR ;
17
17
18
18
function gotVRDevices ( devices ) {
19
19
@@ -102,6 +102,8 @@ THREE.VREffect = function ( renderer, onError ) {
102
102
eyeTranslationR = eyeParamsR . eyeTranslation ;
103
103
eyeFOVL = eyeParamsL . recommendedFieldOfView ;
104
104
eyeFOVR = eyeParamsR . recommendedFieldOfView ;
105
+ rectL = eyeParamsL . renderRect ;
106
+ rectR = eyeParamsR . renderRect ;
105
107
106
108
if ( Array . isArray ( scene ) ) {
107
109
@@ -127,13 +129,31 @@ THREE.VREffect = function ( renderer, onError ) {
127
129
cameraR . translateX ( eyeTranslationR . x * this . scale ) ;
128
130
129
131
// 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 ( rectL ) {
133
+
134
+ renderer . setViewport ( rectL . x , rectL . y , rectL . width , rectL . height ) ;
135
+ renderer . setScissor ( rectL . x , rectL . y , rectL . width , rectL . height ) ;
136
+
137
+ } else {
138
+
139
+ renderer . setViewport ( 0 , 0 , size . width / 2 , size . height ) ;
140
+ renderer . setScissor ( 0 , 0 , size . width / 2 , size . height ) ;
141
+
142
+ }
132
143
renderer . render ( scene , cameraL ) ;
133
144
134
145
// 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 ) ;
146
+ if ( rectR ) {
147
+
148
+ renderer . setViewport ( rectR . x , rectR . y , rectR . width , rectR . height ) ;
149
+ renderer . setScissor ( rectR . x , rectR . y , rectR . width , rectR . height ) ;
150
+
151
+ } else {
152
+
153
+ renderer . setViewport ( size . width / 2 , 0 , size . width / 2 , size . height ) ;
154
+ renderer . setScissor ( size . width / 2 , 0 , size . width / 2 , size . height ) ;
155
+
156
+ }
137
157
renderer . render ( scene , cameraR ) ;
138
158
139
159
renderer . setScissorTest ( false ) ;
0 commit comments