第1回.Unityのマテリアルとシェーダー

●はじめに

今回はUnityにおける「マテリアル」と「シェーダー」という二つの用語を解説します。


●マテリアル(Material)

 マテリアル(Material)は日本語にすると「素材」「原料」などの意味になります。
例えば木の椅子であれば、素材は木ですので、木=マテリアルです。
Unityでも意味は同じで「木に見えてほしい椅子」なら「木のマテリアル」を設定すればいい、ということになります。

●シェーダー(Shader)

 シェーダー(Shader)はプログラムのことです。
 シェード(Shade)は日本語では「陰影、陰影を付ける」なので、シェーダーは「陰影を付ける者」と言えるでしょうか。
 現実世界で「陰影をつける者」といえば、漫画家やアニメーター、イラストレーターなど絵を描く人が思い浮かびますが、シェーダーとはまさにその絵を描く人を模倣するプログラムです。
 絵を描くプログラム(=絵師プログラム)と考えてもいいです。

マテリアルは素材、材質のことであり、シェーダーはその素材を描画(表現)するプログラム



●MaterialとShaderの対応

 Materialには木やプラスチック、水、人肌、金、銀、銅、鉄、布、ガラス、陶器など、実に様々なものがあります。あなたの周りを見回してみてください、色々な素材で出来た物質に溢れている思いますが、Materialはその数だけあるのです。
 いっぽう、Shaderはどこにありますか?あなたの知り合いに漫画家やイラストレーターはいますか?

 Materialを表現するためには、Shaderに対して「あなたにこのMaterialを描いて欲しいのです!」と依頼する必要があります。
これがMaterialとShaderの対応関係です。


●Materialを設定すること、Shaderを書くということ

 ここまでの説明で、MaterialとShaderの違いが分かって頂けたかと思います。

  • Materialを設定

 素材を決めて、どのShaderに描いてもらうかを決めることです。

  • Shaderを書く

 絵の描き方を考え、決めることです。

●おわりに

 Shaderを書くということは、絵を描くことと同じです(絵筆とプログラム、使う道具は異なりますが)。絵を描くテクニック、表現手法や考え方なども当然流用することができます。日本には漫画家、アニメーター、イラストレーターなど、絵を使って表現する人が沢山います。その人達と同じように、新しいShaderを作って様々な表現を作っていきましょう。

Shaderを書く=プログラムで絵を描くということ




※ちなみにUnrealEngine4の場合、MaterialはUnityのShader(ただしMaterialとしても使える)のことで、MaterialInstanceがUnityでのMaterialになります(UE4には標準のマテリアルエディタがあり、材質一つ一つに専用のShaderを作ることが出来るので、このようなネーミングになっているのではないでしょうか)