Blit.glsl 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. #include <AnKi/Shaders/Functions.glsl>
  6. layout(set = 0, binding = 0) uniform sampler u_linearAnyClampSampler;
  7. layout(set = 0, binding = 1) uniform texture2D u_tex;
  8. #if defined(ANKI_COMPUTE_SHADER)
  9. # define USE_COMPUTE 1
  10. #else
  11. # define USE_COMPUTE 0
  12. #endif
  13. #if USE_COMPUTE
  14. layout(set = 0, binding = 2) uniform writeonly image2D u_outImage;
  15. layout(push_constant, std140) uniform b_pc
  16. {
  17. Vec2 u_viewportSize;
  18. UVec2 u_viewportSizeU;
  19. };
  20. layout(local_size_x = 8, local_size_y = 8) in;
  21. #else
  22. layout(location = 0) in Vec2 in_uv;
  23. layout(location = 0) out Vec3 out_col;
  24. #endif
  25. void main()
  26. {
  27. #if USE_COMPUTE
  28. if(skipOutOfBoundsInvocations(UVec2(8u), u_viewportSizeU))
  29. {
  30. return;
  31. }
  32. const Vec2 uv = (Vec2(gl_GlobalInvocationID.xy) + 0.5) / u_viewportSize;
  33. #else
  34. const Vec2 uv = in_uv;
  35. #endif
  36. const Vec3 color = textureLod(u_tex, u_linearAnyClampSampler, uv, 0.0).rgb;
  37. #if USE_COMPUTE
  38. imageStore(u_outImage, IVec2(gl_GlobalInvocationID.xy), Vec4(color, 0.0));
  39. #else
  40. out_col = color;
  41. #endif
  42. }