In rasterization, objects which are further away are smaller and usually representations with lesser detailed geometry are used to keep the performance. Levels-of-Detail (LOD) of meshes are computed automatically in order to achieve this goal,.or hand-crafted by artists for importance weighting of salient features within a triangle budget.
LOD creation can be done fast but then requires additional space in memory. We want to render arbitrary LOD from a single data structure on-the-fly, adapted to screen size, and for that augment an existing octree structure with pre-calculated importance weighting and screen-space weights, e.g. for foveated rendering in VR.
Here is source code (and link to paper) for creating an isovalue octree from a mesh: http://www.cs.jhu.edu/~misha/Code/IsoOctree/#DESCRIPTION as a base.
What do students have to do?
- Familiarize with IsoOctree source code, identify the edge intersection computation which yields the vertices of the mesh-to-compute.
- Project all octree nodes which are determined as 'relevant' by a function, depending on size of projected octree node on screen, importance of node, and position on screen for VR devices) until not any more visible (does not subdivide further then.
- Stop traversal at relevant nodes, determine their edge intersections and forward these to the marching cubes method for generating triangles.
- Evaluation on run-time and image quality, compared with rendering the pre-computed full triangulation.
- Optimize: Instead of converting the relevant subset of the octree to a mesh and render the triangles, cast rays for all pixels of the top octree node as rendered on screen, 3D-DDA ray traverse through octree until relevant node is reached, then convert that node into triangles/fragments (eliminates occluded and back facing surface regions) - this can be implemented in parallel in CUDA.
- Write up thesis (for praktikum a small report) explaining what you implemented and the results, with some graphs and pictures.
- Knowledge of English language (source code comments and final report should be in English)
- Knowledge of C++, CUDA or shader programming and good optimizing skills are advantageous, but not necessary
C/C++ and CUDA, platform-independent
A bonus of €1000 if completed to satisfaction within an agreed time-frame of 1 year (master thesis) or €500 within 6 months (bachelor thesis, praktikum).