New V6 Display Faster: GPU Tessellation

When a big plane (Vray ground plane) is added to the scene and with GPU Tesselation I get that


and normal render without GPU tesselation
To recreate this
File new : Large Objects - Meters.3dm
Plane
-5000,-5000
5000,5000

OPENGL
NVIDIA Corporation
Quadro K1000M/PCIe/SSE2
OpenGL version: 4.5.0 NVIDIA 376.84
Render version: 4.5
Shading Language: 4.50 NVIDIA
Driver Date: 2-6-2017
Driver Version: 21.21.13.7684

Maximum Texture size: 16384 x 16384
Z-Buffer depth: 24bits
Maximum Viewport size: 16384 x 16384
Total Video Memory: 2 GB

I need a lot of curves in the scene to have a really noticeable speed difference, but it is there on my system (2x 970), and I don’t see any issues so far with the tessellation being too rough.

I do see something right now where, I have a file that does have a large number of very dense surfaces, in which I normally have surface isocurves turned off, and it fails to show the isocurves with GPU tesselation on. I’m not sure if it’s a problem of ‘too many’ curves or just a bug about knowing to display them somehow, I’ve tried splitting the scene up and it’s maybe the latter.

I wonder if you are seeing this bug (which I’m fixing today)
https://mcneel.myjetbrains.com/youtrack/issue/RH-39201

Ah that does look like it yes, the isocurves appear if I drag the objects. And the speedup is dramatic, testmaxspeed of 25 seconds vs 2.

Great! I should have this one fixed before the next WIP is released. Nothing like a 10x performance boost. Thanks for testing.

A post was split to a new topic: Display Switches to Wireframe

Hi Steve,

Tested this today and I get a decrease in speed.

Without GPU tesselation:
Time to regen viewport 100 times = 1.20 seconds.

With GPU tesselation:
Time to regen viewport 100 times = 2.13 seconds.

I see my drivers are old. I’ll try an update and see what happens.

EDIT: updated drivers still slower with GPU tesselation.

Rhino 6 SR0 2017-5-3 (Rhino WIP, 6.0.17123.9201, Git hash:master @ 41d6fb77f67992abaf1596eae935e6d81dcbd076)

Windows 8.1 (Physical RAM: 32Gb)

AMD Radeon(TM) HD8970M (OpenGL ver:4.5.13474 Compatibility Profile Context 22.19.162.4)

OpenGL Settings
  Safe mode: Off
  Use accelerated hardware modes: On
  Redraw scene when viewports are exposed: On
  
  Anti-alias mode: 4x
  Mip Map Filtering: None
  Anisotropic Filtering Mode: None
  
  Vendor Name: ATI Technologies Inc.
  Render version: 4.5
  Shading Language: 4.50
  Driver Date: 3-23-2016
  Driver Version: 10.18.14.4414
  Maximum Texture size: 16384 x 16384
  Z-Buffer depth: 24 bits
  Maximum Viewport size: 16384 x 16384
  Total Video Memory: 1 GB

C:\Program Files\Rhino WIP\Plug-ins\Commands.rhp	"Commands"	n/a
C:\Program Files\Rhino WIP\Plug-ins\WebBrowser.rhp	"WebBrowser"	n/a
C:\Program Files\Rhino WIP\Plug-ins\rdk.rhp	"Renderer Development Kit"	n/a
C:\Program Files\Rhino WIP\Plug-ins\RhinoScript.rhp	"RhinoScript"	n/a
C:\Program Files\Common Files\McNeel\Rhinoceros\6.0\Plug-ins\Iris (1cd9c8f5-c901-426c-8e80-d6a2e2b18bba)\1.0.6310.39519\Iris.WIP.rhp	"Iris"	n/a
C:\Program Files\Rhino WIP\Plug-ins\RPC.rhp	"RPC"	n/a
C:\Program Files\Rhino WIP\Plug-ins\IdleProcessor.rhp	"IdleProcessor"	n/a
C:\Program Files\Rhino WIP\Plug-ins\RhinoRender.rhp	"Rhino Render"	n/a
C:\Program Files\Rhino WIP\Plug-ins\rdk_etoui.rhp	"RDK_EtoUI"	n/a
C:\Program Files\Rhino WIP\Plug-ins\rdk_ui.rhp	"Renderer Development Kit UI"	n/a
C:\Program Files\Rhino WIP\Plug-ins\NamedSnapshots.rhp	"Snapshots"	n/a
C:\Program Files\Rhino WIP\Plug-ins\Alerter.rhp	"Alerter"	n/a
C:\Program Files\Rhino WIP\Plug-ins\RhinoCycles.rhp	"RhinoCycles"	n/a
C:\Program Files\Rhino WIP\Plug-ins\Toolbars\Toolbars.rhp	"Toolbars"	n/a
C:\Program Files\Rhino WIP\Plug-ins\3dxrhino.rhp	"3Dconnexion 3D Mouse"	
C:\Program Files\Rhino WIP\Plug-ins\Displacement.rhp	"Displacement"	n/a


@stevebaer,

i see a speed decrease as well using Radeon HD7970. The results are similar to the values @Willem posted above, drivers are up to date, AA ist set to 8x but it does give the same results when AA is disabled.

c.

Yep, this is what we have been seeing with AMD also on Windows. Interestingly enough, a bootcamped MBP with AMD will run slower on Windows, but faster when testing on an internal build of V6 for Mac so we know the hardware is capable.

I am setting up a test computer with an AMD card to try and repeat this behavior so we can either find a workaround or create a sample application to show AMD. Right now I am considering turning on GPU tessellation by default if you are NOT using an AMD card.

Both of these are related and are on my bug list at
https://mcneel.myjetbrains.com/youtrack/issue/RH-39251
They won’t be fixed in this week’s WIP, but I hope to get to tackling them soon

Tested with bike model in wireframe mode. Great increase in speed:
GPU Tesselation off: 8.63
GPU Tesselation on: 1.46

NVIDIA Corporation
Quadro K2100M/PCIe/SSE2
OpenGL version: 4.5.0 NVIDIA 354.74
Render version: 4.5
Shading Language: 4.50 NVIDIA
Driver Date: 2-7-2016
Driver Version: 10.18.13.5474

Maximum Texture size: 16384 x 16384
Z-Buffer depth: 24bits
Maximum Viewport size: 16384 x 16384
Total Video Memory: 2 GB

1 Like

Love the attitude and things seems to have improved already.
Here is a little test:

File already uploaded in another thread here (feel free to use freely):

https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/6/4/64be301c2eceb9930eaa5185acec80c4e3ca117d.3dm

Headphone guy multiplied so they are 256 (16x16) of them all test in fullscreen on retina with 4xAA on the 750m, testmaxspeed:
(head is mesh, headphones are nurbs)

Wireframe:
OFF : 7.97
ON: 1.94

Shaded:
OFF: 10.09
ON: 8.67

I also ran the tests in rendered even though no curves are visible, just to see if the numbers are unaffected.

Rendered:
OFF: 55.81
ON: 55.31 (Note that testmaxspeed returns value before last frame)

And then I extracted the rendermeshes from the nurbs and hid them to see if that affected anything and got 55.72, so that is great news.

And with only one head zoomed in it takes 29.77…
that was a surprice and it seems the pixle number is more important that the amount of data when it comes to screen space shadow calculations.

Sidenote: Can you please update testmaxspeed so it runs 360 degrees and ends up at the initial position? It would make running multiple test a bit more correct if we are zoomed in so not all objects are visible in all frames.

What does ON and OFF mean in your post?

I appreciate the tests @Holo , but am concerned that this is getting off topic of finding exactly what is going wrong on Charles’s computer. @Charles I could use some help understanding exactly what it is that is that is causing a slowdown on your computer. If you could send me a simple model maximized on a specific display mode that is slow, that will help me better understand. Thanks

Sorry, I chose to post here as I had already commented, but should have posted under another thread. On and off refers to tesselation.

No problem, I moved this thread over to the GPU Tessellation post. Are these results with your Nvidia card?

Great! Yeah, with the little 750m.
I guess the viewport is about 2000x1400, can check tomorrow.

Wow, check this out:

3072 copies of the headphone guy tested on an old i7 with Geforce 970GTX, :
Viewport is 3037x1173 px (21:9 monitor) all with 4x AA:

Wireframe:
Tesselation OFF: 52.50 sec
Tesselation ON: 2.97 sec

Shaded:
OFF: 53.70 sec
ON: 3.77 sec

I am impressed! And also impressed that showing the 3K meshes didn’t slow it down more.
Congrats on a job well done so far @stevebaer (&Co) !

Yes, very true, I second this.

As we can now handle really large meshes fluently, this leads to the wish for better mesh edit tools.
But that is a completely other story :grinning:

Ok, had to do a block test too so I converted the head to block and made a 32x32 array and tested with tesselation ON:
(Still on the 970 with 4xAA)

Wireframe: 4.50 sec
Shaded: 180.03 sec (not a typo!)

So blocks need a lot of love to handle meshes faster.