Introducing the Blender Metal Viewport

The upcoming Blender 3.5 release now provides a Metal GPU backend on macOS builds! 

Next to Metal-accelerated computing in Cycles, it is now possible to enjoy improved EEVEE viewport (and UI) performance as well. This functionality has been in the works for a while, and it can be enabled through Preferences. 

Currently, the default backend is still OpenGL, but the goal is to switch to Metal after a period of testing and feedback.

Currently, the Metal backend needs to be manually set under Preferences → System.

Around one year ago, after joining the Blender Development Fund and seeding hardware to Blender developers, Apple empowered a few of its developers to directly contribute to the Blender source code. The contributions started with Metal for Cycles and then continued with Metal as a GPU backend, for EEVEE, and the UI system. The goal of these contributions is to provide the best Blender experience on Apple hardware, as Blender is moving on from OpenGL.


Benchmark

Here are the results of some benchmarks, performed on a MacBook Pro laptop with an M1 Max chip.

Render CHARGE – 010_0050.lighting on M1 Max

  • OpenGL
  • Metal
  • Cold-start
    08:55
    05:27
  • Cached
    03:24
    01:47
  • 0
  • 60
  • 120
  • 180
  • 240
  • 300
  • 360
  • 420
  • 480
  • 540
  • 600
  • Render time (lower is better)
  • Unit: Seconds

Render Tree Creature on M1 Max

  • OpenGL
  • Metal
  • Cold-start
    00:06
    00:05
  • Cached
    00:01
    00:00
  • 0
  • 2
  • 4
  • 6
  • 8
  • 10
  • Render time (lower is better)
  • Unit: Seconds

Render Amy on M1 Max

  • OpenGL
  • Metal
  • Cold-start
    00:19
    00:14
  • Cached
    00:14
    00:10
  • 0
  • 5
  • 10
  • 15
  • 20
  • Render time (lower is better)
  • Unit: Seconds

Playback Speed on M1 Max

  • OpenGL
  • Metal
  • Amy
    19
    24
  • Tree Creature
    5
    13
  • 0
  • 5
  • 10
  • 15
  • 20
  • 25
  • Frames per second (higher is better)
  • Unit: fps

The render benchmark was run in two different scenarios. Cold-start means that no shader was pre-compiled or cached before rendering, this happens when rendering a frame for the first time. Cached means that the frame was rendered at least once before.

Following is a playback speed test of the Tree Creature file, performed on a Mac Studio with M1 Ultra chip.

  • OpenGL
  • Metal
  • 1920×1080
    12.6
    65.4
  • 3024×1964
    12.5
    45.2
  • 3840×2160
    12.6
    34
  • 0
  • 8
  • 16
  • 24
  • 32
  • 40
  • 48
  • 56
  • 64
  • 72
  • 80
  • Frames per second (higher is better)
  • Unit: fps

Ongoing work

Besides bug fixing, a few patches to improve support of AMD and Intel graphics devices are expected to be merged. Next to that, the main target is to introduce support for the upcoming Real-time Compositor (in the 3D Viewport), which is currently not available on macOS. The progress can be followed on developer.blender.org.

Note for add-on developers

Even though the bgl Python API still works in current releases of Blender, it has been deprecated in favor of the gpu API. The upcoming GPU backend changes (both Metal and Vulkan) do not support the legacy bgl API.

If you are developing add-ons with custom drawing code, make sure you are using the gpu API.

Testing and feedback

The new backend is ready for testing! If you are using Blender on a Mac, download the daily alpha build from builder.blender.org and give it a try. In order to enable the Metal backend, open Preferences (Cmd+,) → System, and select it from the options available. Please report any issues on developer.blender.org.


Congratulations to Michael Parkin-White, Vil Harvy, Marco Giordano and Jason Fielder at Apple for this contribution, and special thanks to Clément Foucault and Jeroen Bakker for reviewing and coordinating such a large project.

19 comments
  1. As of now, the cycles rendering times(with Metal) are not closer to RTX High end Graphic cards. is there a still optimisation needs to be done from blender side or apple has to increase their GPU cores. if optimisation still needs to be done, will it gets fully optimised by the EOY(2023)?

    • This post is talking about Metal backend support for the Blender UI and EEVEE. Ideally this discussion about Metal Cycles performance should happen else where. But I will comment on it.

      The Metal backend for Cycles can probably still be optimised to improve performance, when this will happen and how much performance will be gained? I don’t know. But even with these optimisations, it’s highly unlikely that the Apple Silicon GPUs will perform similarly to a high end RTX GPU (At least when comparing current Apple Silicon GPUs (M1 and M2, Pro, Max, Ultra) to last generation RTX GPUs).

      This is because RTX GPUs have dedicated hardware for BVH traversal that’s used with the OptiX rendering backend. This dedicated hardware offers a large boost in performance for RTX GPUs for Cycles. This is something Apple Silicon can’t make use of due to a lack of hardware dedicated to BVH traversal.

      In the future Apple may release a GPU with hardware dedicated to BVH traversal, and that will improve performance (once the feature is implemented into Cycles), but until then Apple GPU performance will be partially limited by this factor, making it hard for Apple GPUs to compete with the performance of RTX GPUs.

  2. Gooooo Metal!!! 🤘🎶🤯🍎

  3. I’m completely lost in those informations!
    From what I understand on this page is, that all benchmarks made with Silicon Mac’s M1.
    But how about the (still sold) INTEL Mac’s with AMD.
    In 3.5 alpha the INTEL Mac’s with AMD and Metal enabled (incl. Metal on the graphics cards) it renders the BMW scene twice that long as in 3.4 OpenGL…
    I don’t even wan’t to ask realtime composi…..
    Plus that 3.5 comes with so many bugs, that I’m scared of reporting them all…even the earliest reports I did, didn’t get through, but newer bugs that come every day.

    I recognised that MacOS always comes late, even exotic Linux distros are earlier, since the change from Apple to Silicon.
    As a reminder: The INTEL Mac’s with AMD are still on sale and will be for the next years.

    • They’ve made it clear that AMD and Intel Macs are receiving the support they will need in patches that are currently in development. The team is focused on Apple Silicon because Apple has officially discontinued all of their Intel-based Macs aside from the Mac Pro. Since Apple is providing their own developers on this task it makes sense that development would be focused on their current objectives (Apple Silicon) with Intel and AMD second.

    • Apple has announced it will completely transition to Silicon chips and wont build/sell more Intel based Macs: https://www.nytimes.com/wirecutter/guides/buying-a-mac/

      Also, its normal for 3.5 to have bugs since it only getting close to beta version. The official release date is around March.

    • As long as the Intel/AMD Mac has metal support the Metal support for Cycles and Viewport works there too, even on my old 2013 “trash can” MacPro.

      > In 3.5 alpha the INTEL Mac’s with AMD and Metal enabled (incl. Metal on the graphics cards) it renders the BMW scene twice that long as in 3.4 OpenGL…

      I’ve never been able to use Cycles with OpenGL, it’s always been slower than the CPU. With Metal I finally got GPU support, even Dual GPU and about 4x faster rendering than on the CPU.

      The Viewport also began crashing for some people when rendering hair due to the old OpenGL drivers. The switch to Metal also got rid of this issue.

  4. This is AMAZING!!! Ive been waiting a long time for this!! Hope Apple invests in more developers helping with this…specially for speed…more hands for the win!! & if this project was done by just a handful of developers… wow!!!! The future of Blender in MacOS is beyond brilliant now!!!
    Thank you, can’t wait for more updates. This totally made my day!!

  5. This is really interesting – is there somewhere to post test results? I tried the new metal viewport option on my M1 Max MBP, comparing it to the OpenGL version for a couple of recent projects, and on both cases the Metal version rendered slightly slower than OpenGL.

    I didn’t want to open a bug report for it but I wondered if there’s a dedicated thread to be able to share the project file etc?

  6. I think, there is a typo in the graph where “frames per second” is meant, but the number’s format looks like it is in seconds. Please fix it, or tell me if I read those graphs wrong =)

  7. This is awesome, thanks so much!!!!
    The viewport compositor is still not working with Metal correct (it doesn’t with my M1 Max at least)?

  8. The gpu module is awesome, but there is lack of handling user input to interact with what is being drawn. Modal operators aren’t really designed to run forever like handlers are, blender doesn’t auto-save etc. Pls look into handling user input through handlers, modal operators are not ideal.

  9. This is a fantastic performance improvement, should make some Mac Studio Ultras fly off the shelves.

  10. Awesome job!

    Please fix the selected object outline missing bug. This is now the most important thing to be able to use and test this version.

  11. Great news to see that the switch bring such a performance improvement.
    I think it’s also due to the fact that gl drivers are more or less in an abandoned state on Macs, so the vulkan vs gl on windows wouldn’t see such an improvement in performance.

    Speaking about UI perf, what is the ETA about replacing the spaghetti code of the UI with something a modern and consistent toolkit like the bWidgets project?

In order to prevent spam, comments are closed 15 days after the post is published.
Feel free to continue the conversation on the forums.