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

102 lines
2.3 KiB
C#

using System;
using UnityEngine;
namespace UnityEditor.ShaderGraph
{
[Serializable]
class TextureSamplerState
{
public enum FilterMode
{
Linear,
Point,
Trilinear
}
public enum WrapMode
{
Repeat,
Clamp,
Mirror,
MirrorOnce
}
public enum Anisotropic
{
None,
x2,
x4,
x8,
x16
}
[SerializeField] private FilterMode m_filter = FilterMode.Linear;
public FilterMode filter
{
get { return m_filter; }
set
{
if (m_filter == value)
return;
m_filter = value;
}
}
[SerializeField] private WrapMode m_wrap = WrapMode.Repeat;
public WrapMode wrap
{
get { return m_wrap; }
set
{
if (m_wrap == value)
return;
m_wrap = value;
}
}
[SerializeField] private Anisotropic m_anisotropic = Anisotropic.None;
public Anisotropic anisotropic
{
get { return m_anisotropic; }
set
{
if (m_anisotropic == value)
return;
m_anisotropic = value;
}
}
static string GetAnisoString(Anisotropic aniso)
{
switch (aniso)
{
default:
case Anisotropic.None:
return String.Empty;
case Anisotropic.x2:
return "_Aniso2";
case Anisotropic.x4:
return "_Aniso4";
case Anisotropic.x8:
return "_Aniso8";
case Anisotropic.x16:
return "_Aniso16";
}
}
public static string BuildSamplerStateName(FilterMode filter, WrapMode wrap, Anisotropic aniso)
{
var anisoMode = GetAnisoString(aniso);
return $"SamplerState_{filter}_{wrap}{anisoMode}";
}
public string defaultPropertyName => BuildSamplerStateName(filter, wrap, anisotropic);
}
}