In contrast, using a linear form for
does not resolve
to a simple, easily computed form.
Although loading a three-dimensional lookup table into a three-dimensional texture is possible, a two-dimensional table and a two-dimensional texture are preferable. Röttger and colleagues point out that the significantly lower memory requirements of two-dimensional tables allow for much higher fidelity in the data they store [81] and that data retrieval from two-dimensional textures is often faster than that from three-dimensional textures on current graphics hardware [80]. Furthermore, not all current graphics hardware supports three-dimensional textures with floating point precision.
Fortunately, pre-integrated values of the
function for linear
attenuation coefficients may be stored in a two-dimensional table with
no approximations apart from those introduced by sampling the
function. Consider what happens when we change the limits of the integrals
in Equation 1.7 to range between 0 and 1.
![]() |
||
![]() |
||
![]() |
Equation 1.8 demonstrates that we may
store
in a two-dimensional table by pre-computing
for all
applicable
pairs. Before a
lookup into this table may occur, we must compute the products
and
. We can perform both
multiplications in a single GPU vector operation, and we can reuse the
products to compute
if we rewrite
Equation 1.6 as
, so the multiplications are essentially
free.
Once we compute
and determine
via a lookup table, we can
calculate Equation 1.5 directly to perform
the ray integration. Because this method uses a table that holds the
pre-integration of part of the volume rendering integral, I dub this method
partial pre-integration.