提交 24302ae5 编写于 作者: F Fernando Serrano

Add multiview status on example

上级 87f40038
...@@ -44,23 +44,12 @@ ...@@ -44,23 +44,12 @@
animate(); animate();
function init() { function init() {
const urlParams = new URLSearchParams(window.location.search);
const multiview = urlParams.has('enableMultiview');
container = document.createElement( 'div' ); container = document.createElement( 'div' );
document.body.appendChild( container ); document.body.appendChild( container );
var info = document.createElement( 'div' ); const urlParams = new URLSearchParams(window.location.search);
info.style.position = 'absolute'; const multiview = urlParams.has('enableMultiview');
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 ? '<b style="color:#3f3">multiview enabled</b>' : '<b style="color:#f33">multiview not enabled</b>') + ` <a href="${multiview ? '?' : '?enableMultiview'}">toggle</a>`;
container.appendChild( info );
ms = document.createElement('div');
ms.innerHTML = '';
info.appendChild(ms);
scene = new THREE.Scene(); scene = new THREE.Scene();
scene.background = new THREE.Color( 0x505050 ); scene.background = new THREE.Color( 0x505050 );
...@@ -111,6 +100,29 @@ ...@@ -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 ? '<b style="color:#3f3">true</b>' : '<b style="color:#f33">false</b>';
}
// @todo Change enabled for requested and check renderer.vr.multiview
info.innerHTML = '<b>OVR_multiview2</b> demo<br/>requested: ' + colorize(multiview) + ` <a href="${multiview ? '?' : '?enableMultiview'}">toggle</a>`
+ `<br/>available: ${ colorize( renderer.multiview.isAvailable() ) }<br/>enabled: ${ colorize( renderer.multiview.isEnabled() ) }<br/><br/>`;
container.appendChild( info );
ms = document.createElement('div');
ms.innerHTML = '';
info.appendChild(ms);
//+ (multiview ? '<b style="color:#3f3">true</b>' : '<b style="color:#f33">false</b>')
//
document.body.appendChild( WEBVR.createButton( renderer ) ); document.body.appendChild( WEBVR.createButton( renderer ) );
// controllers // controllers
......
...@@ -59,7 +59,7 @@ function WebGLRenderer( parameters ) { ...@@ -59,7 +59,7 @@ function WebGLRenderer( parameters ) {
var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),
_context = parameters.context !== undefined ? parameters.context : null, _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, _alpha = parameters.alpha !== undefined ? parameters.alpha : false,
_depth = parameters.depth !== undefined ? parameters.depth : true, _depth = parameters.depth !== undefined ? parameters.depth : true,
...@@ -315,8 +315,8 @@ function WebGLRenderer( parameters ) { ...@@ -315,8 +315,8 @@ function WebGLRenderer( parameters ) {
this.vr = vr; this.vr = vr;
var multiviewObject = new WebGLMultiview(_multiview, _gl, _canvas, extensions, capabilities ); var multiview = this.multiview = new WebGLMultiview(_multiviewRequested, _gl, _canvas, extensions, capabilities );
var multiviewEnabled = this.multiviewEnabled = multiviewObject.isEnabled(); var multiviewEnabled = this.multiviewEnabled = multiview.isEnabled();
// shadow map // shadow map
...@@ -1370,7 +1370,7 @@ function WebGLRenderer( parameters ) { ...@@ -1370,7 +1370,7 @@ function WebGLRenderer( parameters ) {
if ( multiviewEnabled ) { if ( multiviewEnabled ) {
multiviewObject.bindMultiviewFrameBuffer( camera ); multiview.bindMultiviewFrameBuffer( camera );
_gl.disable( _gl.SCISSOR_TEST ); _gl.disable( _gl.SCISSOR_TEST );
...@@ -1403,7 +1403,7 @@ function WebGLRenderer( parameters ) { ...@@ -1403,7 +1403,7 @@ function WebGLRenderer( parameters ) {
} }
multiviewObject.unbindMultiviewFrameBuffer( camera ); multiview.unbindMultiviewFrameBuffer( camera );
} else { } else {
......
/**
* @author fernandojsg / http://fernandojsg.com
*/
function WebGLMultiview( requested, gl, canvas, extensions, capabilities ) { function WebGLMultiview( requested, gl, canvas, extensions, capabilities ) {
this.isAvailable = function () { this.isAvailable = function () {
......
...@@ -432,10 +432,10 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters, ...@@ -432,10 +432,10 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
renderer.multiviewEnabled ? [ renderer.multiviewEnabled ? [
'uniform mat4 modelViewMatrix;', 'uniform mat4 modelViewMatrix;',
'uniform mat4 projectionMatrices[2];',
'uniform mat3 normalMatrix;', 'uniform mat3 normalMatrix;',
'uniform mat4 viewMatrices[2];', 'uniform mat4 viewMatrices[2];',
'uniform mat4 projectionMatrices[2];',
'#define viewMatrix viewMatrices[VIEW_ID]', '#define viewMatrix viewMatrices[VIEW_ID]',
'#define projectionMatrix projectionMatrices[VIEW_ID]' '#define projectionMatrix projectionMatrices[VIEW_ID]'
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册