Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

52 wiersze
1.3 KiB

  1. #version 450 core
  2. #pragma include ./shared.glsl
  3. #pragma include ../misc/camera.glsl
  4. layout (location = 0) in vec2 inPosMin;
  5. layout (location = 1) in vec2 inPosMax;
  6. layout (location = 2) in vec2 inTexMin;
  7. layout (location = 3) in vec2 inTexMax;
  8. layout (location = 4) in vec4 inColor;
  9. out FragmentData fragmentData;
  10. void main() {
  11. vec2 position = vec2(0.0);
  12. vec2 texCoords = vec2(0.0);
  13. switch (gl_VertexID) {
  14. case 0:
  15. position = vec2(inPosMin.x, inPosMax.y);
  16. texCoords = vec2(inTexMin.x, inTexMax.y);
  17. break;
  18. case 1:
  19. position = vec2(inPosMin.x, inPosMin.y);
  20. texCoords = vec2(inTexMin.x, inTexMin.y);
  21. break;
  22. case 2:
  23. position = vec2(inPosMax.x, inPosMax.y);
  24. texCoords = vec2(inTexMax.x, inTexMax.y);
  25. break;
  26. case 3:
  27. position = vec2(inPosMax.x, inPosMin.y);
  28. texCoords = vec2(inTexMax.x, inTexMin.y);
  29. break;
  30. }
  31. mat4 ortho = mat4(
  32. vec4(2.0 / uCamera.size.x, 0.0, 0.0, 0.0),
  33. vec4(0.0, -2.0 / uCamera.size.y, 0.0, 0.0),
  34. vec4(0.0, 0.0, 1.0, 0.0),
  35. vec4(-1.0, 1.0, 1.0, 1.0)
  36. );
  37. gl_Position = ortho * vec4(position, 0.0, 1.0);
  38. fragmentData.texCoords = texCoords;
  39. fragmentData.color = inColor;
  40. }