Top critical review
Good as a reference, but not enough detail for the less experienced.
on 7 July 2015
I am an intermediate user of Unity and decided to dip my toe into shader writing, or at least surface shader writing, in order to gain more control over the look of the game I am developing.
This book sounds perfect from the title, and it certainly does what it claims to do... but leaves you scratching your head at a lot of it.
If you are a complete beginner to coding, I would recommend getting to grips with something less specific first. This book assumes a basic level of experience, and will not hold your hand as to where to put the snippets of code. Almost every exercise required me to go away and try and figure out why the script wasn't working, and it was usually because I had put a code section in the wrong place.
Fair enough, my mistake, but the book doesn't tell you WHERE to put the code. It's essentially trial and error, which is good from a learning perspective, but frustrating when simply including the codes in full would have saved so much time. A good example of this is telling you to insert code into the CGPROGRAM statement, and then NOT telling you to write the next chunk in the VOID SURF function. All it shows you is what to actually type out, with none of the shader template code included. You are only getting half the picture, unless you already possess a reasonable amount of experience, and as such will likely avoid these basic mistakes.
Similarly, in some of the sections where it explains why a code works, it simply reels off the complex mathematics behind the code (basically the author repeating himself) without breaking down what is happening to the most elementary levels. Again, probably my fault for not already knowing it, but it means you have to go off and do a lot of research to understand what the book is claiming to 'teach' you.
What the book DOES do well is give you an idea of the kind of things you can achieve by writing your own shaders and lighting models. It covers everything from simple normal mapping to writing your own CGINCLUDE files, and I would imagine that anything you could ever want to achieve is probably touched on in here in some form.
It is also worth pointing out that some of the codes are not included on the publishers site, so you can't even cross reference your versions with his for mistakes, and some of the provided shader scripts on Unity's own website are better explained than his.