Abstract
We present a novel method for real-time rendering of subdivision surfaces whose goal is to make subdivision faces as easy to render as triangles, points, or lines. Our approach uses the GPU tessellation hardware and processes each face of a base mesh independently and in a streaming fashion, thus allowing an entire model to be rendered in a single pass. The key idea of our method is to subdivide the $u,v$ domain of each face ahead of time, generating a quadtree structure, and then submit one tessellated primitive per input face. By traversing the quadtree for each tessellated vertex, we are able to accurately and efficiently evaluate the limit surface. This yields both a more uniform tessellation pattern on the surface, and faster rendering, as fewer primitives are processed by the hardware pipeline. We evaluate our method on a variety of assets, and obtain a runtime performance that is up to three times faster than state-of-the-art methods. In addition, our streaming formulation makes it easier to integrate subdivision surfaces with application and shader code written for polygonal models. We demonstrate integration of our technique into a full-featured video game engine.