Wish: Improve Viewport Performance



Just saw a video for Cinema 4D’s upcoming version 19, with incredible realtime viewport performance based on OpenGL. Meanwhile in Rhino5 any view mode other than Wireframe screetches to a halt under anything but the most basic geometry. Right now there seems to be zero support for instancing, a technology to speed up rendering of multiple copies of the same geometry in a scene. Loading a heavy scene (around 1Gb), with many instances of the same block:

  • in wireframe mode its fairly fluid, probably around 5 fps
  • changing to other view modes like shaded, ghosted, etc, first it has to mesh everything - which is probably where the instancing isnt happening - it slows down to something like 0.5 fps

(This is on a top of the range iMac with GTX780 4GB).

Opening the same scene in Maya its super fluid in any of the shading modes.

What I found is that if I launch an Octane Render Window, then hide everything in Rhino I get faster performance than the native viewport and thats doing unbiased raytracing!

So I dont know whats going on with the viewport renderer, but this is stuff that really should work. Every other 3D software has solved this.

Im not even asking for DoF and so on, but some basic fast OpenGL viewport, with realtime shadows and reflections, which supports instancing!

Thanks for considering.

(Wim Dekeyser) #2

Any reason why you are not testing this in Rhino 6?


Not using Rhino 6 since its not production ready. Were there significant changes made to the viewport rendering? Do you have a link with further information on what has been improved?


You might peruse V6 Goal: Display Performance .


Are you running this on Bootcamp or one of the virtual machines (Parallels or VM)?


Uh, nice. Seems like there has been quite some process. Especially intriguing “Just reporting that on heavy nurbs architecture models more than 300Mb in size, the display performance on the last WIP is more than 10 times better than in RH5 last SR”

Running using Bootcamp with Windows 10. But its the same on a PC with Windows 7 and a GTX 1070.

Also I didnt know about “Testmaxspeed” and just ran it for my scene: Wireframe = 17.66 sec (=5.6fps), Shaded = 327.4 sec (=0.3fps - just noticed a bug here, it probably shouldn’t autosave during testmaxspeed :smiley: ). The whole scene is 7.8 Million triangles according to Octane. 7.4 million of those come from 3 blocks that have about 280 triangles each, but is instanced around 8.000 times each in total (they are custom shaped bricks arranged in a certain pattern).

When I turn off the layer with the bricks (780.000 triangles) I get Wireframe = 1.44 sec (69fps), Shaded = 12.13 sec (8.24fps). So 8 fps for shading 800.000 triangles (I only give this as a guidance on how complex the scene is, actually 99% of the scene is native Rhino geometry not meshes).

So, the question would still be: Does Rhino 6’s viewport support instancing (at least of blocks, which are instances already). If so there should be minimal difference between the performance of the scene with the bricks on and with the bricks off, just like in other renderers that support instancing.

(Steve Baer) #7

Rhino 6’s block drawing is completely different than V5. We don’t specifically use OpenGL instancing as it doesn’t really fit well into logic of how Rhino’s display currently works. That said, we do use other techniques that hopefully improve frame rate. The only real way to tell if things have improved for your specific models and computer set up is to try the WIP and let us know where things appear to "slow down"


Thanks @stevebaer, I will get the latest WIP and let you know my findings.

So even in V6 instancing a block 10 vs 10.000 times will be x times slower? I feel especially in architectural models, which is mentioned in the post on the V6 Goal, true instancing would be of tremendous help, as using blocks and instances of those is the natural thing to do. What we are woking on now is still a relatively small project with low detail.