InterpolationQualifier.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. namespace Ryujinx.Graphics.Shader
  3. {
  4. [Flags]
  5. 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. static class InterpolationQualifierExtensions
  16. {
  17. public static string ToGlslQualifier(this InterpolationQualifier iq)
  18. {
  19. string output = (iq & ~InterpolationQualifier.FlagsMask) switch
  20. {
  21. InterpolationQualifier.Flat => "flat",
  22. InterpolationQualifier.NoPerspective => "noperspective",
  23. InterpolationQualifier.Smooth => "smooth",
  24. _ => string.Empty
  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. }