summaryrefslogtreecommitdiffstatshomepage
path: root/hlsl
diff options
context:
space:
mode:
Diffstat (limited to 'hlsl')
-rw-r--r--hlsl/bloom.fx2
-rw-r--r--hlsl/deconverge.fx35
-rw-r--r--hlsl/distortion.fx97
-rw-r--r--hlsl/downsample.fx7
-rw-r--r--hlsl/focus.fx14
-rw-r--r--hlsl/phosphor.fx2
-rw-r--r--hlsl/post.fx99
-rw-r--r--hlsl/prescale.fx2
-rw-r--r--hlsl/primary.fx8
-rw-r--r--hlsl/vector.fx12
10 files changed, 133 insertions, 145 deletions
diff --git a/hlsl/bloom.fx b/hlsl/bloom.fx
index 47cc04c47ed..a338ff6211e 100644
--- a/hlsl/bloom.fx
+++ b/hlsl/bloom.fx
@@ -226,7 +226,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Color = Input.Color;
- float2 TexCoord = Input.Position.xy / ScreenDims;
+ float2 TexCoord = Input.TexCoord;
TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.TexCoord0 = TexCoord.xy; // + (0.5f / Level0Size);
diff --git a/hlsl/deconverge.fx b/hlsl/deconverge.fx
index df5bc2e6b49..f1cfa8fb686 100644
--- a/hlsl/deconverge.fx
+++ b/hlsl/deconverge.fx
@@ -52,12 +52,7 @@ struct PS_INPUT
//-----------------------------------------------------------------------------
uniform float2 ScreenDims;
-uniform float2 SourceDims;
-uniform float2 SourceRect;
uniform float2 TargetDims;
-uniform float2 QuadDims;
-
-uniform bool SwapXY = false;
uniform float3 ConvergeX = float3(0.0f, 0.0f, 0.0f);
uniform float3 ConvergeY = float3(0.0f, 0.0f, 0.0f);
@@ -72,41 +67,35 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy /= ScreenDims;
Output.Position.y = 1.0f - Output.Position.y; // flip y
Output.Position.xy -= 0.5f; // center
- Output.Position.xy *= 2.0f; // toom
+ Output.Position.xy *= 2.0f; // zoom
- float2 TexCoord = Input.Position.xy / ScreenDims;
+ float2 TexCoord = Input.TexCoord;
TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
- // we have to handle the swap of the coordinates ourself, because we are using screen not texture coordinates
- float3 convergeX = SwapXY ? ConvergeY : ConvergeX;
- float3 convergeY = SwapXY ? ConvergeX : ConvergeY;
- float3 radialConvergeX = SwapXY ? RadialConvergeY : RadialConvergeX;
- float3 radialConvergeY = SwapXY ? RadialConvergeX : RadialConvergeY;
-
// imaginary texel dimensions independed from screen dimension, but ratio
- float2 TexelDims = (1.0f / 1024) * (QuadDims / ScreenDims);
+ float2 TexelDims = (1.0f / 1024);
Output.TexCoordX = TexCoord.xxx;
Output.TexCoordY = TexCoord.yyy;
// center coordinates
- Output.TexCoordX -= 0.5f * SourceRect.xxx;
- Output.TexCoordY -= 0.5f * SourceRect.yyy;
+ Output.TexCoordX -= 0.5f;
+ Output.TexCoordY -= 0.5f;
// radial converge offset to "translate" the most outer pixel as thay would be translated by the linar converge with the same amount
- float2 radialConvergeOffset = 2.0f / SourceRect;
+ float2 radialConvergeOffset = 2.0f;
// radial converge
- Output.TexCoordX *= 1.0f + radialConvergeX * TexelDims.xxx * radialConvergeOffset.xxx;
- Output.TexCoordY *= 1.0f + radialConvergeY * TexelDims.yyy * radialConvergeOffset.yyy;
+ Output.TexCoordX *= 1.0f + RadialConvergeX * TexelDims.xxx * radialConvergeOffset.xxx;
+ Output.TexCoordY *= 1.0f + RadialConvergeY * TexelDims.yyy * radialConvergeOffset.yyy;
// un-center coordinates
- Output.TexCoordX += 0.5f * SourceRect.xxx;
- Output.TexCoordY += 0.5f * SourceRect.yyy;
+ Output.TexCoordX += 0.5f;
+ Output.TexCoordY += 0.5f;
// linear converge
- Output.TexCoordX += convergeX * TexelDims.xxx;
- Output.TexCoordY += convergeY * TexelDims.yyy;
+ Output.TexCoordX += ConvergeX * TexelDims.xxx;
+ Output.TexCoordY += ConvergeY * TexelDims.yyy;
Output.Color = Input.Color;
diff --git a/hlsl/distortion.fx b/hlsl/distortion.fx
index 6fd27a99795..0040c76d3b0 100644
--- a/hlsl/distortion.fx
+++ b/hlsl/distortion.fx
@@ -89,6 +89,8 @@ uniform float2 ScreenDims; // size of the window or fullscreen
uniform float2 TargetDims; // size of the target surface
uniform float2 QuadDims; // size of the screen quad
+uniform bool VectorScreen;
+
VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Output = (VS_OUTPUT)0;
@@ -101,7 +103,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Color = Input.Color;
- Output.TexCoord = Input.Position.xy / ScreenDims;
+ Output.TexCoord = Input.TexCoord;
Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
return Output;
@@ -117,28 +119,9 @@ uniform float SmoothBorderAmount = 0.0f;
uniform float VignettingAmount = 0.0f;
uniform float ReflectionAmount = 0.0f;
+uniform bool SwapXY = false;
uniform int RotationType = 0; // 0 = 0°, 1 = 90°, 2 = 180°, 3 = 270°
-float2 GetScreenQuadRatio()
-{
- float ScreenRatio = ScreenDims.x / ScreenDims.y;
- float QuadRatio = QuadDims.x / QuadDims.y;
- float ScreenQuadRatio = QuadRatio / ScreenRatio;
-
- return ScreenQuadRatio > 1.0f
- ? float2(1.0, 1.0f / ScreenQuadRatio)
- : float2(ScreenQuadRatio, 1.0);
-}
-
-float2 GetQuadRatio()
-{
- float QuadRatio = QuadDims.x / QuadDims.y;
-
- return QuadRatio > 1.0f
- ? float2 (1.0f, 1.0f / QuadRatio)
- : float2 (QuadRatio, 1.0f);
-}
-
float GetNoiseFactor(float3 n, float random)
{
// smaller n become more noisy
@@ -147,7 +130,7 @@ float GetNoiseFactor(float3 n, float random)
float GetVignetteFactor(float2 coord, float amount)
{
- float2 VignetteCoord = coord / (QuadDims / ScreenDims);
+ float2 VignetteCoord = coord;
float VignetteLength = length(VignetteCoord);
float VignetteBlur = (amount * 0.75f) + 0.25;
@@ -161,21 +144,42 @@ float GetVignetteFactor(float2 coord, float amount)
float GetSpotAddend(float2 coord, float amount)
{
- float2 QuadRatio = GetQuadRatio();
-
- // upper right quadrant
- float2 spotOffset =
- RotationType == 1 // 90°
- ? float2(-0.25f, -0.25f)
- : RotationType == 2 // 180°
- ? float2(0.25f, -0.25f)
- : RotationType == 3 // 270°
- ? float2(0.25f, 0.25f)
- : float2(-0.25f, 0.25f);
-
- float2 SpotCoord = coord / (QuadDims / ScreenDims);
- SpotCoord += spotOffset * QuadRatio;
- SpotCoord *= QuadRatio;
+ float2 SpotCoord = coord;
+
+ // hack for vector screen
+ if (VectorScreen)
+ {
+ // upper right quadrant
+ float2 spotOffset =
+ RotationType == 1 // 90°
+ ? float2(-0.25f, -0.25f)
+ : RotationType == 2 // 180°
+ ? float2(0.25f, -0.25f)
+ : RotationType == 3 // 270° else 0°
+ ? float2(0.25f, 0.25f)
+ : float2(-0.25f, 0.25f);
+
+ // normalized screen canvas ratio
+ float2 CanvasRatio = SwapXY
+ ? float2(QuadDims.x / QuadDims.y, 1.0f)
+ : float2(1.0f, QuadDims.y / QuadDims.x);
+
+ SpotCoord += spotOffset;
+ SpotCoord *= CanvasRatio;
+ }
+ else
+ {
+ // upper right quadrant
+ float2 spotOffset = float2(-0.25f, 0.25f);
+
+ // normalized screen canvas ratio
+ float2 CanvasRatio = SwapXY
+ ? float2(1.0f, QuadDims.x / QuadDims.y)
+ : float2(1.0f, QuadDims.y / QuadDims.x);
+
+ SpotCoord += spotOffset;
+ SpotCoord *= CanvasRatio;
+ }
float SpotBlur = amount;
@@ -193,17 +197,20 @@ float GetSpotAddend(float2 coord, float amount)
float GetRoundCornerFactor(float2 coord, float radiusAmount, float smoothAmount)
{
- float2 ScreenQuadRatio = GetScreenQuadRatio();
-
// reduce smooth amount down to radius amount
smoothAmount = min(smoothAmount, radiusAmount);
- float range = min(QuadDims.x, QuadDims.y) * 0.5;
+ float2 quadDims = QuadDims;
+ quadDims = !VectorScreen && SwapXY
+ ? quadDims.yx
+ : quadDims.xy;
+
+ float range = min(quadDims.x, quadDims.y) * 0.5;
float radius = range * max(radiusAmount, 0.0025f);
float smooth = 1.0 / (range * max(smoothAmount, 0.0025f));
// compute box
- float box = roundBox(ScreenDims * (coord * 2.0f), ScreenDims * ScreenQuadRatio, radius);
+ float box = roundBox(quadDims * (coord * 2.0f), quadDims, radius);
// apply smooth
box *= smooth;
@@ -240,20 +247,12 @@ float2 GetDistortedCoords(float2 centerCoord, float amount)
float2 GetCoords(float2 coord, float distortionAmount)
{
- float2 ScreenQuadRatio = GetScreenQuadRatio();
-
// center coordinates
coord -= 0.5f;
- // apply ratio difference between screen and quad
- coord /= ScreenQuadRatio;
-
// distort coordinates
coord = GetDistortedCoords(coord, distortionAmount);
- // revert ratio difference between screen and quad
- coord *= ScreenQuadRatio;
-
// un-center coordinates
coord += 0.5f;
diff --git a/hlsl/downsample.fx b/hlsl/downsample.fx
index fad2ef8341f..e89407208be 100644
--- a/hlsl/downsample.fx
+++ b/hlsl/downsample.fx
@@ -53,8 +53,6 @@ struct PS_INPUT
uniform float2 ScreenDims;
uniform float2 TargetDims;
-uniform float2 SourceDims;
-uniform float2 SourceRect;
uniform float2 QuadDims;
uniform int BloomLevel;
@@ -71,6 +69,9 @@ VS_OUTPUT vs_main(VS_INPUT Input)
VS_OUTPUT Output = (VS_OUTPUT)0;
float2 HalfTargetTexelDims = 0.5f / TargetDims;
+ HalfTargetTexelDims *= VectorScreen
+ ? (ScreenDims / QuadDims)
+ : 1.0f;
Output.Position = float4(Input.Position.xyz, 1.0f);
Output.Position.xy /= ScreenDims;
@@ -80,7 +81,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Color = Input.Color;
- float2 TexCoord = Input.Position.xy / ScreenDims;
+ float2 TexCoord = Input.TexCoord;
TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.TexCoord01.xy = TexCoord + Coord0Offset * HalfTargetTexelDims;
diff --git a/hlsl/focus.fx b/hlsl/focus.fx
index 1e2e668911b..138ad0eea6d 100644
--- a/hlsl/focus.fx
+++ b/hlsl/focus.fx
@@ -51,7 +51,6 @@ struct PS_INPUT
uniform float2 ScreenDims;
uniform float2 TargetDims;
-uniform float2 QuadDims;
VS_OUTPUT vs_main(VS_INPUT Input)
{
@@ -63,11 +62,11 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy -= 0.5f; // center
Output.Position.xy *= 2.0f; // zoom
- float2 TexCoord = Input.Position.xy / ScreenDims;
+ float2 TexCoord = Input.TexCoord;
TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.TexCoord = TexCoord;
-
+
Output.Color = Input.Color;
return Output;
@@ -79,8 +78,6 @@ VS_OUTPUT vs_main(VS_INPUT Input)
uniform float2 Defocus = float2(0.0f, 0.0f);
-uniform bool SwapXY = false;
-
static const float2 Coord1Offset = float2( 0.75f, 0.50f);
static const float2 Coord2Offset = float2( 0.25f, 1.00f);
static const float2 Coord3Offset = float2(-0.50f, 0.75f);
@@ -92,13 +89,10 @@ static const float2 Coord8Offset = float2( 1.00f, -0.25f);
float4 ps_main(PS_INPUT Input) : COLOR
{
- // we have to handle the swap of the coordinates ourself, because we are using screen not texture coordinates
- float2 defocus = SwapXY ? Defocus.yx : Defocus.xy;
-
// imaginary texel dimensions independed from screen dimension, but ratio
- float2 TexelDims = (1.0f / 1024) * (QuadDims / ScreenDims);
+ float2 TexelDims = (1.0f / 1024);
- float2 DefocusTexelDims = defocus * TexelDims;
+ float2 DefocusTexelDims = Defocus * TexelDims;
float4 d = tex2D(DiffuseSampler, Input.TexCoord);
float3 d1 = tex2D(DiffuseSampler, Input.TexCoord + Coord1Offset * DefocusTexelDims).rgb;
diff --git a/hlsl/phosphor.fx b/hlsl/phosphor.fx
index 97defea0205..7d665b44749 100644
--- a/hlsl/phosphor.fx
+++ b/hlsl/phosphor.fx
@@ -79,7 +79,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy -= 0.5f; // center
Output.Position.xy *= 2.0f; // zoom
- Output.TexCoord = Input.Position.xy / ScreenDims;
+ Output.TexCoord = Input.TexCoord;
Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.PrevCoord = Output.TexCoord;
diff --git a/hlsl/post.fx b/hlsl/post.fx
index 01d83d435ff..ce8ccd0c813 100644
--- a/hlsl/post.fx
+++ b/hlsl/post.fx
@@ -73,10 +73,10 @@ static const float PHI = 1.618034f;
// Scanline & Shadowmask Vertex Shader
//-----------------------------------------------------------------------------
-uniform float2 ScreenDims; // size of the window or fullscreen
-uniform float2 SourceDims; // size of the texture in power-of-two size
-uniform float2 SourceRect; // size of the uv rectangle
-uniform float2 TargetDims; // size of the target surface
+uniform float2 ScreenDims;
+uniform float2 SourceDims;
+uniform float2 TargetDims;
+uniform float2 QuadDims;
uniform float2 ShadowDims = float2(32.0f, 32.0f); // size of the shadow texture (extended to power-of-two size)
uniform float2 ShadowUVOffset = float2(0.0f, 0.0f);
@@ -96,16 +96,16 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy -= 0.5f; // center
Output.Position.xy *= 2.0f; // zoom
- Output.TexCoord = Input.Position.xy / ScreenDims;
-
+ Output.TexCoord = Input.TexCoord;
Output.TexCoord += PrepareBloom
? 0.0f / TargetDims // use half texel offset (DX9) to do the blur for first bloom layer
: 0.5f / TargetDims; // fix half texel offset correction (DX9)
- Output.SourceCoord = Input.TexCoord;
-
Output.ScreenCoord = Input.Position.xy / ScreenDims;
+ Output.SourceCoord = Input.TexCoord;
+ Output.SourceCoord += 0.5f / TargetDims;
+
Output.Color = Input.Color;
return Output;
@@ -157,20 +157,55 @@ float2 GetAdjustedCoords(float2 coord, float2 centerOffset)
return coord;
}
-float4 ps_main(PS_INPUT Input) : COLOR
+// vector screen has the same quad texture coordinates for every screen orientation, raster screen differs
+float2 GetShadowCoord(float2 QuadCoord, float2 SourceCoord)
{
- float2 ScreenTexelDims = 1.0f / ScreenDims;
- float2 SourceTexelDims = 1.0f / SourceDims;
+ float2 QuadTexel = 1.0f / QuadDims;
+ float2 SourceTexel = 1.0f / SourceDims;
+
+ float2 canvasCoord = ShadowTileMode == 0
+ ? QuadCoord + ShadowUVOffset / QuadDims
+ : SourceCoord + ShadowUVOffset / SourceDims;
+ float2 canvasTexelDims = ShadowTileMode == 0
+ ? QuadTexel
+ : SourceTexel;
+
+ float2 shadowDims = ShadowDims;
+ float2 shadowUV = ShadowUV;
+ float2 shadowCount = ShadowCount;
+
+ canvasCoord = !VectorScreen && SwapXY
+ ? canvasCoord.yx
+ : canvasCoord.xy;
+ shadowCount = !VectorScreen && SwapXY
+ ? shadowCount.yx
+ : shadowCount.xy;
+
+ float2 shadowTile = canvasTexelDims * shadowCount;
+
+ float2 shadowFrac = frac(canvasCoord / shadowTile);
+ shadowFrac = !VectorScreen && SwapXY
+ ? shadowFrac.yx
+ : shadowFrac.xy;
+
+ float2 shadowCoord = (shadowFrac * shadowUV);
+ shadowCoord += 0.5f / shadowDims; // half texel offset
+
+ return shadowCoord;
+}
+
+float4 ps_main(PS_INPUT Input) : COLOR
+{
float2 ScreenCoord = Input.ScreenCoord;
float2 TexCoord = GetAdjustedCoords(Input.TexCoord, 0.5f);
- float2 SourceCoord = GetAdjustedCoords(Input.SourceCoord, 0.5f * SourceRect);
+ float2 SourceCoord = GetAdjustedCoords(Input.SourceCoord, 0.5f);
// Color
float4 BaseColor = tex2D(DiffuseSampler, TexCoord);
BaseColor.a = 1.0f;
- // keep border
+ // keep border
if (!PrepareBloom)
{
// clip border
@@ -180,41 +215,7 @@ float4 ps_main(PS_INPUT Input) : COLOR
// Mask Simulation (may not affect bloom)
if (!PrepareBloom && ShadowAlpha > 0.0f)
{
- float2 shadowUVOffset = ShadowUVOffset;
- shadowUVOffset = SwapXY
- ? ShadowUVOffset.yx
- : ShadowUVOffset.xy;
-
- float2 shadowDims = ShadowDims;
- shadowDims = SwapXY
- ? shadowDims.yx
- : shadowDims.xy;
-
- float2 shadowUV = ShadowUV;
-
- float2 screenCoord = ShadowTileMode == 0
- ? ScreenCoord + shadowUVOffset / ScreenDims
- : SourceCoord + shadowUVOffset / SourceDims;
- screenCoord = SwapXY
- ? screenCoord.yx
- : screenCoord.xy;
-
- float2 shadowCount = ShadowCount;
- shadowCount = SwapXY
- ? shadowCount.yx
- : shadowCount.xy;
-
- float2 shadowTile = ShadowTileMode == 0
- ? ScreenTexelDims * shadowCount
- : SourceTexelDims * shadowCount;
- shadowTile = SwapXY
- ? shadowTile.yx
- : shadowTile.xy;
-
- float2 ShadowFrac = frac(screenCoord / shadowTile);
-
- float2 ShadowCoord = (ShadowFrac * shadowUV);
- ShadowCoord += 0.5f / shadowDims; // half texel offset
+ float2 ShadowCoord = GetShadowCoord(ScreenCoord, SourceCoord);
float4 ShadowColor = tex2D(ShadowSampler, ShadowCoord);
float3 ShadowMaskColor = lerp(1.0f, ShadowColor.rgb, ShadowAlpha);
@@ -263,7 +264,7 @@ float4 ps_main(PS_INPUT Input) : COLOR
if (!VectorScreen && HumBarAlpha > 0.0f)
{
float HumBarStep = frac(TimeMilliseconds * HumBarDesync);
- float HumBarBrightness = 1.0 - frac(SourceCoord.y / SourceRect.y + HumBarStep) * HumBarAlpha;
+ float HumBarBrightness = 1.0 - frac(SourceCoord.y + HumBarStep) * HumBarAlpha;
BaseColor.rgb *= HumBarBrightness;
}
}
diff --git a/hlsl/prescale.fx b/hlsl/prescale.fx
index 419254acd07..2b48a2f9e5a 100644
--- a/hlsl/prescale.fx
+++ b/hlsl/prescale.fx
@@ -67,7 +67,7 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy *= 2.0f; // zoom
Output.TexCoord = Input.TexCoord;
- // Output.TexCoord += 0.5f / targetDims; // half texel offset correction (DX9)
+ Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
return Output;
}
diff --git a/hlsl/primary.fx b/hlsl/primary.fx
index 2086132a0e7..9f5a3c62faf 100644
--- a/hlsl/primary.fx
+++ b/hlsl/primary.fx
@@ -67,8 +67,8 @@ VS_OUTPUT vs_screen_main(VS_INPUT Input)
Output.Position.xy -= 0.5f; // center
Output.Position.xy *= 2.0f; // zoom
- Output.TexCoord = Input.Position.xy / ScreenDims;
- Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
+ Output.TexCoord = Input.TexCoord;
+ // Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.Color = Input.Color;
@@ -85,7 +85,7 @@ VS_OUTPUT vs_vector_buffer_main(VS_INPUT Input)
Output.Position.xy -= 0.5f; // center
Output.Position.xy *= 2.0f; // zoom
- Output.TexCoord = Input.Position.xy / ScreenDims;
+ Output.TexCoord = Input.TexCoord;
Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.Color = Input.Color;
@@ -104,6 +104,7 @@ VS_OUTPUT vs_ui_main(VS_INPUT Input)
Output.Position.xy *= 2.0f; // zoom
Output.TexCoord = Input.TexCoord;
+ // Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9)
Output.Color = Input.Color;
@@ -124,7 +125,6 @@ float4 ps_screen_main(PS_INPUT Input) : COLOR
float4 ps_vector_buffer_main(PS_INPUT Input) : COLOR
{
float4 BaseTexel = tex2D(DiffuseSampler, Input.TexCoord);
- BaseTexel *= Input.Color + float4(1.0f, 1.0f, 1.0f, 0.0f);
return BaseTexel;
}
diff --git a/hlsl/vector.fx b/hlsl/vector.fx
index 1e94042ad5e..13aeb943c53 100644
--- a/hlsl/vector.fx
+++ b/hlsl/vector.fx
@@ -36,6 +36,8 @@ struct PS_INPUT
//-----------------------------------------------------------------------------
uniform float2 ScreenDims;
+uniform float2 QuadDims;
+
uniform float2 TimeParams;
uniform float3 LengthParams;
@@ -47,9 +49,9 @@ VS_OUTPUT vs_main(VS_INPUT Input)
Output.Position.xy /= ScreenDims;
Output.Position.y = 1.0f - Output.Position.y; // flip y
Output.Position.xy -= 0.5f; // center
- Output.Position.xy *= 2.0f; // zoom
+ Output.Position.xy *= 2.0f * (ScreenDims / QuadDims); // zoom
- Output.TexCoord = Input.Position.xy / ScreenDims;
+ Output.TexCoord = Input.TexCoord;
Output.Color = Input.Color;
@@ -75,7 +77,9 @@ float4 ps_main(PS_INPUT Input) : COLOR
lengthModulate = lerp(lengthModulate, 4.0f, minLength * 0.5f);
lengthModulate = lerp(1.0f, timeModulate * lengthModulate, LengthParams.y);
- float4 outColor = Input.Color * float4(lengthModulate, lengthModulate, lengthModulate, 1.0f);
+ float4 outColor = float4(lengthModulate, lengthModulate, lengthModulate, 1.0f);
+ outColor *= Input.Color;
+
return outColor;
}
@@ -90,6 +94,6 @@ technique DefaultTechnique
Lighting = FALSE;
VertexShader = compile vs_2_0 vs_main();
- PixelShader = compile ps_2_0 ps_main();
+ PixelShader = compile ps_2_0 ps_main();
}
}