Advertisement
Guest User

Untitled

a guest
Oct 10th, 2015
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. //vertex:
  2.  
  3. varying vec2 uv;
  4. varying vec2 rcoords;
  5. varying vec3 viewDir, pos;
  6. uniform vec4 sprite_pos;
  7. uniform float time;
  8.  
  9. void main() {
  10. // put the frame animation calculation here instead of in the pixel shader
  11. /*
  12. vec2 uvCenter = gl_MultiTexCoord0.xy - 0.5;
  13. float frames = 64.0;
  14. float rows = 16.0;
  15. float colums = 4.0;
  16. float rowX = frames / rows;
  17. float floorOpX = floor((1.0 - gl_Color.a) * frames) * 0.25;
  18. float calcX = (1.0/ rowX) * mod(floorOpX, rowX);
  19. float runX = uvCenter.x/rows + calcX;
  20.  
  21. float floorOpY = floor(floorOpX / rowX);
  22. float calcY = (1.0 / colums) * floorOpY;
  23. float runY = uvCenter.y / colums + calcY;
  24.  
  25. float runXoffset = runX + (1.0/rows) * 0.5;
  26. runXoffset = clamp(runXoffset + ((runX - calcX) * 3.0), calcX, calcX + 1.0/rows);
  27. runY = clamp(runY + (runY - calcY), calcY, calcY + 1.0/colums);
  28.  
  29. uv = vec2(runXoffset, runY);
  30. */
  31. uv = gl_MultiTexCoord0.xy;
  32.  
  33. rcoords = ((uv - sprite_pos.xy) / (sprite_pos.zw - sprite_pos.xy) - vec2(0.5, 0.5)) * 2.0;
  34.  
  35. gl_FrontColor = gl_Color;
  36. gl_BackColor = gl_Color;
  37.  
  38. pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
  39.  
  40. viewDir = (gl_NormalMatrix * vec3(1.0,0.0,0.0)).xyz;
  41.  
  42. gl_Position = ftransform();
  43. }
  44.  
  45.  
  46.  
  47.  
  48. //fragment:
  49.  
  50.  
  51. #120
  52. varying vec2 uv;
  53. uniform sampler2D texture;
  54. uniform float time;
  55.  
  56. void main()
  57. {
  58.  
  59. vec2 uvCenter = uv - 0.5;
  60. float frames = 64.0;
  61. float rows = 16.0;
  62. float colums = 4.0;
  63. float rowX = frames / rows;
  64. float floorOpX = floor((1.0 - gl_Color.a) * frames) * 0.25;
  65. float calcX = (1.0/ rowX) * mod(floorOpX, rowX);
  66. float runX = uvCenter.x/rows + calcX;
  67.  
  68. float floorOpY = floor(floorOpX / rowX);
  69. float calcY = (1.0 / colums) * floorOpY;
  70. float runY = uvCenter.y / colums + calcY;
  71.  
  72. float runXoffset = runX + (1.0/rows) * 0.5;
  73. runXoffset = clamp(runXoffset + ((runX - calcX) * 3.0), calcX, calcX + 1.0/rows);
  74. runY = clamp(runY + (runY - calcY), calcY, calcY + 1.0/colums);
  75.  
  76. vec3 sample = texture2D(texture, vec2(runXoffset, runY)).rgb;
  77.  
  78.  
  79. // vec3 sample = texture2D(texture, uv).rgb;
  80.  
  81. if(sample.r < 0.01)
  82. discard;
  83.  
  84. gl_FragColor.rgb = sample.rgb * 1.0;
  85. gl_FragColor.a = 0.0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement