(Book Review) Practical Rendering and Computation with Direct3D 11
This review is also available in french at lab521.
The CRC Press marketing team sent me some days ago a new programming book about Direct3D 11 or rather about … euh… Direct3D 1?
Compared to the previous book (3D Engine Design for Virtual Globes), which was really pragmatic with tons of code snippets, this book about Direct3D 11 contains less code snippets but has text, a lot of text. This book covers all details a developer should know to get the most out of Direct3D 11.
The book presents the fundamental types of pipeline (from a high level point of view) in D3D11: the rendering pipeline (pages 117 to 262, around 145 pages!) and the computation pipeline (pages 287 to 309, less pages!).
Resource management is also detailed (pages 27 to 115). D3D11 comes with two kind of resources: the buffers (vertex buffers, etc.) and the textures (1D, 2D, etc.). Resource views allow to the developer (and D3D11) to know in where in the rendering pipeline a resource can be used. Because, to be used, a resource must be bound to some place in the rendering pipeline (in or out of a pipeline stage).
This book contains nice illustrations like this one
Direct3D 11 is available with two interfaces with the underlying GPU: the device and the device context. The device manages the resources whereas the device context uses the resources created by the device. The device context includes itself two kind of contexts: the immediate context and the et the deferred context. The immediate context is used to send commands to the D3D11 driver for an immediate execution while the deferred context stores the commands in lists for a later execution.
Another very interesting part of the book is about the multithreaded rendering. Tessellation (which is treated in pages 263 to 285) and multithreaded rendering are the two killer features of Direct3D 11. Multithreaded rendering relies on the managing of deferred contexts (in short, a deferred context per thread) with one immediate context in the main rendering thread. I must say that I was a bit ignorant of how multithreaded rendering could be done in D3D11. Now thanks to this book, things are clearer. I feel that D3D11 multi-threaded rendering will find its place in one of my tools…
Multithreaded rendering with deferred contexts
The book also covers some pratical cases like deferred rendering (pages 491 to 541), water simulation with compute shaders (pages 544 to 560) or particles systems.
Then if you want to be in pace with Direct3D 11, just get it, it’s a worthwhile reading!
Oddly, I didn’t find information in the book about the three authors (Jason Zink, Matt Pettineo and Jack Hoxley). Even not a short 140-char bio. Not cool. I always like to know a bit more about the authors. Okay there are some photos on Amazon…
Here is the table of content:
Here to end up this review, here are some pages of the preface: