Aliasing is everywhere in graphics. Almost everything we do uses discrete sampling, which means almost everything can produce a variety of aliasing artifacts. The folks in the film industry have historically taken a “no aliasing allowed” stance in their work, but in real-time graphics we’re still producing games with more sparkling and shimmering than a glitzy prom dress. If we’re going to do anything about that problem, I think it’s important that we all try to have at least a basic understanding of signal processing. Signal processing is something that I had a lot of experience with during my previous life as an engineering student, but even with that experience it wasn’t always immediately obvious to me how some of the fundamentals applied to common aspects of 3D rendering. You might see people mentioning signal processing terminology when talking about some particular technique, but it can be difficult to use those small pieces to assemble the bigger picture.
Recently I was doing some experimenting with MSAA resolves, and read quite a bit of background material to refresh my knowledge. I starting taking some notes, and after a few pages worth I decided to organize them a bit into (lengthy) article that describes the basics of signal processing when it comes to graphics. Hopefully this material can be useful if you need a refresher yourself, or if you’ve yet to learn these basics at all. I’ve even gone through the trouble of listing a few of the most important points in bullet point form at the end of each section, so if you’re new to this I’d recommend at least skimming through those. After that I’ve also prepared some material on the basics of MSAA, since it can be a confusing topic.
After the articles I’m going to share the results of my experiments with custom MSAA resolves, along with a sample application. So if you’re already an expert (or you just really want to get to the code), then you’ll want to wait a bit so that you can skip ahead to the new material.