Shader
には SetGlobalColor
や SetGlobalVector
また Material
には SetColor
や SetVector
などパラメータを渡すためのメソッドが用意してあります
Shader
では そのパラメータを持っている すべての Shader に対して変更を行えます
Material
では その Material の参照を持っているオブジェクトにのみ変更を行えます
サンプル
以下の Shader の _ColorTest のパラメータを変更したい場合
Pass { ... float4 _ColorTest; ... }
// 全Shader の _ColorTest のパラメータを変更 Shader.SetGlobalColor("_ColorTest", shaderColor); // 指定した Material の _ColorTest のパラメータを変更 material.SetColor("_ColorTest", matrialColor);
両方利用していた際の優先度
例えば Shader.SetGlobalColor
と Material.SetColor
の両方を指定していた場合
呼び出しの順番に関係なく Material 側が優先されます