I mostly agree. For example, I think that Metal doesn't get the love it deserves outside of the dedicated macOS engineers. I feel like Metal is substantially cleaner than OpenGL and way easier than Vulkan, and I feel like the Linux folks really ignore this at their own peril.
I hate how closed-off a lot of their ecosystem can be, and the obvious "I prefer open source" that every engineer says, but I do honestly (and sadly) think that macOS is the least-bad *desktop OS out there right now.
Metal is irritating because of its exclusivity. Nobody wants to make games just for macOS. The supposed ease and speed of writing Metal is completely lost since you still have to write a Vulkan or OpenGL renderer. It's just more busywork for anyone not exclusively targeting Apple platforms.
Sure, there are already open source projects that do Vulkan -> Metal like MoltenVK.
But any time you are emulating one complex low level API with another, there are likely performance penalties. Not to mention you are raising the complexity of the software stack and adding more surface area for bugs.
It would be better if there was an open source low level graphics API that every OS could support in addition to their own proprietary APIs focused on ease of use.
> It would be better if there was an open source low level graphics API that every OS could support in addition to their own proprietary APIs focused on ease of use.
I guess someone could, but it ends up being more practical to use a translation layer (which inevitably ends up having at least some overhead) on a niche platform, while being able to wring every last possible bit of performance using Vulkan on the other platforms. Hence MoltenVK and not VulkMetal. Or maybe it's just about the momentum, which Metal doesn't have.
Note that WebGPU has been heavily inspired by Metal (AFAIK), and it uses translation layers on top of a number of APIs (whatever is available on the system). And it's not limited to browsers, despite what its name might suggest.
So it seems like your best bet to try something Metal-like that works across platforms.
I think the reason that Metal is not interesting people is that you can't run it outside Apples ecosystem. If you learn Vulkan, your code will run everywhere.
Sure, more or less, I'm just saying that the API for Vulkan feels pretty steep and irritating, but the API for Metal is somewhat approachable.
I'm not a graphics programmer, but whenever I've gotten the itch, I've always gotten huge headaches trying to get Vulkan to work, and had basically no issues at all using Metal.
Metal is a beautiful API and as a hobbyist GPU programer I think Apple GPUs are what's really under-appreciated. Enthusiasts usually dismiss them as "mobile parts" and turn the blind eye to the very interesting features they bring:
- TBDR with user-programmable persistent GPU caches allow you to do some really cool things smartly, drastically cutting down the amount of work and memory fetched
- GPUs are trivially exposed as what they are: machines with very wide SIMD ALUs
- resource binding graphs with full support for pointers and indirection; resource bindings that can be created and populated on the GPU
- sparse resources that actually work and are performant (nobody uses them on mainstream GPUs because they are apparently slow as f** there)
- etc.
I hate how closed-off a lot of their ecosystem can be, and the obvious "I prefer open source" that every engineer says, but I do honestly (and sadly) think that macOS is the least-bad *desktop OS out there right now.