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))
{
// 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.
// fprintf(stderr, "Tales Of Abyss Crazyness/Urban Chaos channel not supported\n");
throw GSDXRecoverableError();
// So far 2 games hit this code path. Urban Chaos and Tales of Abyss
// UC: will copy depth to green channel
// ToA: will copy depth to alpha channel
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)
{