Oversampling in Fyre

Despite Fyre 1.0 being “completely done” for a while now, I have to nitpick it occasionally. I recently composed an image which brought out a particularly bad oversampling bug in Fyre.

Fyre implements antialiasing using an oversampling technique, much like FSAA on modern video cards. In Fyre 1.0.0, we just chop each pixel into an even 2×2, 3×3 or 4×4 grid of subpixels. Making an analog signal processing analogy, it increases the sampling frequency and adds a low-pass filtering stage after the samples are taken. There is still the potential for very high-frequency features in the original signal to alias, and produce undesirable patterns in the resulting output.

In the current development version of Fyre 1.0, I’ve added ±1 subpixel of spatial noise prior to sampling, which gives us the missing low-pass filter that should keep us below the Nyquist limit. Intial results look good:


Before: Fyre 1.0.0 release, 3x gamma-corrected oversampling on a regular grid


After: Fyre 1.0 SVN, 3x gamma-corrected filtered oversampling

Comments
One Response to “Oversampling in Fyre”
  1. Felix says:

    I know that Fyre 1.0 is an stable release, and the 2.0 is not coming soon. I am a big fan of the package. Plau, I am answering an entry in your blog with a delay of more than 4 years. By all of that, I apologize.

    I think there’s always room for improvements. There are a few features that I would like of fyre. For example, the ability of change one rendering parameter from console (i.e., adding a bgalpha=0 option), without erasing all of the parameters loaded from an image via the -i option. The calculation of the histogram based on the GPU instead of the CPU, will improve the performance. And the cluster rendering based on MPI, even though I never used it as implemented now.

    Again, I apologize by the late reply.

    Thanks

Leave A Comment