Opensubdiv 3 released by Pixar


OPENSUBDIV VERSION 3.0 RELEASEDPixar Animation Studios and DreamWorks Animation announced today the release of OpenSubdiv version 3.0| pixar | dreamworks | product

Pixar Animation Studios and DreamWorks Animation announced the release of OpenSubdiv version 3.0, the popular subdivision surface library. This joint effort by the studios’ graphics R&D teams brings improved performance and reduced memory consumption, while continuing to leverage the massive parallelism available on modern GPU and CPU architectures.

OpenSubdiv 3.0 takes a bold step forward with a near complete rewrite of the library, greatly improving performance and simplifying the API.

“We learned a lot of lessons from OpenSubdiv 2.0, in terms of design, performance, and especially the importance of usability,” said Jeremy Cowles, GPU team lead at Pixar. “We want OpenSubdiv to be efficient, flexible, and approachable, not just for large¬scale integrations, but also for smaller projects, students and studio R&D¬¬with 3.0, we’ve taken huge steps in the right direction for everyone.”

The deep changes to the library have also yielded new levels of performance not previously achievable: GPU subdivision performance has been improved by a factor of 4x, while the core CPU subdivision algorithms have been improved by an order of magnitude, a 10x speedup.

Thanks to a revamp and simplification of the GPU shader architecture, screen¬space feature adaptive tessellation in OpenSubdiv 3.0 is faster, simpler and now fits well into any existing rendering architecture, a huge improvement for DCCs and game engines.

More information about the release can be found at the official OpenSubdiv website:http://www.opensubdiv.org

Article here

Cant wait to see it in blender :slight_smile:

For a little more indepth description as to whats new in OSD 3 – http://graphics.pixar.com/opensubdiv/docs/intro_30.html

Uh… how far along was the OSD 2 implementation? Does this mean that needs to be scrapped and restarted? Or does it mean Blender just won’t get OSD3? Does it mean OSD is getting bumped off the release targets again? None of the above (hopefully)?

from the documentation:

OpenSubdiv 2.x and earlier was limited to dealing with meshes whose topology was manifold – a limitation imposed by the use of Hbr. With 3.0 no longer using Hbr, the manifold restriction has also been removed.

YES!!

The reason, IIRC, that we don´t have OSD in Blender already is that it was decided to wait for OSD3, since it was a fairly big rewrite and would have caused unnecessary work.

I think I read somewhere that Lukas Tönne had been brought in to work on it with Sergey? Might be a good chance they have a working preview by SIGGRAPH, but don´t quote me on that, I´m not a developer :stuck_out_tongue_winking_eye:

One thing to note is that it apparently requires OGL4+ (Time to upgrade my ancient rig…)

Oh right. OSD3 is the one they were waiting for.

/me was confus for a minute there

I have the impression i heard the same thing about OSD 2.x? :confused:

Lukas merged master branch into OpenSubdiv-modifier but just that AFAIK, reading from the commit logs.

Let’s see if this so called ‘Project X’ from Sergey is related to OSD or something different.

“screen-space feature adaptive tessellation” is the part I am interested in…

Does OpenSubDiv include subsurf edge weighting, like what you get in Modo and Maya, or is that something else entirely?

there is already something like that. select an edge shift+e

with Opensubdiv it will be faster I guess.

Unless is outdated, this is what we’d get. So yes, edge creases as well.

General Information

This project is about switching Blender’s Subdivisions Surface modifier to use OpenSubdiv library in order to reach the following main benefits:

  • Proper support of edge creases
  • GPU-side realtime tessellation of hires mesh
  • [probably] Feature-adaptive subdivisions

What to expect

Here’s list of the major improvements which one might expect when the project is fully finished (those features are not gonna to be implemented in a single chunk, some of them are rather really tricky):

  • Better creases support
  • Higher framerate in viewport animation when having animated characters (for sure in cases when their modifier stack allows this to have)
  • Real-time character posing
  • Real-time deformation modifications in the edit mode

Don’t forget micro displacement !

Yeah, I’ve glanced at that, but like every edge weight setup I’ve used (regardless of the program), it’s something that works great for some things, not so great for others. Pixar edge weights produce finer and more predictable results from what I’ve seen of it, acting more like proper edge constraints, but without the burden of having to deal with all the extra geometry.

@Hadriscus - It’s not a list of mine, it’s an official wiki doc from Sergey so if it’s not mentioned i’m not sure. Though when i asked him about displacement modifier on top of OSD modifer (and keep OSD performance) in the code blog, he said:

Short question is: it’s complicated.You can not do it by applying displacement modifier on top of the SS. Displacement is a CPU-side modifier and copying hi-res mesh back-n-from to GPU in order to apply displacement is the last thing you’d want to do. Such copy would kill all the performance.
But i plan to make multires fully benefit from OSD, and you’ll have high frame rate with this modifier.
In the future we might port more modifiers on the GPU, but no ETA at all for this.
And for sure you can make lo-res displacement and tweak it further with normal or displacement maps. This should be good enough for viewport preview and for Cycles i think something like adoptive subdivisions with displacement map would make you happy. No ETA for this as well tho.

Do note “i plan to make multires fully benefit from OSD”, while in the wiki doc, sculpting and Multires are not a possible goal:

OpenSubdiv only gives speed up when deformations are happening on the low-res mesh. This means that for sculpting it’ll be only benefit in cases when one does sculpting on the base mesh and does have subdivision surface modifier enabled for sculpting.
There’s ll be no speed differences when sculpting on multiresolution mesh. This is because sculpting only updates displacements applied on top of the subdivided mesh in this cases, no re-evaluation of the subdivided mesh is currently involved into multires sculpting at this moment.

So the topic is still really confusing to me.

Yeah that makes sense even to a layman… now what I had understood from previous anecdotes was that shader-based displacement would be easier to implement on top of OSD (so, not the displacement modifier).

Wait so I am confused now - can we with openSubdiv get shader based displacements similar to like in Renderman?
And if yes, how fine could it be? I am curious if the same would be possible in Blender such as one polygon being as big as a screen pixel or is that just only possible with REYES engines?

I think everything is possible… we just need guys like sergey…

one of the intentions behind Pixar open sourcing the subdivs was to get all the 3d apps using it. One of the huge benefits of this would allow you to use open subdivs with creasing with any app in any pipeline and the results will be predictable.

That is so true. I work a lot in CAD where you can use SubD as well and 99% you can only crease or not crease but not crease a little. So stupid …

It’s looking like Pixar’s plan is working too. Soon ALL the 3d apps will have opensubdiv implemented, which means a blender model with creases can be exported to maya, for example, and when it renders there it will render with all of the creasing information intact. This is HUGE if someone wants to model in blender and incorporate those models into another non-blender pipeline.

It’s not there yet, but soon it will be. The future’s looking bright! :slight_smile: