ShapeShapeGrouppointGroupchapter-listShapeShape Copy 12ShapeShape Copy 3ShapeGroupShapedropdowneditoreditorCombined ShapegridShape Copy 4Shape Copy 7ShapelanguagelanguageShapemegaphonepaperbackShapeplatformnoun_419259-2 copyplay-iconBS-Question-Rounded-Circlequotesnoun_610406stacked-books-1stacked-books-2Shape Copy 5 Combined Shape Group Group Group Group Group Group
Metal: Beginning game engine development with Metal book cover
New

Metal by Tutorials

$54.99
  • Platform iOS 12
  • Language Swift 4.2
  • Editor Xcode 10

Build your own low-level game engine in Metal!

This book will introduce you to graphics programming in Metal — Apple’s framework for programming on the GPU. You’ll build your own game engine in Metal where you can create 3D scenes and build your own 3D games.

Note: This book is in Early Access. You get advance access to the book while it’s in development, and you’ll get a free update to the complete digital edition of the book when it’s complete!

Estimated final release date: Fall 2018.

Developer Guide

Advanced

For advanced iOS developers
Metal: Beginning game engine development with Metal book cover

Build your own low-level game engine in Metal!

Metal is a unified application programming interface (API) for the graphics processing unit, or GPU. It’s unified because it applies to both 3D graphics and data-parallel computation paradigms. Metal is a low-level API because it provides programmers near-direct access to the GPU. Finally, Metal is a low-overhead API because it reduces the central processing unit (CPU) cost by multi-threading and pre-compiling of resources.

But beyond the technical definition, Metal is the most appropriate way to use the GPU’s parallel processing power to visualize data or solve numerical challenges. It’s also tailored to be used for machine learning, image/video processing or, as this book describes, graphics rendering.

This book will introduce you to low-level graphics programming in Metal — Apple’s framework for programming on the graphics processing unit (GPU). As you progress through this book, you’ll learn many of the fundamentals that go into making a game engine and gradually put together your own engine. Once your game engine is complete, you’ll be able to put together 3D scenes and program your own simple 3D games. Because you’ll have built your 3D game engine from scratch, you’ll be able to customize every aspect of what you see on your screen.

This book is for intermediate Swift developers interested in learning 3D graphics or gaining a deeper understanding of how game engines work.

Proposed Table of Contents

(Subject to change)

1.

Introduction to Metal

Learn about Metal, why you would use it over other graphics frameworks, and get a quick start by rendering your first primitive object!

2.

3D Models

Go into depth with 3D models, render them on the screen, and learn how to work with models in Blender.

3.

The Rendering Pipeline

To this point, you’ve been working in playgrounds. You’ll go further with Metal by creating a macOS app from scratch, where you’ll learn how the rendering pipeline works to create the graphics on screen.

4.

Coordinate Spaces

We'd all love to be math geniuses but some of us lost the opportunity early in life. Fortunately to use math, you don't always have to know exactly what's under the hood. In this chapter you're going to become a matrix master and you will learn what matrices can do for you and how to manipulate them painlessly.

5.

Lighting Fundamentals

Lighting and beyond! In this chapter you'll learn basic lighting; but more importantly, you'll learn how to craft data in shaders, and be on the path to mastering shader artistry. Lighting, shadows, non-photorealistic rendering - these are all techniques that start with the methods that you'll learn in this chapter.

6.

Textures and Samplers

Now that you have light in your scene, the next step is to add color to it. In this chapter you'll learn about UV coordinates, texturing a model, samplers, mipmaps, and the asset catalog.

7.

Maps and Materials

This is the final chapter on how to render still models. In the previous chapter, you rendered a simple house with a single color texture imported using Model I/O. In this chapter you'll find out how to use material groups to describe a surface, and how to design textures for micro detail.

8.

Character Animation

Rendering still models is a great achievement, but rendering models that move is even more fun. So far your models have been simple inanimate props. You'll now render characters with body movement and give them personality. In this chapter, you'll start off by bouncing a ball, and then move on to rendering a friendly skeleton.

9.

Scene Graph - coming soon

In this chapter you'll take your rendering engine and put together a simple game engine by abstracting the rendering code away from scene management. This takes you to the next level where you can start creating your own games.

10.

Fragment Post-Processing - coming soon

Before embarking on huge features such as tessellation and instancing, you'll learn some simple techniques to improve your render quality. A series of operations run on the GPU after the fragments have been processed in the pipeline, including alpha testing, depth testing, stencil testing, scissor testing, blending, and anti-aliasing. You’ll touch on most of these operations in this chapter.

11.

Tessellation and Terrains - coming soon

In the previous chapter, you learned how to detect a rectangle, how to take advantage of the Vision framework and how to turn a detected surface into an ARKit plane. However, you left the plane generation chapter with one outstanding issue: it’s not oriented correctly. You’ll fix that in this chapter. You’ll also “upgrade” the rectangle detection with QR code detection and you’ll add some user interaction too.

12.

Environment - coming soon

Learn about sjyboxes, cube maps, image-based lighting and more as you add some surrounding features to your virtual environment.

13.

Instancing and Procedural Generation - coming soon

Many of the best features in games aren’t coded manually; they’re procedurally generated instead. Learn how to generate vertices for grass, how constant and argument buffers work, how to use L-system trees, and then add the grass and random trees to your scene.

14.

Multipass and Deferred Rendering - coming soon

Up to this point, you have been running projects and playgrounds that only had one pass. In other words, you used just one render command encoder to submit all your draw calls to the GPU. In more complex apps, you would often need the result of one pass used in a following pass before presenting the texture to the screen. Sometimes you need to render content off-screen and use it in subsequent stages of your app. When you finish this chapter, you will be able to render a scene with shadows and multiple lights.

15.

Synchronization and Multithreading - coming soon

To finish off this section, you’ll learn about triple buffering, how to manage resource contention, CPU-GPU synchronization, how to achieve multithreaded encoding, and how to use the GPU profiler.

16.

Particle Systems - coming soon

Learn about generators, emitters, particle life, the compute kernel, and more.

17.

Particle Behavior - coming soon

You’ve learned how to create particles, now see how to control their behavior with forces, swarming and flocking behavior, predator-prey behavior, and crowd behavior.

18.

Rendering with Rays - coming soon

This chapter covers all you’ll need to know on how to do detailed ray tracing, ray casting, path tracing and ray marching.

19.

Advanced Shadows - coming soon

Learn about hard and soft shadows, ambient occlusion, screen space rendering and more.

20.

Advanced Lighting - coming soon

Get incredibly detailed with the lighting effects in your scene. Learn about the rendering equation, reflection and refraction, the Fresnel effect, lens flare, subsurface scattering and more lighting details!

21.

Integrating with SpriteKit and SceneKit - coming soon

Bring all you’ve learned together and learn how to integrate your game engine with SceneKit and SpriteKit. You’ll learn how to import Metal shaders, perform toon rendering, and more.

Meet the authors

Caroline Begbie iOS Team
Marius Horga iOS Team
Metal: Beginning game engine development with Metal book cover

Get Metal by Tutorials

Build your own low-level game engine in Metal!

This book will introduce you to graphics programming in Metal — Apple’s framework for programming on the GPU. You’ll build your own game engine in Metal where you can create 3D scenes and build your own 3D games.

Note: This book is in Early Access. You get advance access to the book while it’s in development, and you’ll get a free update to the complete digital edition of the book when it’s complete!

Estimated final release date: Fall 2018.

Top