summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/TextureSettings.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Graphics/TextureSettings.cpp
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Graphics/TextureSettings.cpp')
-rw-r--r--Runtime/Graphics/TextureSettings.cpp64
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