Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //vertex:
- varying vec2 uv;
- varying vec2 rcoords;
- varying vec3 viewDir, pos;
- uniform vec4 sprite_pos;
- uniform float time;
- void main() {
- // put the frame animation calculation here instead of in the pixel shader
- /*
- vec2 uvCenter = gl_MultiTexCoord0.xy - 0.5;
- float frames = 64.0;
- float rows = 16.0;
- float colums = 4.0;
- float rowX = frames / rows;
- float floorOpX = floor((1.0 - gl_Color.a) * frames) * 0.25;
- float calcX = (1.0/ rowX) * mod(floorOpX, rowX);
- float runX = uvCenter.x/rows + calcX;
- float floorOpY = floor(floorOpX / rowX);
- float calcY = (1.0 / colums) * floorOpY;
- float runY = uvCenter.y / colums + calcY;
- float runXoffset = runX + (1.0/rows) * 0.5;
- runXoffset = clamp(runXoffset + ((runX - calcX) * 3.0), calcX, calcX + 1.0/rows);
- runY = clamp(runY + (runY - calcY), calcY, calcY + 1.0/colums);
- uv = vec2(runXoffset, runY);
- */
- uv = gl_MultiTexCoord0.xy;
- rcoords = ((uv - sprite_pos.xy) / (sprite_pos.zw - sprite_pos.xy) - vec2(0.5, 0.5)) * 2.0;
- gl_FrontColor = gl_Color;
- gl_BackColor = gl_Color;
- pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
- viewDir = (gl_NormalMatrix * vec3(1.0,0.0,0.0)).xyz;
- gl_Position = ftransform();
- }
- //fragment:
- #120
- varying vec2 uv;
- uniform sampler2D texture;
- uniform float time;
- void main()
- {
- vec2 uvCenter = uv - 0.5;
- float frames = 64.0;
- float rows = 16.0;
- float colums = 4.0;
- float rowX = frames / rows;
- float floorOpX = floor((1.0 - gl_Color.a) * frames) * 0.25;
- float calcX = (1.0/ rowX) * mod(floorOpX, rowX);
- float runX = uvCenter.x/rows + calcX;
- float floorOpY = floor(floorOpX / rowX);
- float calcY = (1.0 / colums) * floorOpY;
- float runY = uvCenter.y / colums + calcY;
- float runXoffset = runX + (1.0/rows) * 0.5;
- runXoffset = clamp(runXoffset + ((runX - calcX) * 3.0), calcX, calcX + 1.0/rows);
- runY = clamp(runY + (runY - calcY), calcY, calcY + 1.0/colums);
- vec3 sample = texture2D(texture, vec2(runXoffset, runY)).rgb;
- // vec3 sample = texture2D(texture, uv).rgb;
- if(sample.r < 0.01)
- discard;
- gl_FragColor.rgb = sample.rgb * 1.0;
- gl_FragColor.a = 0.0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement