InterpolationQualifier.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. namespace Ryujinx.Graphics.Shader
  3. {
  4. [Flags]
  5. public enum InterpolationQualifier
  6. {
  7. None = 0,
  8. Flat = 1,
  9. NoPerspective = 2,
  10. Smooth = 3,
  11. Centroid = 1 << 16,
  12. Sample = 1 << 17,
  13. FlagsMask = Centroid | Sample
  14. }
  15. public static class InterpolationQualifierExtensions
  16. {
  17. public static string ToGlslQualifier(this InterpolationQualifier iq)
  18. {
  19. string output = string.Empty;
  20. switch (iq & ~InterpolationQualifier.FlagsMask)
  21. {
  22. case InterpolationQualifier.Flat: output = "flat"; break;
  23. case InterpolationQualifier.NoPerspective: output = "noperspective"; break;
  24. case InterpolationQualifier.Smooth: output = "smooth"; break;
  25. }
  26. if ((iq & InterpolationQualifier.Centroid) != 0)
  27. {
  28. output = "centroid " + output;
  29. }
  30. else if ((iq & InterpolationQualifier.Sample) != 0)
  31. {
  32. output = "sample " + output;
  33. }
  34. return output;
  35. }
  36. }
  37. }