   Problem with speed of bloom effect
  This is my first post here, hello to all!I am writing a bloom effect in a directx9 engine. I have been following the HDRPipeline example in the SDK which has been a big help.It works fine now and looks pretty good. My only problem is that the final stage which adds the bloomed surface to the scene is very slow at high resolutions.My current method is this (some parts are omitted to keep it concise)://copy contents of back buffer to my own surface//i tried GetContainer() to get the back buffer texture to pass into the pixel shader but this returns E_NOINTERFACE I'm not sure why...pDev->StretchRect(spBackBuff, &winRect, spComposite, &winRect, D3DTEXF_NONE);//I then setup a slightly cut-down version of the finalpass pixel shader from the example which performs additive blending of the pixelspDev->SetTexture( 1, spCompositeTex );pDev->SetTexture( 2, spBloomTex );pDev->SetPixelShader( pFinalPassPS );//then i render to the backbuffer surface usinf 4 vertspDev->SetFVF( FVF_TLVERTEX );pDev->DrawPrimitiveUP( D3DPT_TRIANGLESTRIP, 2, v, sizeof( TLVertex ) );The pixel shader I am using is this (It is the one from the HDRPipeline example with the luminance parts taken out)float4 Composite( in float2 t : TEXCOORD0 ) : COLOR0{    // Read the HDR value that was computed as part of the original scene   float4 c = tex2D( original_scene, t ); // Compute the blur value using a bilinear filter    // It is worth noting that if the hardware supports linear filtering of a    // floating point render target that this step can probably be skipped.   float xWeight = frac( t.x / g_rcp_bloom_tex_w ) - 0.5;   float xDir = xWeight;   xWeight = abs( xWeight );   xDir /= xWeight;   xDir *= g_rcp_bloom_tex_w;   float yWeight = frac( t.y / g_rcp_bloom_tex_h ) - 0.5;   float yDir = yWeight;   yWeight = abs( yWeight );   yDir /= yWeight;   yDir *= g_rcp_bloom_tex_h;    // sample the blur texture for the 4 relevant pixels, weighted accordingly   float4 b = ((1.0f - xWeight) * (1.0f - yWeight))    * tex2D( bloom, t ); b +=  (xWeight * (1.0f - yWeight))   * tex2D( bloom, t + float2( xDir, 0.0f ) );   b +=  (yWeight * (1.0f - xWeight))   * tex2D( bloom, t + float2( 0.0f, yDir ) );   b +=  (xWeight * yWeight)  * tex2D( bloom, t + float2( xDir, yDir ) ); // Compute the actual colour:  float4 final = c + 0.25f * b;// Return the fully composed colourc = final;   c.a = 1.0f;   return c;}I have two questions:1. Is there an easier/faster way of combining the bloom texture with the image already on the back buffer? (I don't really see a reason to use a pixel shader here if I merely want to additive blend the two textures)2. If a shader is required, how can I speed this up and is it possible to directly get the texture from the back buffer surface to avoid the copying step at the beginning?thanks in advance!   
  I solved this by simplifying my final shader to this:    // read original scene value   float4 c = tex2D( original_scene, t );//composite with bloom texture float4 final = c + 0.4f * tex2D( bloom, t ); // Return the fully composed colourc = final;   c.a = 1.0f;   return c;and using this to filter the buffer for me:pDev->SetSamplerState( 2, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );pDev->SetSamplerState( 2, D3DSAMP_MINFILTER, D3DTEXF_LINEAR ); 