NinaShader

Unity Shader 学習メモ

【uGUI】Imageに色を加算合成する

uGUIの画像に色を加算合成してみます。

参考記事はこちらです。

www.shibuya24.info

 

ビルトインシェーダーを複製して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に変更したシェーダーを適用してカラーを変更します。

今回は赤に設定しました。

f:id:ninagreen:20190602045651p:plain

 

結果はこうなりました。

f:id:ninagreen:20190602045709p:plain

 

Unityのデフォルトでは、ImageのColorを変更した場合には乗算合成が行われますが、変更後のシェーダーでは加算処理が行われるようになっています。乗算の場合は黒にどんな色を乗算しても黒(0に何を掛け算しても0)になるため画像が暗く見えますが、加算の場合は白(1)に近づくため明るく見えます。

 

ただこの方法の場合、通常のUI-Defaultマテリアルとは別のマテリアルを作成する必要があるためドローコールが増えることになり、実際に適用するとなると問題になりそうな気もします。