summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps34
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs18
2 files changed, 36 insertions, 16 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
index dc357d0fa6..ecc593cc78 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
@@ -24,6 +24,23 @@ float4 luminanceps(float4 texcoord : TEXCOORD0) : COLOR
return (tex2D(tex, texcoord.xy).xw * mult.xw + add.xw).xxxy;
};
+float4 luminancepremultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+ float4 luma = tex2D(tex, texcoord.xy).xxxw;
+ luma.rgb *= luma.a;
+ return luma * mult + add;
+};
+
+float4 luminanceunmultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+ float4 luma = tex2D(tex, texcoord.xy).xxxw;
+ if (luma.a > 0.0f)
+ {
+ luma.rgb /= luma.a;
+ }
+ return luma * mult + add;
+};
+
// RGB/A Component Mask Pixel Shader
// Performs a mad operation using the texture's RGBA data with mult.xyzw and add.xyzw.
// Returns data in the form of rgba
@@ -31,3 +48,20 @@ float4 componentmaskps(float4 texcoord : TEXCOORD0) : COLOR
{
return tex2D(tex, texcoord.xy) * mult + add;
};
+
+float4 componentmaskpremultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+ float4 color = tex2D(tex, texcoord.xy);
+ color.rgb *= color.a;
+ return color * mult + add;
+};
+
+float4 componentmaskunmultps(float4 texcoord : TEXCOORD0) : COLOR
+{
+ float4 color = tex2D(tex, texcoord.xy);
+ if (color.a > 0.0f)
+ {
+ color.rgb /= color.a;
+ }
+ return color * mult + add;
+};
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
index 3a36980b93..c68395a69c 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
@@ -11,6 +11,7 @@ struct VS_OUTPUT
};
uniform float4 halfPixelSize : c0;
+uniform float4 texcoordOffset : c1;
// Standard Vertex Shader
// Input 0 is the homogenous position.
@@ -22,22 +23,7 @@ VS_OUTPUT standardvs(in float4 position : POSITION)
VS_OUTPUT Out;
Out.position = position + halfPixelSize;
- Out.texcoord = position * float4(0.5, -0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0);
-
- return Out;
-};
-
-// Flip Y Vertex Shader
-// Input 0 is the homogenous position.
-// Outputs the homogenous position as-is.
-// Outputs a tex coord with (0,1) in the upper-left corner of the screen and (1,0) in the bottom right.
-// C0.XY must be the half-pixel width and height. C0.ZW must be 0.
-VS_OUTPUT flipyvs(in float4 position : POSITION)
-{
- VS_OUTPUT Out;
-
- Out.position = position + halfPixelSize;
- Out.texcoord = position * float4(0.5, 0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0);
+ Out.texcoord = ((position * float4(0.5, -0.5, 1.0, 1.0) + float4(0.5, 0.5, 0, 0)) * float4(texcoordOffset.zw, 1.0, 1.0)) + float4(texcoordOffset.xy, 0, 0);
return Out;
};