summaryrefslogtreecommitdiffstatshomepage
path: root/hlsl/phosphor.fx
diff options
context:
space:
mode:
Diffstat (limited to 'hlsl/phosphor.fx')
-rw-r--r--hlsl/phosphor.fx17
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)