Browse Source

WebGLRenderer: Fix vertexTangents when reusing a material. (#22189)

Michael Herzog 4 years ago
parent
commit
ab28ef1d7b
1 changed files with 6 additions and 0 deletions
  1. 6 0
      src/renderers/WebGLRenderer.js

+ 6 - 0
src/renderers/WebGLRenderer.js

@@ -1497,6 +1497,7 @@ function WebGLRenderer( parameters = {} ) {
 		materialProperties.numClippingPlanes = parameters.numClippingPlanes;
 		materialProperties.numIntersection = parameters.numClipIntersection;
 		materialProperties.vertexAlphas = parameters.vertexAlphas;
+		materialProperties.vertexTangents = parameters.vertexTangents;
 
 	}
 
@@ -1511,6 +1512,7 @@ function WebGLRenderer( parameters = {} ) {
 		const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
 		const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
 		const vertexAlphas = material.vertexColors === true && object.geometry && object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4;
+		const vertexTangents = object.geometry && object.geometry.attributes.tangent;
 		const morphTargets = object.geometry && object.geometry.morphAttributes.position;
 		const morphNormals = object.geometry && object.geometry.morphAttributes.normal;
 
@@ -1582,6 +1584,10 @@ function WebGLRenderer( parameters = {} ) {
 
 				needsProgramChange = true;
 
+			} else if ( materialProperties.vertexTangents !== vertexTangents ) {
+
+				needsProgramChange = true;
+
 			} else if ( materialProperties.morphTargets !== morphTargets ) {
 
 				needsProgramChange = true;