diff options
Diffstat (limited to 'hlsl')
-rw-r--r-- | hlsl/phosphor.fx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/hlsl/phosphor.fx b/hlsl/phosphor.fx index c6614d09520..874d67dfded 100644 --- a/hlsl/phosphor.fx +++ b/hlsl/phosphor.fx @@ -93,8 +93,10 @@ VS_OUTPUT vs_main(VS_INPUT Input) // Phosphor Pixel Shader //----------------------------------------------------------------------------- -uniform float DeltaTime = 0.0f; +uniform bool LCD = false; uniform int Mode = 0; +uniform float DeltaTime = 0.0f; +uniform float LCDTau = 0.0f; uniform float3 Tau = { 0.0f, 0.0f, 0.0f }; uniform float3 Beta = { 0.0f, 0.0f, 0.0f }; uniform float3 Gamma = { 0.0f, 0.0f, 0.0f }; @@ -107,15 +109,20 @@ float4 ps_main(PS_INPUT Input) : COLOR float g = PrevPix.g; float b = PrevPix.b; - if (Mode == 0) { + if (LCD) { + r *= LCDTau == 0 ? 0 : exp(-DeltaTime / LCDTau); + g *= LCDTau == 0 ? 0 : exp(-DeltaTime / LCDTau); + b *= LCDTau == 0 ? 0 : exp(-DeltaTime / LCDTau); + } + else if (Mode == 0) { r = 0; g = 0; b = 0; } else if (Mode == 1) { - r *= exp(-DeltaTime / Tau.r); - g *= exp(-DeltaTime / Tau.g); - b *= exp(-DeltaTime / Tau.b); + r *= Tau.r == 0 ? 0 : exp(-DeltaTime / Tau.r); + g *= Tau.g == 0 ? 0 : exp(-DeltaTime / Tau.g); + b *= Tau.b == 0 ? 0 : exp(-DeltaTime / Tau.b); } else { if (r != 0.0f) |