summaryrefslogtreecommitdiffstatshomepage
path: root/hlsl/downsample.fx
diff options
context:
space:
mode:
author Antonio Giner <estudio@antonioginer.com>2016-03-18 22:41:17 +0100
committer Antonio Giner <estudio@antonioginer.com>2016-03-18 22:41:17 +0100
commite39daaf5bdcf21d64abf239e1133963643dc6df1 (patch)
tree1f1b5f333e84bf056ce82c27bebdbad933f26c0d /hlsl/downsample.fx
parent421656e108e7091ee9e1b14c84f0a3f6efc2ad2e (diff)
parentb79020559ea3617b2d6bd4c92041d314045e2938 (diff)
Merge remote-tracking branch 'refs/remotes/mamedev/master'
Diffstat (limited to 'hlsl/downsample.fx')
-rw-r--r--hlsl/downsample.fx30
1 files changed, 19 insertions, 11 deletions
diff --git a/hlsl/downsample.fx b/hlsl/downsample.fx
index 122172350f9..e89407208be 100644
--- a/hlsl/downsample.fx
+++ b/hlsl/downsample.fx
@@ -53,15 +53,25 @@ struct PS_INPUT
uniform float2 ScreenDims;
uniform float2 TargetDims;
-uniform float2 SourceRect;
+uniform float2 QuadDims;
-uniform bool PrepareVector;
+uniform int BloomLevel;
+
+uniform bool VectorScreen;
+
+static const float2 Coord0Offset = float2(-0.5f, -0.5f);
+static const float2 Coord1Offset = float2( 0.5f, -0.5f);
+static const float2 Coord2Offset = float2(-0.5f, 0.5f);
+static const float2 Coord3Offset = float2( 0.5f, 0.5f);
VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Output = (VS_OUTPUT)0;
- float2 TargetTexelDims = 1.0f / TargetDims;
+ float2 HalfTargetTexelDims = 0.5f / TargetDims;
+ HalfTargetTexelDims *= VectorScreen
+ ? (ScreenDims / QuadDims)
+ : 1.0f;
Output.Position = float4(Input.Position.xyz, 1.0f);
Output.Position.xy /= ScreenDims;
@@ -71,15 +81,13 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Color = Input.Color;
- float2 TexCoord = Input.Position.xy / ScreenDims;
- TexCoord += PrepareVector
- ? 0.5f / TargetDims // half texel offset correction (DX9) - only for vector grpahics
- : 0.0f;
+ float2 TexCoord = Input.TexCoord;
+ TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
- Output.TexCoord01.xy = TexCoord + float2(-0.5f, -0.5f) * TargetTexelDims;
- Output.TexCoord01.zw = TexCoord + float2( 0.5f, -0.5f) * TargetTexelDims;
- Output.TexCoord23.xy = TexCoord + float2(-0.5f, 0.5f) * TargetTexelDims;
- Output.TexCoord23.zw = TexCoord + float2( 0.5f, 0.5f) * TargetTexelDims;
+ Output.TexCoord01.xy = TexCoord + Coord0Offset * HalfTargetTexelDims;
+ Output.TexCoord01.zw = TexCoord + Coord1Offset * HalfTargetTexelDims;
+ Output.TexCoord23.xy = TexCoord + Coord2Offset * HalfTargetTexelDims;
+ Output.TexCoord23.zw = TexCoord + Coord3Offset * HalfTargetTexelDims;
return Output;
}