diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml
index 5a389ca491..2000bc81f3 100644
--- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml
+++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml
@@ -8,6 +8,7 @@
StyleClasses="LabelKeyText"/>
+
diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs
index f33da4c501..e3fb90e156 100644
--- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs
+++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs
@@ -16,6 +16,7 @@ public sealed partial class AccessibilityTab : Control
Control.AddOptionCheckBox(CCVars.AccessibilityColorblindFriendly, ColorblindFriendlyCheckBox);
Control.AddOptionCheckBox(CCVars.ReducedMotion, ReducedMotionCheckBox);
Control.AddOptionCheckBox(CCVars.DisableAiStatic, DisableAiStaticCheckBox);
+ Control.AddOptionCheckBox(CCVars.DisableNightVisionNoise, DisableNightVisionNoiseCheckBox);
Control.AddOptionPercentSlider(CCVars.ScreenShakeIntensity, ScreenShakeIntensitySlider);
Control.AddOptionPercentSlider(CCVars.ChatWindowOpacity, ChatWindowOpacitySlider);
Control.AddOptionPercentSlider(CCVars.SpeechBubbleTextOpacity, SpeechBubbleTextOpacitySlider);
diff --git a/Content.Client/Overlays/NightVisionOverlay.cs b/Content.Client/Overlays/NightVisionOverlay.cs
index 1feba79bc0..613c4500fa 100644
--- a/Content.Client/Overlays/NightVisionOverlay.cs
+++ b/Content.Client/Overlays/NightVisionOverlay.cs
@@ -1,4 +1,6 @@
+using Content.Shared.CCVar;
using Robust.Client.Graphics;
+using Robust.Shared.Configuration;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
@@ -10,6 +12,7 @@ namespace Content.Client.Overlays;
public sealed partial class NightVisionOverlay : Overlay
{
[Dependency] private IPrototypeManager _prototypeManager = default!;
+ [Dependency] private IConfigurationManager _configManager = default!;
private static readonly ProtoId Shader = "NightVision";
private readonly ShaderInstance _nightVisionShader;
@@ -19,6 +22,8 @@ public sealed partial class NightVisionOverlay : Overlay
public float NoiseAmount { get; private set; }
public float NoiseMultiplier { get; private set; }
+ public bool DisableNoise = false;
+
public override OverlaySpace Space => OverlaySpace.BeforeLighting | OverlaySpace.WorldSpace;
public override bool RequestScreenTexture => true;
@@ -26,6 +31,12 @@ public sealed partial class NightVisionOverlay : Overlay
{
IoCManager.InjectDependencies(this);
_nightVisionShader = _prototypeManager.Index(Shader).InstanceUnique();
+ _configManager.OnValueChanged(CCVars.DisableNightVisionNoise, OnNightVisionNoiseChanged, invokeImmediately: true);
+ }
+
+ private void OnNightVisionNoiseChanged(bool toggle)
+ {
+ DisableNoise = toggle;
}
public void SetParameters(Color overlayColor, Color lightingColor, float noiseAmount, float noiseMultiplier)
@@ -47,8 +58,8 @@ public sealed partial class NightVisionOverlay : Overlay
if (isSpace)
{
_nightVisionShader.SetParameter("SCREEN_TEXTURE", ScreenTexture);
- _nightVisionShader.SetParameter("noise_amount", NoiseAmount);
- _nightVisionShader.SetParameter("noise_multiplier", NoiseMultiplier);
+ _nightVisionShader.SetParameter("noise_amount", !DisableNoise ? NoiseAmount : 0);
+ _nightVisionShader.SetParameter("noise_multiplier", !DisableNoise ? NoiseMultiplier : 0);
handle.UseShader(_nightVisionShader);
}
diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs
index e748789910..6361506217 100644
--- a/Content.Shared/CCVar/CCVars.Accessibility.cs
+++ b/Content.Shared/CCVar/CCVars.Accessibility.cs
@@ -26,6 +26,12 @@ public sealed partial class CCVars
public static readonly CVarDef DisableAiStatic =
CVarDef.Create("accessibility.disable_ai_static", false, CVar.CLIENTONLY | CVar.ARCHIVE);
+ ///
+ /// Removes the noise from the night vision overlay.
+ ///
+ public static readonly CVarDef DisableNightVisionNoise =
+ CVarDef.Create("accessibility.disable_nv_noise", false, CVar.CLIENTONLY | CVar.ARCHIVE);
+
public static readonly CVarDef ChatEnableColorName =
CVarDef.Create("accessibility.enable_color_name",
true,
diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
index 67c866028d..b35b4bdf7e 100644
--- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
+++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
@@ -368,6 +368,7 @@ ui-options-enable-color-name = Add colors to character names
ui-options-colorblind-friendly = Colorblind friendly mode
ui-options-reduced-motion = Reduce motion of visual effects
ui-options-disable-ai-static = Disable the static effect on the AI camera overlay
+ui-options-disable-nv-noise = Disable the noise effect on the night vision overlay
ui-options-screen-shake-intensity = Screen shake intensity
ui-options-chat-window-opacity = Chat window opacity