summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/PixelShaderGen.cpp
diff options
context:
space:
mode:
authorOatmealDome <julian@oatmealdome.me>2022-01-06 04:15:07 -0500
committerOatmealDome <julian@oatmealdome.me>2022-04-19 10:55:26 -0400
commitc1d87db6fa12cdc95fa5c7775faa49ea24743729 (patch)
treeff31dfd9e4731c52d0ccfef4dea2fbd8173b22ea /Source/Core/VideoCommon/PixelShaderGen.cpp
parentbad0283ff7fdd389fae76144c57953033167a7b1 (diff)
PixelShaderGen: Add support for non-dual source shader blending
Diffstat (limited to 'Source/Core/VideoCommon/PixelShaderGen.cpp')
-rw-r--r--Source/Core/VideoCommon/PixelShaderGen.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp
index 837001c118..4d0996e814 100644
--- a/Source/Core/VideoCommon/PixelShaderGen.cpp
+++ b/Source/Core/VideoCommon/PixelShaderGen.cpp
@@ -2018,8 +2018,8 @@ static void WriteBlend(ShaderCode& out, const pixel_shader_uid_data* uid_data)
"float3(1,1,1);", // ONE
"initial_ocol0.rgb;", // DSTCLR
"float3(1,1,1) - initial_ocol0.rgb;", // INVDSTCLR
- "ocol1.aaa;", // SRCALPHA
- "float3(1,1,1) - ocol1.aaa;", // INVSRCALPHA
+ "src_color.aaa;", // SRCALPHA
+ "float3(1,1,1) - src_color.aaa;", // INVSRCALPHA
"initial_ocol0.aaa;", // DSTALPHA
"float3(1,1,1) - initial_ocol0.aaa;", // INVDSTALPHA
};
@@ -2028,8 +2028,8 @@ static void WriteBlend(ShaderCode& out, const pixel_shader_uid_data* uid_data)
"1.0;", // ONE
"initial_ocol0.a;", // DSTCLR
"1.0 - initial_ocol0.a;", // INVDSTCLR
- "ocol1.a;", // SRCALPHA
- "1.0 - ocol1.a;", // INVSRCALPHA
+ "src_color.a;", // SRCALPHA
+ "1.0 - src_color.a;", // INVSRCALPHA
"initial_ocol0.a;", // DSTALPHA
"1.0 - initial_ocol0.a;", // INVDSTALPHA
};
@@ -2038,8 +2038,8 @@ static void WriteBlend(ShaderCode& out, const pixel_shader_uid_data* uid_data)
"float3(1,1,1);", // ONE
"ocol0.rgb;", // SRCCLR
"float3(1,1,1) - ocol0.rgb;", // INVSRCCLR
- "ocol1.aaa;", // SRCALHA
- "float3(1,1,1) - ocol1.aaa;", // INVSRCALPHA
+ "src_color.aaa;", // SRCALHA
+ "float3(1,1,1) - src_color.aaa;", // INVSRCALPHA
"initial_ocol0.aaa;", // DSTALPHA
"float3(1,1,1) - initial_ocol0.aaa;", // INVDSTALPHA
};
@@ -2048,12 +2048,14 @@ static void WriteBlend(ShaderCode& out, const pixel_shader_uid_data* uid_data)
"1.0;", // ONE
"ocol0.a;", // SRCCLR
"1.0 - ocol0.a;", // INVSRCCLR
- "ocol1.a;", // SRCALPHA
- "1.0 - ocol1.a;", // INVSRCALPHA
+ "src_color.a;", // SRCALPHA
+ "1.0 - src_color.a;", // INVSRCALPHA
"initial_ocol0.a;", // DSTALPHA
"1.0 - initial_ocol0.a;", // INVDSTALPHA
};
- out.Write("\tfloat4 blend_src;\n");
+ out.Write("\tfloat4 src_color = {};\n"
+ "\tfloat4 blend_src;",
+ uid_data->useDstAlpha ? "ocol1" : "ocol0");
out.Write("\tblend_src.rgb = {}\n", blend_src_factor[uid_data->blend_src_factor]);
out.Write("\tblend_src.a = {}\n", blend_src_factor_alpha[uid_data->blend_src_factor_alpha]);
out.Write("\tfloat4 blend_dst;\n");