LoginSignup
0
1

More than 3 years have passed since last update.

SpriteRendererで加算表現するShader

Posted at

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にアタッチします
Additive0.png
Additive1.png

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1