102 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|