Bläddra i källkod

Remove supportsMultiview and add numMultiviewViews instead

Fernando Serrano 6 år sedan
förälder
incheckning
5c29bf2c4d

+ 3 - 3
examples/webvr_ballshooter_multiview.html

@@ -51,8 +51,8 @@
 				container = document.createElement( 'div' );
 				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.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 } );
 				renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context, multiview: multiview } );
 				renderer.setPixelRatio( window.devicePixelRatio );

+ 0 - 1
src/materials/Material.js

@@ -72,7 +72,6 @@ function Material() {
 
 	this.toneMapped = true;
 	this.supportsMultiview = true;
-
 	this.userData = {};
 
 	this.needsUpdate = true;

+ 3 - 3
src/renderers/WebGLRenderer.js

@@ -1735,7 +1735,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( refreshProgram || _currentCamera !== camera ) {
 
-			if ( material.supportsMultiview && multiview.isEnabled() ) {
+			if ( program.numMultiviewViews > 0 ) {
 
 				multiview.updateCameraProjectionMatrices( camera, p_uniforms );
 
@@ -1791,7 +1791,7 @@ function WebGLRenderer( parameters ) {
 				material.isShaderMaterial ||
 				material.skinning ) {
 
-				if ( material.supportsMultiview && multiview.isEnabled() ) {
+				if ( program.numMultiviewViews > 0 ) {
 
 					multiview.updateCameraViewMatrices( camera, p_uniforms );
 
@@ -1997,7 +1997,7 @@ function WebGLRenderer( parameters ) {
 
 		// common matrices
 
-		if ( material.supportsMultiview && multiview.isEnabled() ) {
+		if ( program.numMultiviewViews > 0 ) {
 
 			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 () {
 
-		return renderTarget ? renderTarget.numViews : 1;
+		return renderTarget ? renderTarget.numViews : 0;
 
 	};
 

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

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

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

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