Graphics Reference
In-Depth Information
time into account, up to 5 . 3
speedup is observed. Even in
the high performance profile when a low-resolution shadow map is used, the ray
marching still benefits from using 1D min/max binary trees.
In our algorithm, we exploited a simple strategy to place N Slices / 4exitpoints
on each boundary of the screen, primarily for the sake of simplicity. Therefore,
the maximum distance between the two closest epipolar lines is always less than
Δ Slice =4
×
andupto2 . 6
×
max( H Scr ,W Scr ) /N Slices pixels. Maximum distance between two
samples on one epipolar line does not exceed
Δ Sample = H Scr + W Scr
N Samples
·
.
1
Thus maximum screen-space distance from any pixel to the closest epipolar sam-
ple is bounded by the
0 . 5 Δ Slice + Δ Sample .
For our first test platform this formula gives us 2.9, 5.2 and 5.8 pixels of maximum
error for the high quality, balanced and high performance profiles, respectively.
For our second platform, it gives 2.6, 5.2 and 5.7 pixels of maximum error. Since
this analysis accounts for the worst case scenario, in practice the error is always
much smaller than this estimation. Therefore, bilateral filtering can be performed
accurately for the majority of pixels, producing convincing visual results even in
the high performance profile. Note that a more sophisticated slice distribution
method could be used to guarantee a predefined maximum screen-space error
[Baran et al. 10].
Our algorithm can be extended to support MSAA. Most steps are performed in
epipolar space and will thus be the same. The only step that requires modification
is the transformation from epipolar to rectangular space. It could be broken into
two sub-passes: pixel pass and sample pass. The pixel pass will be identical to
the one described in Section 2.8.5 and will render to non-MSAA buffer. The per-
sample pass will execute over the MSAA buffer. It will use an antialiasing mask
(which is usually available when MSAA-enabled post-processing is performed) to
distinguish between pixels that do not require antialiasing and those that require
it. For pixels from the first group, the algorithm would read in-scattering from
the non-MSAA back buffer and store it in all samples. For these pixels, which
require antialiasing, the shader performs the same unwarping steps, but for each
particular sample. To improve performance, the last two sub-passes can be split
using stencil masking.
It is also relatively easy to extend our algorithm to approximate multiple scat-
tering by pre-computing the secondary and higher-order scatterings and storing
them in a lookup table (refer to [Bruneton and Neyret 08]). After completing ray
marching, two lookups into the table will be required to approximate the effects
of higher-order scattering along the ray. The average light occlusion along the
Search WWH ::




Custom Search