Filters
Filtering parameters are used to specify details about the three filtering stages used to alter and improve the look of the final output image.
Density
This is sometimes referred to as density estimation, or DE. This is a misnaming as there is no estimation taking place. Rather, a variable width Gaussian filter is applied to each log scaled histogram cell after all iteration is complete. The Xml fields estimator_minimum
and estimator_radius
specify the minimum and maximum widths that the filter can be. The estimator_curve
field specifies the decay curve for how quickly the filter’s values drop off when extending outward from the pixel being filtered.
Spatial
After iterating and density filtering are done, final color correction to the output image is computed. Spatial filtering is applied during this step. The Xml fields filter_shape
and filter
specify the type and width of the filter. This gives very fine adjustment over what the final image looks like. Note that some filters can produce strange artifacts.
Temporal
In addition to creating a still image, the algorithm can be used to create a series of still images where each represents a frame in an animation. This is done by adjusting the affine transforms slightly for each frame and interpolating (blending) between two different flames. Sometimes, even slight changes in the flame parameters can cause a large change in the final output image.
To mitigate this effect, each frame splits its render into a number of temporal samples. This does not increase the number of iterations. Instead, it breaks the total number of iterations into chunks. Each chunk renders an interpolated flame at a specific time between the current frame and the next one to be rendered. The histogram is not cleared between temporal samples, so all iteration values are accumulated to produce a motion blurring effect. A temporal samples value of 100 – 1000 is commonly used for animation. When rendering a single frame, the number of temporal samples is always set to 1 since there is nothing to interpolate.
Two fields in the Xml govern how temporal filtering is done:
temporal_samples
The number of steps to divide each animation frame into, to achieve the motion blurring effect.
temporal_filter_type
The type of filter used when generating the temporal steps used in each frame of an animation. Values are box
, gaussian
or exp
with a default of box
.
temporal_filter_width
How wide the temporal filter is. The default value is 1.
Interpolation
While not technically a filter, it’s listed here because it governs how frames are blended between keyframes when generating an animation sequence. The two fields which govern it are:
interpolation
The interpolation method used for determining the time steps of each frame in between two keyframes when generating a sequence. Values are linear
and smooth
with a default of smooth
. The only value that can be used on the first and last keyframes of a sequence is linear
.
interpolation_type
The interpolation method used for interpolating affine transforms when generating a sequence. Values are linear
or log
with a default of log
.