MENU

【Unity】スプライトをシェーダーで明るくしたり暗くしたりする方法

unity-sprites-defalt-custom

昔使っていたスプライトをシェーダーで明るくしたり暗くしたりするシェーダー。

そもそも中身を知らないまま使っていたので、調べてみました。

シェーダーのダウンロード

  • 5.4のビルトインシェーダーをダウンロード

Unity - Download Archive

  • Sprites-Default.shaderを探し、Unityへコピー

シェーダーのカスタマイズ

シェーダー名の変更

Shader "Sprites/Default"

Shader "Sprites/Default_Custom"

一箇所コードの追加

         fixed4 frag(v2f IN) : SV_Target
            {
                fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
                c.rgb *= c.a;
                return c;
            }

         fixed4 frag(v2f IN) : SV_Target
            {
                fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
                c.rgb = c.rgb*2+max(fixed3(0,0,0),IN.color.rgb-0.5)*2;
                c.rgb *= c.a;
                return c;
            }

まとめ

uGUIの画像を明るくしたり暗くしたりするシェーダー

画像の表示

マテリアルのアサイン

f:id:min0124:20171024004931p:plain

  • uGUIのImageを作成し、Materialに先程のシェーダーをつけたマテリアルをアサイン

中間のグレー(rgb128)の状態でデフォルトの状態となっている

テスト

f:id:min0124:20171024005113g:plain

参考

Unity5.xでuGUIのImageを白くする - Qiita