Review: 3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan by Sergey Kosarevsky
This book is pure gold for a graphics or engine programmer. Sergey Kosarevsky is able to walk you through many intermediate to advanced techniques, in both OpenGL and Vulkan, and shows you how to make a real 3D engine. The fact that each chapter is shown in both APIs is great, as it give you a better understanding, and can really help if you know OpenGL already and wish to move to Vulkan. The title says the guide in comprehensive, and the author was not lying. The books clocks in a 670 pages, with dozen of chapters that are each quite useful and self contained.
In 3D Graphics Rendering Cookbook we see how to load images, add a GUI, profile apps, load models, multi-threading, optimizing meshes, implementing programmable vertex pulling, using cubemap textures, compiling shaders at run-time, making a 3D camera, an FPS counter, indirect rendering, an infinite grid, compute shaders, BRDF LUTs, saving scenes, a material system, shadow maps, SSAO, HDR and tone mapping, frustum culling, order independent transparency, loading textures asynchronously, and so much more. I have read probably over 100 programming and graphics books, and this is hands down the most comprehensive. There are many advanced techniques here, but the author explains them clearly so you can understand. I just cannot believe how knowledgeable Kosarevsky is, and how he can explain the concepts so simply.
This is definitely the best there is. However, the text is not geared at beginners. It jumps right into the juicy content, and assumes you have some basis of knowledge in graphics programming. While Vulkan does get a little more explanation, you’ll be pretty lost unless you’ve at least done some OpenGL programming before. It also assumes you understand C++ as this is not explained either. So I would say you should be at least intermediate if you want to get the most out of this book. If you are still learning, it might be best to do some tutorials, like on the site LearnOpenGL to get the basics understood first. But otherwise it does not get better than this. Highly recommended.