Browse Source

Fix AnimatedTexture shader, add support for startFrame

trethaller 7 years ago
parent
commit
95f8eff937
1 changed files with 6 additions and 5 deletions
  1. 6 5
      h3d/shader/AnimatedTexture.hx

+ 6 - 5
h3d/shader/AnimatedTexture.hx

@@ -18,6 +18,7 @@ class AnimatedTexture extends hxsl.Shader {
 		@global var global : {
 			var time : Float;
 		};
+		@param var startFrame : Float = 0.0;
 		@param var speed : Float;
 		@param var frameDivision : Vec2;
 		@param var totalFrames : Float;
@@ -30,16 +31,16 @@ class AnimatedTexture extends hxsl.Shader {
 
 		function vertex() {
 
-			var frame = (global.time - startTime) * speed;
+			var frame = (global.time - startTime) * speed + float(int(startFrame));
 			blendFactor = frame.fract();
 			frame -= blendFactor;
 			if( loop ) frame %= totalFrames else frame = min(frame, totalFrames - 1);
 			var nextFrame = if( loop ) (frame + 1) % totalFrames else min(frame + 1, totalFrames - 1);
 
-			var delta = vec2( frame % frameDivision.x, float(int(frame / frameDivision.x)) ) / frameDivision;
-			calculatedUV = input.uv + delta;
-			var delta = vec2( nextFrame % frameDivision.x, float(int(nextFrame / frameDivision.x)) ) / frameDivision;
-			calculatedUV2 = input.uv + delta;
+			var delta = vec2( frame % frameDivision.x, float(int(frame / frameDivision.x)) );
+			calculatedUV = (input.uv + delta) / frameDivision;
+			var delta = vec2( nextFrame % frameDivision.x, float(int(nextFrame / frameDivision.x)) );
+			calculatedUV2 = (input.uv + delta) / frameDivision;
 		}
 
 		function __init__fragment() {