Unityを使っていると、シェーダーについてよく耳にします。 ただ、話を聞くとシェーダーはとても難しいとのこと。 今回は、このシェーダーがどのようなものかを勉強してみました。
サーフェイスシェーダー
シェーダーの中でも比較的簡単なのが「 サーフェイスシェーダー」です。
[c] Shader "Custom/MyShader" { SubShader { Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input{
float4 color:COLOR;
};
void surf (Input IN, inout SurfaceOutput o) {
// Albedo comes from a texture tinted by color
o.Albedo = half3(1.0,0.5,0.4);
}
ENDCG
} FallBack "Diffuse" } [/c]
Cg言語を使うという宣言 [c] CGPROGRAM // // // ENDCG [_c]
サーフェスシェーダ宣言を行う。 [c] // サーフェイスシェーダーのメイン関数は[surf]と宣言 // Lambert はライディングの方式
pragma surface surf Lambert
[/c]
[c] //Diffuse(拡散光)の色を設定している。 o.Albedo = half3(1.0,0.5,0.4); [/c]
プロパティ
UnityのInspector上で管理ができる変数を指定できます。 これは、上記の例でいうとSubShaderの上に記載をします。
色を指定する場合 [c] Properties{ _Color("Hoge Color",Color) = (1.0,1.0,1.0) } [/c]
テクスチャを指定する場合 [c] Properties{ _Texture("Texture",2D) = "white"{} } [/c]
透明度をつける場合 [c] _Alpha("Alpha",Range(0,1)) = 1 [/c]
Unity 5 実践シェーダプログラミング入門 [改訂第一版] 高橋 潤 売り上げランキング : 2490 Amazonで詳しく見る |