Section: New Results
We continued our work on Geometry Processing with the strategy of considering all the three levels of abstraction in parallel, namely formalization (specification using functional analysis and topology), discretization (relations between the continuous problem and discretized linear models), and finally implementation (how to implement efficient solvers for these linear problems using modern hardware). This year's realization for these three levels of abstraction are described in the following three paragraphs.
Formalization: Vector and direction field processing
Many algorithms in texture synthesis, non-photorealistic rendering (hatching), or re-meshing require defining the orientation of some features (texture, hatches or edges) at each point of a surface. This is also the case of the quad-remeshing algorithms that we developed (  and  ). In early works, tangent vector (or tensor) fields were used to define the orientation of these features. Extrapolating and smoothing such fields is usually performed by minimizing an energy composed of a smoothness term and of a data fitting term. Those approaches allow smoothing existing fields such as the direction of the curvature, to interactively introduce directional constraints, but fail to control the topology of the resulting field.
We have proposed a structure called N-symmetry direction fields  that explicits the field topology by a set of integer variables. This allows to design direction fields with directional constraints that always respect the user-prescribed topology. This set of variables corresponds to the coefficients of a co-homology basis of the field rotation. On the one hand, controlling the topology makes it possible to have few singularities, even in the presence of high frequencies (fine details) in the surface geometry. On the other hand, the user has to explicitly specify all singularities, which can be a tedious task.
From a user point of view, a better direction field design algorithm would offer the possibility of letting the singularities emerge naturally from the direction extrapolation and smoothing (as it was done in previous approaches), but would also provide some control over the topology. We have proposed such a weak control of the topology by smoothing "the influence of the geometric details onto the emergence of singularities". The idea here is to restate the objective function such that the optimization algorithm does not try to minimize the part of the field curvature that is due to the Gaussian curvature of the surface. Some results are shown in Figure 5 . This work is accepted pending revision in ACM Transactions on Graphics.
Discretization: Mesh data structures
With the increasing importance of numerical optimization in geometry processing, matrix algebra is becoming central to many applications in the field. Unfortunately, this importance does not translate into new approaches for the conception and realization of algorithmic solutions which still rely on classical mesh traversal data structures. This often leads to unnecessary duplication of data and redundancy in operations as several data structures need to work in concert. We advocate that sparse matrix data structures can play a key role both in mesh traversal and numerical computing on surfaces. In this way, parallelism for mesh processing comes at no additional cost as it can take advantage of readily available parallel matrix packages. Furthermore, we demonstrate that the functionality of classical mesh data structures can be recovered using sparse matrix algebra. Thinking within the sparse matrix formalism often offers an elegant and fast alternative for performing geometric computations on surface meshes.
Implementation: Numerical solvers on the GPU
In the frame of the Ph.D. of Luc Buatois, we continued working on efficient parallel numerical solvers on the GPU. We generalized our CNC implementation ( Concurrent Number Cruncher ), based on the CUDA programming language for NVidia GPUs, as explained in our publication  . The CNC is a highly optimized parallel sparse conjugate gradient solver, that uses the sparse block compressed row column format to make an optimum use the the GPU's memory. To our knowledge, this is the first general purpose sparse linear solver for Graphics Processing Units. We successfully applied it to geometry processing problems (mesh fairing and mesh parameterization). Our CNC outperforms by up to a factor of 10x leading-edge CPU implementations of the same algorithms for significant sizes of linear systems. The implementation is available as an OpenSource package. Luc Buatois defended his Ph.D. this year  , including this result and previous ones on the visualization of unstructured grids.