Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. vec3 TRIANGLE(vec3 color, vec3 background, vec2 vertices[3], vec2 uv);
  2.  
  3. vec2 rotate_point(vec2 point, vec2 pivot_point, float angle);
  4.  
  5. void mainImage( out vec4 fragColor, in vec2 fragCoord )
  6. {
  7. vec2 uv = fragCoord/iResolution.xy;
  8.  
  9.  
  10. vec3 color = vec3(0.0);
  11. float len = .5f;
  12. vec2 middle = vec2(iResolution.z/2.0, iResolution.z/2.0);
  13. vec2 a = vec2(iResolution.z/2.0, iResolution.z/2.0 - len);
  14. vec2 b = vec2(iResolution.z/2.0 - len, iResolution.z/2.0);
  15.  
  16. float angle = 105.0f - atan(iMouse.y - middle.y, iMouse.x - middle.x);
  17.  
  18. vec2 VERTS[3] = vec2[]
  19. (
  20. middle,
  21. rotate_point(a, middle, angle),
  22. rotate_point(b, middle, -angle)
  23. );
  24.  
  25. color = TRIANGLE(vec3(1.0), color, VERTS, uv);
  26.  
  27. fragColor = vec4(color,1.0);
  28. }
  29.  
  30. float TRIANGLE_sign(vec2 p1, vec2 p2, vec2 p3)
  31. {
  32. return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
  33. }
  34.  
  35. vec3 TRIANGLE(vec3 color, vec3 background, vec2 vertices[3], vec2 uv)
  36. {
  37. bool b1 = TRIANGLE_sign(uv, vertices[0], vertices[1]) < 0.0f;
  38. bool b2 = TRIANGLE_sign(uv, vertices[1], vertices[2]) < 0.0f;
  39. bool b3 = TRIANGLE_sign(uv, vertices[2], vertices[0]) < 0.0f;
  40.  
  41. if((b1 == b2) && (b2 == b3))return color;
  42. return background;
  43. }
  44.  
  45.  
  46. vec2 rotate_point(vec2 point, vec2 pivot_point, float angle)
  47. {
  48. vec2 new_p;
  49. new_p.x = - cos(angle) * (point.x - pivot_point.x) + sin(angle) * (point.y - pivot_point.y) + pivot_point.x;
  50.  
  51. new_p.y = - sin(angle) * (point.x - pivot_point.x) + cos(angle) * (point.y - pivot_point.y) + pivot_point.y;
  52. return new_p;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement