<jittershader name="source motion">

	<description>Transform feeedback for particles representing audio sources</description>

		<param name="iPosition" type="vec3" state="POSITION" />
		<param name="iVelocity" type="vec3" state="NORMAL" />
		<param name="iTarget_Position" type="vec3" state="VERTEX_ATTR0" />
		<param name="speed" type="float" default="0.1" />
		<param name="drag" type="float" default="0.99" />
		<param name="scale" type="float" default="0.25" />

	<language name="glsl" version="1.5">
	
		<bind param="iPosition" program="vp" />
		<bind param="iVelocity" program="vp" />
		<bind param="iTarget_Position" program="vp" />
		<bind param="speed" program="vp" />
		<bind param="drag" program="vp" />
		<bind param="scale" program="vp" />

		<program name="vp" type="vertex">
<![CDATA[
#version 330 core
uniform float speed;
uniform float drag;
uniform float scale;
uniform vec3 iTarget_Position;

in vec3 iPosition;
in vec3 iVelocity;


out vec3 Position;
out vec3 Velocity;
out vec3 Target_Position;

void main() {	
	Target_Position = iTarget_Position;
	Velocity = clamp((normalize(Target_Position - iPosition) * 0.001 + iVelocity), -0.05, 0.05);
	Position = iPosition + Velocity;
	
}
]]>
		</program>
		<program name="fp" type="fragment"  >
		<![CDATA[
#version 330 core
void main() 
{
}
		]]>
		</program>
	</language>
</jittershader>
