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

Unityシェーダーをボチボチ(3)

Unity プログラミング

LeaLea / 4everMiku

pongeponge.hatenablog.jp
前の続き。

CommonState

 すべてのパスに共通の状態を指定するらしい。
大体この辺りに書かれているものといえば、LOD 200
LODはLevel of Detailの略で、詳細度とでも訳すのかな?
要は、LODの値で、どれだけ詳細に描画するかを決めるということ。


LOD
Unityビルトインシェーダー
100 VertexLit のようなシェーダー
150Decal, Reflective VertexLit
200Diffuse
250Diffuse Detail, Reflective Bumped Unlit, Reflective Bumped VertexLit
300Bumped, Specular
400Bumped Specular
500Parallax
600Parallax Specular


 Specularを表現したい場合はLOD 300と設定すればいいってことか。


Unity - マニュアル: ShaderLab :サブシェーダー
Unity - マニュアル: シェーダー LOD

Passdef

 やっとPassまできた……。
Passは3つ。
regular Pass(Pass)Use Pass(UsePass)Grab Pass(GrabPass) のどれか。


・regular Pass(Pass)
 大体このPassの中に処理を書いていきます。
Unity - マニュアル: ShaderLab: Pass


・Use Pass(UsePass)
 他のシェーダーのPassをインクルードする(持ってくる)。
書き方はこう。

UsePass "シェーダー名/Pass名"

「Pass名」とあるので、UsePassを使う場合は、使いたいPassに名前を設定する必要がある。
Unity - マニュアル: ShaderLab: UsePass


・Grab Pass(GrabPass)
 これだけかなり特殊。
何をするかというと、現在の画面をテクスチャとして取り込む。
スクリーンショット撮ってテクスチャにする、みたいな感じ。

GrabPass { }

と書いて、_GrabTextureでアクセスする。
Unity - マニュアル: ShaderLab: GrabPass


 次はHLSLかな……。


Unity 5.x Shaders and Effects Cookbook

Unity 5.x Shaders and Effects Cookbook