Browse Source

SoftwareRenderer3 with @mraleph optimisations.

Mr.doob 13 years ago
parent
commit
0460791be2
2 changed files with 11 additions and 11 deletions
  1. 10 10
      examples/js/renderers/SoftwareRenderer3.js
  2. 1 1
      examples/misc_software.html

+ 10 - 10
examples/js/renderers/SoftwareRenderer3.js

@@ -1,5 +1,6 @@
 /**
  * @author mrdoob / http://mrdoob.com/
+ * @author mraleph / http://mrale.ph/
  */
 
 THREE.SoftwareRenderer3 = function () {
@@ -181,15 +182,14 @@ THREE.SoftwareRenderer3 = function () {
 		var ymin = Math.max( Math.min( y1, y2 ), 0 );
 		var ymax = Math.min( Math.max( y1, y2 ), canvasHeight );
 
-		var offset = ( xmin + ymin * canvasWidth ) * 4 + 3;
+		var offset = ( xmin + ymin * canvasWidth - 1 ) * 4 + 3;
 		var linestep = ( canvasWidth - ( xmax - xmin ) ) * 4;
 
 		for ( var y = ymin; y < ymax; y ++ ) {
 
 			for ( var x = xmin; x < xmax; x ++ ) {
 
-				data[ offset ] = 0;
-				offset += 4;
+				data[ offset += 4 ] = 0;
 
 			}
 
@@ -206,13 +206,13 @@ THREE.SoftwareRenderer3 = function () {
 
 		// 28.4 fixed-point coordinates
 
-		var x1 = Math.round( 16 * x1 );
-		var x2 = Math.round( 16 * x2 );
-		var x3 = Math.round( 16 * x3 );
+		var x1 = (16 * x1) | 0;
+		var x2 = (16 * x2) | 0;
+		var x3 = (16 * x3) | 0;
 
-		var y1 = Math.round( 16 * y1 );
-		var y2 = Math.round( 16 * y2 );
-		var y3 = Math.round( 16 * y3 );
+		var y1 = (16 * y1) | 0;
+		var y2 = (16 * y2) | 0;
+		var y3 = (16 * y3) | 0;
 
 		// Deltas
 
@@ -384,7 +384,7 @@ THREE.SoftwareRenderer3 = function () {
 								var u = cx1 * scale; // 0-255!
 								var v = cx2 * scale; // 0-255!
 								data[offset] = u;
-								data[offset + 1] = v; 
+								data[offset + 1] = v;
 								data[offset + 2] = 0;
 								data[offset + 3] = 255;
 

+ 1 - 1
examples/misc_software.html

@@ -66,7 +66,7 @@
 				plane.rotation.x = - Math.PI / 2;
 				scene.add( plane );
 
-				renderer = new THREE.SoftwareRenderer2();
+				renderer = new THREE.SoftwareRenderer3();
 				renderer.setSize( window.innerWidth || 2, window.innerHeight || 2 );
 
 				container.appendChild( renderer.domElement );