viewed from viewing rays which refracted at water
surface. The depth texture is used to represent 3D
position of each pixel in color texture. The algorithm
is accelerated by performing intersection and
computing intensity distribution on texture-space in
stead of object-space. We are able to show that this
technique can generate complex underwater scene
with caustics at interactive time-rate.
The remainder of this paper is organized as
follows: Next section, we will briefly discuss the
related work. In section 3, a main concept of our
rendering strategy will be presented. Section 4 our
sample results are shown and then we gave the
conclusion and future work in section 5.
2 RELATED WORK
In the past few decades, many algorithms have been
developed to simulate global illumination effects
such as caustics. (Arvo, 1986; Jensen, 1996;
Guenther, 2004; Trendall, 2000; Wald, 2002;
Wyman, 2004) Even though these techniques can
render realistic caustics, they require long
computational time or require special hardware
setting. Recently, Shah et al. (Shah, 2005) presented
real-time caustics rendering algorithm based on
backward ray-tracing. In order to speed up the
algorithm, they created position texture and used it
to store 3D world coordinate of each object in the
scene, then, perform the intersection tests in the
image-space. The caustics pattern is rendered by
using point primitive. Though, the main concept of
their algorithm similar to our work, the whole idea
has so many differences in details. Besides, their
algorithm suffers from alias problem, just like any
other image-space algorithms.
There are several methods that developed for
underwater caustics rendering. Stam (Stam, 1996)
simulated underwater caustics by generating caustics
textures and mapping them onto objects in the scene,
Crespo (Crespo, 2004) has proposed a method that
was extended from this concept and implemented it
on programmable graphics hardware, although these
methods can simulate underwater caustics in real-
time, the results are not visually correct due to the
fact that they perform light intensity distribution
calculation on flat surface. Watt (Watt, 1990)
introduced underwater caustics rendering algorithm
using backward beam-tracing, which was extended
from the algorithm originally proposed by Heckbert
(Heckbert, 1984). Rather than tracing individual
light rays, the backward beam-tracing traces light
beam that emerge from light source and then refracts
them at each polygons of water mesh. The caustics
patterns are generated by accumulated light intensity
that each receiver polygons receives from each
participated light beam. Though the beautiful images
of underwater scene can be generated from this
algorithm, the computation time is also extremely
long. The main problem about beam-tracing based
caustics rendering algorithm is the intersection test
between light beam and diffuse receiver. Nishita and
Nakamae (Nishita, 1994) solved this problem by
subdividing light beam and using scan-line
algorithm to determine intersection point. Their
algorithm was then improved by Iwasaki et al.
(Iwasaki, 2002). In the following works, Iwasaki et
al. applied volume rendering technique to handle the
case where the observers are above the water
(Iwasaki, 2003). Their proposed method creates slice
image of each receiver object in which the caustics
pattern that cast on these objects can be depicted by
performing the intersection test of light beam on
these images. They continue working on this method
by presenting the extended algorithm for casting
caustics from arbitrary refractive medium (Iwasaki,
2005). By performing intersection test on the
collection of slice images instead of object mesh, the
computation time is greatly reduced. However, these
algorithms require large amount of texture
memories; as a consequence, they are not suitable
for using with complex scene.
To address this problem, our algorithm replaces
the usage of volumetric texture by using a pair of
color and depth texture. Our algorithm can display
refractive caustics due to water surface at interactive
frame-rate and requires much less memory usage
than the previously proposed beam-tracing based
interactive caustics rendering techniques.
3 RENDERING ALGORITHM
In this section we give a description of our new
algorithm. First we present the general idea of fast
intersection test by using a combination of depth
texture and reference planes (3.1). Next, we describe
how to render underwater scene with caustics. In this
step, the color texture then comes into play (3.2).
Finally, the discussion on rendering refracted
underwater scene is given (3.3).
GRAPP 2006 - COMPUTER GRAPHICS THEORY AND APPLICATIONS
424