diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index e9f852b7dd..cb494c2411 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -4668,7 +4668,6 @@ void GSRendererHW::EmulateBlending(int rt_alpha_min, int rt_alpha_max, const boo blend.op = GSDevice::OP_ADD; // Render pass 2: Add or subtract result of render pass 1(Cd) from Cs. m_conf.blend_second_pass.enable = true; - m_conf.blend_second_pass.blend_hw = 0; m_conf.blend_second_pass.dither = dither * GSConfig.Dithering; m_conf.blend_second_pass.blend = {true, blend_second_pass.src, GSDevice::CONST_ONE, blend_second_pass.op, GSDevice::CONST_ONE, GSDevice::CONST_ZERO, false, 0}; } @@ -4743,8 +4742,12 @@ void GSRendererHW::EmulateBlending(int rt_alpha_min, int rt_alpha_max, const boo m_conf.ps.blend_hw = static_cast(HWBlendType::SRC_DOUBLE); } - if (m_conf.ps.blend_c == 2 && (m_conf.ps.blend_hw == 2 || m_conf.ps.blend_hw == 4 || m_conf.blend_second_pass.blend_hw == 2)) + if (m_conf.ps.blend_c == 2 && (m_conf.ps.blend_hw == static_cast(HWBlendType::SRC_ALPHA_DST_FACTOR) + || m_conf.ps.blend_hw == static_cast(HWBlendType::SRC_HALF_ONE_DST_FACTOR) + || m_conf.blend_second_pass.blend_hw == static_cast(HWBlendType::SRC_ALPHA_DST_FACTOR))) + { m_conf.cb_ps.TA_MaxDepth_Af.a = static_cast(AFIX) / 128.0f; + } const GSDevice::BlendFactor src_factor_alpha = m_conf.blend_second_pass.enable ? GSDevice::CONST_ZERO : GSDevice::CONST_ONE; const GSDevice::BlendFactor dst_factor_alpha = m_conf.blend_second_pass.enable ? GSDevice::CONST_ONE : GSDevice::CONST_ZERO;