GSdx-d3d11: Plug the TOA and Urban Chaos code in to channel shuffle.

On Tales of Abyss it fixes blur,
On Urban Chaos it fixes fog/transparent layer.

Note: Depth needs to be enabled on d3d11.
No support for d3d9 ofc.
This commit is contained in:
lightningterror 2018-12-13 02:55:10 +01:00
parent a1f4d2ca3f
commit e87a6b9ccd
1 changed files with 14 additions and 4 deletions

View File

@ -203,10 +203,20 @@ void GSRendererDX11::EmulateChannelShuffle(GSTexture** rt, const GSTextureCache:
} }
else if ((tex->m_texture->GetType() == GSTexture::DepthStencil) && !(tex->m_32_bits_fmt)) else if ((tex->m_texture->GetType() == GSTexture::DepthStencil) && !(tex->m_32_bits_fmt))
{ {
// So far 2 games hit this code path. Urban Chaos and Tales of Abyss. // So far 2 games hit this code path. Urban Chaos and Tales of Abyss
// Lacks shader like usual but maybe we can still use it to skip some bad draw calls. // UC: will copy depth to green channel
// fprintf(stderr, "Tales Of Abyss Crazyness/Urban Chaos channel not supported\n"); // ToA: will copy depth to alpha channel
throw GSDXRecoverableError(); if ((m_context->FRAME.FBMSK & 0xFF0000) == 0xFF0000)
{
// Green channel is masked
// fprintf(stderr, "Tales Of Abyss Crazyness (MSB 16b depth to Alpha)\n");
m_ps_sel.tales_of_abyss_hle = 1;
}
else
{
// fprintf(stderr, "Urban Chaos Crazyness (Green extraction)\n");
m_ps_sel.urban_chaos_hle = 1;
}
} }
else if (m_index.tail <= 64 && m_context->CLAMP.WMT == 3) else if (m_index.tail <= 64 && m_context->CLAMP.WMT == 3)
{ {