RealBadAngel b35cdb7061 Upload
2013-11-03 17:01:44 +01:00

38 lines
1.2 KiB
Plaintext

// based on http://www.geeks3d.com/20091009/shader-library-night-vision-post-processing-filter-glsl/
uniform sampler2D SceneBuffer : register(s0);
uniform sampler2D NoiseTex : register(s1);
uniform sampler2D MaskTex : register(s2);
uniform float RandomValue;
uniform float LuminanceThreshold;
uniform float ColorAmplification;
uniform float NoiseStrength;
uniform float VisionColorR;
uniform float VisionColorG;
uniform float VisionColorB;
float4 main(float2 texCoord : TEXCOORD0) : COLOR0
{
float4 finalCol;
// noise
float2 noiseCoord;
noiseCoord.x = RandomValue; // 0.4*sin(ElapsedTime*50.0);
noiseCoord.y = RandomValue; // 0.4*cos(ElapsedTime*50.0);
float3 noiseCol = tex2D(NoiseTex, (texCoord*NoiseStrength)+noiseCoord).rgb;
// light amplification
float3 texCol = tex2D(SceneBuffer, texCoord+(noiseCol.xy*0.001)).rgb;
texCol = saturate((texCol.rgb-LuminanceThreshold)/(ColorAmplification-LuminanceThreshold));
// mask
float4 maskCol = tex2D(MaskTex, texCoord);
// calculate final color
finalCol.rgb = lerp((texCol+(noiseCol*0.2))*float3(VisionColorR, VisionColorG, VisionColorB), maskCol.rgb, maskCol.a);
finalCol.a = 1.0;
return finalCol;
}