   New to shader programming(Rendermonkey)
  Hi,I need to create a refraction shader for a bullet trail effect in C#(Neoaxis engine).Im totally new to this. Ive found one or two tutorials that got me started and Managed to make a simple Phong shader. Im a little confused with all the different elements of RenderMonkey. Im finding it hard to understand the example files so Im asking here.I have a few questions:If I was going to create a simple refraction shader(I just need some basic transparency and distortion(no need for cubemaps/reflections/whatever)), what would be a good way to start? Im just trying to get my head around the program. Why are there two programming areas in a pass and whats the difference between the two?(Vertex Program, Fragment Program) The tutorial shader:Why is this part of the code in Vertex Program rather than Fragment?------------------------------------------------------------------------uniform vec3 LightPosition;   uniform vec3 EyePosition;   varying vec3 ViewDirection;   varying vec3 LightDirection;   varying vec3 Normal;   void main( void )   { gl_Position = ftransform(); vec4 ObjectPosition = gl_ModelViewMatrix * gl_Vertex; ViewDirection  = EyePosition - ObjectPosition.xyz; LightDirection = LightPosition - ObjectPosition.xyz; Normal    = gl_NormalMatrix * gl_Normal;   }and why is this part in Fragment program rather than Vertex?:----------------------------------------------------------------------uniform vec4 Ambient;   uniform vec4 Specular;   uniform vec4 Diffuse;   uniform vec4 BaseColor;   uniform float SpecularPower;   uniform float RefractionPower;   varying vec3 ViewDirection;   varying vec3 LightDirection;   varying vec3 Normal;   void main( void )   { vec3  LightDirection = normalize( LightDirection ); vec3  Normal    = normalize( Normal ); float NDotL = dot( Normal, LightDirection ); vec3  Reflection= normalize( ( ( 2.0 * Normal ) * NDotL ) - LightDirection );  vec3  ViewDirection  = normalize( ViewDirection ); float RDotV = max( 0.0, dot( Reflection, ViewDirection ) ); vec4  TotalAmbient   = Ambient * BaseColor; vec4  TotalDiffuse   = Diffuse * NDotL * BaseColor;  vec4  TotalSpecular  = Specular * ( pow( RDotV, SpecularPower ) ); gl_FragColor = ( TotalAmbient + TotalDiffuse + TotalSpecular );   }I hope someone can shed some light :)