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.
85 lines
2.7 KiB
85 lines
2.7 KiB
using UnityEditor.ShaderGraph.Internal; |
|
|
|
namespace UnityEditor.ShaderGraph |
|
{ |
|
internal static class PrecisionUtil |
|
{ |
|
internal const string Token = "$precision"; |
|
|
|
internal static string ToShaderString(this ConcretePrecision precision) |
|
{ |
|
switch (precision) |
|
{ |
|
case ConcretePrecision.Single: |
|
return "float"; |
|
case ConcretePrecision.Half: |
|
return "half"; |
|
default: |
|
return "float"; |
|
} |
|
} |
|
|
|
internal static string ToGenericString(this GraphPrecision precision) |
|
{ |
|
switch (precision) |
|
{ |
|
case GraphPrecision.Single: |
|
return "float"; |
|
case GraphPrecision.Half: |
|
return "half"; |
|
default: |
|
return Token; |
|
} |
|
} |
|
|
|
internal static ConcretePrecision ToConcrete(this Precision precision, ConcretePrecision InheritPrecision, ConcretePrecision GraphPrecision) |
|
{ |
|
switch (precision) |
|
{ |
|
case Precision.Single: |
|
return ConcretePrecision.Single; |
|
case Precision.Half: |
|
return ConcretePrecision.Half; |
|
case Precision.Inherit: |
|
return InheritPrecision; |
|
default: |
|
return GraphPrecision; |
|
} |
|
} |
|
|
|
internal static GraphPrecision ToGraphPrecision(this Precision precision, GraphPrecision inheritPrecision) |
|
{ |
|
switch (precision) |
|
{ |
|
case Precision.Single: |
|
return GraphPrecision.Single; |
|
case Precision.Half: |
|
return GraphPrecision.Half; |
|
case Precision.Graph: |
|
return GraphPrecision.Graph; |
|
default: |
|
return inheritPrecision; |
|
} |
|
} |
|
|
|
internal static ConcretePrecision ToConcrete(this GraphPrecision precision, ConcretePrecision graphPrecision) |
|
{ |
|
switch (precision) |
|
{ |
|
case GraphPrecision.Single: |
|
return ConcretePrecision.Single; |
|
case GraphPrecision.Half: |
|
return ConcretePrecision.Half; |
|
default: |
|
return graphPrecision; |
|
} |
|
} |
|
|
|
internal static GraphPrecision GraphFallback(this GraphPrecision precision, GraphPrecision graphFallback) |
|
{ |
|
if (precision == GraphPrecision.Graph) |
|
return graphFallback; |
|
return precision; |
|
} |
|
} |
|
}
|
|
|