Pārlūkot izejas kodu

set GFXTextureManager::_validateTexParams to respect sen mipcaps
also kill console spam

AzaezelX 1 mēnesi atpakaļ
vecāks
revīzija
022f8d1732

+ 0 - 1
Engine/source/gfx/D3D11/gfxD3D11TextureManager.cpp

@@ -108,7 +108,6 @@ void GFXD3D11TextureManager::_innerCreateTexture( GFXD3D11TextureObject *retTex,
        (numMipLevels == 0 || numMipLevels > 1)&&
        !(depth > 0) )
    {
-      if (numMipLevels == 5) Con::errorf("GFXD3D11TextureManager::_innerCreateTexture - numMipLevels == 5 found!");
       miscFlags |= D3D11_RESOURCE_MISC_GENERATE_MIPS;
       bindFlags |= D3D11_BIND_RENDER_TARGET; // in order to automatically generate mips. Resource needs to be a rendertarget and shader resource
    }

+ 12 - 2
Engine/source/gfx/gfxTextureManager.cpp

@@ -1410,7 +1410,7 @@ void GFXTextureManager::_validateTexParams( const U32 width, const U32 height,
                                           U32 &inOutNumMips, GFXFormat &inOutFormat  )
 {
    // Validate mipmap parameter. If this profile requests no mips, set mips to 1.
-   if( profile->noMip() )
+   if( profile->noMip()|| inOutNumMips == 1)
    {
       inOutNumMips = 1;
    }
@@ -1418,7 +1418,17 @@ void GFXTextureManager::_validateTexParams( const U32 width, const U32 height,
    {
       // If a texture is not power-of-2 in size for both dimensions, it must
       // have only 1 mip level.
-      inOutNumMips = profile->isRenderTarget() ? mFloor(mLog2(mMax(width, height))) + 1 : 1;
+      if (profile->isRenderTarget())
+      {
+         if (inOutNumMips == 0) //auto
+            inOutNumMips = mFloor(mLog2(mMax(width, height))) + 1;
+         else if (inOutNumMips > 1) //capped
+            inOutNumMips = mMin(inOutNumMips,mFloor(mLog2(mMax(width, height))) + 1);
+      }
+      else
+      {
+         inOutNumMips = 1;
+      }
    }
 
    // Check format, and compatibility with texture profile requirements

+ 1 - 3
Engine/source/postFx/postEffect.cpp

@@ -849,9 +849,7 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
 
       if (mMipCountSC[i]->isValid())
       {
-         S32 mipLevels = (S32)mActiveTextures[i]->getMipLevels();
-         mShaderConsts->set(mMipCountSC[i], mipLevels);
-         if (mipLevels == 5) Con::errorf("PostEffect::_setupConstants - mipLevels == 5 found!");
+         mShaderConsts->set(mMipCountSC[i], (S32)mActiveTextures[i]->getMipLevels());
       }
    }