Correct, you use the previously blured texture for the next blur pass with the sample distance divided always in half every next pass, the code from the example is below in glsl. Im not additively blending the samples together but should make no difference if blended correctly. Your result should look much smoother, looks like your still downsampling, maybe this method doesn't play nicely with it never tried.
I was shocked myself when I first tried cryteks method of doing most types of blurs, with how smooth it was with so few samples and just multiple passes. Crytek said they used the same method for their motion blur in that paper to.
uniform sampler2D inputTexture;
vec2 texCoord = gl_TexCoord[0].xy;
uniform float x;
uniform float y;
vec2 lightPos = vec2(x, y);
uniform float density = 1.0; // next pass 0.5 then 0.25 and so on
const int SAMPLES = 8;
vec4 radialBlur(vec2 texCoord)
{
vec2 deltaTexCoord = gl_TexCoord[0].st - lightPos;
deltaTexCoord *= 1.0 / SAMPLES * density;
vec4 color;
for(int i = 0; i < SAMPLES; i++)
{
texCoord -= deltaTexCoord;
color += texture2D(inputTexture, texCoord);
}
color /= SAMPLES;
return color;
}
void main(void)
{
vec4 color = radialBlur(texCoord);
gl_FragColor = color;
}