暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PrecisionUtil.cs 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using UnityEditor.ShaderGraph.Internal;
  2. namespace UnityEditor.ShaderGraph
  3. {
  4. internal static class PrecisionUtil
  5. {
  6. internal const string Token = "$precision";
  7. internal static string ToShaderString(this ConcretePrecision precision)
  8. {
  9. switch (precision)
  10. {
  11. case ConcretePrecision.Single:
  12. return "float";
  13. case ConcretePrecision.Half:
  14. return "half";
  15. default:
  16. return "float";
  17. }
  18. }
  19. internal static string ToGenericString(this GraphPrecision precision)
  20. {
  21. switch (precision)
  22. {
  23. case GraphPrecision.Single:
  24. return "float";
  25. case GraphPrecision.Half:
  26. return "half";
  27. default:
  28. return Token;
  29. }
  30. }
  31. internal static ConcretePrecision ToConcrete(this Precision precision, ConcretePrecision InheritPrecision, ConcretePrecision GraphPrecision)
  32. {
  33. switch (precision)
  34. {
  35. case Precision.Single:
  36. return ConcretePrecision.Single;
  37. case Precision.Half:
  38. return ConcretePrecision.Half;
  39. case Precision.Inherit:
  40. return InheritPrecision;
  41. default:
  42. return GraphPrecision;
  43. }
  44. }
  45. internal static GraphPrecision ToGraphPrecision(this Precision precision, GraphPrecision inheritPrecision)
  46. {
  47. switch (precision)
  48. {
  49. case Precision.Single:
  50. return GraphPrecision.Single;
  51. case Precision.Half:
  52. return GraphPrecision.Half;
  53. case Precision.Graph:
  54. return GraphPrecision.Graph;
  55. default:
  56. return inheritPrecision;
  57. }
  58. }
  59. internal static ConcretePrecision ToConcrete(this GraphPrecision precision, ConcretePrecision graphPrecision)
  60. {
  61. switch (precision)
  62. {
  63. case GraphPrecision.Single:
  64. return ConcretePrecision.Single;
  65. case GraphPrecision.Half:
  66. return ConcretePrecision.Half;
  67. default:
  68. return graphPrecision;
  69. }
  70. }
  71. internal static GraphPrecision GraphFallback(this GraphPrecision precision, GraphPrecision graphFallback)
  72. {
  73. if (precision == GraphPrecision.Graph)
  74. return graphFallback;
  75. return precision;
  76. }
  77. }
  78. }