diff --git a/examples/webvr_ballshooter_multiview.html b/examples/webvr_ballshooter_multiview.html
index c0c7c8bb7bcd31666513938d704df174b546f7e8..aabf3b697fc8bfdb9f8c05bd8e6d1b7fc8868ad4 100644
--- a/examples/webvr_ballshooter_multiview.html
+++ b/examples/webvr_ballshooter_multiview.html
@@ -44,23 +44,12 @@
animate();
function init() {
- const urlParams = new URLSearchParams(window.location.search);
- const multiview = urlParams.has('enableMultiview');
container = document.createElement( 'div' );
document.body.appendChild( container );
- var info = document.createElement( 'div' );
- info.style.position = 'absolute';
- info.style.top = '10px';
- info.style.width = '100%';
- info.style.textAlign = 'center';
- // @todo Change enabled for requested and check renderer.vr.multiview
- info.innerHTML = 'OVR_multiview2 demo - ' + (multiview ? 'multiview enabled' : 'multiview not enabled') + ` toggle`;
- container.appendChild( info );
- ms = document.createElement('div');
- ms.innerHTML = '';
- info.appendChild(ms);
+ const urlParams = new URLSearchParams(window.location.search);
+ const multiview = urlParams.has('enableMultiview');
scene = new THREE.Scene();
scene.background = new THREE.Color( 0x505050 );
@@ -111,6 +100,29 @@
//
+ var info = document.createElement( 'div' );
+ info.style.position = 'absolute';
+ info.style.top = '10px';
+ info.style.width = '100%';
+ info.style.textAlign = 'center';
+
+ function colorize( value ) {
+
+ return value ? 'true' : 'false';
+
+ }
+
+ // @todo Change enabled for requested and check renderer.vr.multiview
+ info.innerHTML = 'OVR_multiview2 demo
requested: ' + colorize(multiview) + ` toggle`
+ + `
available: ${ colorize( renderer.multiview.isAvailable() ) }
enabled: ${ colorize( renderer.multiview.isEnabled() ) }
`;
+ container.appendChild( info );
+ ms = document.createElement('div');
+ ms.innerHTML = '';
+ info.appendChild(ms);
+
+ //+ (multiview ? 'true' : 'false')
+ //
+
document.body.appendChild( WEBVR.createButton( renderer ) );
// controllers
diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js
index 03a1933d7ea9d3bc50c2ade2ffeb9ddd4bfc7463..26e8462b6605f82e99c47b3aeb77c44ef47c8b95 100644
--- a/src/renderers/WebGLRenderer.js
+++ b/src/renderers/WebGLRenderer.js
@@ -59,7 +59,7 @@ function WebGLRenderer( parameters ) {
var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),
_context = parameters.context !== undefined ? parameters.context : null,
- _multiview = parameters.multiview !== undefined ? parameters.multiview : false,
+ _multiviewRequested = parameters.multiview !== undefined ? parameters.multiview : false,
_alpha = parameters.alpha !== undefined ? parameters.alpha : false,
_depth = parameters.depth !== undefined ? parameters.depth : true,
@@ -315,8 +315,8 @@ function WebGLRenderer( parameters ) {
this.vr = vr;
- var multiviewObject = new WebGLMultiview(_multiview, _gl, _canvas, extensions, capabilities );
- var multiviewEnabled = this.multiviewEnabled = multiviewObject.isEnabled();
+ var multiview = this.multiview = new WebGLMultiview(_multiviewRequested, _gl, _canvas, extensions, capabilities );
+ var multiviewEnabled = this.multiviewEnabled = multiview.isEnabled();
// shadow map
@@ -1370,7 +1370,7 @@ function WebGLRenderer( parameters ) {
if ( multiviewEnabled ) {
- multiviewObject.bindMultiviewFrameBuffer( camera );
+ multiview.bindMultiviewFrameBuffer( camera );
_gl.disable( _gl.SCISSOR_TEST );
@@ -1403,7 +1403,7 @@ function WebGLRenderer( parameters ) {
}
- multiviewObject.unbindMultiviewFrameBuffer( camera );
+ multiview.unbindMultiviewFrameBuffer( camera );
} else {
diff --git a/src/renderers/webgl/WebGLMultiview.js b/src/renderers/webgl/WebGLMultiview.js
index 68c747ffa16e043a9fe3f8d52ace7545b72db5d8..a409b5c0363e2637b0253972595193b166c438a6 100644
--- a/src/renderers/webgl/WebGLMultiview.js
+++ b/src/renderers/webgl/WebGLMultiview.js
@@ -1,3 +1,7 @@
+/**
+ * @author fernandojsg / http://fernandojsg.com
+ */
+
function WebGLMultiview( requested, gl, canvas, extensions, capabilities ) {
this.isAvailable = function () {
diff --git a/src/renderers/webgl/WebGLProgram.js b/src/renderers/webgl/WebGLProgram.js
index c8425d3763d337d31227388e1a45b5c48778d6e9..3ca86a0c24b68915bf84e1528488c13f19564d43 100644
--- a/src/renderers/webgl/WebGLProgram.js
+++ b/src/renderers/webgl/WebGLProgram.js
@@ -432,10 +432,10 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
renderer.multiviewEnabled ? [
'uniform mat4 modelViewMatrix;',
- 'uniform mat4 projectionMatrices[2];',
'uniform mat3 normalMatrix;',
-
'uniform mat4 viewMatrices[2];',
+ 'uniform mat4 projectionMatrices[2];',
+
'#define viewMatrix viewMatrices[VIEW_ID]',
'#define projectionMatrix projectionMatrices[VIEW_ID]'