Filtering

For density and spatial filtering, a box of pixels is processed. Ember optimizes filtering by processing in a cache-friendly row, column order.

The filter application loops are parallelized which gives more fluid feedback during an interactive render.

The filter objects are only recreated if the requested filter differs from the one previously used. This is seldom the case during an interactive render.

While density filtering can be exited prematurely during an interactive render due to user input, spatial filtering is never exited prematurely because it leads to a page tearing effect.