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

don't let GFXD3D11TextureTarget::deactivate() try to generate mips if we haven't told that target to do so

AzaezelX 1 сар өмнө
parent
commit
3cdbd4e87e

+ 12 - 5
Engine/source/gfx/D3D11/gfxD3D11Target.cpp

@@ -276,11 +276,18 @@ void GFXD3D11TextureTarget::deactivate()
    //re-gen mip maps
    for (U32 i = 0; i < 6; i++)
    {
-      ID3D11ShaderResourceView* pSRView = mTargetSRViews[GFXTextureTarget::Color0 + i];
-      if (pSRView)
-         D3D11DEVICECONTEXT->GenerateMips(pSRView);
-   }
-   
+      D3D11_TEXTURE2D_DESC desc;
+      if (mResolveTargets[GFXTextureTarget::Color0 + i])
+      {
+         mResolveTargets[GFXTextureTarget::Color0 + i]->get2DTex()->GetDesc(&desc);
+         if (desc.MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS)
+         {
+            ID3D11ShaderResourceView* pSRView = mTargetSRViews[GFXTextureTarget::Color0 + i];
+            if (pSRView)
+               D3D11DEVICECONTEXT->GenerateMips(pSRView);
+         }
+      }
+   }   
 }
 
 void GFXD3D11TextureTarget::resolve()

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

@@ -108,6 +108,7 @@ 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
    }

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

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