UiVisualizeImage.ankiprog 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. layout(push_constant) uniform b_pc
  6. {
  7. Vec4 u_transform; // x: x scale, y: y scale, z: x transl, w: y transl
  8. Vec4 u_colorScale;
  9. };
  10. #pragma anki start vert
  11. #include <AnKi/Shaders/Common.glsl>
  12. layout(location = 0) in Vec2 in_pos;
  13. layout(location = 1) in Vec4 in_col;
  14. layout(location = 2) in Vec2 in_uv;
  15. layout(location = 0) out Vec2 out_uv;
  16. layout(location = 1) out Vec4 out_col;
  17. out gl_PerVertex
  18. {
  19. Vec4 gl_Position;
  20. };
  21. void main()
  22. {
  23. out_uv = in_uv;
  24. out_col = in_col;
  25. const Vec2 pos = u_transform.xy * in_pos + u_transform.zw;
  26. gl_Position = Vec4(pos, 0.0, 1.0);
  27. }
  28. #pragma anki end
  29. #pragma anki start frag
  30. #include <AnKi/Shaders/Common.glsl>
  31. layout(location = 0) in Vec2 in_uv;
  32. layout(location = 1) in Vec4 in_col;
  33. layout(location = 0) out Vec4 out_col;
  34. layout(set = 0, binding = 0) uniform sampler u_trilinearRepeatSampler;
  35. layout(set = 0, binding = 1) uniform texture2D u_tex;
  36. void main()
  37. {
  38. const Vec4 rgba = texture(u_tex, u_trilinearRepeatSampler, in_uv);
  39. out_col.rgb = in_col.rgb * rgba.rgb * u_colorScale.rgb;
  40. if(u_colorScale.a == 1.0)
  41. {
  42. // Draw a pattern to visualize alpha
  43. F32 alphaPattern = ((U32(gl_FragCoord.x) / 16u) & 1u) == 1u ? 1.0 : 0.75;
  44. alphaPattern *= ((U32(gl_FragCoord.y) / 16u) & 1u) == 1u ? 1.0 : 0.75;
  45. out_col.rgb = mix(Vec3(alphaPattern), out_col.rgb, rgba.a);
  46. }
  47. out_col.a = 1.0;
  48. }
  49. #pragma anki end