Is there interest in supporting a Metal version of Cycles for MacOS?

Cool, I saw your question on the livestream. I also thought that the answer wasn’t really clear. Thats why I wanted to ask it here again. Good luck tomorrow!

I did not find out any information that would not be in circulation already. AMD sponsorship is however a good signal for things to move. Beside Cycles there are Octane and Redshift coming to Mac OS/ Blender soon. AMD Pro Render is already somewhat developed. What is your main reason to leave Cinema 4D? This would be funnily my plan B instead for Blender.

Thanks for your research!
Yes I already use AMD ProRender in Cinema 4D and I also tried it in Blender. But I would prefer to use the native Render Engine for Blender which supports all the native Features of Blender. There is nothing wrong about C4D it’s a great software. But I really like the whole Blender project. And it’s cool to have a choice how much money I can pay for it depending on how much I can afford. It gives me more independence and I’d like to support that. But thats a bit off-topic now.

So, anyway, it’s good that with the AMD sponsorship there is at least hope that Cycles GPU render on macOS could work again sometime in the future.

@d_miko was that your question about AMD and Vulkan? There’s many aspects to this, and your question as answered with regards to a future Vulkan port of the workbench and Eevee engines (which, is to my understanding, is being worked on).

Getting Cycles GPU rendering on macOS is something that Apple has more influence over than AMD (remember, many Macs ship with Intel GPUs and not AMD). I don’t know if Vulkan will be a solution for this, as far as I can tell MoltenVK is focussed more on rasterization than compute and the Khronos group does not consider Vulkan to be a replacement for OpenCL. I would love to be proven wrong, but as far as I can tell, Metal is be the best option for Cycles GPU on macOS.

@StefanW: No Vulkan is not gonna replace OpenCL, but they will interop:

“The Khronos OpenCL Working Group will soon be starting on a Vulkan/OpenCL interoperability extension. NVIDIA already has been working on such but now it’s up to the working group to come to a multi-vendor approved extension. This is akin to OpenGL and Vulkan interoperability.” -. https://www.phoronix.com/scan.php?page=news_item&px=Vulkan-OpenCL-Interop-2019 January 2019

Alternatively try googling for OpenCL-V.


After reading this article I had an impression Cycles would be ported to Vulkan like Pro Render. I think however Pro Render uses Vulkan only for hybrid rendering and for full pathtracing still uses Metal. Could potentionally AMD help cycles to run on Metal? Do companies have to pay to Apple if they weant to have apps use Metal? Some Devs and Ton have voiced that Blender will not support Cycles on Metal. Which would mean GPU rendering for Mac OS is off the table.

Cycles is programmed to generally be able to use different low level apis. Think of Cycles mainly sitting on a layer above the low level api calls. Cycles parts which make the direct lowlevel api calls will be rewritten by AMD ( or programmers hired by their money) to run on Vulkan instead of OpenGL and added to the codebase.

No they are not paid for this. But nonetheless was a strategic decision to come up with metal and not start support for another api, present or in development. They are decoupling their ecosystem and try to bind developers and products tighter with their custom apis to their ecosystem. For a developer of a tool like blender this just means a lot more work to do. The decision not to bring Blender to Metal may be generally due to Metal not being Open Source, the additional amount of work to maintain support for it or due to Apples strategy behind Metal one can dislike, but that’s all just my guess. If MoltenVK and OpenCL will work well on Mac, then it’s clearly the preferred solution for a cross platform tool like Blender to stick with Vulkan everywhere.

I think the reason Ton don’t want Metal support is because it will make the code base more complex.

Blender is more than 2 million lines of code so keeping things simple is paramount. Ideally Blender was to use one framework and currently Vulkan is the best option. But will take a long time to port the obligation. I don’t think its a good idea to depend on a single company project because if it dies it creates all sort of problems , OpenGL being dead is already a big problem for Blender.

Apple does not require you to pay because they are greedy. This is merely a measurement to keep amateurs away so the can keep the quality of apps high, combined with app store strict requirement. Apple has always being supporting of amateur coders by packaging its OS with all sort of easy to use programming languages like python, ruby etc and providing active support for them. They also designed Applescript which you may not hear a lot about but is super popular in the macos community because you don’t need to be coder to use.

So no you don’t have to pay apple to use Metal , you don’t have to pay Apple even to download the OS , it’s free. As long as you keep far away from the app stores which are designed for mostly high quality pro apps/games you are fine. Steam use to be a lot more open of the games they accepted and then they also forced to introduce pretty much the same recipe as Apple to make sure they keep quality at least adequate. They had a lot of issues with early access games.

Also Apple is supporting Vulkan , they are part of the board that decides how it evolves, so Vulkan on MacOS looks very promising. I also think Vulkan will eventually replace Cuda and OpenCL.

2 Likes

Some Devs and Ton have voiced that Blender will not support Cycles on Metal.

When? Where?

Nobody is opposed to Cycles running on Metal. The “only” thing that’s missing is that nobody is working on it. If anyone came up with a patch for a Metal backend for Cycles, I can’t think of a reason why the BF would reject that patch.

Cycles already has support for CUDA and OptiX, both of which are vendor-specific proprietary APIs. Why would Metal be any different?

6 Likes

Platform Specific Optimizations/Features - if so how extensive?

If Blender is going to implement Metal Support, then why not also allow a developer to implement DirectX Support on Windows and add in features like WinML and DXR that could bring Cycles performance closer to Eevee on Windows with all GPUs?

This could be a good plan forward with Platform specific optimizations; however, it also opens the door to a lot of problems and fragmenting Blender, which seems bad.

Ideal option, get Apple and Microsoft to donate to Blender, and assign a developer to maintain Metal and DirectX?

Metal is more important right now for Apple users, as Apple is forcing out open source frameworks.

However, if moving to Vulkan bypasses the Apple Metal issues, maybe not ‘reward’ Apple for being horrible about Metal.

It appears Vulkan is the answer to Metal, and all platforms would gain benefits, and the same opportunity at new features.

Just my 2 cents here. Blender is supposed to be a cross platform open source tool. How can it claim to be cross platform and not support the graphics APIs set forth by each platform?

I realize it is easy to blame Apple here but while Windows has DirectX and they still support OpenCL there is absolutely no reason why Windows couldn’t also drop OpenCL support at some point in the future.

It is kind of up to the software to support the platforms to their fullest and I don’t exactly think it is fair to blame Apple for wanting to create a superior method of utilizing GPUs on their systems in much the same way Microsoft created DirectX.

Like it or not but almost all commercial software is going to be supporting Metal and if Blender wants to be a cross platform tool taken seriously I think they need to do the same. I think it is a mistake to ignore the Mac community. If Blender wants to increase their importance in the industry I think they need to embrace MacOS and Metal and fill in a 3D gap in the Mac world. If most Mac users that want to dabble in 3D use Blender that could open up a ton of community support.

Metal is a great platform with a ton of performance potential and isn’t that what we all want with Blender? While it may be more effort I really think Cycles needs to be ported to the method that can get the most performance out of each system. I for one would forego any other features if the time and effort could be spent to enhance Cycles to each platform instead of the one size fits all approach.

I also realize Blender is used by a larger percentage of Windows users who may not have a favorable view of MacOS. We shouldn’t let that diminish the cross platform nature of Blender and take away one of the most golden aspects of what makes Blender great. Providing professional level 3D tools to everybody.

As for donating right now I will not donate to Blender unless they fully support my platform of choice. I cannot invest in a tool that will not invest in me and ignores Mac users as if they do not matter. The same could have been said for years for Linux when it came to video codec support and sketchy hardware/driver support.

3 Likes

If Blender will get Nvidia specific RTX support in the future (which is perhaps what AMD was afraid of and made them donate), there’s zero reason why Blender shouldn’t also get Apple specific Metal support (even though Apple would never donate).

There are many reasons why any code contribution can be rejected, including Metal support! It is unlikely from my point of view that such a contribution would be rejected. Someone who invests such a huge amount of time most likely got in touch with the developers early on to ensure everything is in place as needed.
The question is whether such a contribution should be funded through the development fund. When it comes to a Cycles backend for Metal, there are clearly reasons for and against it. It is reasonable to assume that the investment needs to be quite significant and ongoing.

All this dispute between Metal, Vulkan, OpenGL, both entirely theoretical and superfluous. you would probably have advantages with Metal, and you will surely have many similar advantages with Vulkan (soon)
But mac users won’t have the advantages of Cuda and the OpenCL and the RTX in any case … even when there will be a passage to Vulkan (or even a theoretical Metal)

The real boring thing for Mac users is that Apple has crippled both the OpenCL and the Cuda … and consequently the lower performance you complain about compared to Windows-Linux users.

So what the Apple users really need, and they could do it themselves, without breaking the blender developer’s balls is to make a wrapper for Cuda and or OpenCL on Metal.

it would be much easier than asking to rewrite blender on Metal

Cross platform means it is running or more likely working reasonably well on multiple platforms.That’s it.

On Windows, the hardware vendors can directly deliver the drivers to the users. It is reasonable to assume that as long as the hardware vendors keep updating the drivers, Windows users have the opportunity to use them. Nvidia and AMD are open to support any API they want. By providing the same APIs on different operating systems, they allow developers to work efficiently and decrease the development cost. That’s why Blender has been relying on OpenGL, it is very cost effective!
On Mac, the story is very different. Even though they pushed open source standards in the past, they don’t seem to be interested anymore. That’s a very expensive decision they made for cross platform projects. Apple is literally forcing developers to invest huge amounts of money (I am assuming that MoltenVK can not be used for Cycles and other use cases). In my opinion, it is quite reasonable to blame Apple for their decisions.

2 Likes

I am willing to port Cycles to Vulkan(which by extension can be JIT compiled to Metal on MacOS).
I will need lots of help however I’m sure.
I am good in C++,Python,C,git, and raytracing mathematics. I’ve also written a little game engine myself sometime ago. I just need somebody to point me where to start - in the meantime - I’ll be browsing the codebase.
And lastly - can I get funding for this?

3 Likes

Citation needed.

Generally these things don’t go together very well.

MoltenVK Vulkan to metal from Kronos group:

And what do you mean by “don’t go well together?”

I wouldn’t say that the existence of MoltenVK fits with “can be JIT compiled to Metal on MacOS”.

More importantly, although we are definitely moving toward using Vulcan to replace OpenGL in the greater Blender app, within Cycles it would be best to use Metal itself.

I just mean that “I need lots of help in doing something” does not usually result in funding to do such a thing.

Ok - this is fine. I have access to multiple Macs. Do you know who I might want to talk to? I’ve contributed to open source before - but mostly in the realm of FPGAs and logic compilers. I’m not too familiar with how blender.org does things…

I emailed a mostly dead bf-cycles mailing list some time ago. I guess I’m looking for a rough outline of tasks that result in a ported cycles.