I’ll create this discussion thread for all of the topics revealed at WWDC today. Very exciting!
Obviously, the biggest announcement seems to be Metal. Apple’s low-overhead API for their A7 processors. Sounded like Unity was in on it? Can Unity give us any details about it now that it is announced?
From what I understand of some of the other Low-level APIs announced (Mantle) it is usually a complete replacement API. However, if there is any sanity, hopefully, it will maintain a similar shader language to HLSL or GLSL so that supporting it will not be such a headache for a cross-platform engine like Unity.
Based on Aras’s praise for the ease of porting, I’m going to guess that it has much in common with the structure of OpenGL, it’s just much faster on iOS devices.
It sounds like we no longer have to worry about draw call optimization in any serious way.
Apple designs their own silicone, writes their own OS and now writes their own graphics API for the hardware.
This means Android cannot compete in performance. Apple just yanked the rug out from everyone else. iOS will be known as the platform for top tier game experiences in mobile, and I suspect that mobile platforms are going to become the primary gaming platform, and so iOS I think is going to become the primary gaming platform now.
What’d be awesome is if we could replace Mono with Swift in Unity.
This is all very exciting, but the biggest problem is portability. With OpenGL you can at least assume (barring driver issues) that if you use a particular function it’s supposed to work this particular way on all of the supported OpenGL platforms and GPUs. Even with all of the overhead of state check and other stack implementations at least it should work. Now doing ports between different OS and environments are going to be more difficult unless there is a least-common-denominator that they can all share which could definitely limit visual fidelity.
However, with Direct3D12 being proprietary to Windows, Mantle to AMD cards, and now Metal to Apple’s A# architecture. This is going to be a headache and only platform-specific specialists will really be able to code for each platform properly. It’s like going back to the graphic’s APIs of old. (Glide)
I came into this thread wanting to say that I’m starting to hate “closer to the metal” as a meaningless buzzword, and then read the article and saw that they named the project “Metal” specifically to capitalize on the buzzword. Sigh.
It’s kind of an interesting buzzword evolution. A decade or two ago, being “close to the metal” wasn’t some universal goal; it was usually viewed as a bad thing: The point of high-level languages was that it stopped you from needing to write complicated obtuse code, and that their benefit was that you’d only have to write complicated obtuse code if you needed to be “closer to the metal”, like for graphics drivers or kernels. The main point was that coding “closer to the metal” was an annoying and complicated situation that you wanted to avoid.
Now the term has sort of morphed to just mean “fast” and people advertise API’s that force you to code closer to the metal as a good thing.
In terms of Unity, if Unity itself is able to access things at a lower level, couldn’t that mean better performance without having to do anything differently?
@Ferazel , I think the idea is that Unity will abstract a lot of the API-specificness. I’m not saying this is the future, but imagine our GL API wrapped around DX12, Mantle and Metal.
Sometimes, sort of. I guess my point is it’s never quite that simple. If you could easily get better performance without having to do anything differently, everyone would have done that already. It’s not like the devs designing C# said to themselves “Ok, let’s purposefully make things slower for no reason!” It’s slower because there are added layers like the .NET runtime and a garbage collector. Taking those layers away might be faster but the tradeoff is that you have to write much more complex code in order to get the same behavior.
Well I think it’s amazing. One of the most secretive companies in the world are listening to game developers and engine tech companies, and they are changing things to allow us all to get better performance. When Unity has Metal support as a build option, the time spent in the graphics driver will drastically reduce meaning draw calls are less expensive.
It sounds like Unity itself could end up doing the bulk (or all?) of the work here. Like the stuff Unity is working on with cross-compiling normal UnityScript and C# to C++ so that platform-specific optimizations can be done from there. If this Metal thing is in that category, it sounds like a potential “win” potentially without having to change any game-specific code.
Personally, I like the name Metal, though I would have called it Very Metal.
Well yeah, it IS closer to the metal. It’s sidestepping the abstraction OpenGL pointlessly adds. When you know your hardware, you can get closer to the metal. So in this case it’s spot on.
Yes, this is exactly why I use Unity instead of writing my own engine. However, it still creates problems for Unity and other cross-platform devs. If you need to target every viable platform and then try to allow you to access hardware features that may only be available on 1 of them. Instead, we’d only likely get generic features that could be abstracted to all of the target platforms. Going against what I like (in theory) about OpenGL where you can get advanced features standardized across very different platforms. As long as the hardware supports it and the drivers are updated, you could execute the same graphical feature on all of them.
Btw, you guys should all support my Kickstarter project “Metal Cloud”. It is currently showing performance increases that are in some cases an order of magnitude above the original API. It does this by using patented cloud-driven “metal as a service” micro-applications that offer near-instantaneous proven solutions to today’s largest business problems, all while allowing true universal deployment to all major social platforms that bring users closer to their personalized interests with targeted viral meta-advertising.