【uGUI】Imageに色を加算合成する
uGUIの画像に色を加算合成してみます。
参考記事はこちらです。
ビルトインシェーダーを複製してCustomUI-Add.shaderを作成します。
シェーダー名を変更します。
Shader "CustomUI/Add"
色を決定している箇所を変更します。
// half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd);
color.rgb += IN.color.rgb;
color.a *= IN.color.a;
Imageに変更したシェーダーを適用してカラーを変更します。
今回は赤に設定しました。
結果はこうなりました。
Unityのデフォルトでは、ImageのColorを変更した場合には乗算合成が行われますが、変更後のシェーダーでは加算処理が行われるようになっています。乗算の場合は黒にどんな色を乗算しても黒(0に何を掛け算しても0)になるため画像が暗く見えますが、加算の場合は白(1)に近づくため明るく見えます。
ただこの方法の場合、通常のUI-Defaultマテリアルとは別のマテリアルを作成する必要があるためドローコールが増えることになり、実際に適用するとなると問題になりそうな気もします。