<jittershader name="lumagauss">
	<description>
	use luminance of second texture to set blur width
	</description>
	<param name="scale" type="vec2" default="1. 1.">
		<description>scale the width</description>
	</param>
	<param name="offset" type="vec2" default="0. 0.">
		<description>offset the width</description>
	</param>
	<param name="lumcoeff" type="vec4" default="0.299 .587 0.114 0.">
		<description>Luminance coefficients (RGBA)</description>
	</param>
	<param name="invert" type="float" default="0." />
	<param name="thresh" type="float" default="0.">
		<description>brightness threshold</description>
	</param>
	<param name="fade" type="float" default="1.0">
		<description>fade amount for threshold</description>
	</param>

	<param name="tex0" type="int" default="0" />
	<param name="tex1" type="int" default="1" />
	<language name="glsl" version="1.0">
		<bind param="scale" program="fp" />
		<bind param="lumcoeff" program="fp" />
		<bind param="invert" program= "fp" />
		<bind param="thresh" program="fp" />
		<bind param="fade" program="fp" />
		<bind param="tex0" program="fp" />
		<bind param="tex1" program="fp" />	
		<program name="vp" type="vertex" source="sh.passthrudim.vp.glsl" />
		<program name="fp" type="fragment">
<![CDATA[

// Andrew Benson - andrewb@cycling74.com

//setup for 2 texture
varying vec2 texcoord0;
varying vec2 texcoord1;
uniform sampler2DRect tex0;
uniform sampler2DRect tex1;

//wipe state

uniform vec2 scale;
uniform vec2 offset;
uniform vec4 lumcoeff;
uniform float invert;
uniform float fade;
uniform float thresh;

void main()
{   
	
	vec4 bt = texture2DRect(tex1, texcoord1);

	// grab the luminance
	float lumi = dot(bt,lumcoeff);
	lumi = smoothstep(thresh,thresh+fade,lumi);//apply treshold
	lumi = mix(lumi,1.-lumi,invert);
	vec2 wi = lumi*scale+offset;
	
	
	vec2 texcoordM = texcoord0;
    vec2 texcoordB0 = texcoord0 - wi;
    vec2 texcoordF0 = texcoord0 + wi;
    vec2 texcoordB1 = texcoord0 - wi * 2.0;
    vec2 texcoordF1 = texcoord0 + wi * 2.0;
    vec2 texcoordB2 = texcoord0 - wi * 3.0;
    vec2 texcoordF2 = texcoord0 + wi * 3.0;
    
    vec4 sampleM  = texture2DRect(tex0, texcoordM);
    vec4 sampleB0 = texture2DRect(tex0, texcoordB0);
    vec4 sampleF0 = texture2DRect(tex0, texcoordF0);
    vec4 sampleB1 = texture2DRect(tex0, texcoordB1);
    vec4 sampleF1 = texture2DRect(tex0, texcoordF1);
    vec4 sampleB2 = texture2DRect(tex0, texcoordB2);
    vec4 sampleF2 = texture2DRect(tex0, texcoordF2);

    gl_FragColor = 0.1752 * sampleM + 0.1658 * (sampleB0 + sampleF0) + 0.1403 * (sampleB1 + sampleF1) + 0.1063 * (sampleB2 + sampleF2);
	
}
]]>
		</program>
	</language>
</jittershader>