PixarAnimationStudios/OpenSubdiv: High-Performance Subdivision Surface Evaluation for CPU and GPU
An Open-Source subdivision surface library.
At a glance
- What is it?
- OpenSubdiv is a set of C++ libraries from Pixar Animation Studios that evaluate subdivision surfaces on massively parallel CPU and GPU architectures, producing limit surfaces that match Pixar's RenderMan to numerical precision. It is the reference implementation for Catmull-Clark and Loop subdivision and is used as a dependency by major 3D applications.
- Who is it for?
- OpenSubdiv is the right library for any C++ application that needs GPU-accelerated subdivision surface evaluation at interactive rates, particularly if matching Pixar's RenderMan output is a requirement. It is not suitable for projects that need a higher-level scene graph, a standalone viewer, or an embeddable scripting interface, since the library operates at the evaluation layer only.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Subdivision Surfaces Are and Who Needs This Library
Subdivision surfaces are a modeling technique in which a coarse control cage is refined by repeatedly splitting polygons according to a subdivision rule. The Catmull-Clark rule is the standard in production CG, producing smooth surfaces from any polygon mesh. At each refinement step the mesh grows in polygon count; the theoretical limit surface, obtained at infinite refinement, is a smooth continuous surface. Evaluating points on that limit surface efficiently is the core problem OpenSubdiv solves.
The library is designed for applications that draw deforming subdivision surfaces with static topology at interactive framerates. The primary users are 3D content creation applications, game engines, and rendering pipelines that need to display or render subdivision surfaces in real time or near-real time. OpenSubdiv is already used as a component inside production tools in the film and game industries. The README states that the library's limit surface matches Pixar's RenderMan to numerical precision, which is the benchmark that production pipelines care about.
Building the library from source requires C++17 and CMake 3.14 or later. The core OpenSubdiv libraries have no external dependencies beyond the C++ standard library. The optional OpenSubdiv::Osd library adds GPU and parallel CPU evaluation backends that each require their own external dependency.
Library Architecture: Far, Osd, and the Evaluation Backends
OpenSubdiv is split into several cooperating layers. The Far layer handles topology and subdivision table generation entirely on the CPU. It takes the input control cage, applies the subdivision scheme, and produces the data structures needed for evaluation. The Osd layer uses those structures to perform the actual point evaluation, and it supports multiple computational backends: OpenGL 4.1 or later, Metal 3 or later (for Apple platforms), CUDA 12.6, Intel TBB (oneTBB 2021.12.0 or later), OpenCL 1.1, and DirectX 11.
This separation means you can build OpenSubdiv with only the Far and CPU evaluation code and introduce GPU backends later without redesigning your integration. Each Osd backend is conditionally compiled; if the corresponding external SDK is not present at CMake configure time, that backend is excluded from the build. The build documentation at opensubdiv.org/docs/cmake_build.html describes which CMake flags control each backend.
The repository also includes interactive example viewers built on GLFW 3.3.3 and optional Ptex texture support via the Ptex 2.4.2 library. These examples are in the examples/ directory and include glViewer, farViewer, glEvalLimit, dxViewer, mtlViewer, and several others. They are optional; the core library builds without them.
Building OpenSubdiv from Source
All platforms start with cloning the repository and installing CMake and GLFW, then placing the GLFW installation in the expected directory structure:
${GLFW_LOCATION}/include/GLFW/glfw3.h
${GLFW_LOCATION}/lib/libglfw3.aClone the repository:
git clone https://github.com/PixarAnimationStudios/OpenSubdiv
cd OpenSubdivOn Linux with a minimal build (no Ptex, no docs, no OMP/TBB/CUDA/OpenCL):
cmake -B buildDir \
-D CMAKE_INSTALL_PREFIX=instDir \
-D NO_PTEX=1 -D NO_DOC=1 \
-D NO_OMP=1 -D NO_TBB=1 -D NO_CUDA=1 -D NO_OPENCL=1 -D NO_CLEW=1 \
-D "GLFW_LOCATION=/path/to/glfw" \
-S .
cmake --build buildDir --config Release --target installOn Windows with Visual Studio the same flags apply but the generator changes:
cmake -B buildDir ^
-D CMAKE_INSTALL_PREFIX=instDir ^
-G "Visual Studio 16 2019" -A x64 ^
-D NO_PTEX=1 -D NO_DOC=1 ^
-D NO_OMP=1 -D NO_TBB=1 -D NO_CUDA=1 -D NO_OPENCL=1 -D NO_CLEW=1 ^
-D "GLFW_LOCATION=C:\path\to\glfw" ^
-S .
cmake --build buildDir --config Release --target installOn macOS, substitute -G Xcode for the generator. The full build documentation including iOS cross-compilation is at opensubdiv.org/docs/cmake_build.html.
The GPU Backend Trade-offs and Supported APIs
OpenSubdiv's design separates the subdivision table computation (CPU, always available) from the evaluation step (CPU or GPU, depending on the selected backend). The GPU backends exist because evaluation of a deforming mesh requires recomputing surface positions every frame, and doing that on the CPU for a dense mesh is the bottleneck at interactive framerates.
Each backend has different platform availability. CUDA is available on NVIDIA GPUs on Linux and Windows; it is not supported on macOS. Metal is the Apple-specific path for Apple Silicon and Intel Macs. OpenGL 4.1 works on Linux and macOS and on Windows via driver support. DirectX 11 targets Windows only. OpenCL is supported but listed as optional with version 1.1 as the minimum. TBB provides CPU parallelism via Intel's oneTBB 2021.12.0 or later.
For game engine or real-time renderer integration, the most important choice is between the OpenGL and the platform-native graphics API backends. Applications that already use Metal on Apple platforms will want the Metal backend; applications targeting Windows with DirectX will use the DirectX 11 backend. The README does not document performance comparisons between backends; the community benchmarks section in related repositories is the source for that information.
3ds Max OpenSubdiv vs TurboSmooth: The Key Difference
3ds Max includes both OpenSubdiv and its own TurboSmooth modifier as subdivision tools. The fundamental difference is algorithmic lineage and output compatibility. TurboSmooth is a Max-specific implementation of Catmull-Clark subdivision designed for the viewport and final render within 3ds Max. OpenSubdiv in Max connects the modeler to the same numerical subdivision kernel used in Pixar's pipeline, so a mesh subdivided in Max using OpenSubdiv will evaluate identically to the same mesh processed by RenderMan or other OpenSubdiv-based renderers.
This matters in pipelines that exchange assets between Max and a VFX rendering environment that uses OpenSubdiv natively. TurboSmooth can give different results at boundaries, on extraordinary vertices, and in how crease weights are handled, which means a mesh that looks correct in the Max viewport with TurboSmooth may render differently in a RenderMan or Arnold pass. If cross-application consistency is a requirement, OpenSubdiv is the correct modifier to use.
For standalone users working entirely within 3ds Max with no pipeline integration, TurboSmooth's established workflow and slightly different look may be preferred. The choice is a pipeline question, not a quality question.
License, Maintenance Status, and the NOASSERTION Flag
The repository's license is listed as NOASSERTION, which means GitHub's license detection could not categorize it automatically. The repository includes a LICENSE.txt file and a NOTICE.txt file, both of which should be read before distributing or embedding OpenSubdiv. The actual license terms are in those files, not in the GitHub-detected label.
The last push was on 2026-09-26, two days before the current date. The project builds on Azure Pipelines, with separate CI runs for the dev and release branches on Linux, Windows, and macOS. The repository structure includes two CLA files for corporate and individual contributors, indicating an active contribution process.
OpenSubdiv occupies a well-defined niche in the C++ 3D graphics ecosystem. There is no other open-source library that matches its combination of RenderMan-compatible subdivision output, multi-backend GPU evaluation, and production validation by Pixar. The cost is integration complexity: it is a low-level evaluation library with no scene graph, no asset format support, and no scripting interface. Applications that need all of that around it must build it themselves or use a 3D framework that already integrates OpenSubdiv.
Editorial conclusion
OpenSubdiv is the right library for any C++ application that needs GPU-accelerated subdivision surface evaluation at interactive rates, particularly if matching Pixar's RenderMan output is a requirement. It is not suitable for projects that need a higher-level scene graph, a standalone viewer, or an embeddable scripting interface, since the library operates at the evaluation layer only. Before integrating it, verify that your target platform's GPU API is listed among the supported Osd backends and check the CMake build documentation at opensubdiv.org for the exact version requirements of each optional dependency.
Frequently asked questions
3ds max opensubdiv vs turbosmooth: which should I use?
OpenSubdiv in 3ds Max produces results numerically identical to Pixar's RenderMan and other OpenSubdiv-based renderers, making it the right choice for pipeline consistency across VFX tools. TurboSmooth is Max-specific and may evaluate boundary and crease cases differently. For pipelines that exchange assets between 3ds Max and RenderMan or Arnold, OpenSubdiv is the correct modifier.
What external dependencies does OpenSubdiv require to build?
The core libraries require only C++17 and CMake 3.14 or later. GPU backends add per-platform dependencies: OpenGL 4.1, Metal 3, CUDA 12.6, oneTBB 2021.12.0, OpenCL 1.1, or DirectX 11. The interactive example viewers also need GLFW 3.3.3 and optionally Ptex 2.4.2.
Which platforms does OpenSubdiv support?
The README documents CI testing on Linux, Windows, and macOS for both the dev and release branches. iOS is also described in the build documentation, using CMake cross-compilation with CMAKE_SYSTEM_NAME=iOS. GPU backend availability varies by platform: CUDA is not supported on macOS, and Metal is Apple-specific.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/pixaranimationstudios-opensubdiv)