visualizer.frag 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /* visualizer.frag -- Buffer visualizer fragment shader
  2. *
  3. * Copyright (c) 2025 Victor Le Juez
  4. *
  5. * This software is distributed under the terms of the accompanying LICENSE file.
  6. * It is provided "as-is", without any express or implied warranty.
  7. */
  8. #version 330 core
  9. /* === Includes === */
  10. #include "../include/math.glsl"
  11. /* === Constants === */
  12. #define OUTPUT_ALBEDO 1
  13. #define OUTPUT_NORMAL 2
  14. #define OUTPUT_ORM 3
  15. #define OUTPUT_DIFFUSE 4
  16. #define OUTPUT_SPECULAR 5
  17. #define OUTPUT_SSAO 6
  18. #define OUTPUT_SSIL 7
  19. #define OUTPUT_SSR 8
  20. #define OUTPUT_BLOOM 9
  21. /* === Varyings === */
  22. noperspective in vec2 vTexCoord;
  23. /* === Uniforms === */
  24. uniform sampler2D uSourceTex;
  25. uniform int uOutputMode;
  26. /* === Fragments === */
  27. out vec4 FragColor;
  28. /* === Main Program === */
  29. void main()
  30. {
  31. FragColor = texture(uSourceTex, vTexCoord);
  32. switch (uOutputMode) {
  33. case OUTPUT_ALBEDO:
  34. FragColor = vec4(FragColor.rgb, 1.0);
  35. break;
  36. case OUTPUT_NORMAL:
  37. FragColor = vec4(0.5 * M_DecodeOctahedral(FragColor.rg) + 0.5, 1.0);
  38. break;
  39. case OUTPUT_ORM:
  40. FragColor = vec4(FragColor.rgb, 1.0);
  41. break;
  42. case OUTPUT_DIFFUSE:
  43. FragColor = vec4(FragColor.rgb, 1.0);
  44. break;
  45. case OUTPUT_SPECULAR:
  46. FragColor = vec4(FragColor.rgb, 1.0);
  47. break;
  48. case OUTPUT_SSAO:
  49. FragColor = vec4(FragColor.xxx, 1.0);
  50. break;
  51. case OUTPUT_SSIL:
  52. FragColor = vec4(mix(FragColor.rgb, vec3(FragColor.a), 0.2), 1.0);
  53. break;
  54. case OUTPUT_SSR:
  55. FragColor = vec4(FragColor.rgb * FragColor.a, 1.0);
  56. break;
  57. case OUTPUT_BLOOM:
  58. FragColor = vec4(FragColor.rgb, 1.0);
  59. break;
  60. default:
  61. break;
  62. }
  63. }