LensFlareSprite.ankiprog 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (C) 2009-2022, 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 start vert
  6. #include <AnKi/Shaders/Common.glsl>
  7. #include <AnKi/Shaders/Include/MiscRendererTypes.h>
  8. // The block contains data for all flares
  9. layout(std140, set = 0, binding = 0) readonly buffer ssbo00
  10. {
  11. LensFlareSprite u_sprites[];
  12. };
  13. layout(location = 0) out Vec3 out_uv;
  14. layout(location = 1) flat out ANKI_RP Vec4 out_color;
  15. void main()
  16. {
  17. const Vec2 position = UV_TO_NDC(Vec2(gl_VertexID & 1, gl_VertexID >> 1));
  18. const LensFlareSprite sprite = u_sprites[gl_InstanceIndex];
  19. // Write tex coords of the 2D array texture
  20. out_uv = Vec3((position * 0.5) + 0.5, sprite.m_depthPad3.x);
  21. const Vec4 posScale = sprite.m_posScale;
  22. gl_Position = Vec4(position * posScale.zw + posScale.xy, 0.0, 1.0);
  23. out_color = sprite.m_color;
  24. }
  25. #pragma anki end
  26. #pragma anki start frag
  27. #include <AnKi/Shaders/Common.glsl>
  28. layout(set = 0, binding = 1) uniform sampler u_trilinearRepeatSampler;
  29. layout(set = 0, binding = 2) uniform ANKI_RP texture2DArray u_tex;
  30. layout(location = 0) in Vec3 in_uv;
  31. layout(location = 1) flat in ANKI_RP Vec4 in_color;
  32. layout(location = 0) out ANKI_RP Vec4 out_color;
  33. void main()
  34. {
  35. const ANKI_RP Vec4 col = texture(u_tex, u_trilinearRepeatSampler, in_uv);
  36. out_color = col * in_color;
  37. }
  38. #pragma anki end