mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 08:09:26 +01:00
UberShaderPixel: Add support for non-dual source shader blending
This commit is contained in:
parent
c1d87db6fa
commit
80dfefb32e
@ -1194,8 +1194,8 @@ ShaderCode GenPixelShader(APIType api_type, const ShaderHostConfig& host_config,
|
|||||||
"blend_src.rgb = float3(1,1,1);", // ONE
|
"blend_src.rgb = float3(1,1,1);", // ONE
|
||||||
"blend_src.rgb = initial_ocol0.rgb;", // DSTCLR
|
"blend_src.rgb = initial_ocol0.rgb;", // DSTCLR
|
||||||
"blend_src.rgb = float3(1,1,1) - initial_ocol0.rgb;", // INVDSTCLR
|
"blend_src.rgb = float3(1,1,1) - initial_ocol0.rgb;", // INVDSTCLR
|
||||||
"blend_src.rgb = ocol1.aaa;", // SRCALPHA
|
"blend_src.rgb = src_color.aaa;", // SRCALPHA
|
||||||
"blend_src.rgb = float3(1,1,1) - ocol1.aaa;", // INVSRCALPHA
|
"blend_src.rgb = float3(1,1,1) - src_color.aaa;", // INVSRCALPHA
|
||||||
"blend_src.rgb = initial_ocol0.aaa;", // DSTALPHA
|
"blend_src.rgb = initial_ocol0.aaa;", // DSTALPHA
|
||||||
"blend_src.rgb = float3(1,1,1) - initial_ocol0.aaa;", // INVDSTALPHA
|
"blend_src.rgb = float3(1,1,1) - initial_ocol0.aaa;", // INVDSTALPHA
|
||||||
};
|
};
|
||||||
@ -1204,8 +1204,8 @@ ShaderCode GenPixelShader(APIType api_type, const ShaderHostConfig& host_config,
|
|||||||
"blend_src.a = 1.0;", // ONE
|
"blend_src.a = 1.0;", // ONE
|
||||||
"blend_src.a = initial_ocol0.a;", // DSTCLR
|
"blend_src.a = initial_ocol0.a;", // DSTCLR
|
||||||
"blend_src.a = 1.0 - initial_ocol0.a;", // INVDSTCLR
|
"blend_src.a = 1.0 - initial_ocol0.a;", // INVDSTCLR
|
||||||
"blend_src.a = ocol1.a;", // SRCALPHA
|
"blend_src.a = src_color.a;", // SRCALPHA
|
||||||
"blend_src.a = 1.0 - ocol1.a;", // INVSRCALPHA
|
"blend_src.a = 1.0 - src_color.a;", // INVSRCALPHA
|
||||||
"blend_src.a = initial_ocol0.a;", // DSTALPHA
|
"blend_src.a = initial_ocol0.a;", // DSTALPHA
|
||||||
"blend_src.a = 1.0 - initial_ocol0.a;", // INVDSTALPHA
|
"blend_src.a = 1.0 - initial_ocol0.a;", // INVDSTALPHA
|
||||||
};
|
};
|
||||||
@ -1214,8 +1214,8 @@ ShaderCode GenPixelShader(APIType api_type, const ShaderHostConfig& host_config,
|
|||||||
"blend_dst.rgb = float3(1,1,1);", // ONE
|
"blend_dst.rgb = float3(1,1,1);", // ONE
|
||||||
"blend_dst.rgb = ocol0.rgb;", // SRCCLR
|
"blend_dst.rgb = ocol0.rgb;", // SRCCLR
|
||||||
"blend_dst.rgb = float3(1,1,1) - ocol0.rgb;", // INVSRCCLR
|
"blend_dst.rgb = float3(1,1,1) - ocol0.rgb;", // INVSRCCLR
|
||||||
"blend_dst.rgb = ocol1.aaa;", // SRCALHA
|
"blend_dst.rgb = src_color.aaa;", // SRCALHA
|
||||||
"blend_dst.rgb = float3(1,1,1) - ocol1.aaa;", // INVSRCALPHA
|
"blend_dst.rgb = float3(1,1,1) - src_color.aaa;", // INVSRCALPHA
|
||||||
"blend_dst.rgb = initial_ocol0.aaa;", // DSTALPHA
|
"blend_dst.rgb = initial_ocol0.aaa;", // DSTALPHA
|
||||||
"blend_dst.rgb = float3(1,1,1) - initial_ocol0.aaa;", // INVDSTALPHA
|
"blend_dst.rgb = float3(1,1,1) - initial_ocol0.aaa;", // INVDSTALPHA
|
||||||
};
|
};
|
||||||
@ -1224,13 +1224,19 @@ ShaderCode GenPixelShader(APIType api_type, const ShaderHostConfig& host_config,
|
|||||||
"blend_dst.a = 1.0;", // ONE
|
"blend_dst.a = 1.0;", // ONE
|
||||||
"blend_dst.a = ocol0.a;", // SRCCLR
|
"blend_dst.a = ocol0.a;", // SRCCLR
|
||||||
"blend_dst.a = 1.0 - ocol0.a;", // INVSRCCLR
|
"blend_dst.a = 1.0 - ocol0.a;", // INVSRCCLR
|
||||||
"blend_dst.a = ocol1.a;", // SRCALPHA
|
"blend_dst.a = src_color.a;", // SRCALPHA
|
||||||
"blend_dst.a = 1.0 - ocol1.a;", // INVSRCALPHA
|
"blend_dst.a = 1.0 - src_color.a;", // INVSRCALPHA
|
||||||
"blend_dst.a = initial_ocol0.a;", // DSTALPHA
|
"blend_dst.a = initial_ocol0.a;", // DSTALPHA
|
||||||
"blend_dst.a = 1.0 - initial_ocol0.a;", // INVDSTALPHA
|
"blend_dst.a = 1.0 - initial_ocol0.a;", // INVDSTALPHA
|
||||||
};
|
};
|
||||||
|
|
||||||
out.Write(" if (blend_enable) {{\n"
|
out.Write(" if (blend_enable) {{\n"
|
||||||
|
" float4 src_color;\n"
|
||||||
|
" if (bpmem_dstalpha != 0u) {{\n"
|
||||||
|
" src_color = ocol1;\n"
|
||||||
|
" }} else {{\n"
|
||||||
|
" src_color = ocol0;\n"
|
||||||
|
" }}"
|
||||||
" float4 blend_src;\n");
|
" float4 blend_src;\n");
|
||||||
WriteSwitch(out, api_type, "blend_src_factor", blendSrcFactor, 4, true);
|
WriteSwitch(out, api_type, "blend_src_factor", blendSrcFactor, 4, true);
|
||||||
WriteSwitch(out, api_type, "blend_src_factor_alpha", blendSrcFactorAlpha, 4, true);
|
WriteSwitch(out, api_type, "blend_src_factor_alpha", blendSrcFactorAlpha, 4, true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user