gsdx-ogl: disable FF blend when blend is done in shader

This commit is contained in:
Gregory Hainaut 2015-05-08 19:31:49 +02:00
parent 380e420cdd
commit bc5de8df6b
1 changed files with 10 additions and 9 deletions

View File

@ -103,23 +103,24 @@ GSBlendStateOGL* GSDeviceOGL::CreateBlend(OMBlendSelector bsel, uint8 afix)
{ {
int i = ((bsel.a * 3 + bsel.b) * 3 + bsel.c) * 3 + bsel.d; int i = ((bsel.a * 3 + bsel.b) * 3 + bsel.c) * 3 + bsel.d;
bs->EnableBlend();
bs->SetRGB(m_blendMapD3D9[i].op, m_blendMapD3D9[i].src, m_blendMapD3D9[i].dst); bs->SetRGB(m_blendMapD3D9[i].op, m_blendMapD3D9[i].src, m_blendMapD3D9[i].dst);
bs->SetBogus(m_blendMapD3D9[i].bogus); bs->SetBogus(m_blendMapD3D9[i].bogus);
if(m_blendMapD3D9[i].bogus == 1) if (m_blendMapD3D9[i].bogus > 2) {
{ if (!theApp.GetConfig("accurate_blend", 0)) {
if (bsel.a == 0) bs->EnableBlend();
bs->SetRGB(m_blendMapD3D9[i].op, GL_ONE, m_blendMapD3D9[i].dst); if (bsel.a == 0)
else bs->SetRGB(m_blendMapD3D9[i].op, GL_ONE, m_blendMapD3D9[i].dst);
bs->SetRGB(m_blendMapD3D9[i].op, m_blendMapD3D9[i].src, GL_ONE); else
bs->SetRGB(m_blendMapD3D9[i].op, m_blendMapD3D9[i].src, GL_ONE);
}
const string afixstr = format("%d >> 7", afix); const string afixstr = format("%d >> 7", afix);
const char *col[3] = {"Cs", "Cd", "0"}; const char *col[3] = {"Cs", "Cd", "0"};
const char *alpha[3] = {"As", "Ad", afixstr.c_str()}; const char *alpha[3] = {"As", "Ad", afixstr.c_str()};
// FIXME, need to investigate OGL capabilities. Maybe for OGL5 ;)
fprintf(stderr, "Impossible blend for D3D: (%s - %s) * %s + %s\n", col[bsel.a], col[bsel.b], alpha[bsel.c], col[bsel.d]); fprintf(stderr, "Impossible blend for D3D: (%s - %s) * %s + %s\n", col[bsel.a], col[bsel.b], alpha[bsel.c], col[bsel.d]);
} else {
bs->EnableBlend();
} }
// Not very good but I don't wanna write another 81 row table // Not very good but I don't wanna write another 81 row table