Browse Source

Remove supportsMultiview and add numMultiviewViews instead

Fernando Serrano 6 years ago
parent
commit
ec8d510b99

+ 3 - 3
examples/webvr_ballshooter_multiview.html

@@ -51,8 +51,8 @@
 				container = document.createElement( 'div' );
 				container = document.createElement( 'div' );
 				document.body.appendChild( container );
 				document.body.appendChild( container );
 
 
-        const urlParams = new URLSearchParams(window.location.search);
-        const multiview = urlParams.has('enableMultiview');
+				const urlParams = new URLSearchParams(window.location.search);
+				const multiview = urlParams.has('enableMultiview');
 
 
 				scene = new THREE.Scene();
 				scene = new THREE.Scene();
 				scene.background = new THREE.Color( 0x505050 );
 				scene.background = new THREE.Color( 0x505050 );
@@ -93,7 +93,7 @@
 
 
 				//
 				//
 
 
-        var canvas = document.createElement( 'canvas' );
+				var canvas = document.createElement( 'canvas' );
 				var context = canvas.getContext( 'webgl2', { antialias: false } );
 				var context = canvas.getContext( 'webgl2', { antialias: false } );
 				renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context, multiview: multiview } );
 				renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context, multiview: multiview } );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setPixelRatio( window.devicePixelRatio );

+ 0 - 2
src/materials/Material.js

@@ -70,8 +70,6 @@ function Material() {
 
 
 	this.visible = true;
 	this.visible = true;
 
 
-	this.supportsMultiview = true;
-
 	this.userData = {};
 	this.userData = {};
 
 
 	this.needsUpdate = true;
 	this.needsUpdate = true;

+ 3 - 3
src/renderers/WebGLRenderer.js

@@ -1738,7 +1738,7 @@ function WebGLRenderer( parameters ) {
 
 
 		if ( refreshProgram || _currentCamera !== camera ) {
 		if ( refreshProgram || _currentCamera !== camera ) {
 
 
-			if ( material.supportsMultiview && multiview.isEnabled() ) {
+			if ( program.numMultiviewViews > 0 ) {
 
 
 				multiview.updateCameraProjectionMatrices( camera, p_uniforms );
 				multiview.updateCameraProjectionMatrices( camera, p_uniforms );
 
 
@@ -1794,7 +1794,7 @@ function WebGLRenderer( parameters ) {
 				material.isShaderMaterial ||
 				material.isShaderMaterial ||
 				material.skinning ) {
 				material.skinning ) {
 
 
-				if ( material.supportsMultiview && multiview.isEnabled() ) {
+				if ( program.numMultiviewViews > 0 ) {
 
 
 					multiview.updateCameraViewMatrices( camera, p_uniforms );
 					multiview.updateCameraViewMatrices( camera, p_uniforms );
 
 
@@ -2000,7 +2000,7 @@ function WebGLRenderer( parameters ) {
 
 
 		// common matrices
 		// common matrices
 
 
-		if ( material.supportsMultiview && multiview.isEnabled() ) {
+		if ( program.numMultiviewViews > 0 ) {
 
 
 			multiview.updateObjectMatrices( object, camera, p_uniforms );
 			multiview.updateObjectMatrices( object, camera, p_uniforms );
 
 

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

@@ -27,7 +27,7 @@ function WebGLMultiview( renderer, requested, options ) {
 
 
 	this.getNumViews = function () {
 	this.getNumViews = function () {
 
 
-		return renderTarget ? renderTarget.numViews : 1;
+		return renderTarget ? renderTarget.numViews : 0;
 
 
 	};
 	};
 
 

+ 7 - 6
src/renderers/webgl/WebGLProgram.js

@@ -329,6 +329,8 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 
 
 	var prefixVertex, prefixFragment;
 	var prefixVertex, prefixFragment;
 
 
+	var numMultiviewViews = renderer.multiview.getNumViews();
+
 	if ( material.isRawShaderMaterial ) {
 	if ( material.isRawShaderMaterial ) {
 
 
 		prefixVertex = [
 		prefixVertex = [
@@ -358,8 +360,6 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 
 
 	} else {
 	} else {
 
 
-		var numMultiviewViews = renderer.multiview.getNumViews();
-
 		prefixVertex = [
 		prefixVertex = [
 
 
 			'precision ' + parameters.precision + ' float;',
 			'precision ' + parameters.precision + ' float;',
@@ -415,7 +415,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 			'uniform mat4 modelMatrix;',
 			'uniform mat4 modelMatrix;',
 			'uniform vec3 cameraPosition;',
 			'uniform vec3 cameraPosition;',
 
 
-			material.supportsMultiview && renderer.multiview.isEnabled() ? [
+			numMultiviewViews > 0 ? [
 				'uniform mat4 modelViewMatrices[' + numMultiviewViews + '];',
 				'uniform mat4 modelViewMatrices[' + numMultiviewViews + '];',
 				'uniform mat3 normalMatrices[' + numMultiviewViews + '];',
 				'uniform mat3 normalMatrices[' + numMultiviewViews + '];',
 				'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
 				'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
@@ -546,7 +546,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 
 
 			'uniform vec3 cameraPosition;',
 			'uniform vec3 cameraPosition;',
 
 
-			material.supportsMultiview && renderer.multiview.isEnabled() ? [
+			numMultiviewViews > 0 ? [
 
 
 				'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
 				'uniform mat4 viewMatrices[' + numMultiviewViews + '];',
 				'#define viewMatrix viewMatrices[VIEW_ID]'
 				'#define viewMatrix viewMatrices[VIEW_ID]'
@@ -607,7 +607,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 		prefixVertex = [
 		prefixVertex = [
 			'#version 300 es\n',
 			'#version 300 es\n',
 
 
-			material.supportsMultiview && renderer.multiview.isEnabled() ? [
+			numMultiviewViews > 0 ? [
 
 
 				'#extension GL_OVR_multiview2 : require',
 				'#extension GL_OVR_multiview2 : require',
 				'layout(num_views = ' + numMultiviewViews + ') in;',
 				'layout(num_views = ' + numMultiviewViews + ') in;',
@@ -622,7 +622,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 
 
 		prefixFragment = [
 		prefixFragment = [
 			'#version 300 es\n',
 			'#version 300 es\n',
-			material.supportsMultiview && renderer.multiview.isEnabled() ? [
+			numMultiviewViews > 0 ? [
 
 
 				'#extension GL_OVR_multiview2 : require',
 				'#extension GL_OVR_multiview2 : require',
 				'#define VIEW_ID gl_ViewID_OVR'
 				'#define VIEW_ID gl_ViewID_OVR'
@@ -782,6 +782,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 	this.program = program;
 	this.program = program;
 	this.vertexShader = glVertexShader;
 	this.vertexShader = glVertexShader;
 	this.fragmentShader = glFragmentShader;
 	this.fragmentShader = glFragmentShader;
+	this.numMultiviewViews = numMultiviewViews;
 
 
 	return this;
 	return this;
 
 

+ 0 - 2
src/renderers/webgl/WebGLShadowMap.js

@@ -60,8 +60,6 @@ function WebGLShadowMap( _renderer, _objects, maxTextureSize ) {
 
 
 		var depthMaterial = new MeshDepthMaterial( {
 		var depthMaterial = new MeshDepthMaterial( {
 
 
-			supportsMultiview: false,
-
 			depthPacking: RGBADepthPacking,
 			depthPacking: RGBADepthPacking,
 
 
 			morphTargets: useMorphing,
 			morphTargets: useMorphing,