Fabrice NEYRET & Cyril CRASSIN - ARTIS team, LJK, at INRIA-Montbonnot, Grenoble, FRANCE
Nowadays CG scenes are very complex, not only in special effects
but also in games. On one side, scenes can be landscape-wide or more.
On the other side, the details of CG models can go up to several
dozen of triangles per pixel, and complex materials such as fur,
hair, foliage, requires many triangles. How to render them
efficiently and avoid aliasing ? Voxels have many advantages, such as
ordered traversal during rendering (only useful stuff considered),
trivial very decent LOD through MIPmap (how do you average triangles
in a foliage ?). Special effect companies such Digital Domain or
Rhythm&Hues now extensively use voxels engines, for
semi-transparent objects such as clouds, avalanches, tornado or
explosions, but also for complex solid objects. But the required
memory is so huge that the rendering is still slow. Several gaming
companies are also looking into voxel engines to deal with ever more
complex scenes (see John
To solve these issues, our team developed the Gigavoxel framework: a very powerful voxel engine based on GPU ray-casting, with advanced memory management (on demand production of visible blocks of voxels, caching), so that very complex scenes can be rendered in real-time (see videos). Our purpose is to complete and generalize this framework.
There are many directions in which we want to extend the framework, in order to offer most of the functionalities graphists expect to design whole scenes made of several possibly animated objects:
Instancing of volumes (e.g. trees in forest) that can overlap: how to raytrace overlapping volumes ?
FFD-deformation of volumes (e.g. grass under the wind): how to raytrace curve rays ?
How to produce efficiently a block of voxels from a mesh ? From a procedural texture such as 3D Perlin noise ?
These key features will permit the management of even more ambitious complex animated scenes such as endless detailed forests, animation with wind, animation of voxel-modeled characters (with details defined by shell maps or volume textures), hypertexture blob-based animation (for clouds, avalanches, smoke), etc.
Notions of GPU programming (especially on CUDA) would be a serious plus, but these can be learn easily during the practice (if long enough).
cf links along the text.