Files

53 lines
1.2 KiB
GLSL

/**
* @file nightVisionF.glsl
*
* Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
* $License$
*/
#extension GL_ARB_texture_rectangle : enable
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
uniform sampler2DRect tex0;
uniform sampler2D tex1;
uniform float brightMult;
uniform float noiseStrength;
VARYING vec2 vary_texcoord0;
VARYING vec2 vary_texcoord1;
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(tex0, vary_texcoord0));
/// 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(tex1, vary_texcoord1).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);
}