summaryrefslogtreecommitdiffstatshomepage
path: root/hlsl
diff options
context:
space:
mode:
Diffstat (limited to 'hlsl')
-rw-r--r--hlsl/bloom.fx49
-rw-r--r--hlsl/yiq_decode.fx19
-rw-r--r--hlsl/yiq_encode.fx12
3 files changed, 31 insertions, 49 deletions
diff --git a/hlsl/bloom.fx b/hlsl/bloom.fx
index 83f87a2961d..dbdb13868b3 100644
--- a/hlsl/bloom.fx
+++ b/hlsl/bloom.fx
@@ -143,12 +143,7 @@ struct VS_OUTPUT
{
float4 Position : POSITION;
float4 Color : COLOR0;
- float4 TexCoord01 : TEXCOORD0;
- float4 TexCoord23 : TEXCOORD1;
- float4 TexCoord45 : TEXCOORD2;
- float4 TexCoord67 : TEXCOORD3;
- float4 TexCoord89 : TEXCOORD4;
- float2 TexCoordA : TEXCOORD5;
+ float2 TexCoord : TEXCOORD0;
};
struct VS_INPUT
@@ -162,12 +157,7 @@ struct VS_INPUT
struct PS_INPUT
{
float4 Color : COLOR0;
- float4 TexCoord01 : TEXCOORD0;
- float4 TexCoord23 : TEXCOORD1;
- float4 TexCoord45 : TEXCOORD2;
- float4 TexCoord67 : TEXCOORD3;
- float4 TexCoord89 : TEXCOORD4;
- float2 TexCoordA : TEXCOORD5;
+ float2 TexCoord : TEXCOORD0;
};
//-----------------------------------------------------------------------------
@@ -188,18 +178,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy *= float2(2.0f, 2.0f);
Output.Color = Input.Color;
float2 inversePixel = 1.0f / TargetSize;
- float2 TexCoord = Input.Position.xy * inversePixel + float2(0.5f, 0.5f) * inversePixel;
- Output.TexCoord01.xy = TexCoord - inversePixel;
- Output.TexCoord01.zw = (((TexCoord - inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.5f;
- Output.TexCoord23.xy = (((TexCoord - inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.25f;
- Output.TexCoord23.zw = (((TexCoord - inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.125f;
- Output.TexCoord45.xy = (((TexCoord - inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.0625f;
- Output.TexCoord45.zw = (((TexCoord - inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.03125f;
- Output.TexCoord67.xy = (((TexCoord - inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.015625f;
- Output.TexCoord67.zw = (((TexCoord + inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.0078125f;
- Output.TexCoord89.xy = (((TexCoord + inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.00390625f;
- Output.TexCoord89.zw = (((TexCoord + inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.001953125f;
- Output.TexCoordA = (((TexCoord + inversePixel) - 0.5f) * 1.00f + 0.5f) * 1.0f;//0.0009765625f;
+ Output.TexCoord = Input.Position.xy * inversePixel - float2(0.5f, 0.5f) * inversePixel;
return Output;
}
@@ -214,17 +193,17 @@ uniform float3 Level89AWeight;
float4 ps_main(PS_INPUT Input) : COLOR
{
- float3 texel0 = tex2D(DiffuseSampler0, Input.TexCoord01.xy).rgb;
- float3 texel1 = tex2D(DiffuseSampler1, Input.TexCoord01.zw).rgb;
- float3 texel2 = tex2D(DiffuseSampler2, Input.TexCoord23.xy).rgb;
- float3 texel3 = tex2D(DiffuseSampler3, Input.TexCoord23.zw).rgb;
- float3 texel4 = tex2D(DiffuseSampler4, Input.TexCoord45.xy).rgb;
- float3 texel5 = tex2D(DiffuseSampler5, Input.TexCoord45.zw).rgb;
- float3 texel6 = tex2D(DiffuseSampler6, Input.TexCoord67.xy).rgb;
- float3 texel7 = tex2D(DiffuseSampler7, Input.TexCoord67.zw).rgb;
- float3 texel8 = tex2D(DiffuseSampler8, Input.TexCoord89.xy).rgb;
- float3 texel9 = tex2D(DiffuseSampler9, Input.TexCoord89.zw).rgb;
- float3 texelA = tex2D(DiffuseSamplerA, Input.TexCoordA).rgb;
+ float3 texel0 = tex2D(DiffuseSampler0, Input.TexCoord).rgb;
+ float3 texel1 = tex2D(DiffuseSampler1, Input.TexCoord).rgb;
+ float3 texel2 = tex2D(DiffuseSampler2, Input.TexCoord).rgb;
+ float3 texel3 = tex2D(DiffuseSampler3, Input.TexCoord).rgb;
+ float3 texel4 = tex2D(DiffuseSampler4, Input.TexCoord).rgb;
+ float3 texel5 = tex2D(DiffuseSampler5, Input.TexCoord).rgb;
+ float3 texel6 = tex2D(DiffuseSampler6, Input.TexCoord).rgb;
+ float3 texel7 = tex2D(DiffuseSampler7, Input.TexCoord).rgb;
+ float3 texel8 = tex2D(DiffuseSampler8, Input.TexCoord).rgb;
+ float3 texel9 = tex2D(DiffuseSampler9, Input.TexCoord).rgb;
+ float3 texelA = tex2D(DiffuseSamplerA, Input.TexCoord).rgb;
texel0 = texel0 * Level0123Weight.x;
texel1 = texel1 * Level0123Weight.y;
diff --git a/hlsl/yiq_decode.fx b/hlsl/yiq_decode.fx
index afbdb98e528..c1caa631f14 100644
--- a/hlsl/yiq_decode.fx
+++ b/hlsl/yiq_decode.fx
@@ -58,7 +58,8 @@ struct PS_INPUT
uniform float TargetWidth;
uniform float TargetHeight;
-uniform float2 RawDims;
+uniform float RawWidth;
+uniform float RawHeight;
uniform float WidthRatio;
uniform float HeightRatio;
@@ -75,7 +76,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.y -= 0.5f;
Output.Position *= float4(2.0f, 2.0f, 1.0f, 1.0f);
Output.Coord0.xy = Input.TexCoord;
- Output.Coord0.zw = float2(1.0f / RawDims.x, 0.0f);
+ Output.Coord0.zw = float2(1.0f / RawWidth, 0.0f);
return Output;
}
@@ -98,6 +99,8 @@ uniform float QFreqResponse = 0.6f;
float4 ps_main(PS_INPUT Input) : COLOR
{
+ float2 RawDims = float2(RawWidth, RawHeight);
+
float4 BaseTexel = tex2D(DiffuseSampler, Input.Coord0.xy + 0.5f / RawDims);
// YIQ convolution: N coefficients each
@@ -107,11 +110,11 @@ float4 ps_main(PS_INPUT Input) : COLOR
float MaxC = 2.1183f;
float MinC = -1.1183f;
float CRange = MaxC - MinC;
- float Fc_y1 = (CCValue - NotchHalfWidth) * ScanTime / (RawDims.x * 4.0f / WidthRatio);
- float Fc_y2 = (CCValue + NotchHalfWidth) * ScanTime / (RawDims.x * 4.0f / WidthRatio);
- float Fc_y3 = YFreqResponse * ScanTime / (RawDims.x * 4.0f / WidthRatio);
- float Fc_i = IFreqResponse * ScanTime / (RawDims.x * 4.0f / WidthRatio);
- float Fc_q = QFreqResponse * ScanTime / (RawDims.x * 4.0f / WidthRatio);
+ float Fc_y1 = (CCValue - NotchHalfWidth) * ScanTime / (RawWidth * 4.0f / WidthRatio);
+ float Fc_y2 = (CCValue + NotchHalfWidth) * ScanTime / (RawWidth * 4.0f / WidthRatio);
+ float Fc_y3 = YFreqResponse * ScanTime / (RawWidth * 4.0f / WidthRatio);
+ float Fc_i = IFreqResponse * ScanTime / (RawWidth * 4.0f / WidthRatio);
+ float Fc_q = QFreqResponse * ScanTime / (RawWidth * 4.0f / WidthRatio);
float PI = 3.1415926535897932384626433832795;
float PI2 = 2.0f * PI;
float PI2Length = PI2 / 82.0f;
@@ -124,7 +127,7 @@ float4 ps_main(PS_INPUT Input) : COLOR
float4 CoordY = Input.Coord0.y;
float2 TexCoord = float2(CoordX.r, CoordY.r);
float4 C = tex2D(CompositeSampler, TexCoord + float2(0.625f, 0.4f) / RawDims) * CRange + MinC;
- float4 WT = W * (CoordX * WidthRatio + AValue * CoordY * 2.0f * (RawDims.y / HeightRatio) + BValue) + OValue;
+ float4 WT = W * (CoordX * WidthRatio + AValue * CoordY * 2.0f * (RawHeight / HeightRatio) + BValue) + OValue;
float4 SincYIn1 = PI2 * Fc_y1 * n4;
float4 SincYIn2 = PI2 * Fc_y2 * n4;
diff --git a/hlsl/yiq_encode.fx b/hlsl/yiq_encode.fx
index 8793bfbb633..b08f6317ccc 100644
--- a/hlsl/yiq_encode.fx
+++ b/hlsl/yiq_encode.fx
@@ -55,7 +55,8 @@ uniform float TargetHeight;
uniform float2 RawDims;
-uniform float2 SizeRatio;
+uniform float WidthRatio;
+uniform float HeightRatio;
VS_OUTPUT vs_main(VS_INPUT Input)
{
@@ -100,13 +101,12 @@ float4 ps_main(PS_INPUT Input) : COLOR
float3 Texel2 = tex2D(DiffuseSampler, Coord2 + TexelOffset).rgb;
float3 Texel3 = tex2D(DiffuseSampler, Coord3 + TexelOffset).rgb;
- float2 InvSize = 1.0f / SizeRatio;
float PI = 3.1415926535897932384626433832795;
float W = PI * 2.0f * CCValue * ScanTime;
- float T0 = Coord0.x * InvSize.x + AValue * Coord0.y * 2.0f * (RawDims.y / InvSize.y) + BValue;
- float T1 = Coord1.x * InvSize.x + AValue * Coord1.y * 2.0f * (RawDims.y / InvSize.y) + BValue;
- float T2 = Coord2.x * InvSize.x + AValue * Coord2.y * 2.0f * (RawDims.y / InvSize.y) + BValue;
- float T3 = Coord3.x * InvSize.x + AValue * Coord3.y * 2.0f * (RawDims.y / InvSize.y) + BValue;
+ float T0 = Coord0.x * WidthRatio + AValue * Coord0.y * 2.0f * (RawDims.y / HeightRatio) + BValue;
+ float T1 = Coord1.x * WidthRatio + AValue * Coord1.y * 2.0f * (RawDims.y / HeightRatio) + BValue;
+ float T2 = Coord2.x * WidthRatio + AValue * Coord2.y * 2.0f * (RawDims.y / HeightRatio) + BValue;
+ float T3 = Coord3.x * WidthRatio + AValue * Coord3.y * 2.0f * (RawDims.y / HeightRatio) + BValue;
float Y0 = dot(Texel0, float3(0.299f, 0.587f, 0.114f));
float I0 = dot(Texel0, float3(0.595716f, -0.274453f, -0.321263f));