(Book Review) Practical Rendering and Computation with Direct3D 11

The CRC Press marketing team sent me some days ago a new programming book about Direct3D 11 or rather about … euh… Direct3D 1?

Practical Rendering and Computation with Direct3D 11 is a very fresh book (published few weeks ago, end of July 2011) and its ISBN is 978-1-56881-720-0. You can buy it from CRC Press or from Amazon.

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…

Also about multithreded rendering: I read somewhere that only NVIDIA supports it, ATI/AMD still serialize all the GPU commands. And neither NVIDIA or ATI/AMD bother to compile the second thread to a command buffer (or display list in GL speak) which is needed to extract maximum speed.

Good book it seems. But I would have really liked an Opengl 4 book more. There are a bunch of dx11 books around , but even the official books just stop at OpenGL 3 . Reading the specifications isn’t very handy to learn the OGL4 features.

Does this book cover “raw” D3D11 code or does it use the authors framework ? I want to buy this book, but I want to be sure I’ll be learning about how D3D11 works, as low level as possible, and not learning how to use a framework.

With this book you will learn how d3d11 works, the authors don’t use their framework (or a bit only).
Like you, I don’t appreciate books that rely on unknown frameworks. I prefer direct API calls and simple C/C++. Hope that helps!