vshader71.glsl 944 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #version 150
  2. in vec4 vPosition;
  3. in vec4 vColor;
  4. in vec2 vTexCoord;
  5. out vec4 color;
  6. out vec2 texCoord;
  7. uniform vec3 theta;
  8. void main()
  9. {
  10. const float DegreesToRadians = 3.14159265 / 180.0;
  11. vec3 c = cos( DegreesToRadians * theta );
  12. vec3 s = sin( DegreesToRadians * theta );
  13. mat4 rx = mat4( 1.0, 0.0, 0.0, 0.0,
  14. 0.0, c.x, -s.x, 0.0,
  15. 0.0, s.x, c.x, 0.0,
  16. 0.0, 0.0, 0.0, 1.0);
  17. mat4 ry = mat4( c.y, 0.0, s.y, 0.0,
  18. 0.0, 1.0, 0.0, 0.0,
  19. -s.y, 0.0, c.y, 0.0,
  20. 0.0, 0.0, 0.0, 1.0 );
  21. // Workaround for bug in ATI driver
  22. ry[1][0] = 0.0;
  23. ry[1][1] = 1.0;
  24. mat4 rz = mat4( c.z, -s.z, 0.0, 0.0,
  25. s.z, c.z, 0.0, 0.0,
  26. 0.0, 0.0, 1.0, 0.0,
  27. 0.0, 0.0, 0.0, 1.0 );
  28. // Workaround for bug in ATI driver
  29. rz[2][2] = 1.0;
  30. color = vec4(0.5, 0.5, 0.5, 1);
  31. texCoord = vTexCoord;
  32. gl_Position = rz * ry * rx * vPosition;
  33. }