Mr.doob 12 лет назад
Родитель
Сommit
adcf4c32a5

+ 3 - 1
editor/index.html

@@ -89,8 +89,10 @@
 		<script src="../examples/js/renderers/SoftwareRenderer.js"></script>
 		<script src="../examples/js/renderers/SVGRenderer.js"></script>
 
-		<script src="../examples/js/loaders/SceneLoader2.js"></script>
+		<!-- WIP -->
 
+		<script src="../src/renderers/WebGLRenderer3.js"></script>
+		<script src="../examples/js/loaders/SceneLoader2.js"></script>
 		<script src="../examples/js/exporters/GeometryExporter.js"></script>
 		<script src="../examples/js/exporters/MaterialExporter.js"></script>
 		<script src="../examples/js/exporters/SceneExporter2.js"></script>

+ 3 - 1
editor/js/ui/Sidebar.Renderer.js

@@ -5,7 +5,8 @@ Sidebar.Renderer = function ( signals ) {
 		'CanvasRenderer': THREE.CanvasRenderer,
 		'SoftwareRenderer': THREE.SoftwareRenderer,
 		'SVGRenderer': THREE.SVGRenderer,
-		'WebGLRenderer': THREE.WebGLRenderer
+		'WebGLRenderer': THREE.WebGLRenderer,
+		'WebGLRenderer3': THREE.WebGLRenderer3
 
 	};
 
@@ -22,6 +23,7 @@ Sidebar.Renderer = function ( signals ) {
 	var rendererClass = new UI.Select().setOptions( {
 
 		'WebGLRenderer': 'WebGLRenderer',
+		'WebGLRenderer3': 'WebGLRenderer3',
 		'CanvasRenderer': 'CanvasRenderer',
 		'SoftwareRenderer': 'SoftwareRenderer',
 		'SVGRenderer': 'SVGRenderer',

+ 1 - 11
examples/webgl3_performance.html

@@ -19,11 +19,9 @@
 		<script src="../build/three.min.js"></script>
 		<script src="../src/renderers/WebGLRenderer3.js"></script>
 
-		<script src="js/libs/stats.min.js"></script>
-
 		<script>
 
-			var container, stats;
+			var container;
 
 			var camera, scene, renderer;
 
@@ -82,12 +80,6 @@
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				container.appendChild( renderer.domElement );
 
-				stats = new Stats();
-				stats.domElement.style.position = 'absolute';
-				stats.domElement.style.top = '0px';
-				stats.domElement.style.zIndex = 100;
-				container.appendChild( stats.domElement );
-
 				//
 
 				window.addEventListener( 'resize', onWindowResize, false );
@@ -118,9 +110,7 @@
 			function animate() {
 
 				requestAnimationFrame( animate );
-
 				render();
-				stats.update();
 
 			}
 

+ 25 - 21
src/renderers/WebGLRenderer3.js

@@ -112,11 +112,11 @@ THREE.WebGLRenderer3 = function ( parameters ) {
 		}
 
 		var buffer = {
-			data: gl.createBuffer(),
+			positions: gl.createBuffer(),
 			count: positions.length / 3
 		};
 
-		gl.bindBuffer( gl.ARRAY_BUFFER, buffer.data );
+		gl.bindBuffer( gl.ARRAY_BUFFER, buffer.positions );
 		gl.bufferData( gl.ARRAY_BUFFER, new Float32Array( positions ), gl.STATIC_DRAW );
 
 		buffers[ geometry.id ] = buffer;
@@ -236,39 +236,43 @@ THREE.WebGLRenderer3 = function ( parameters ) {
 
 			var object = scene.children[ i ];
 
-			var program = getProgram( object.material );
+			if ( object instanceof THREE.Mesh ) {
 
-			if ( program !== currentProgram ) {
+				var program = getProgram( object.material );
 
-				gl.useProgram( program );
+				if ( program !== currentProgram ) {
 
-				locations.position = gl.getAttribLocation( program, 'position' );
-				locations.modelViewMatrix = gl.getUniformLocation( program, 'modelViewMatrix' );
-				locations.projectionMatrix = gl.getUniformLocation( program, 'projectionMatrix' );
+					gl.useProgram( program );
 
-				gl.uniformMatrix4fv( locations.projectionMatrix, false, camera.projectionMatrix.elements );
+					locations.position = gl.getAttribLocation( program, 'position' );
+					locations.modelViewMatrix = gl.getUniformLocation( program, 'modelViewMatrix' );
+					locations.projectionMatrix = gl.getUniformLocation( program, 'projectionMatrix' );
 
-				currentProgram = program;
+					gl.uniformMatrix4fv( locations.projectionMatrix, false, camera.projectionMatrix.elements );
 
-			}
+					currentProgram = program;
 
-			var buffer = getBuffer( object.geometry );
+				}
 
-			if ( buffer !== currentBuffer ) {
+				var buffer = getBuffer( object.geometry );
 
-				gl.bindBuffer( gl.ARRAY_BUFFER, buffer.data );
-				gl.enableVertexAttribArray( locations.position );
-				gl.vertexAttribPointer( locations.position, 3, gl.FLOAT, false, 0, 0 );
+				if ( buffer !== currentBuffer ) {
 
-				currentBuffer = buffer;
+					gl.bindBuffer( gl.ARRAY_BUFFER, buffer.positions );
+					gl.enableVertexAttribArray( locations.position );
+					gl.vertexAttribPointer( locations.position, 3, gl.FLOAT, false, 0, 0 );
 
-			}
+					currentBuffer = buffer;
+
+				}
 
-			modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
+				modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
 
-			gl.uniformMatrix4fv( locations.modelViewMatrix, false, modelViewMatrix.elements );
+				gl.uniformMatrix4fv( locations.modelViewMatrix, false, modelViewMatrix.elements );
 
-			gl.drawArrays( gl.TRIANGLES, 0, buffer.count );
+				gl.drawArrays( gl.TRIANGLES, 0, buffer.count );
+
+			}
 
 		}