2
0
Эх сурвалжийг харах

gl side mip sanity clamps

AzaezelX 1 сар өмнө
parent
commit
8d38fa0bc4

+ 9 - 1
Engine/source/gfx/gl/gfxGLTextureManager.cpp

@@ -116,10 +116,18 @@ void GFXGLTextureManager::innerCreateTexture( GFXGLTextureObject *retTex,
    {
       retTex->mMipLevels = numMipLevels > 1 ? numMipLevels : 0;
    }
-   else if(profile->testFlag(GFXTextureProfile::NoMipmap) || profile->testFlag(GFXTextureProfile::RenderTarget) || numMipLevels == 1 || retTex->mIsNPoT2)
+   else if(profile->testFlag(GFXTextureProfile::NoMipmap) || numMipLevels == 1)
    {
       retTex->mMipLevels = 1;
    }
+   else if (profile->testFlag(GFXTextureProfile::RenderTarget))
+   {
+         if (numMipLevels == 0) //auto
+            numMipLevels = mFloor(mLog2(mMax(width, height))) + 1;
+         else if (numMipLevels > 1) //capped
+            numMipLevels = mMin(numMipLevels, mFloor(mLog2(mMax(width, height))) + 1);
+         retTex->mMipLevels = mClampF(numMipLevels, 1, 13);
+   }
    else
    {
       retTex->mMipLevels = numMipLevels;