Unityのシェーダーよくわからんよね……と思いながら手を出してみた。
作り方
Asset上で右クリック > Create > Shader から。
もしくはメニューからAsset > Create > Shader から。
ややこしいことに、Shaderは4つある。
Standerd Surface Shader
基本的にコレ選んでおけばいいって長老が言ってた。
ShaderLab+ Cg/HLSLで書く。
Unlit Shader
光源に関係しないよう初期設定されてるやつ?よくわからん。
ShaderLab+ Cg/HLSLで書く。
Image Effect Shader
画面全体へ効果をかける用に初期設定されてるやつ?よくわからん。
ShaderLab+ Cg/HLSLで書く。
Compute Shader
グラフィックスカード上で動く。
DirectX 11 スタイルの HLSL 言語で書くらしい。
つまり無難にStanderd Surface Shaderを選んでおけばいいです。多分。
使い方
Asset上にMaterialを作ってそこにShaderをペイッと貼り付ける。
あとは使いたいGame ObjectにMaterialを追加するだけ。
つまり、Shader単独では意味なくて、Materialが必須。らしい。
基本的な構造
シェーダーの基本的な構造はこんなの。
//Code.1 Shader シェーダー名 { Properties { …… } SubShader { …… } FallBack "Diffuse" }
Shaderの中に1つのPropertiesと、1つ~複数のSubShaderが詰まってる(Code.1ではSubShaderは1つ)。
シェーダー名
そのまま。シェーダーの名前。
文字列として表現するので" "で囲む。
例えば、"NewSurfaceShader"にする。
//Code.2 Shader "NewSurfaceShader" { …… }
するとInspector上ではこんなんなる。
他にも、"Custom/NewSurfaceShader"とすると
//Code.3 Shader "Custom/NewSurfaceShader" { …… }
こんなふうにグループ化ができる。
"A/B/NSS"と書けば、「Aグループ内のBグループ内にあるNSSというシェーダー」という意味になる。
今はいらんけど、シェーダーが増えたら便利そう。
Properties
Inspector上にスライダーとか色決めるアレとかあるやん。アレや。
…ではわからんので、例えばこう書いたとする。
//Code.4 Properties { //テクスチャプロパティ _MainTex("Texture", 2D) = "white" {} //最小値0.1、最大値5のスライダー _Scale ("Scale", Range(0.1, 5)) = 1.0 //最小値0.1、最大値5のスライダー _Limit("Limit", Range(1, 256)) = 256 }
するとInspectror上ではこう表示される。
Unity - マニュアル: ShaderLab :プロパティー
なんか長くなってきたのでここらあたりで一旦終了。
Unity 5 実践シェーダプログラミング入門 [改訂第一版]
- 作者: 高橋 潤
- 発売日: 2015/09/08
- メディア: Kindle版
- この商品を含むブログ (1件) を見る