UnityでCG Shaderを書いてみた
最近shaderの勉強を始めようと思って、ついでにUnityにも触ってみたいので、Unityでshaderを書いてみた。
shader言語の種類
###1. Shaderlab
全てshader言語の基盤。
###2. CG
Nvida社が開発した言語、勉強しやすい。今回はこれを使う!
###3. GLSL
モバイル向け、CGとよく似てる。
実装の流れ
###1.Unityでオブジェクトを作成
簡単なCubeにしよう(Create > Cube
)。
###2.テクスチャを作成し、Cubeに割り当てる
名前はmy_material
しとこう(Create > Material
)。AssetsウィンドウでテクスチャをCubeにドラッグすれば割り当てられる。念のためInspectorウィンドウで確認しとこう。
###3.shaderを作成
MyShader
というshaderファイルを作成する(Create > Shader)。shaderを使うには、先ほど作成したテクスチャを選んで、inspectorウィンドウでShaderを(Custom > MyShader)にする。
###4.shaderを編集
MyShader
を開いく:
コードを下記のように整理しときます。
最初のShader "Custom/MyShader" {}
はshaderの名前、変えてもオッケー。最後のFallBack
は、もしshaderがうまくレンダリングされない時に、バックアップ用のシェーダなのだ。ここはデフォルトの”Diffuse”になる。
###プロパティを追加
Color
プロパティを追加してみる。Properties
の中に:
と書くと、保存してUnityで見てみると、Cubeが紫になる。
これから色を変えられるようにしてみよう。
SubShader
の中に、Pass
ブロックを追加
CGを使うにはCGPROGRAM
を明示しないといけない;
では、CGを書いてみる。
保存して、Unityでmy_material
の色を変えると、Cubeの色も変わる!