Browse Source

Optimised SimulatorRenderer.
I think I didn’t broke anything, @zz85?

Mr.doob 11 years ago
parent
commit
880a191da2
1 changed files with 20 additions and 30 deletions
  1. 20 30
      examples/js/SimulatorRenderer.js

+ 20 - 30
examples/js/SimulatorRenderer.js

@@ -92,7 +92,7 @@ function SimulatorRenderer(WIDTH, renderer) {
 	var rtPosition1, rtPosition2, rtVelocity1, rtVelocity2;
 
 	function init() {
-		var dtPosition = generateDataTexture();
+		var dtPosition = generatePositionTexture();
 		var dtVelocity = generateVelocityTexture();
 
 		rtPosition1 = getRenderTarget();
@@ -171,28 +171,23 @@ function SimulatorRenderer(WIDTH, renderer) {
 
 	}
 
-	function generateDataTexture() {
+	function generatePositionTexture() {
 
-		var x, y, z;
+		var a = new Float32Array( PARTICLES * 3 );
 
-		var w = WIDTH, h = WIDTH;
+		for ( var k = 0; k < PARTICLES; k += 3 ) {
 
-		var a = new Float32Array(PARTICLES * 4);
+			var x = Math.random() * BOUNDS - BOUNDS_HALF;
+			var y = Math.random() * BOUNDS - BOUNDS_HALF;
+			var z = Math.random() * BOUNDS - BOUNDS_HALF;
 
-		for (var k = 0; k < PARTICLES; k++) {
-
-			x = Math.random() * BOUNDS - BOUNDS_HALF;
-			y = Math.random() * BOUNDS - BOUNDS_HALF;
-			z = Math.random() * BOUNDS - BOUNDS_HALF;
-
-			a[ k*4 + 0 ] = x;
-			a[ k*4 + 1 ] = y;
-			a[ k*4 + 2 ] = z;
-			a[ k*4 + 3 ] = 1;
+			a[ k + 0 ] = x;
+			a[ k + 1 ] = y;
+			a[ k + 2 ] = z;
 
 		}
 
-		var texture = new THREE.DataTexture( a, WIDTH, WIDTH, THREE.RGBAFormat, THREE.FloatType );
+		var texture = new THREE.DataTexture( a, WIDTH, WIDTH, THREE.RGBFormat, THREE.FloatType );
 		texture.minFilter = THREE.NearestFilter;
 		texture.magFilter = THREE.NearestFilter;
 		texture.needsUpdate = true;
@@ -204,26 +199,21 @@ function SimulatorRenderer(WIDTH, renderer) {
 
 	function generateVelocityTexture() {
 
-		var x, y, z;
-
-		var w = WIDTH, h = WIDTH;
-
-		var a = new Float32Array(PARTICLES * 4);
+		var a = new Float32Array( PARTICLES * 3 );
 
-		for (var k = 0; k < PARTICLES; k++) {
+		for ( var k = 0; k < PARTICLES; k += 3 ) {
 
-			x = Math.random() - 0.5;
-			y = Math.random() - 0.5;
-			z = Math.random() - 0.5;
+			var x = Math.random() - 0.5;
+			var y = Math.random() - 0.5;
+			var z = Math.random() - 0.5;
 
-			a[ k*4 + 0 ] = x * 10;
-			a[ k*4 + 1 ] = y * 10;
-			a[ k*4 + 2 ] = z * 10;
-			a[ k*4 + 3 ] = 1;
+			a[ k + 0 ] = x * 10;
+			a[ k + 1 ] = y * 10;
+			a[ k + 2 ] = z * 10;
 
 		}
 
-		var texture = new THREE.DataTexture( a, WIDTH, WIDTH, THREE.RGBAFormat, THREE.FloatType );
+		var texture = new THREE.DataTexture( a, WIDTH, WIDTH, THREE.RGBFormat, THREE.FloatType );
 		texture.minFilter = THREE.NearestFilter;
 		texture.magFilter = THREE.NearestFilter;
 		texture.needsUpdate = true;