i thought up a pretty clever and fast fake gaussian blur when i was writing my texture generator, i can post real source if you need it, but i'll try to explain it first..
normally when you blur you average the center pixel and a certain amount of it's neigbours.. say for example that you use top/left/center/right/bottom pixels..
now instead of just going
final=(source[x,y-1]+
source[x-1,y]+
source[x ,y ]+
source[x+1,y]+
source[x,y+1])/5;
destination[x,y]=final;
you use a variable to define the radius of the blur, and use that variable to decide where to grab your pixels, just like above only you use source[x,y-radius] instead of source[x,y-1];
now that alone doesnt cut it, what you need to do is to blur in several passes, decreasing radius for each pass.. so, lets say we do a 10pass gaussian blur, what we do now is something like this:
for radius =10 to 1 do
for x=0 to 255 do
for y=0 to 255 do
begin
final=(source[x,y-radius]+
source[x-radius,y]+
source[x ,y ]+
source[x+radius,y]+
source[x,y+radius])/5;
destination[x,y]=final;
end
i hope that helped you in some way.. if you wanna see the result the gaussian blur produce, try downloading my texture generator in this thread:
http://dbfinteractive.com/index.php?topic=1070.0 (syntex.rar, somewhere in the thread) and play around with the blur.. to save you from wasting time implementing something that you didnt like
