Rhino WIP Feature: Direct3D Display

Rhino 9 for Windows is switching from OpenGL to Direct3D as the primary GPU accelerated display technology.

What is Direct3D?

Direct3D is Microsoft’s technology for communicating with the GPU to draw 2D and 3D scenes. It is an alternative to OpenGL.

Why is Rhino switching to Direct3D?

Stability

The primary reason for switching to Direct3D is stability. McNeel technical support has had to deal with many OpenGL driver issues over the years. This has been bad enough that the reason we can’t support Windows ARM or virtualization systems like Parallels or VMWare is because the OpenGL drivers on those systems were very problematic for Rhino’s display architecture and would often crash. Our hope is that by switching to Direct3D we now support these systems. Windows ARM laptops have become very prevalent this last year and we need to support them.

Performance

Our hope is that systems will see an improvement in performance on Direct3D over OpenGL. This is something we’ll have to wait and see. Some drivers are just better than others and individual systems will likely have performance differences between Direct3D and OpenGL

How do I try this out?

Rhino 9 now has a GPU options page which replaces the old OpenGL options page. Switch the GPU technology from OpenGL to Direct3D as shown below. There is also a “show label” checkbox that is useful to help you see which technology is being used. There is also a TestDirect3D command that you can use to toggle between OpenGL and Direct3D. NOTE: it is recommended to restart Rhino when switching GPU technologies.

What about OpenGL?

Rhino 9 is not dropping OpenGL support and you are welcome to use OpenGL if you find that it works better on your system than Direct3D or that you have a plug-in which requires OpenGL. We would like to hear from you to understand why you are sticking with OpenGL so we can improve our Direct3D support. Our plan is to keep OpenGL as the default GPU technology for the time being. Once we have enough functionality in place with Direct3D we will switch the default over to Direct3D.

23 Likes

A very welcome move!
In the WIP I see the curve drawing quality is far better than on OpenGL.

I remember there once was a Direct3D plugin for Rhino 4 (or 3?).
It worked, as an experiment, quite well.

1 Like

A post was split to a new topic: Display modes messed up

3 posts were split to a new topic: Graphic Glitch with Direct3D

I notice from subsequent posts here that Systeminfo still lists OpenGL info instead of Direct3D info even when apparently Direct3D is selected. Shouldn’t it also show which mode is in operation and details about the Direct3D driver?

1 Like

Presumably all the information required is there…the driver date and (DX 11)…

That this move is largely about compatibility with ARM is interesting…illustration that there have got to be more developers working on making games with Direct3D then there are even USERS of OpenGL 3D CAD.

Well after 45 seconds the only glaring issue is that there is no feedback when dragging around the viewport boundaries. Also my shadow-only ground plane is black in the Rendered view mode, seems fine in Monochrome.

Rhino 9 SR0 2025-7-1 (Rhino WIP, 9.0.25182.12305, Git hash:master @ 155a98b900cf48b90ae8255b9420c4f28e1b7ac7)
License type: Not For Resale Lab, build 2025-07-01
License details: Cloud Zoo
Expires on: 2025-08-15

Windows 11 (10.0.26100 SR0.0) or greater (Physical RAM: 64GB)
.NET 9.0.7

Computer platform: DESKTOP

Standard graphics configuration using DirectX
Primary display: NVIDIA GeForce RTX 3090 (NVidia) Memory: 24GB, Driver date: 6-24-2025 (M-D-Y). DirectX(11)
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port #0
- Secondary monitor attached to adapter port #1

Secondary graphics devices.
Intel(R) UHD Graphics 770 (Intel) Memory: 2GB, Driver date: 6-21-2025 (M-D-Y).
> Integrated graphics device with 4 adapter port(s)
- There are no monitors attached to this device!
Microsoft Basic Render Driver (Microsoft) Memory: 32GB, Driver date: 0-0-0 (M-D-Y).
> Software simulation device with 0 adapter port(s)
- There are no monitors attached to this device!

DirectX Settings
Safe mode: Off

Rhino plugins that do not ship with Rhino
C:\Program Files\Bongo 2.0 (64-bit)\BongoUI.20.v60.rhp “BongoUI20v60”
C:\Program Files\Rhino 9 WIP\Plug-ins\UpdatesAndStatistics\UpdatesAndStatistics.rhp “UpdatesAndStatistics” 9.0.25182.12305
C:\Program Files\Bongo 2.0 (64-bit)\Rhino6\Bongo.20.rhp “Bongo 2.0”
C:\Users\JamesCarruthers\AppData\Roaming\McNeel\Rhinoceros\packages\9.0\SubstanceImporter\2.0.7\Substance.Win.rhp “SubstanceImporter” 2.0.7.0
C:\Program Files\Rhino 9 WIP\Plug-ins\ConstraintsUI.rhp “Constraints UI” 9.0.25182.12305

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 9 WIP\Plug-ins\Commands.rhp “Commands” 9.0.25182.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 9.0.25182.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoRender.rhp “Legacy Rhino Render”
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 9.0.25182.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 9 WIP\Plug-ins\MeshCommands.rhp “MeshCommands” 9.0.25182.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoCycles.rhp “RhinoCycles” 9.0.25182.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 9.0.25182.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 9 WIP\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 9 WIP\Plug-ins\SectionTools.rhp “SectionTools”

SystemInfo will post Direct3D details if you are using Direct3D and OpenGL details is you are using OpenGL.

ARM is definitely one reason. The OpenGL drivers on ARM completely lock up the laptops when trying to run Rhino. There are also a lot of problematic GPUs out there that are difficult to support with OpenGL.

We also think we can get our Direct3D code to be much more performant than OpenGL. On my tests so far; wireframe and shaded modes are much faster on Direct3D

2 Likes

Thanks; I’m working on a fix for this now

Hallelujah! OpenGL deserved its retirement years ago! Blender dropping it for Vulkan and Rhino dropping it for D3D is just great news! Can’t wait to give it a go!

1 Like

Check this might help

I’m running Rhino on a virtual machine (VMWare Workstation on a Linux host). Anti-aliasing now works under Direct3D, it does not using OpenGL.
Have not noticed any adverse affects other than the display-modes “Artistic” and “Pen” no longer properly working using Direct3D, they seem to not delete the old display when rotating the perspective in the view-port.
I value anti-aliasing higher than fancy display modes - so this seems to be an improvement :slightly_smiling_face:, thank you !

1 Like

RH-88342 is fixed in Rhino WIP

Hi Ioannis -

Please post both that 3dm file and the output from the Rhino SystemInfo command.
-wim

Primary display: NVIDIA GeForce RTX 2070 (NVidia) Memory: 8GB, Driver date: 1-26-2025 (M-D-Y). DirectX(11)

11

dxdiag.exe tells me DirectX 12.
What is correct?

Time of this report: 7/16/2025, 12:26:07
Machine name: xxx
Machine Id: {xxx}
Operating System: Windows 11 Pro 64-bit (10.0, Build 26100) (26100.ge_release.240331-1435)
Language: German (Regional Setting: German)
System Manufacturer: Gigabyte Technology Co., Ltd.
System Model: X570 AORUS ELITE
BIOS: F12h (type: UEFI)
Processor: AMD Ryzen 9 3900X 12-Core Processor (24 CPUs), ~3.8GHz
Memory: 32768MB RAM
Available OS Memory: 32718MB RAM
Page File: 19559MB used, 15206MB available
Windows Dir: C:\WINDOWS
DirectX Version: DirectX 12
DX Setup Parameters: Not found
User DPI Setting: 96 DPI (100 percent)
System DPI Setting: 144 DPI (150 percent)
DWM DPI Scaling: Disabled
Miracast: Available, no HDCP
Microsoft Graphics Hybrid: Not Supported
DirectX Database Version: 1.7.3
Auto Super Res Version: Unknown
System Mux Support: Mux Support Inactive - Ok
Mux Target GPU: dGPU
Mux Incompatible List:
DxDiag Version: 10.00.26100.4484 64bit Unicode

Dxdiag reports the highest version installed. My Win11 PC has the directX DLLs from 8 thru 12 but only reports 12.

The version used by a program depends on which one it was compiled for.

Jeremy is correct. There are several versions of Direct3D installed with Windows and 12 is the most recent version. We are targeting Direct3D 11 in Rhino 9 because it has all of the features we currently need and there are older systems we want to support that do not support Direct3D 12 (there are still a lot of Intel 4000 GPUs out there.)

We can always add support for Direct3D 12 in the future if and when we find a need for it.

3 Likes

Is Direct3D better than Vulkan?

That really depends on what the goals are. If you want to support all GPUs running on Windows, then Direct3d is better. If you want to have code that can potentially run on different operating systems, then Vulkan is better. There is also the fact that all Vulkan drivers that I have seen on Windows ARM so far are actually just a layer of extra code on top of Direct3D.

2 Likes