UnityGame/Library/PackageCache/com.unity.shadergraph/Editor/Data/Util/PrecisionUtil.cs
2024-10-27 10:53:47 +03:00

86 lines
2.7 KiB
C#

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;
}
}
}