Review: Introduction to Computer Graphics and the Vulkan API by Kenwright
Introduction to Computer Graphics and the Vulkan API by Kenwright is exactly what the title implies, an approachable introduction to the Vulkan API and graphics programming in general. This book succeeds in the places where some other books on the market fail, by showing straight-forward code examples, explaining graphics concepts simply, and not assuming you are already a graphics guru. While the quality of the text may fall short of Frank Luna’s work, this is definitely aspiring to be that kind of book, in stark contrast to some other texts which just list structure declarations and barely move past what you find in the API documentation. This is very much a practical book, and lots of source code is shown, not only for initializing Vulkan but also including the full shader code for each example. For beginners to Vulkan, I’d definitely say this is the first book to buy.
So what exactly does Kenwright’s intro book cover? The text starts with some brief background into Vulkan (though it strangely omits mentioning AMD’s contribution with Mantle), then it goes into basic 3d math with vectors, matrices, and quaternions. It explains different transformation spaces, initializing Vulkan, texturing, lighting, geometry shaders, cube maps, fog, normal and parallax mapping, instancing, tessellation, and caps off the book with shadowing. Really most of the fundamental topics are covered, and the explanations are straight-forward and digestible for a beginner (well, at least as much as something as complex as the Vulkan API in C++ can be). The math sections were more of a cursory overview, this is certainly not a math book, so it will be a light refresher for most and an adequate introduction for a beginner. The sections on texturing and lighting were also pretty basic but solid as an intro. I especially liked the geometry shader chapter, as not a lot of books cover this and I found the code examples enlightening. The chapter on tessellation was also nice, something I haven’t seen in other Vulkan books. Some of the technique chapters were short, like with cube maps and fog, but it explained the concepts decently and, as an introduction book, this was enough. Overall a solid mix of topics and with lots of code shown this is a great example text.
While I do usually prefer to read my books digitally, this item was only available as a paperback. That said, the quality of the book is great. Every page is printed in full color, and even the source code has syntax coloring, which greatly helps the readability. It’s also only 220 pages, so a fairly short read, but still managed to cover the basics. Of course, at that length, it’s not as in-depth with the actual Vulkan API spec as some of the other books on the market. It shows only enough to illustrate the concepts and get the code running. This is actually fine, as lots of the feedback of the existing material was that it was dry. This book certainly feels more engaging than what I’ve seen so far.
Kenwright did a great job with this book, and I’d certainly recommend it (especially for people just getting started with graphics programming in Vulkan). His previous Vulkan book, Vulkan Graphics API: in 20 Minutes, also came recommended by me but this one is way better. I can tell there was an editor here, or at least more effort given, as the text reads much better with proper use of the English language. However, I did find some careless mistakes in the text, such as saying a vector’s w component should be 1 (it’s really 0), or explaining a technique to set depth writing off, but then showing code with it set to true. I’m not going to penalize the author too hard here and, to be fair, the majority of programming books typically print with some mistakes. However, it does make me weary of attempting to copy any of the code line for line without more research. As I’ve mentioned before, I don’t type in or test code in books, so I can’t verify if they work. I use the books as concept references and when it comes to coding I will visit more trusted sites to get math equations, or consult the API docs. Not the end of the world, but it could confuse a novice unnecessarily.
All-in-all I would say this is a solid book. People seemed to want a more practical text on Vulkan, and I think this fits the bill. It’s certainly marketed as an introduction text, and the title holds true. The audience here is likely people with some C++ experience, but maybe not much knowledge of graphics programming. Or people with some graphics experience in other APIs, like OpenGL or DirectX, that want to get involved with Vulkan. I think it’s important to have beginner-friendly books, and this is a worthy addition to the library. Graphics experts may find the book to be too much at the novice level, but it could still be useful as a light introduction. Especially if you are deciding if you want to use Vulkan in your project and aren’t sure, I think the practical nature of this book is more helpful than some of the more technical resources available. I know some people suggest beginners start with OpenGL before delving into lower-level APIs, but I disagree. Learning Vulkan gives you a more accurate understanding of how graphics processing works, and the API will only become more ubiquitous in the coming years. While setting up Vulkan initially can be daunting, I think it’s a worthwhile excursion, and this is the best introduction I’ve seen so far. Recommended.