diff --git a/src/core/gpu_hw_shadergen.cpp b/src/core/gpu_hw_shadergen.cpp index 118dfe51e..ee1817367 100644 --- a/src/core/gpu_hw_shadergen.cpp +++ b/src/core/gpu_hw_shadergen.cpp @@ -594,7 +594,7 @@ std::string GPU_HW_ShaderGen::GenerateBatchFragmentShader(GPU_HW::BatchRenderMod WriteHeader(ss); DefineMacro(ss, "TRANSPARENCY", transparency != GPU_HW::BatchRenderMode::TransparencyDisabled); DefineMacro(ss, "TRANSPARENCY_ONLY_OPAQUE", transparency == GPU_HW::BatchRenderMode::OnlyOpaque); - DefineMacro(ss, "TRANSPARENCY_ONLY_TRANSPARENCY", transparency == GPU_HW::BatchRenderMode::OnlyTransparent); + DefineMacro(ss, "TRANSPARENCY_ONLY_TRANSPARENT", transparency == GPU_HW::BatchRenderMode::OnlyTransparent); DefineMacro(ss, "TEXTURED", textured); DefineMacro(ss, "PALETTE", actual_texture_mode == GPU::TextureMode::Palette4Bit || @@ -889,18 +889,23 @@ void BilinearSampleFromVRAM(uint4 texpage, float2 coords, float4 uv_limits, } else { - #if TRANSPARENCY_ONLY_TRANSPARENCY + #if TRANSPARENCY_ONLY_TRANSPARENT discard; #endif #if TRANSPARENCY_ONLY_OPAQUE - // We don't output the second color here because it's not used. + // We don't output the second color here because it's not used (except for filtering). o_col0 = float4(color, oalpha); - #elif USE_DUAL_SOURCE - o_col0 = float4(color, oalpha); - o_col1 = float4(0.0, 0.0, 0.0, 1.0 - ialpha); + #if USE_DUAL_SOURCE + o_col1 = float4(0.0, 0.0, 0.0, 1.0 - ialpha); + #endif #else - o_col0 = float4(color, 1.0 - ialpha); + #if USE_DUAL_SOURCE + o_col0 = float4(color, oalpha); + o_col1 = float4(0.0, 0.0, 0.0, 1.0 - ialpha); + #else + o_col0 = float4(color, 1.0 - ialpha); + #endif #endif o_depth = oalpha * v_pos.z;