diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Graphics/TextureSettings.cpp |
Diffstat (limited to 'Runtime/Graphics/TextureSettings.cpp')
-rw-r--r-- | Runtime/Graphics/TextureSettings.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Runtime/Graphics/TextureSettings.cpp b/Runtime/Graphics/TextureSettings.cpp new file mode 100644 index 0000000..a11b565 --- /dev/null +++ b/Runtime/Graphics/TextureSettings.cpp @@ -0,0 +1,64 @@ +#include "UnityPrefix.h" +#include "TextureSettings.h" +#include "Runtime/Utilities/Utility.h" +#include "Runtime/GfxDevice/GfxDevice.h" + +static int gUserMinAniso = 1; +static int gUserMaxAniso = 16; + + +void TextureSettings::SetAnisoLimits (int minAniso, int maxAniso) +{ + gUserMinAniso = minAniso; + gUserMaxAniso = maxAniso; + ErrorIf (gUserMinAniso < 1); + ErrorIf (gUserMaxAniso > 16); +} + +void TextureSettings::GetAnisoLimits (int& minAniso, int& maxAniso) +{ + minAniso = gUserMinAniso; + maxAniso = gUserMaxAniso; +} + + +void TextureSettings::Reset () +{ + m_FilterMode = kTexFilterBilinear; + m_Aniso = 1; + m_MipBias = 0.0f; + m_WrapMode = 0; +} + +void TextureSettings::CheckConsistency() +{ + m_FilterMode = clamp<int> (m_FilterMode, 0, kTexFilterCount-1); + m_WrapMode = clamp<int> (m_WrapMode, 0, kTexWrapCount-1); +} + + +void TextureSettings::Apply (TextureID texture, TextureDimension texDim, bool hasMipMap, TextureColorSpace colorSpace) const +{ + GfxDevice& device = GetGfxDevice(); + + int aniso; + // Never use anisotropic on textures where we certainly don't want it, + // and on Point filtered textures. + if (m_Aniso == 0 || m_FilterMode == kTexFilterNearest) + aniso = 1; + else + aniso = clamp (m_Aniso, gUserMinAniso, gUserMaxAniso); + + device.SetTextureParams (texture, texDim, (TextureFilterMode)m_FilterMode, + (TextureWrapMode)m_WrapMode, aniso, hasMipMap, colorSpace); +} + +#if UNITY_EDITOR +void TextureSettings::Invalidate () +{ + m_FilterMode = -1; + m_Aniso = -1; + m_MipBias = -1.0f; + m_WrapMode = -1; +} +#endif |