Ui.ankiprog 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma anki mutator TEXTURE_TYPE 0 1 // 0: no tex, 1: rgba tex
  6. #pragma anki start vert
  7. #include <AnKi/Shaders/Common.glsl>
  8. layout(location = 0) in Vec2 in_pos;
  9. layout(location = 1) in Vec4 in_col;
  10. #if TEXTURE_TYPE > 0
  11. layout(location = 2) in Vec2 in_uv;
  12. #endif
  13. #if TEXTURE_TYPE > 0
  14. layout(location = 0) out Vec2 out_uv;
  15. #endif
  16. layout(location = 1) out Vec4 out_col;
  17. out gl_PerVertex
  18. {
  19. Vec4 gl_Position;
  20. };
  21. layout(push_constant) uniform u_
  22. {
  23. Vec4 u_transform; // x: x scale, y: y scale, z: x transl, w: y transl
  24. };
  25. void main()
  26. {
  27. #if TEXTURE_TYPE > 0
  28. out_uv = in_uv;
  29. #endif
  30. out_col = in_col;
  31. const Vec2 pos = u_transform.xy * in_pos + u_transform.zw;
  32. gl_Position = Vec4(pos, 0.0, 1.0);
  33. }
  34. #pragma anki end
  35. #pragma anki start frag
  36. #include <AnKi/Shaders/Common.glsl>
  37. #if TEXTURE_TYPE > 0
  38. layout(location = 0) in Vec2 in_uv;
  39. #endif
  40. layout(location = 1) in Vec4 in_col;
  41. layout(location = 0) out Vec4 out_col;
  42. #if TEXTURE_TYPE > 0
  43. layout(set = 0, binding = 0) uniform sampler u_trilinearRepeatSampler;
  44. layout(set = 0, binding = 1) uniform texture2D u_tex;
  45. #endif
  46. void main()
  47. {
  48. #if TEXTURE_TYPE == 0
  49. out_col = in_col;
  50. #elif TEXTURE_TYPE == 1
  51. out_col = in_col * texture(u_tex, u_trilinearRepeatSampler, in_uv);
  52. #endif
  53. }
  54. #pragma anki end