Browse Source

Merge pull request #13304 from mrdoob/videotexture-framerate

VideoTexture: Added frameRate property
Mr.doob 7 years ago
parent
commit
0e20564b75

+ 2 - 0
examples/webgl_kinect.html

@@ -142,6 +142,8 @@
 
 
 					texture = new THREE.VideoTexture( video );
 					texture = new THREE.VideoTexture( video );
 					texture.minFilter = THREE.NearestFilter;
 					texture.minFilter = THREE.NearestFilter;
+					texture.format = THREE.RGBFormat;
+					texture.frameRate = 30;
 
 
 					var width = 640, height = 480;
 					var width = 640, height = 480;
 					var nearClipping = 850, farClipping = 4000;
 					var nearClipping = 850, farClipping = 4000;

+ 1 - 0
examples/webgl_materials_video.html

@@ -108,6 +108,7 @@
 				texture.minFilter = THREE.LinearFilter;
 				texture.minFilter = THREE.LinearFilter;
 				texture.magFilter = THREE.LinearFilter;
 				texture.magFilter = THREE.LinearFilter;
 				texture.format = THREE.RGBFormat;
 				texture.format = THREE.RGBFormat;
+				texture.frameRate = 24;
 
 
 				//
 				//
 
 

+ 1 - 0
examples/webgl_video_panorama_equirectangular.html

@@ -79,6 +79,7 @@
 				var texture = new THREE.VideoTexture( video );
 				var texture = new THREE.VideoTexture( video );
 				texture.minFilter = THREE.LinearFilter;
 				texture.minFilter = THREE.LinearFilter;
 				texture.format = THREE.RGBFormat;
 				texture.format = THREE.RGBFormat;
+				texture.frameRate = 25;
 
 
 				var material   = new THREE.MeshBasicMaterial( { map : texture } );
 				var material   = new THREE.MeshBasicMaterial( { map : texture } );
 
 

+ 1 - 1
examples/webvr_video.html

@@ -69,7 +69,7 @@
 				texture.minFilter = THREE.NearestFilter;
 				texture.minFilter = THREE.NearestFilter;
 				texture.maxFilter = THREE.NearestFilter;
 				texture.maxFilter = THREE.NearestFilter;
 				texture.format = THREE.RGBFormat;
 				texture.format = THREE.RGBFormat;
-				texture.generateMipmaps = false;
+				texture.frameRate = 24;
 
 
 				scene = new THREE.Scene();
 				scene = new THREE.Scene();
 				scene.background = new THREE.Color( 0x101010 );
 				scene.background = new THREE.Color( 0x101010 );

+ 19 - 5
src/textures/VideoTexture.js

@@ -9,6 +9,7 @@ function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, forma
 	Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
 	Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
 
 
 	this.generateMipmaps = false;
 	this.generateMipmaps = false;
+	this.frameRate = 30;
 
 
 }
 }
 
 
@@ -18,17 +19,30 @@ VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {
 
 
 	isVideoTexture: true,
 	isVideoTexture: true,
 
 
-	update: function () {
+	update: ( function () {
 
 
-		var video = this.image;
+		var prevTime = 0;
 
 
-		if ( video.readyState >= video.HAVE_CURRENT_DATA ) {
+		return function () {
 
 
-			this.needsUpdate = true;
+			var video = this.image;
+
+			if ( video.readyState >= video.HAVE_CURRENT_DATA ) {
+
+				var time = performance.now();
+
+				if ( prevTime + ( 1 / this.frameRate ) < time ) {
+
+					this.needsUpdate = true;
+					prevTime = time;
+
+				}
+
+			}
 
 
 		}
 		}
 
 
-	}
+	} )()
 
 
 } );
 } );