Wednesday, 28 November 2012

Reconstruction Filtering

After recently trying to render an animation with Imagine, the result consisting of heavy aliasing in the form of walking and flickering edges on small objects, I realised that I couldn't put off adding proper Reconstruction Filtering to Imagine any longer.

With no filtering, each sample which contributes to a pixel's final colour has equal weighting to the final result, which leads to heavy aliasing as objects move across the frame. Using Reconstruction Filtering, the sample's weighting to the final result is related to its distance from the centre of the pixel.

There are many different kinds of filters that can be used for Reconstruction Filtering, ranging from Box filtering (which is the same as no filtering), Gaussian (smooth, slightly blurred) to Lanczos Sinc (very sharp). Unfortunately, no filter is perfect for every scene, although generally for stills, you can get away with sharper filters.

I've implemented Triangle, Gaussian and Mitchell Netravali filters currently, which along with Box (no filtering) you can see enlarged examples of below:


Mitchell Netravali:

Sunday, 11 November 2012

Hidden progress

I've been doing a lot of back-end work to Imagine recently, with no new obvious features to show in terms of output images, but a thorough refactoring of some of the core code. I've also added remote rendering support, Deep Image (OpenEXR 2) output, adaptive rendering and refinement-progressive rendering.