Ray Tracing NURBS Surfaces using CUDA

More Info
expand_more

Abstract

Several approaches have been made towards directly ray tracing NURBS-surfaces without first tessellating the surface. Some of these approaches have been implemented on the GPU in order to achieve interactive rates. This thesis presents CNRTS, a CUDA-based system capable of ray tracing NURBS-surfaces. In this system, the surfaces are subdivided in a preprocessing step to better localize ray-patch intersections and to provide better initial seed-points for the root-finder to converge more quickly. For scene-traversal, two approaches have been investigated, a packet-based traversal scheme, employing a shared stack implemented using the GPU's fast on-chip memory. The second approach uses an optimized single-ray traversal scheme, in which the scene-traversal and root-finding are separated from each other, to help maximize the utilization during root-finding. The single-ray approach turns out to be up to three times faster than the packet-based approach. Furthermore, a hybrid approach has been used in tracing primary rays, by employing the rasterizer. Besides that only one ray-patch intersection test is required per ray, the initial seedpoints provided by the rasterization are very close. Using the hybrid approach, the performance will generally be increased. However, an artifact-free rendering is not always guaranteed, due to tessellation.