OpenSubDiv. Can we have this please ? (video in post)

i had asked ton when new features like open subdiv ,open vdb, ptex. would become available . his response was that they would come in the summer apart from open vdb which is an unfinished GSOC project. open vdb was released by dreamworks was being integrated into blender but i haven’t hear anything in months. i dont know why there isnt more publicity about upcoming tools, features ? developers probably dont want to get user too excited especially if working build is months away.
Developers probably don’t want people using there hard work to early to only complain about bugs and unfinished features.
this is my night time rant

I’ve tried it as well, very quickly.

It seems that a subsurf modifier is considered a regular subsurf when not at the bottom of the pile, and an OSD when at the bottom.

Having made 6 Suzannes subdivided to level 5, viewport had about 15 fps compared to 3 or so with regular SS on official 2.70. (I have a Q6600)

But things are still very crude: no smooth shading for instance, and a forced material.
No OpenCL/Cuda as well

I will try other things later !

Couple of interesting Q&A from Sergey, i wanted to understand better the displacement and last modifier in the stack topic.

Hi Sergey,amazing work here. Since one of the strongest point is to get displaced mesh at high fps while posing or playing animation as you showed, will a displacement modifier after SubSurf be supported? (while keeping the speed increase by GPU backend i mean)

Thank you.

Reply

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.

I’m a bit confused about the multires taking advantage of OSD, in the video he separated the two workflows quite clearly but here said is planned, definitely interesting though! Adaptive subdivision in conjunction with displacement for Cycles would be terrific too.

Another guy asked about semi sharp creases:

That’s impressive, thanks you so much for making Blender always better !
Will the crease edge control function be avaible with OpenSubdiv ? (to do hard surface modeling)

Reply

Yes, definitely. This is one of the main reasons why we’re integrating OSD into Blender.

All in all, amazing plans ahead.

Where can I read this full Q&A? Looks interesting!

It’s in the comment section :

What are semi sharp creases is there a functional difference with the current creasing system? The downside and the reason I don’t really use the current creasing system is that you end up sending a heavily tessellated mesh to the render engine (cycles) at render time and with vanilla Blender you suffer with the viewport because your mesh has to be heavily tessellated to see if you creases look right especially if you are not using creases of 1.

So I suppose OpenSubDiv will take care of the viewport and give more creasing options and Cycles will have to get render side sub division. Beveling can add a lot of faces to the derived mesh so some relief in that direction would be cool.

It’s just like teh current creasing system in blender at high subdivision levels… but because of adaptive resolution for the subdividing is less heavy…

similarly to teh discussions on displacement in this thread really…

it’s just a question of when do you subdivide and how cleverly do you do it?

ideally at render time (which means cycles using opensubdiv to adaptively tesselate your mesh… and ideally BI too!) and also feeding teh displacement of your shaders into the viewport representation so WYSISYG… which of course would mean the viewport respecting your shader node tree…

it would mean that to displace you’d set it up in the shader and not have to use teh displacement modifier…

then it would avoid having to send large amounts of data around…

I can’t wait to live in this world. :slight_smile:

It’s not only that, it also offers creasing options to make beveled creases. In today catmull-clark subdivision, even if you have 8 subdiv, if you crease an edge you always get a sharp edge, not a bevelled one. As far as I know (from what I understood on the original video), opensubdiv lets us control the crease and make a sharp-but-bevelled edge.

You can do that with creasing now, you don’t have to use a 100% crease.

The main things for me is to see efficient adaptive subdivision and displacements, both in the viewport and at render time. Displacements are a huge limitation in blender right now due to its inefficient method of handling it.

Unfortunately it’s looking like displacement won’t be in the original OSD implementation if I’m understanding things correctly. I believe in Maya it’s done as a DX11/OGL4 shader effect in the viewport, so until Blender joins this decade for OpenGL support we might be SOL, since copying CPU displacement to and from the GPU would kill any OSD benefits anyway.

Yeah, the main thing I hope shows up sooner rather than later is adaptive displacement in cycles. I can live without it in the viewport for a while. :slight_smile:

Camera based adaptive sub-division doesn’t go well with path tracers, that and the slowness of OpenSubDiv compared Arnold’s uniform subdivision where some of the reasons the Arnold guys gave for not having OpenSubDiv in Arnold.

source http://www.fxguide.com/featured/pixars-opensubdiv-v2-a-detailed-look/

Cycles is similar to Arnold so maybe the Cycles devs will run into the same issuses who knows.

Ultimately though cycles doing uniform subdiv at render time and the viewport doing adaptive subdivision would still be great as long as the displacement is the same for both…

Are they working on this? I see no new news. This Is the best development for Blender I have heard. It will cut so much time for me and my animations will be better. My last animation I rendered open GL so many times then go back and make changes. All the other developments for Blender sounds like fixes and tweaks to me.
How come it takes so long after they get it working. One developer made a morphing tool addon, showed us the animation he made with the script and planed to have the script for us in two weeks. That was 19 or 20 months ago and I believe he still plans to finish and has been working on it. I saw the video using Opensubdiv in Blender already but it is still so much work to finish. Why? You can answer but I probably will not understand unless you dummy it down.
Pixar likes it they use it. I say it is worth the trouble.
It seams to me very boring not to animate.

From the developer meeting a couple of days ago

  • Opensubdiv work by Sergey Sharybin is still on target for a Siggraph presentation (in 2 months).

Anyone had any luck getting this built recently? I get a few linker errors at the end of the build, seems to be linked to CUDA. Am I missing libs or something?

Since I haven’t been able to post uploads on graphicall (couple of days now, it no like me :p)
Thought I would post a link for OpenSubdiv build = Opensubdiv-Modifier_Win7.x64-4b58200
I’ll leave it up for a couple of days(till the E.R. Devs, operates on ga :p)

-:Edited:-
New build up on GA = Opensubdiv-Modifier_Win7.x64-7f35cc5

Cheers,
~Tung

Now that works. That is fast. I can up my subsurf 3 more levels and it is still faster.