![]() Now as I said, we have a long history of looking at these different types of programming APIs, and we realized that if we wanted to get a tenfold - an order of magnitude - improvement in performance, we're going to have to do some pretty radical things. They're designed to work together seamlessly.Īnd so we thought to ourselves: what if we could take the same approach to GPU programming that we take to our products as a whole? If we could build these to work seamlessly, we knew we could do the same for GPU programming, and that's what we've done with Metal. Now Apple, as you know, provides the operating system, the hardware, and the products as a complete package. ![]() We've supported APIs across a wide variety of domains, both at the high level and the low level of GP programming for things like 2D, 3D, animations, and image processing.Īnd we've supported a wide variety of architectures in the hardware, across platforms, computers, devices, phones, iPads, and a wide variety of GPUs.Īnd during all this time, as we're supporting all of this variety, we realized that there was something pretty fundamental missing from all of these APIs, and that was the level of deep integration that Apple brings to its products. We've supported standard APIs like OpenGL and OpenCL. Now, Apple has a long history of GPU programming APIs, both implementing them, maintaining them, developing them. Now let's take a little bit of a look at what life was like before Metal. You can add a lot more visual variety to your games.īut probably the most important reason is your game artists and designers are going to thank you profusely because you're going to give them more freedom to realize their vision without having to jump through all types of draw call gymnastics to fit what they'd like to see onscreen into a tiny number of draw calls. You can build many more unique objects, have many more bad guys, or other characters in the scene. So if we had a way to make that much less expensive, we could give you a lot more draw calls per frame, and you might ask yourself, well, why do I want more draw calls per frame? Well, more draw calls lets you build much better games and applications. And then the CPU gets involved and spends a bunch of time translating those state changes and those requests to draw into hardware commands before sending it to the GPU. If your application is setting up for a new draw call, you'll want to specify the shaders and the state and the textures for each draw operation, and you'll do that each time you want to specify a new draw call. When I say expensive, I mean, not for the GPU, but for the CPU because it's the CPU that's doing that type of translation. You have to translate between the API state and the state that the hardware's going to consume. This is very important in order to get the effect you're looking for from the GPU.īut, unfortunately, with previous APIs changing state vectors, it'd be extremely expensive. So when you're specifying that you would like to draw something with the GPU, you also need to tell the GPU which shaders, which states, how you want to configure the textures and the rendering destinations. Now what does that really mean? Well, it's important to think about draw calls in this way: each draw call requires its own graphics state vector. Now you also heard in the keynote that Metal provides up to 10x the number of draw calls for your application. So, first, a bit of background on Metal itself. The sessions that follow will go into much more detail about exactly how to use the Metal API and how to build your applications, but we'll keep things at a high level for this session. I'll also touch briefly on the Metal shading language and our developer tools. Now today in this session, I'm going to talk to you at a relatively high level about the background, the how and why we created Metal and some of the conceptual framework for the API. It provides dramatically reduced overhead for executing work such as graphics and compute on a GPU.Īnd with the support for precompiled shaders and incredibly efficient multithreading, we designed it to run like a dream on the A7 chip. Now as you've heard in the keynote, Metal is our new low-overhead, high-performance, and incredibly efficient GPU programming API. We believe it's literally going to be a game changer for you, your applications, and for iOS. Now we're incredibly excited to get to talk to you today about Metal. Welcome to WWDC, and welcome to our Introductory Session about Working with Metal.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |