読者です 読者をやめる 読者になる 読者になる

好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

『Unity Shaders and Effects Cookbook』がとても良い本だったので紹介

Unity

Unity Shaders and Effects Cookbook | Packt Publishing

まだ何が書いてあるのかをざっと確認した程度で読み込んではいないが、(少なくとも私にとっては)とても良い本だったので紹介。

Unityのシェーダーを書いてみたいけどリファレンスを見てもいまひとつピンと来ていない人や、UnityのShaderを書いてはいるんだけど理解が足りずUnityのリファレンスとの行ったり来たりが多い人には、とても買いな本だと思う*1


Unityシェーダーのリファレンス*2の冒頭にも書かれている通り、Unityのシェーダーの記述には大きく分けて3種類の方法がある

Shaders in Unity can be written in one of three different ways:

  • as surface shaders,
  • as vertex and fragment shaders and
  • as fixed function shaders.
http://docs.unity3d.com/Documentation/Components/SL-Reference.html

この本は、基本的には surface shaders の本。fixed function shaders への言及はほぼ無い*3

vertex shader は Chapter 5: The Lit Sphere lighting model の項や Chapter 7: Vertex Magic などで登場。fragment shader は surface shader のライティング計算が楽ちんになる恩恵がむしろ邪魔になる Chapter 10,11 の Screen Effect を扱うところまで出てこない。surface シェーダーがよくわからないから頂点シェーダーとフラグメントシェーダー書けばいいや、と思っている人も、この本を読めばUnityでシェーダーを書く手間がだいぶ省けるかも?

UnityのShader初級者でも、本の先頭から読み進めていれば、その都度初登場の機能には解説がある安心の構成。もちろん、普通のCookbookのように、実装したものが載っていそうなページだけ読むのも良い。

surface shader って(呼び出しコストが)お高いんでしょう? と思っている人も Chapter 8: Mobile Shader Adjustment を読めばもう安心?


Shader 以外の Unity のスクリプトC# で書かれている。Chapter 2 で、new Texture() した TextureをShaderに使っていたり、Chapter 4でCubeMap用のカメラを生成する ScriptableWizard を継承したclassのコードがあったりする。

他、Unity のスクリプトも使われている主な部分を目次から抜粋するとこんな感じか?*4

  • Chapter 4: Reflecting Your World
    • Creating a simple dynamic Cubemap system
  • Chapter 6: Transparency
    • GUI and transparency
  • Chapter 10: Screen Effects with Unity Render Textures
  • Chapter 11: Gameplay and Screen Effects

これを書いている時点だと 1英ポンド=150円前後ぐらいのようなので、2300〜2600円ぐらいってところかな? AmazonKindle版が買えたりもするが、packtpub.com にアカウント作って買ったほうが、epub / pdf / Kindle / PacktLib*5に対応していたり、サンプルコードが同サイトからダウンロードできたりで便利なのではないかと。

個人的には、Unityのリファレンスだけだと混乱していた部分や理解できていない部分が多かったのだが、混乱していた部分がこの本を読んでほぼ解消されたのではないかと思う。中学生以下の英語力しか無い私ですら買ってよかったと思えているので、英語の本だからと敬遠する必要もあまりないんじゃないかと思うのだがどうか*6


この本を流し読みした後に、UnityのShaderのリファレンスを見なおしていたら、情報が散らばっている事とか、読ませる順番を改善すれば、私のようなへたれプログラマでももっと理解しやすくなるんじゃないかと感じた。私がこんな順番で読みたいUnityのShaderリファレンスのリンクとか作りたいな……*7

*1:後者は私のこと

*2:Unityのリファレンスは日本語化が進んでいて docs.unity3d.com の部分を docs-jp.unity3d.com にすると日本語リファレンスに飛べる

*3:流し読みしかしてないので読み飛ばしてしまっているのかも

*4:見逃してる箇所もあるかも

*5:このサイトの独自形式? ブラウザなどで読めるっぽい

*6:ちなみに、私にとって初めて自腹で買った洋書がこれになった。英語マジ苦手。だがこの本は買いである

*7:このサイトで「あとでやりたい」的な発言をしたものは、ほとんどやらずに終わります。ダメじゃん