SpriteRendererで加算表現するShader


SpriteRendererのcolorプロパティでは元の明るさを超える表現はできません。
そこでSprites-Default.shaderに加算処理を加えることで、白く光って見せることにしたShaderです。

Sprites-Default.shaderのコードはこちらにあるのを使ってます
https://github.com/nubick/unity-utils/blob/master/sources/Assets/Scripts/Shaders/Sprites-Default.shader

プロパティに_Additiveを追加

    Properties
    {
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
        _Color ("Tint", Color) = (1,1,1,1)
        [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0

        _Additive("Additive", Range(0, 1)) = 0
    }

フラグメントシェーダーのfragに加算処理を追加

            float _Additive;
            fixed4 frag(v2f IN) : SV_Target
            {
                fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
                c.r+=(1-c.r)*_Additive;
                c.g+=(1-c.g)*_Additive;
                c.b+=(1-c.b)*_Additive;

                c.rgb *= c.a;
                return c;
            }

このシェーダーを使ったマテリアルをSpriteRendererのMaterialにアタッチします

マテリアルのAdditiveの値を変えると光って(白くなって)見えます。
スクリプトから操作するときは
Material.SetFloat(_Additive,value);
で変更します