Fabrice
NEYRET -
Maverick team, LJK, at INRIA-Montbonnot
Sylvain
LEFEBVRE - Alice team, Loria
Joelle
THOLLOT –
Maverick team, LJK, at INRIA-Montbonnot
Various approaches exist to describe textures: simple painting, procedural noise (e.g. Perlin noise), example-based resynthesis, Fourier-based… Among them, Gabor noise [Gab1][Gab2] gathers various advantages: it can be evaluated procedurally, it reproduces Fourier properties, still it can be applied on curve surfaces, possibly in real-time, and is compatible with local modulations.
We proposed an extension [Gab3] solving some issues of all Fourier-inspired textures and opening many new possibilities. While our operations can trivially be done in Fourier space, this would limit the use to flat plain and doesn’t allow local modulation. To operate on surfaces and apply local modulations these Fourier operations must be replaced by their spacial filtering counterparts. But a naïve implementation would lead to massive evaluation of noise samples, which are costly. It is thus necessary to rely on a data structure to cache and factor the filtering operations on procedural noise (for instance, the normalizations are generally at lower frequency than the texture).
The main purpose of this engineering subject is to develop a tool to allow some efficient on-the-fly filtering and normalization operations for procedural noise on surface (Gabor first, then any other), then to adapt the various filtering operators of our extension [Gab3].
A key aspect is the caching data structure, octrees being a
classical possibility [Octree]. Since compatibility with the
real-time applications is important, we aim at a GPU-based
interactive tool with on-board data structure. Still, this tools
might also be used to generate more complicated patterns at slower
rate, since space-wise generation is also interesting for offline
applications.
As a base, GPU-based libraries and codes used
from the previous work are available.
General culture in Computer Graphics ( textures, proceduralism, Perlin noise ) and Maths ( Fourier, signal processing )
C/C++, data structures (3D grids, trees...),
a GPU language (e.g.: GLSL, CUDA, OpenCL, …) and OpenGL would be a plus.
→ Tell us about the school or personal projects you already did !
[Gab1]: Procedural Noise using Sparse Gabor Convolution
[Gab2]: NPR Gabor Noise for Coherent Stylization
[Octree]: Octree textures – our team works on many variant from this base: SL1, SL2, GigaVoxels