/// <summary>
		/// Apply the filter
		/// </summary>
		/// <param name="state"></param>
		public void Draw(FrameState state)
		{
			switch (kernelSize)
			{
				case 16:
					Kernel16 shader16 = state.GetShader<Kernel16>();
					shader16.Texture = source.GetTexture();
					shader16.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader16.Kernel = (this.filter);
					element.Shader = shader16;
					break;
				case 15:
					Kernel15 shader15 = state.GetShader<Kernel15>();
					shader15.Texture = source.GetTexture();
					shader15.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader15.Kernel = (this.filter);
					element.Shader = shader15;
					break;
				case 8:
					Kernel8 shader8 = state.GetShader<Kernel8>();
					shader8.Texture = source.GetTexture();
					shader8.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader8.Kernel = (this.filter);
					element.Shader = shader8;
					break;
				case 7:
					Kernel7 shader7 = state.GetShader<Kernel7>();
					shader7.Texture = source.GetTexture();
					shader7.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader7.Kernel = (this.filter);
					element.Shader = shader7;
					break;
				case 4:
					Kernel4 shader4 = state.GetShader<Kernel4>();
					shader4.Texture = source.GetTexture();
					shader4.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader4.Kernel = (this.filter);
					element.Shader = shader4;
					break;
				case 3:
					Kernel3 shader3 = state.GetShader<Kernel3>();
					shader3.Texture = source.GetTexture();
					shader3.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader3.Kernel = (this.filter);
					element.Shader = shader3;
					break;
				case 2:
					Kernel2 shader2 = state.GetShader<Kernel2>();
					shader2.Texture = source.GetTexture();
					shader2.TextureSize = new Vector2(1.0f / this.source.Size.X, 1.0f / this.source.Size.Y);
					shader2.Kernel = (this.filter);
					element.Shader = shader2;
					break;
			}
			targetClone.Draw(state);
		}