![](bg2.png)
quality images. Instant radiosity ((Keller, 1997)) was
the first of such methods to be introduced. Other
methods for final gather steps have been produced
(Granier and Drettakis, 2004), (Arikan et al., 2005).
In all of these methods, determining visibility by
ray-object intersection is a very important time cost
factor. Attempts at getting rid of visibility problems
altogether have been made (Dachsbacher et al., 2007),
however at a cost of increased memory and reintro-
ducing hierarchical radiosity difficult problems of re-
finement and meshing (Sillion and Puech, 1994). For
accelerating the gather step, photon splatting (Lav-
ignotte and Paulin, 2003), (Dachsbacher and Stam-
minger, 2006) can by used, but it neglects some occlu-
sions for indirect light and uses rough approximations
for speedup.
In (Chatelier and Malgouyres, 2006), a new global
illumination approach is considered, with a cost
which is linear with respect to the number of visibility
rays. This is a promising result, but there are short-
comings. The goal of this paper is to provide solution
to these, to obtain a competitive global illumination
technique. Up to the end of this section, we outline
the method of (Chatelier and Malgouyres, 2006).
In (Malgouyres, 2002), the (Lambertian) global il-
lumination equation
B(x) = E(x) + ρ(x)
Z
S
B(y)
cos θ
π
d
−→
σ
is discretized as
B(x) = E(x) +ρ(x)
∑
−→
σ ∈D
B(I(x,
−→
σ ))
cosθ(x,I(x,
−→
σ ))
π
∆Ω(
−→
σ )
where x is now a voxel, D is a set of discrete di-
rections in space, I(x,
−→
σ ) is the first point y viewed
from x in the direction of
−→
σ (as in a ray-object
intersection), and ∆Ω(
−→
σ ) is the fraction of a solid
angle associated to the direction
−→
σ . In (Chatelier
and Malgouyres, 2006), a solution of the discrete
equation is obtained with a linear complexity with
respect to the number of rays. We remind the reader
the main ideas of the method. More details can be
found in (Chatelier and Malgouyres, 2006).
Given a direction vector (a,b,c) ∈ Z
3
with a ≥
b ≥ c, a notion of a 3D line has been proposed
(Debled-Rennesson, 1995), as the set of points
(x,y,z) ∈ Z
3
such that
µ ≤ cx − az < µ + ω and µ
0
≤ bx − ay < µ
0
+ ω
0
where µ,µ
0
,ω,ω
0
are integers. Other cases can be
deduced by symmetry. Let us denote by Z
3
∗
the set
Z
3
\{(0,0,0)}. Given an integer vector
−→
v ∈ Z
3
∗
, the
set Z
3
can be partitioned into 3D discrete lines, whose
direction vector is
−→
v (see Figure 1).
Figure 1: Partition of the space into parallel discrete lines.
Moreover, given a voxel x ∈ Z
3
, finding out which
3D discrete line in the partition the point x belongs to
can be done in constant time.
Now, to transfer energy from one voxel x to the
first voxel y visible from x in a direction σ, for some
finite set of sample directions σ, if we consider some
fixed direction σ and a partition of the voxel space
Z
3
into discrete lines parallel to σ, then the voxels of
the discretized surface (say mesh or implicit surface)
that lie on the same discrete line can be arranged in
an ordered list. In this ordered list, the first visible
voxel is the next voxel in the list. So, once the lists
are sorted, we can propagate the energy in linear time
O(N), where N is the number of voxels.
Now, the idea of the method is that by going over
the set of all surface voxels in a lexicographic order
(lexicographic orders are precomputed by radix sort),
we can build all the sorted lists in linear time O(N).
We do this for each of the D sample directions and
for each of the I Gauss-Seidel iteration, and we get a
numerical solution of the global illumination equation
in time O(N × I × D).
3 SHOOTING FROM LIGHT
SOURCES AND BOUNCE
CACHE METHOD
Although the method of (Chatelier and Malgouyres,
2006) has a linear complexity with respect to the num-
ber of rays, one of its drawbacks is that it doesn’t sam-
ple solid angles according to power importance. We
consider small light sources which emit much light
per unit of area, as we can find in many applications,
first the voxel size needs to be small enough to ap-
proximate light source shapes, thus many voxels are
required, and second, the solid angle sampling must
be fine enough to avoid artifacts. A natural solution
to this problem is the use of the raytracing instead of
discrete shooting in this step. We proceed as follows:
First we choose number of initial photons on light
sources with the random normal distribution that de-
pends on light power and area. The energy of each
sample is equal to
overall energy
number of samples
. Then we shoot
from each initial photon n rays into n directions, with
energy equal to E/n. For each intersection point we
store the given energy and compute the correspond-
GRAPP 2009 - International Conference on Computer Graphics Theory and Applications
174