【Unity】スクリプトから Shader もしくは Material にパラメータを渡す
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 側が優先されます