## Section: New Results

### Pixel-exact rendering for high-order meshes and solutions

Participants : Adrien Loseille [correspondant] , Rémi Feuillet, Matthieu Maunoury.

Classic visualization software like ParaView [64], TecPlot [88], FieldView [60], Ensight [42], Medit [50], Vizir (OpenGL legacy based version)
[67], Gmsh [57], ...historically rely on the display of linear triangles with linear solutions on it. More precisely, each element of the mesh is divided into a set of elementary
triangles. At each vertex of the elementary triangle is attached a value and an associated color. The value and the color inside the triangle is then deduced by a linear interpolation inside the triangle. With the
increase of high-order methods and high-order meshes, these softwares adapted their technology by using subdivision methods. If a mesh has high-order elements, these elements are subdivided into a set of linear
triangles in order to approximate the shape of the high-order element [93]. Likewise, if a mesh has a high-order solution on it, each element is subdivided into smaller linear triangles in order to
approximate the rendering of the high-order solution on it. The subdivision process can be really expensive if it is done in a naive way. For this reason, mesh adaptation procedures
[80], [70], [71] are used to efficiently render high-order solutions and high-order elements using the standard linear rendering approaches. Even when optimized these approaches do have a
huge RAM memory footprint as the subdivision is done on CPU in a preprocessing step. Also the adaptive subdivision process can be dependent on the palette (*i.e.* the range of values where the solution is studied)
as the color only vary when the associated value is in this range. In this case, a change of palette inevitably imposes a new adaptation process. Finally, the use of a non conforming mesh adaptation can lead to a
discontinuous rendering for a continuous solution.

Other approaches are specifically devoted to high-order solutions and are based on ray casting [75], [76], [78]. The idea is for a given pixel, to find exactly its color. To do so, for each
pixel, rays are cast from the position of the screen in the physical space and their intersection with the scene determines the color for the pixel. If high-order features are taken into account, it determines the color
exactly for this pixel. However, this method is based on two non-linear problems: the root-finding problem and the inversion of the geometrical mapping. These problems are really costly and do not compete with the
interactivity of the standard linear rendering methods even when these are called with a subdivision process unless they are done conjointly on the GPU. However, synchronization between GPU and `OpenGL` buffer are
non-trivial combination.

The proposed method intends to be a good compromise between both methods. It does guarantee pixel-exact rendering on linear elements without extra subdivision or ray casting and it keeps the interactivity of a classical method. Moreover, the subdivision of the curved entities is done on the fly on GPU which leaves the RAM memory footprint at the size of the loaded mesh.