浏览代码

Merge remote-tracking branch 'nhalloran/dev' into dev

Mr.doob 12 年之前
父节点
当前提交
8c7b0e94b4
共有 2 个文件被更改,包括 18 次插入13 次删除
  1. 6 1
      src/materials/Material.js
  2. 12 12
      src/renderers/CanvasRenderer.js

+ 6 - 1
src/materials/Material.js

@@ -29,7 +29,7 @@ THREE.Material = function () {
 
 
 	this.alphaTest = 0;
 	this.alphaTest = 0;
 
 
-	this.overdraw = false; // Boolean for fixing antialiasing gaps in CanvasRenderer
+	this.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer
 
 
 	this.visible = true;
 	this.visible = true;
 
 
@@ -73,6 +73,11 @@ THREE.Material.prototype = {
 
 
 					currentValue.copy( newValue );
 					currentValue.copy( newValue );
 
 
+				} else if ( key == 'overdraw') {
+
+					// ensure overdraw is backwards-compatable with legacy boolean type
+					this[ key ] = Number(newValue);              
+
 				} else {
 				} else {
 
 
 					this[ key ] = newValue;
 					this[ key ] = newValue;

+ 12 - 12
src/renderers/CanvasRenderer.js

@@ -322,11 +322,11 @@ THREE.CanvasRenderer = function ( parameters ) {
 				_v2.positionScreen.x *= _canvasWidthHalf; _v2.positionScreen.y *= _canvasHeightHalf;
 				_v2.positionScreen.x *= _canvasWidthHalf; _v2.positionScreen.y *= _canvasHeightHalf;
 				_v3.positionScreen.x *= _canvasWidthHalf; _v3.positionScreen.y *= _canvasHeightHalf;
 				_v3.positionScreen.x *= _canvasWidthHalf; _v3.positionScreen.y *= _canvasHeightHalf;
 
 
-				if ( material.overdraw === true ) {
+				if ( material.overdraw > 0 ) {
 
 
-					expand( _v1.positionScreen, _v2.positionScreen );
-					expand( _v2.positionScreen, _v3.positionScreen );
-					expand( _v3.positionScreen, _v1.positionScreen );
+					expand( _v1.positionScreen, _v2.positionScreen, material.overdraw );
+					expand( _v2.positionScreen, _v3.positionScreen, material.overdraw );
+					expand( _v3.positionScreen, _v1.positionScreen, material.overdraw );
 
 
 				}
 				}
 
 
@@ -359,14 +359,14 @@ THREE.CanvasRenderer = function ( parameters ) {
 				_v5.positionScreen.copy( _v2.positionScreen );
 				_v5.positionScreen.copy( _v2.positionScreen );
 				_v6.positionScreen.copy( _v4.positionScreen );
 				_v6.positionScreen.copy( _v4.positionScreen );
 
 
-				if ( material.overdraw === true ) {
+				if ( material.overdraw > 0 ) {
 
 
-					expand( _v1.positionScreen, _v2.positionScreen );
-					expand( _v2.positionScreen, _v4.positionScreen );
-					expand( _v4.positionScreen, _v1.positionScreen );
+					expand( _v1.positionScreen, _v2.positionScreen, material.overdraw );
+					expand( _v2.positionScreen, _v4.positionScreen, material.overdraw );
+					expand( _v4.positionScreen, _v1.positionScreen, material.overdraw );
 
 
-					expand( _v3.positionScreen, _v5.positionScreen );
-					expand( _v3.positionScreen, _v6.positionScreen );
+					expand( _v3.positionScreen, _v5.positionScreen, material.overdraw );
+					expand( _v3.positionScreen, _v6.positionScreen, material.overdraw );
 
 
 				}
 				}
 
 
@@ -1196,14 +1196,14 @@ THREE.CanvasRenderer = function ( parameters ) {
 
 
 	// Hide anti-alias gaps
 	// Hide anti-alias gaps
 
 
-	function expand( v1, v2 ) {
+	function expand( v1, v2, pixels ) {
 
 
 		var x = v2.x - v1.x, y = v2.y - v1.y,
 		var x = v2.x - v1.x, y = v2.y - v1.y,
 		det = x * x + y * y, idet;
 		det = x * x + y * y, idet;
 
 
 		if ( det === 0 ) return;
 		if ( det === 0 ) return;
 
 
-		idet = 1 / Math.sqrt( det );
+		idet = pixels / Math.sqrt( det );
 
 
 		x *= idet; y *= idet;
 		x *= idet; y *= idet;