Browse Source

WebGLRenderer fixes:

 * Added float precision in shader code to shaders compile now.
 * Changed occurrences of WebGL typed Arrays and UnsignedShort typed arrays to new array types
Nicolas Garcia Belmonte 15 years ago
parent
commit
636d108e4b
1 changed files with 15 additions and 22 deletions
  1. 15 22
      src/renderers/WebGLRenderer.js

+ 15 - 22
src/renderers/WebGLRenderer.js

@@ -108,15 +108,15 @@ THREE.WebGLRenderer = function () {
 
 					object.__webGLVertexBuffer = _gl.createBuffer();
 					_gl.bindBuffer( _gl.ARRAY_BUFFER, object.__webGLVertexBuffer );
-					_gl.bufferData( _gl.ARRAY_BUFFER, new WebGLFloatArray( vertexArray ), _gl.STATIC_DRAW );
+					_gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( vertexArray ), _gl.STATIC_DRAW );
 
 					object.__webGLColorBuffer = _gl.createBuffer();
 					_gl.bindBuffer( _gl.ARRAY_BUFFER, object.__webGLColorBuffer );
-					_gl.bufferData( _gl.ARRAY_BUFFER, new WebGLFloatArray( colorArray ), _gl.STATIC_DRAW );
+					_gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( colorArray ), _gl.STATIC_DRAW );
 
 					object.__webGLFaceBuffer = _gl.createBuffer();
 					_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, object.__webGLFaceBuffer );
-					_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, new WebGLUnsignedShortArray( faceArray ), _gl.STATIC_DRAW );
+					_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, new Uint16Array( faceArray ), _gl.STATIC_DRAW );
 
 					object.__webGLFaceCount = faceArray.length;
 
@@ -125,8 +125,8 @@ THREE.WebGLRenderer = function () {
 
 				viewMatrix.multiply( camera.matrix, object.matrix );
 
-				matrix2Array( viewMatrix, _program.viewMatrixArray );
-				matrix2Array( camera.projectionMatrix, _program.projectionMatrixArray );
+				_program.viewMatrixArray = new Float32Array( viewMatrix.flatten() );
+				_program.projectionMatrixArray = new Float32Array( camera.projectionMatrix.flatten() );
 
 				_gl.uniformMatrix4fv( _program.viewMatrix, false, _program.viewMatrixArray );
 				_gl.uniformMatrix4fv( _program.projectionMatrix, false, _program.projectionMatrixArray );
@@ -153,7 +153,7 @@ THREE.WebGLRenderer = function () {
 
 							material.__webGLColorBuffer = _gl.createBuffer();
 							_gl.bindBuffer( _gl.ARRAY_BUFFER, material.__webGLColorBuffer );
-							_gl.bufferData( _gl.ARRAY_BUFFER, new WebGLFloatArray( colorArray ), _gl.STATIC_DRAW );
+							_gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( colorArray ), _gl.STATIC_DRAW );
 
 						}
 
@@ -211,13 +211,17 @@ THREE.WebGLRenderer = function () {
 		_program = _gl.createProgram();
 
 		_gl.attachShader( _program, getShader( "fragment", [
+								"#ifdef GL_ES",
+								"precision highp float;",
+								"#endif",
+								
 								"varying vec4 vcolor;",
 
 								"void main(){",
 
 									"gl_FragColor = vcolor;",
 
-								"}"].join("") ) );
+								"}"].join("\n") ) );
 
 		_gl.attachShader( _program, getShader( "vertex", [
 								"attribute vec3 position;",
@@ -230,9 +234,9 @@ THREE.WebGLRenderer = function () {
 								"void main(void) {",
 
 									"vcolor = color;",
-									"gl_Position = projectionMatrix * viewMatrix * vec4( position, 1 );",
+									"gl_Position = projectionMatrix * viewMatrix * vec4( position, 1.0 );",
 
-								"}"].join("") ) );
+								"}"].join("\n") ) );
 
 		_gl.linkProgram( _program );
 
@@ -253,8 +257,8 @@ THREE.WebGLRenderer = function () {
 		_program.position = _gl.getAttribLocation( _program, "position" );
 		_gl.enableVertexAttribArray( _program.position );
 
-		_program.viewMatrixArray = new WebGLFloatArray( 16 );
-		_program.projectionMatrixArray = new WebGLFloatArray( 16 );
+		_program.viewMatrixArray = new Float32Array(16);
+		_program.projectionMatrixArray = new Float32Array(16);
 
 	}
 
@@ -285,15 +289,4 @@ THREE.WebGLRenderer = function () {
 		return shader;
 	}
 
-	function matrix2Array( matrix, array ) {
-
-		// Also flatten
-
-		array[ 0 ] = matrix.n11; array[ 1 ] = matrix.n21; array[ 2 ] = matrix.n31; array[ 3 ] = matrix.n41;
-		array[ 4 ] = matrix.n12; array[ 5 ] = matrix.n22; array[ 6 ] = matrix.n32; array[ 7 ] = matrix.n42;
-		array[ 8 ] = matrix.n13; array[ 9 ] = matrix.n23; array[ 10 ] = matrix.n33; array[ 11 ] = matrix.n43;
-		array[ 12 ] = matrix.n14; array[ 13 ] = matrix.n24; array[ 14 ] = matrix.n34; array[ 15 ] = matrix.n44;
-
-	}
-
 };