Bladeren bron

Editor: Add frametime info.

Mugen87 5 jaren geleden
bovenliggende
commit
d211375a14
4 gewijzigde bestanden met toevoegingen van 28 en 7 verwijderingen
  1. 1 0
      editor/js/Editor.js
  2. 4 2
      editor/js/Strings.js
  3. 11 0
      editor/js/Viewport.Info.js
  4. 12 5
      editor/js/Viewport.js

+ 1 - 0
editor/js/Editor.js

@@ -45,6 +45,7 @@ var Editor = function () {
 		sceneBackgroundChanged: new Signal(),
 		sceneFogChanged: new Signal(),
 		sceneGraphChanged: new Signal(),
+		sceneRendered: new Signal(),
 
 		cameraChanged: new Signal(),
 

+ 4 - 2
editor/js/Strings.js

@@ -311,7 +311,8 @@ var Strings = function ( config ) {
 
 			'viewport/info/objects': 'Objects',
 			'viewport/info/vertices': 'Vertices',
-			'viewport/info/triangles': 'Triangles'
+			'viewport/info/triangles': 'Triangles',
+			'viewport/info/frametime': 'Frametime'
 
 		},
 
@@ -592,7 +593,8 @@ var Strings = function ( config ) {
 
 			'viewport/info/objects': '物体',
 			'viewport/info/vertices': '顶点',
-			'viewport/info/triangles': '三角形'
+			'viewport/info/triangles': '三角形',
+			'viewport/info/frametime': 'Frametime'
 
 		}
 

+ 11 - 0
editor/js/Viewport.Info.js

@@ -20,6 +20,7 @@ var ViewportInfo = function ( editor ) {
 	var objectsText = new UIText( '0' ).setMarginLeft( '6px' );
 	var verticesText = new UIText( '0' ).setMarginLeft( '6px' );
 	var trianglesText = new UIText( '0' ).setMarginLeft( '6px' );
+	var frametimeText = new UIText( '0' ).setMarginLeft( '6px' );
 
 	container.add( new UIText( strings.getKey( 'viewport/info/objects' ) ).setTextTransform( 'lowercase' ) );
 	container.add( objectsText, new UIBreak() );
@@ -27,6 +28,8 @@ var ViewportInfo = function ( editor ) {
 	container.add( verticesText, new UIBreak() );
 	container.add( new UIText( strings.getKey( 'viewport/info/triangles' ) ).setTextTransform( 'lowercase' ) );
 	container.add( trianglesText, new UIBreak() );
+	container.add( new UIText( strings.getKey( 'viewport/info/frametime' ) ).setTextTransform( 'lowercase' ) );
+	container.add( frametimeText, new UIBreak() );
 
 	signals.objectAdded.add( update );
 	signals.objectRemoved.add( update );
@@ -85,6 +88,14 @@ var ViewportInfo = function ( editor ) {
 
 	}
 
+	signals.sceneRendered.add( updateFrametime );
+
+	function updateFrametime( frametime ) {
+
+		frametimeText.setValue( Number( frametime ).toFixed( 2 ) + " ms" );
+
+	}
+
 	return container;
 
 };

+ 12 - 5
editor/js/Viewport.js

@@ -591,9 +591,9 @@ var Viewport = function ( editor ) {
 
 	// animations
 
-	var prevTime = performance.now();
+	var clock = new THREE.Clock(); // only used for animations
 
-	function animate( time ) {
+	function animate() {
 
 		requestAnimationFrame( animate );
 
@@ -601,21 +601,24 @@ var Viewport = function ( editor ) {
 
 		if ( mixer.stats.actions.inUse > 0 ) {
 
-			mixer.update( ( time - prevTime ) / 1000 );
+			mixer.update( clock.getDelta() );
 			render();
 
 		}
 
-		prevTime = time;
-
 	}
 
 	requestAnimationFrame( animate );
 
 	//
 
+	var startTime = 0;
+	var endTime = 0;
+
 	function render() {
 
+		startTime = performance.now();
+
 		scene.updateMatrixWorld();
 		renderer.render( scene, camera );
 
@@ -626,6 +629,10 @@ var Viewport = function ( editor ) {
 
 		}
 
+		endTime = performance.now();
+		var frametime = endTime - startTime;
+		editor.signals.sceneRendered.dispatch( frametime );
+
 	}
 
 	return container;