#ifndef	MBLUR_H
#define MBLUR_H

#ifndef 	USE_MBLUR
half3 	mblur	(float2 UV, half3 pos, half3 c_original)	{ return c_original; }
#else
#include "common.h"

uniform half4x4	m_current;
uniform half4x4	m_previous;
uniform half2 	m_blur;		// scale_x / 12, scale_y / 12

#define MBLUR_SAMPLES 	half(12)
#define MBLUR_CLAMP	half(0.001)

half3 	mblur	(float2 UV, half3 pos, half3 c_original)	{
	half4 	pos4		= half4	(pos,1.h);

	half4 	p_current	= mul	(m_current,	pos4);
	half4 	p_previous 	= mul	(m_previous,	pos4);
	half2 	p_velocity 	= m_blur * ( (p_current.xy/p_current.w)-(p_previous.xy/p_previous.w) );
		p_velocity	= clamp	(p_velocity,-MBLUR_CLAMP,+MBLUR_CLAMP);
	
	// For each sample, sum up each sample's color in "Blurred" and then divide
	// to average the color after all the samples are added.
	half3 	blurred 	= 	c_original	;    
        	blurred 	+= 	tex2D(s_image, p_velocity * 1.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 2.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 3.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 4.h  + UV).rgb;
        	blurred 	+= 	tex2D(s_image, p_velocity * 5.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 6.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 7.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 8.h  + UV).rgb;
        	blurred 	+= 	tex2D(s_image, p_velocity * 9.h  + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 10.h + UV).rgb;
		blurred		+= 	tex2D(s_image, p_velocity * 11.h + UV).rgb;
	return 	blurred/MBLUR_SAMPLES;
}
#endif

#endif
