diff --git a/plugins/GSdx/GSRendererDX.cpp b/plugins/GSdx/GSRendererDX.cpp index 9fb0f4aaf0..c137dd226b 100644 --- a/plugins/GSdx/GSRendererDX.cpp +++ b/plugins/GSdx/GSRendererDX.cpp @@ -252,26 +252,12 @@ void GSRendererDX::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sourc } if(context->TEST.ATE) - { ps_sel.atst = context->TEST.ATST; - - switch(ps_sel.atst) - { - case ATST_LESS: - ps_cb.FogColor_AREF.a = (float)((int)context->TEST.AREF - 1); - break; - case ATST_GREATER: - ps_cb.FogColor_AREF.a = (float)((int)context->TEST.AREF + 1); - break; - default: - ps_cb.FogColor_AREF.a = (float)(int)context->TEST.AREF; - break; - } - } else - { ps_sel.atst = ATST_ALWAYS; - } + + if (context->TEST.ATE && context->TEST.ATST > 1) + ps_cb.FogColor_AREF.a = (float)context->TEST.AREF; if(tex) { @@ -376,19 +362,6 @@ void GSRendererDX::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sourc ps_sel.atst = iatst[ps_sel.atst]; - switch(ps_sel.atst) - { - case ATST_LESS: - ps_cb.FogColor_AREF.a = (float)((int)context->TEST.AREF - 1); - break; - case ATST_GREATER: - ps_cb.FogColor_AREF.a = (float)((int)context->TEST.AREF + 1); - break; - default: - ps_cb.FogColor_AREF.a = (float)(int)context->TEST.AREF; - break; - } - dev->SetupPS(ps_sel, &ps_cb, ps_ssel); bool z = om_dssel.zwe; diff --git a/plugins/GSdx/res/tfx.fx b/plugins/GSdx/res/tfx.fx index 013080a810..cdd9ec4c47 100644 --- a/plugins/GSdx/res/tfx.fx +++ b/plugins/GSdx/res/tfx.fx @@ -519,19 +519,24 @@ void atst(float4 c) else if(PS_ATST == 2) // l { #if PS_SPRITEHACK == 0 - clip(AREF - a); + clip(AREF - a - 0.5f); #endif } else if(PS_ATST == 3) // le { - clip(AREF - a); + clip(AREF - a + 0.5f); } else if(PS_ATST == 4) // e { - clip(0.5f - abs(a - AREF)); } - else if(PS_ATST == 5 || PS_ATST == 6) // ge, g + clip(0.5f - abs(a - AREF)); + } + else if(PS_ATST == 5) // ge { - clip(a - AREF); + clip(a - AREF + 0.5f); + } + else if(PS_ATST == 6) // g + { + clip(a - AREF - 0.5f); } else if(PS_ATST == 7) // ne {