浏览代码

Move multiview.isAvailable() to renderer.capabilities.multiview

Fernando Serrano 6 年之前
父节点
当前提交
d16d9746e1

+ 2 - 2
examples/webvr_multiview.html

@@ -74,7 +74,7 @@
 				info.style.width = '100%';
 				info.style.width = '100%';
 				info.style.textAlign = 'center';
 				info.style.textAlign = 'center';
 				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - multiview<br/>';
 				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - multiview<br/>';
-				info.innerHTML += renderer.multiview.isAvailable() ? `<span style="color: #33ff33"><b>OVR_multiview2</b> is supported in your browser</span>` :
+				info.innerHTML += renderer.capabilities.multiview ? `<span style="color: #33ff33"><b>OVR_multiview2</b> is supported in your browser</span>` :
 					`<span style="color: #ff3333"><b>OVR_multiview2</b> is not supported or enabled in your browser</span>`;
 					`<span style="color: #ff3333"><b>OVR_multiview2</b> is not supported or enabled in your browser</span>`;
 
 
 				container.appendChild( info );
 				container.appendChild( info );
@@ -86,7 +86,7 @@
 
 
 				room = new THREE.LineSegments(
 				room = new THREE.LineSegments(
 					new BoxLineGeometry( 6, 6, 6, 10, 10, 10 ),
 					new BoxLineGeometry( 6, 6, 6, 10, 10, 10 ),
-					new THREE.LineBasicMaterial( { color: renderer.multiview.isAvailable() ? 0x99ff99 : 0xff3333 } )
+					new THREE.LineBasicMaterial( { color: renderer.capabilities.multiview ? 0x99ff99 : 0xff3333 } )
 				);
 				);
 				room.geometry.translate( 0, 3, 0 );
 				room.geometry.translate( 0, 3, 0 );
 				scene.add( room );
 				scene.add( room );

+ 4 - 4
src/renderers/WebGLRenderer.js

@@ -314,7 +314,7 @@ function WebGLRenderer( parameters ) {
 
 
 	// Multiview
 	// Multiview
 
 
-	var multiview = new WebGLMultiview( _this, _gl, _gl.getContextAttributes() );
+	var multiview = new WebGLMultiview( _this, _gl );
 
 
 	this.multiview = multiview;
 	this.multiview = multiview;
 
 
@@ -1181,7 +1181,7 @@ function WebGLRenderer( parameters ) {
 
 
 		}
 		}
 
 
-		if ( multiview.isAvailable() ) {
+		if ( capabilities.multiview ) {
 
 
 			multiview.attachRenderTarget( camera );
 			multiview.attachRenderTarget( camera );
 
 
@@ -1241,7 +1241,7 @@ function WebGLRenderer( parameters ) {
 
 
 		state.setPolygonOffset( false );
 		state.setPolygonOffset( false );
 
 
-		if ( multiview.isAvailable() ) {
+		if ( capabilities.multiview ) {
 
 
 			multiview.detachRenderTarget( camera );
 			multiview.detachRenderTarget( camera );
 
 
@@ -1389,7 +1389,7 @@ function WebGLRenderer( parameters ) {
 			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
 			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
 			var group = renderItem.group;
 			var group = renderItem.group;
 
 
-			if ( multiview.isAvailable() ) {
+			if ( capabilities.multiview ) {
 
 
 				_currentArrayCamera = camera;
 				_currentArrayCamera = camera;
 
 

+ 1 - 1
src/renderers/webgl/WebGLCapabilities.js

@@ -87,7 +87,7 @@ function WebGLCapabilities( gl, extensions, parameters ) {
 	var maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;
 	var maxSamples = isWebGL2 ? gl.getParameter( gl.MAX_SAMPLES ) : 0;
 
 
 	var multiviewExt = extensions.get( 'OVR_multiview2' );
 	var multiviewExt = extensions.get( 'OVR_multiview2' );
-	var multiview = isWebGL2 && ( !! multiviewExt );
+	var multiview = isWebGL2 && ( !! multiviewExt ) && !gl.getContextAttributes().antialias;
 	var maxMultiviewViews = multiview ? gl.getParameter( multiviewExt.MAX_VIEWS_OVR ) : 0;
 	var maxMultiviewViews = multiview ? gl.getParameter( multiviewExt.MAX_VIEWS_OVR ) : 0;
 
 
 	return {
 	return {

+ 2 - 9
src/renderers/webgl/WebGLMultiview.js

@@ -8,7 +8,7 @@ import { Matrix3 } from '../../math/Matrix3.js';
 import { Matrix4 } from '../../math/Matrix4.js';
 import { Matrix4 } from '../../math/Matrix4.js';
 import { Vector2 } from '../../math/Vector2.js';
 import { Vector2 } from '../../math/Vector2.js';
 
 
-function WebGLMultiview( renderer, gl, contextAttributes ) {
+function WebGLMultiview( renderer, gl ) {
 
 
 	var DEFAULT_NUMVIEWS = 2;
 	var DEFAULT_NUMVIEWS = 2;
 
 
@@ -50,12 +50,6 @@ function WebGLMultiview( renderer, gl, contextAttributes ) {
 
 
 	//
 	//
 
 
-	function isAvailable() {
-
-		return capabilities.multiview && ! contextAttributes.antialias;
-
-	}
-
 	function updateCameraProjectionMatricesUniform( camera, uniforms ) {
 	function updateCameraProjectionMatricesUniform( camera, uniforms ) {
 
 
 		var cameras = getCameraArray( camera );
 		var cameras = getCameraArray( camera );
@@ -203,7 +197,7 @@ function WebGLMultiview( renderer, gl, contextAttributes ) {
 	}
 	}
 
 
 
 
-	if ( isAvailable() ) {
+	if ( renderer.capabilities.multiview ) {
 
 
 		renderTarget = new WebGLMultiviewRenderTarget( 0, 0, DEFAULT_NUMVIEWS );
 		renderTarget = new WebGLMultiviewRenderTarget( 0, 0, DEFAULT_NUMVIEWS );
 
 
@@ -224,7 +218,6 @@ function WebGLMultiview( renderer, gl, contextAttributes ) {
 
 
 	this.attachRenderTarget = attachRenderTarget;
 	this.attachRenderTarget = attachRenderTarget;
 	this.detachRenderTarget = detachRenderTarget;
 	this.detachRenderTarget = detachRenderTarget;
-	this.isAvailable = isAvailable;
 	this.getNumViews = getNumViews;
 	this.getNumViews = getNumViews;
 	this.updateCameraProjectionMatricesUniform = updateCameraProjectionMatricesUniform;
 	this.updateCameraProjectionMatricesUniform = updateCameraProjectionMatricesUniform;
 	this.updateCameraViewMatricesUniform = updateCameraViewMatricesUniform;
 	this.updateCameraViewMatricesUniform = updateCameraViewMatricesUniform;