Traçado de raios para superfícies de Bézier em GPU - FELIPE MACHADO DA SILVA (2025)
Parametric surfaces are surface representations defined by basis functions that interpolate a predetermined set of points located on the space, called control points. Tridimensional objects with a curved silhouette and round borders are represented with greater fidelity by parametric surfaces compared to triangle meshes. Thus, they are widely used in computer-aided design (CAD) and the animation industry. Lately, they have been studied in the context of isogeometric analysis. Given the importance of being able to visualize these representations, this work aims to use the ray tracing algorithm to synthesize images of scenes containing objects comprised of Bézier surfaces, also called Bézier patches, a classical parametric surface type. Since it is possible to extract Bézier patches from surfaces like NURBS, T-Spline, and Catmull-Clark subdivision surfaces by utilizing a Bézier extraction operator defined by a matrix, the Bézier patch ray tracer can be extended to operate on these surface types. The ray tracer was implemented for GPU, using CUDA, aiming to harness the parallel computation power of its many available cores, and it was also implemented for CPU, for comparison purposes. Adaptations for running the program in GPU have been described, including stackless acceleration structure traversal. Two intersection methods between a light ray and a Bézier patch have been implemented: recursive subdivision and Bézier clipping. Performance tests have shown that GPU ray tracing using Bézier clipping as a ray/patch intersection technique was, at least, eight times faster than the CPU implementation.