Pārlūkot izejas kodu

Removed unnneeded color clamping.

Mr.doob 13 gadi atpakaļ
vecāks
revīzija
f2faf11a13

+ 6 - 6
examples/js/renderers/SVGRenderer.js

@@ -359,9 +359,9 @@ THREE.SVGRenderer = function () {
 
 				calculateLight( _lights, element.centroidWorld, element.normalWorld, _color );
 
-				_color.r = Math.max( 0, Math.min( diffuse.r * _color.r + emissive.r, 1 ) );
-				_color.g = Math.max( 0, Math.min( diffuse.g * _color.g + emissive.g, 1 ) );
-				_color.b = Math.max( 0, Math.min( diffuse.b * _color.b + emissive.b, 1 ) );
+				_color.r = diffuse.r * _color.r + emissive.r;
+				_color.g = diffuse.g * _color.g + emissive.g;
+				_color.b = diffuse.b * _color.b + emissive.b;
 
 			} else {
 
@@ -419,9 +419,9 @@ THREE.SVGRenderer = function () {
 
 				calculateLight( _lights, element.centroidWorld, element.normalWorld, _color );
 
-				_color.r = Math.max( 0, Math.min( diffuse.r * _color.r + emissive.r, 1 ) );
-				_color.g = Math.max( 0, Math.min( diffuse.g * _color.g + emissive.g, 1 ) );
-				_color.b = Math.max( 0, Math.min( diffuse.b * _color.b + emissive.b, 1 ) );
+				_color.r = diffuse.r * _color.r + emissive.r;
+				_color.g = diffuse.g * _color.g + emissive.g;
+				_color.b = diffuse.b * _color.b + emissive.b;
 
 			} else {
 

+ 2 - 2
src/core/Color.js

@@ -165,13 +165,13 @@ THREE.Color.prototype = {
 
 	getHex: function () {
 
-		return Math.floor( this.r * 255 ) << 16 ^ Math.floor( this.g * 255 ) << 8 ^ Math.floor( this.b * 255 );
+		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
 
 	},
 
 	getContextStyle: function () {
 
-		return 'rgb(' + Math.floor( this.r * 255 ) + ',' + Math.floor( this.g * 255 ) + ',' + Math.floor( this.b * 255 ) + ')';
+		return 'rgb(' + ( ( this.r * 255 ) | 0 )  + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';
 
 	},
 

+ 39 - 44
src/renderers/CanvasRenderer.js

@@ -576,17 +576,17 @@ THREE.CanvasRenderer = function ( parameters ) {
 						calculateLight( element.v2.positionWorld, element.vertexNormalsWorld[ 1 ], _color2 );
 						calculateLight( element.v3.positionWorld, element.vertexNormalsWorld[ 2 ], _color3 );
 
-						_color1.r = Math.max( 0, Math.min( diffuse.r * _color1.r + emissive.r, 1 ) );
-						_color1.g = Math.max( 0, Math.min( diffuse.g * _color1.g + emissive.g, 1 ) );
-						_color1.b = Math.max( 0, Math.min( diffuse.b * _color1.b + emissive.b, 1 ) );
+						_color1.r = diffuse.r * _color1.r + emissive.r;
+						_color1.g = diffuse.g * _color1.g + emissive.g;
+						_color1.b = diffuse.b * _color1.b + emissive.b;
 
-						_color2.r = Math.max( 0, Math.min( diffuse.r * _color2.r + emissive.r, 1 ) );
-						_color2.g = Math.max( 0, Math.min( diffuse.g * _color2.g + emissive.g, 1 ) );
-						_color2.b = Math.max( 0, Math.min( diffuse.b * _color2.b + emissive.b, 1 ) );
+						_color2.r = diffuse.r * _color2.r + emissive.r;
+						_color2.g = diffuse.g * _color2.g + emissive.g;
+						_color2.b = diffuse.b * _color2.b + emissive.b;
 
-						_color3.r = Math.max( 0, Math.min( diffuse.r * _color3.r + emissive.r, 1 ) );
-						_color3.g = Math.max( 0, Math.min( diffuse.g * _color3.g + emissive.g, 1 ) );
-						_color3.b = Math.max( 0, Math.min( diffuse.b * _color3.b + emissive.b, 1 ) );
+						_color3.r = diffuse.r * _color3.r + emissive.r;
+						_color3.g = diffuse.g * _color3.g + emissive.g;
+						_color3.b = diffuse.b * _color3.b + emissive.b;
 
 						_color4.r = ( _color2.r + _color3.r ) * 0.5;
 						_color4.g = ( _color2.g + _color3.g ) * 0.5;
@@ -604,9 +604,9 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 						calculateLight( element.centroidWorld, element.normalWorld, _color );
 
-						_color.r = Math.max( 0, Math.min( diffuse.r * _color.r + emissive.r, 1 ) );
-						_color.g = Math.max( 0, Math.min( diffuse.g * _color.g + emissive.g, 1 ) );
-						_color.b = Math.max( 0, Math.min( diffuse.b * _color.b + emissive.b, 1 ) );
+						_color.r = diffuse.r * _color.r + emissive.r;
+						_color.g = diffuse.g * _color.g + emissive.g;
+						_color.b = diffuse.b * _color.b + emissive.b;
 
 						material.wireframe === true ? strokePath( _color, material.wireframeLinewidth, material.wireframeLinecap, material.wireframeLinejoin ) : fillPath( _color );
 
@@ -736,21 +736,21 @@ THREE.CanvasRenderer = function ( parameters ) {
 						calculateLight( element.v4.positionWorld, element.vertexNormalsWorld[ 3 ], _color3 );
 						calculateLight( element.v3.positionWorld, element.vertexNormalsWorld[ 2 ], _color4 );
 
-						_color1.r = Math.max( 0, Math.min( diffuse.r * _color1.r + emissive.r, 1 ) );
-						_color1.g = Math.max( 0, Math.min( diffuse.g * _color1.g + emissive.g, 1 ) );
-						_color1.b = Math.max( 0, Math.min( diffuse.b * _color1.b + emissive.b, 1 ) );
+						_color1.r = diffuse.r * _color1.r + emissive.r;
+						_color1.g = diffuse.g * _color1.g + emissive.g;
+						_color1.b = diffuse.b * _color1.b + emissive.b;
 
-						_color2.r = Math.max( 0, Math.min( diffuse.r * _color2.r + emissive.r, 1 ) );
-						_color2.g = Math.max( 0, Math.min( diffuse.g * _color2.g + emissive.g, 1 ) );
-						_color2.b = Math.max( 0, Math.min( diffuse.b * _color2.b + emissive.b, 1 ) );
+						_color2.r = diffuse.r * _color2.r + emissive.r;
+						_color2.g = diffuse.g * _color2.g + emissive.g;
+						_color2.b = diffuse.b * _color2.b + emissive.b;
 
-						_color3.r = Math.max( 0, Math.min( diffuse.r * _color3.r + emissive.r, 1 ) );
-						_color3.g = Math.max( 0, Math.min( diffuse.g * _color3.g + emissive.g, 1 ) );
-						_color3.b = Math.max( 0, Math.min( diffuse.b * _color3.b + emissive.b, 1 ) );
+						_color3.r = diffuse.r * _color3.r + emissive.r;
+						_color3.g = diffuse.g * _color3.g + emissive.g;
+						_color3.b = diffuse.b * _color3.b + emissive.b;
 
-						_color4.r = Math.max( 0, Math.min( diffuse.r * _color4.r + emissive.r, 1 ) );
-						_color4.g = Math.max( 0, Math.min( diffuse.g * _color4.g + emissive.g, 1 ) );
-						_color4.b = Math.max( 0, Math.min( diffuse.b * _color4.b + emissive.b, 1 ) );
+						_color4.r = diffuse.r * _color4.r + emissive.r;
+						_color4.g = diffuse.g * _color4.g + emissive.g;
+						_color4.b = diffuse.b * _color4.b + emissive.b;
 
 						_image = getGradientTexture( _color1, _color2, _color3, _color4 );
 
@@ -770,9 +770,9 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 						calculateLight( element.centroidWorld, element.normalWorld, _color );
 
-						_color.r = Math.max( 0, Math.min( diffuse.r * _color.r + emissive.r, 1 ) );
-						_color.g = Math.max( 0, Math.min( diffuse.g * _color.g + emissive.g, 1 ) );
-						_color.b = Math.max( 0, Math.min( diffuse.b * _color.b + emissive.b, 1 ) );
+						_color.r = diffuse.r * _color.r + emissive.r;
+						_color.g = diffuse.g * _color.g + emissive.g;
+						_color.b = diffuse.b * _color.b + emissive.b;
 
 						drawQuad( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _v4x, _v4y );
 
@@ -1005,26 +1005,21 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 			// http://mrdoob.com/blog/post/710
 
-			var c1r = ( color1.r * 255 ) | 0, c1g = ( color1.g * 255 ) | 0, c1b = ( color1.b * 255 ) | 0;
-			var c2r = ( color2.r * 255 ) | 0, c2g = ( color2.g * 255 ) | 0, c2b = ( color2.b * 255 ) | 0;
-			var c3r = ( color3.r * 255 ) | 0, c3g = ( color3.g * 255 ) | 0, c3b = ( color3.b * 255 ) | 0;
-			var c4r = ( color4.r * 255 ) | 0, c4g = ( color4.g * 255 ) | 0, c4b = ( color4.b * 255 ) | 0;
+			_pixelMapData[ 0 ] = ( color1.r * 255 ) | 0;
+			_pixelMapData[ 1 ] = ( color1.g * 255 ) | 0;
+			_pixelMapData[ 2 ] = ( color1.b * 255 ) | 0;
 
-			_pixelMapData[ 0 ] = c1r < 0 ? 0 : c1r > 255 ? 255 : c1r;
-			_pixelMapData[ 1 ] = c1g < 0 ? 0 : c1g > 255 ? 255 : c1g;
-			_pixelMapData[ 2 ] = c1b < 0 ? 0 : c1b > 255 ? 255 : c1b;
+			_pixelMapData[ 4 ] = ( color2.r * 255 ) | 0;
+			_pixelMapData[ 5 ] = ( color2.g * 255 ) | 0;
+			_pixelMapData[ 6 ] = ( color2.b * 255 ) | 0;
 
-			_pixelMapData[ 4 ] = c2r < 0 ? 0 : c2r > 255 ? 255 : c2r;
-			_pixelMapData[ 5 ] = c2g < 0 ? 0 : c2g > 255 ? 255 : c2g;
-			_pixelMapData[ 6 ] = c2b < 0 ? 0 : c2b > 255 ? 255 : c2b;
+			_pixelMapData[ 8 ] = ( color3.r * 255 ) | 0;
+			_pixelMapData[ 9 ] = ( color3.g * 255 ) | 0;
+			_pixelMapData[ 10 ] = ( color3.b * 255 ) | 0;
 
-			_pixelMapData[ 8 ] = c3r < 0 ? 0 : c3r > 255 ? 255 : c3r;
-			_pixelMapData[ 9 ] = c3g < 0 ? 0 : c3g > 255 ? 255 : c3g;
-			_pixelMapData[ 10 ] = c3b < 0 ? 0 : c3b > 255 ? 255 : c3b;
-
-			_pixelMapData[ 12 ] = c4r < 0 ? 0 : c4r > 255 ? 255 : c4r;
-			_pixelMapData[ 13 ] = c4g < 0 ? 0 : c4g > 255 ? 255 : c4g;
-			_pixelMapData[ 14 ] = c4b < 0 ? 0 : c4b > 255 ? 255 : c4b;
+			_pixelMapData[ 12 ] = ( color4.r * 255 ) | 0;
+			_pixelMapData[ 13 ] = ( color4.g * 255 ) | 0;
+			_pixelMapData[ 14 ] = ( color4.b * 255 ) | 0;
 
 			_pixelMapContext.putImageData( _pixelMapImage, 0, 0 );
 			_gradientMapContext.drawImage( _pixelMap, 0, 0 );