summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl42
1 files changed, 42 insertions, 0 deletions
diff --git a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
new file mode 100644
index 0000000000..271d5cf8d6
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
@@ -0,0 +1,42 @@
+/**
+ * @file nightVisionF.glsl
+ *
+ * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+uniform sampler2DRect RenderTexture;
+uniform sampler2D NoiseTexture;
+uniform float brightMult;
+uniform float noiseStrength;
+
+float luminance(vec3 color)
+{
+ /// CALCULATING LUMINANCE (Using NTSC lum weights)
+ /// http://en.wikipedia.org/wiki/Luma_%28video%29
+ return dot(color, vec3(0.299, 0.587, 0.114));
+}
+
+void main(void)
+{
+ /// Get scene color
+ vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
+
+ /// Extract luminance and scale up by night vision brightness
+ float lum = luminance(color) * brightMult;
+
+ /// Convert into night vision color space
+ /// Newer NVG colors (crisper and more saturated)
+ vec3 outColor = (lum * vec3(0.91, 1.21, 0.9)) + vec3(-0.07, 0.1, -0.12);
+
+ /// Add noise
+ float noiseValue = texture2D(NoiseTexture, gl_TexCoord[1].st).r;
+ noiseValue = (noiseValue - 0.5) * noiseStrength;
+
+ /// Older NVG colors (more muted)
+ // vec3 outColor = (lum * vec3(0.82, 0.75, 0.83)) + vec3(0.05, 0.32, -0.11);
+
+ outColor += noiseValue;
+
+ gl_FragColor = vec4(outColor, 1.0);
+}