Subdivision Surface Evaluation as Sparse Matrix-Vector Multiplication

We present an interpretation of subdivision surface evaluation in the language of linear algebra. Specifically, the vector of surface points can be computed by left-multiplying the vector of control points by a sparse subdivision matrix. This “matrix-driven” interpretation applies to any level of subdivision, holds for many common subdivision schemes (including Catmull-Clark and Loop), supports limit surface evaluation, allows semi-sharp creases, and complements feature-adaptive optimizations. It is primarily applicable to static meshes undergoing deformation (i.e. animation), in which case the subdivision matrix is invariant over time and the surface can be evaluated at each frame with a single sparse matrix-vector multiplication (SpMV). We describe techniques for building subdivision matrices on-the-fly using the recursive definition of the subdivision scheme and sparse matrix-matrix multiplication (SpMM) routines. The performance of our approach thus reduces to that of SpMV and SpMM, both of which have been studied extensively and are available in common packages for numerical linear algebra. We implemented our approach as an extension to Pixar’s OpenSubdiv library using routines from Intel’s Math Kernel Library and Nvidia’s CUSPARSE library to target multicore CPUs and GPUs, respectively. We present performance results from off-the-shelf routines and our own “SpMV-like” routines that achieve 1.7-4.8x better performance than existing techniques on both platforms.We conclude by describing two major limitations of matrix-driven evaluation, namely difficulty computing vertex normals and complications in the presence of hierarchical edits, and suggest workarounds for both.

[1]  Jörg Peters,et al.  A realtime GPU subdivision kernel , 2005, SIGGRAPH 2005.

[2]  Tony DeRose,et al.  Feature-adaptive GPU rendering of Catmull-Clark subdivision surfaces , 2012, TOGS.

[3]  Peter Schröder,et al.  Rapid evaluation of Catmull-Clark subdivision surfaces , 2002, Web3D '02.

[4]  Jos Stam,et al.  Exact evaluation of Catmull-Clark subdivision surfaces at arbitrary parameter values , 1998, SIGGRAPH.

[5]  Katherine Yelick,et al.  OSKI: A library of automatically tuned sparse matrix kernels , 2005 .

[6]  Charles T. Loop,et al.  Approximating subdivision surfaces with Gregory patches for hardware tessellation , 2009, ACM Trans. Graph..

[7]  Tony DeRose,et al.  Efficient, fair interpolation using Catmull-Clark surfaces , 1993, SIGGRAPH.

[8]  Charles T. Loop,et al.  Smooth Subdivision Surfaces Based on Triangles , 1987 .

[9]  J. Clark,et al.  Recursively generated B-spline surfaces on arbitrary topological meshes , 1978 .

[10]  Samuel Williams,et al.  The Landscape of Parallel Computing Research: A View from Berkeley , 2006 .

[11]  Tony DeRose,et al.  Subdivision surfaces in character animation , 1998, SIGGRAPH.

[12]  Michael Garland,et al.  Implementing sparse matrix-vector multiplication on throughput-oriented processors , 2009, Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis.

[13]  E. Catmull,et al.  Recursively generated B-spline surfaces on arbitrary topological meshes , 1978 .

[14]  John R. Gilbert,et al.  Parallel Sparse Matrix-Matrix Multiplication and Indexing: Implementation and Experiments , 2011, SIAM J. Sci. Comput..

[15]  Timothy A. Davis,et al.  Direct Methods for Sparse Linear Systems (Fundamentals of Algorithms 2) , 2006 .

[16]  Samuel Williams,et al.  Optimization of sparse matrix-vector multiplication on emerging multicore platforms , 2007, Proceedings of the 2007 ACM/IEEE Conference on Supercomputing (SC '07).

[17]  Scott Schaefer,et al.  Approximating subdivision surfaces with Gregory patches for hardware tessellation , 2009, SIGGRAPH 2009.

[18]  Tony DeRose,et al.  Piecewise smooth surface reconstruction , 1994, SIGGRAPH.

[19]  Jörg Peters,et al.  A realtime GPU subdivision kernel , 2005, SIGGRAPH '05.