فهرست منبع

WebGLRenderer: setProgram uniforms code clean up.

Mr.doob 8 سال پیش
والد
کامیت
6a7d287737
2فایلهای تغییر یافته به همراه42 افزوده شده و 42 حذف شده
  1. 6 16
      src/materials/LineDashedMaterial.js
  2. 36 26
      src/renderers/WebGLRenderer.js

+ 6 - 16
src/materials/LineDashedMaterial.js

@@ -1,6 +1,3 @@
-import { Material } from './Material';
-import { Color } from '../math/Color';
-
 /**
  * @author alteredq / http://alteredqualia.com/
  *
@@ -16,38 +13,31 @@ import { Color } from '../math/Color';
  * }
  */
 
+import { LineBasicMaterial } from './LineBasicMaterial';
+import { Color } from '../math/Color';
+
 function LineDashedMaterial( parameters ) {
 
-	Material.call( this );
+	LineBasicMaterial.call( this );
 
 	this.type = 'LineDashedMaterial';
 
-	this.color = new Color( 0xffffff );
-
-	this.linewidth = 1;
-
 	this.scale = 1;
 	this.dashSize = 3;
 	this.gapSize = 1;
 
-	this.lights = false;
-
 	this.setValues( parameters );
 
 }
 
-LineDashedMaterial.prototype = Object.create( Material.prototype );
+LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );
 LineDashedMaterial.prototype.constructor = LineDashedMaterial;
 
 LineDashedMaterial.prototype.isLineDashedMaterial = true;
 
 LineDashedMaterial.prototype.copy = function ( source ) {
 
-	Material.prototype.copy.call( this, source );
-
-	this.color.copy( source.color );
-
-	this.linewidth = source.linewidth;
+	LineBasicMaterial.prototype.copy.call( this, source );
 
 	this.scale = source.scale;
 	this.dashSize = source.dashSize;

+ 36 - 26
src/renderers/WebGLRenderer.js

@@ -1757,65 +1757,75 @@ function WebGLRenderer( parameters ) {
 
 			}
 
-			if ( material.isMeshBasicMaterial ||
-				material.isMeshLambertMaterial ||
-				material.isMeshPhongMaterial ||
-				material.isMeshStandardMaterial ||
-				material.isMeshNormalMaterial ||
-				material.isMeshDepthMaterial ||
-				material.isMeshDistanceMaterial ) {
+			if ( material.isMeshBasicMaterial ) {
 
 				refreshUniformsCommon( m_uniforms, material );
 
-			}
+			} else if ( material.isMeshLambertMaterial ) {
 
-			// refresh single material specific uniforms
+				refreshUniformsCommon( m_uniforms, material );
+				refreshUniformsLambert( m_uniforms, material );
 
-			if ( material.isLineBasicMaterial ) {
+			} else if ( material.isMeshPhongMaterial ) {
 
-				refreshUniformsLine( m_uniforms, material );
+				refreshUniformsCommon( m_uniforms, material );
 
-			} else if ( material.isLineDashedMaterial ) {
+				if ( material.isMeshToonMaterial ) {
 
-				refreshUniformsLine( m_uniforms, material );
-				refreshUniformsDash( m_uniforms, material );
+					refreshUniformsToon( m_uniforms, material );
 
-			} else if ( material.isPointsMaterial ) {
+				} else {
 
-				refreshUniformsPoints( m_uniforms, material );
+					refreshUniformsPhong( m_uniforms, material );
 
-			} else if ( material.isMeshLambertMaterial ) {
+				}
 
-				refreshUniformsLambert( m_uniforms, material );
+			} else if ( material.isMeshStandardMaterial ) {
 
-			} else if ( material.isMeshToonMaterial ) {
+				refreshUniformsCommon( m_uniforms, material );
 
-				refreshUniformsToon( m_uniforms, material );
+				if ( material.isMeshPhysicalMaterial ) {
 
-			} else if ( material.isMeshPhongMaterial ) {
+					refreshUniformsPhysical( m_uniforms, material );
 
-				refreshUniformsPhong( m_uniforms, material );
+				} else {
 
-			} else if ( material.isMeshPhysicalMaterial ) {
+					refreshUniformsStandard( m_uniforms, material );
 
-				refreshUniformsPhysical( m_uniforms, material );
+				}
 
-			} else if ( material.isMeshStandardMaterial ) {
+			} else if ( material.isMeshNormalMaterial ) {
 
-				refreshUniformsStandard( m_uniforms, material );
+				refreshUniformsCommon( m_uniforms, material );
 
 			} else if ( material.isMeshDepthMaterial ) {
 
+				refreshUniformsCommon( m_uniforms, material );
 				refreshUniformsDepth( m_uniforms, material );
 
 			} else if ( material.isMeshDistanceMaterial ) {
 
+				refreshUniformsCommon( m_uniforms, material );
 				refreshUniformsDistance( m_uniforms, material );
 
 			} else if ( material.isMeshNormalMaterial ) {
 
 				refreshUniformsNormal( m_uniforms, material );
 
+			} else if ( material.isLineBasicMaterial ) {
+
+				refreshUniformsLine( m_uniforms, material );
+
+				if ( material.isLineDashedMaterial ) {
+
+					refreshUniformsDash( m_uniforms, material );
+
+				}
+
+			} else if ( material.isPointsMaterial ) {
+
+				refreshUniformsPoints( m_uniforms, material );
+
 			} else if ( material.isShadowMaterial ) {
 
 				m_uniforms.color.value = material.color;