1. 7
  1.  

  2. 6

    This article misses the money quote: convolution in the time domain is multiplication in the frequency domain.

    Say we take a signal, transform it into the frequency domain, multiply all the high frequencies by zero, and leave all the low frequencies untouched (multiply by one). When we transform back to the time domain, we get the same signal with all the high frequencies removed, in other words a blurred signal. Since that’s just multiplications in the frequency domain, from the above we know we can find a kernel to colvolve with in the time domain that has the same effect, and saves us a roundtrip through the frequency domain. If you do the maths, you get the sinc function, or the ideal lowpass filter. If you plot it, it looks very similar to the gaussian function, which is why gaussian is usable as a blur kernel.

    We can go through similar steps for sharpening (highpass) filters, and the process is generally known as “FIR filter design”. It’s also covered in any DSP book, and I can recommend this one.

    As for some other uses of filters in games:

    1. 1

      If you plot it, it looks very similar to the gaussian function, which is why gaussian is usable as a blur kernel.

      Well anything that has a lot in the middle and a little at the sides in the f-domain is ‘useable as a blur kernel’.

      But gaussian is definitely not a “poorman’s sinc function”.

    2. 1

      Another common use of convolution is in digital audio reverb. Consider an impulse signal – one sample at 100% amplitude, followed by infinity samples at 0. In a nutshell, if you play that sound in a physical space and record the result (the “impulse response”), you can convolve any digital audio signal with the impulse response and the result is the original signal with the physical space’s characteristic reverb applied to it. I’ve oversimplified slightly, but that’s the gist of it, and it’s an extremely flexible technique with many professional applications.

      https://en.wikipedia.org/wiki/Convolution_reverb