{"id":8737,"date":"2013-01-05T00:00:11","date_gmt":"2013-01-04T22:00:11","guid":{"rendered":"http:\/\/hgpu.org\/?p=8737"},"modified":"2013-01-05T00:00:11","modified_gmt":"2013-01-04T22:00:11","slug":"approximate-subdivision-surface-evaluation-in-the-language-of-linear-algebra","status":"publish","type":"post","link":"https:\/\/hgpu.org\/?p=8737","title":{"rendered":"Approximate Subdivision Surface Evaluation in the Language of Linear Algebra"},"content":{"rendered":"<p>We present an interpretation of approximate subdivision surface evaluation in the language of linear algebra. Specifically, vertices in the refined mesh can be computed by left-multiplying the vector of control vertices by a sparse matrix we call the subdivision operator. This interpretation is rather general: it applies to any level of subdivision, it holds for many common subdivision schemes (including Catmull-Clark and Loop), it can be extended to support hierarchical edit operations, and it subsumes sharpness and feature-adaptive schemes. Furthermore, our interpretation encourages high-performance implementations built on numerical linear algebra libraries. It is most applicable to subdivision of static control meshes undergoing deformation, i.e. animation, in which case it allows users to trade-off time-to-first-frame and framerate. We implemented our strategy as an extension to Pixar&#8217;s production subdivision code and observed speedups of 2x to 14x using both multicore CPUs and GPUs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We present an interpretation of approximate subdivision surface evaluation in the language of linear algebra. Specifically, vertices in the refined mesh can be computed by left-multiplying the vector of control vertices by a sparse matrix we call the subdivision operator. This interpretation is rather general: it applies to any level of subdivision, it holds for [&hellip;]<\/p>\n","protected":false},"author":351,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[180,11,89,3],"tags":[1797,1782,14,333,37,20,379,421],"class_list":["post-8737","post","type-post","status-publish","format-standard","hentry","category-3d-graphics-and-realism","category-computer-science","category-nvidia-cuda","category-paper","tag-3d-graphics-and-realism","tag-computer-science","tag-cuda","tag-image-generation","tag-linear-algebra","tag-nvidia","tag-nvidia-geforce-gtx-480","tag-sparse-matrix"],"views":2161,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/8737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/users\/351"}],"replies":[{"embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8737"}],"version-history":[{"count":0,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/8737\/revisions"}],"wp:attachment":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}