Shaderx 2: Introduction & Tutorials With Directx 9 (Wordware Game Developer's Library) (英語) ペーパーバック – 2003/11
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
Wolfgang Engel is also the editor of ShaderX2: Shader Programming Tips & Tricks with DirectX 9 and the editor and a coauthor of Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks. He spoke at GDC 2003 and at Vision Days 2003 in Copenhagen, Denmark.During his career in the game industry he built up two small game development units.
First, it gives a fair intro to HLSL and shader assembly language. That seems hard to come by. Microsoft's documentation, in web-entangled form, is hardly a tutorial. Vendor documentation mostly points to MS standards, but those are hard for us mere peons to acquire in any intelligible form. This isn't a langauge ref book, but will do until I see a real one.
Second, it gives a good bunch of tips'n'tricks, with lots of listings for illumination models, shadows, and fog. The careful reader will look into the references, the places where new knowledge makes its debut, and will be stronger for it. There's also a chapter that devotes itself to v1 vs. v2. vs v3 compatibility and more. Compatibility is the pits - if you've never dealt with it, your career is probably happy and probably very young.
I was looking for something a little different, though. I just wanted the HLSL and assembly references, with versions, with complete syntax and semantics. This gives enough info for me to guess my way through a lot of it, but really does leave me guessing. For example, p.47 talks about the "_bx2" modifier. It shows three different ways to coax the compiler into emitting that suffix. After about ten minutes of looking at source and asm code, I finally figured out what _bx2 meant - something the authors neglected to tell me.
Shader programming is still a [forgive the phrase] dark art. This book offers a few chants and incantations, but does not make it a science. Still, it's the most coherent reference I've seen, and I'm sticking with it.
The book starts off with an extensive, well-written introduction to HLSL that most beginners to the language will find quite helpful. This is followed by a handy introduction to Shader Model 3.0, which explains the changes that have been made since 2.0, and the practical applications of these changes and additions.
The next several chapters are devoted to implementing "foundational" techniques using shaders. The first covers several lighting and shading techniques, providing sample shader implementations in HLSL and assembly. Most of the shaders come in multiple versions for the various shader models, which is useful for supporting these techniques on a wide range of platforms, as well as in understanding the capability differences between each model.
The next chapter covers five different fog effects using HLSL shaders. Then there are two chapters on shadows, one on shadow mapping and the other on shadow volumes. The latter weighs in at over 80 pages, providing in-depth coverage of the theory behind the technique.
Next up is a tutorial for using the shader development environment RenderMonkey. The usefulness of this chapter is marred by the fact that the current version of RenderMonkey has undergone some interface changes such that the text is now out of synch with the tool, making it a bit more difficult to follow along. Still, if you can work through this, the chapter will help you quickly get up and running with RenderMonkey.
The last chapter of the book is about creating shader-friendly models. This chapter seems out of place since it's written more for artists than programmers (who are clearly the audience for the rest of the book), and the chapter is too brief and vague to be of much value.
If you're new to shaders and HLSL, you'll likely find this book useful, though it's a little expensive for a small book (I imagine the color plates contribute to this). If the shadow and fog chapters had been moved to the other ShaderX2 book, and the final chapter had been dropped, I think that they could have reduced the price considerably and made the book more focused, turning it into a great value. As it is, though, it's still a good book that many people will benefit from.
A note for newbies though. This is a book for advanced readers. People who already have a decent knowledge of DirectX 9.0. This book WILL NOT teach you the basics of DirectX 9.0. It is meant for Shader programming and it does that with great elegance. However, if you are looking for a beginner level book then look for some other book about general DX programming.