Unity - Shader Graph:Invert Colorsを使って色を反転させる
初めに
Shader Graph の Invert Colors ノードを使うと、簡単に色を反転させるために Shader を作ることができます。本記事では、Invert Colors ノードについての解説をし、Sprite の色を反転させる方法を紹介します。
Inver Colors
Invert Colors ノードでは、チャンネルごとに、入力 In の色を反転します。
Red にチェックを入れると、Red の値を反転し、 1 - x にします。
すべての色を反転すると、次のようになります。
作り方
- Sprite Unlit Shader Graph を作成する
- Shader Graph ウィンドウで Blackboard に Texture2D を追加し、名前を "MainTex" にする
- Invert Colors ノードと Sample Texture2D ノードを追加する
- ノードを画像のようにつなぎ、保存する
- Material を作成し、Shader を先ほど作成したものに変更する
- Sprite の Material を変更する
(完成)
Sample Texture2D 以外を使った場合
Sample Texture2D ではなく、gather Texture2D を使ってみると次のようになりました。
補足
Texture2D の名前を "MainTex" にしなかった場合、次のようなエラーが出ます。
Material does not have a _MainTex texture proprety. It is required for SpriteRenderer.
「マテリアルに _MainTex texure プロパティがありません。Sprite Renderer が必要です。」とのこと。
このエラーを見ると、プロパティの名前を "MainTex" ではなく "_MainTex" にしたくなりますが、アンダーバーは必要ありません。
MainTex プロパティを選択し、Graph Inspector を見ると、Reference にはアンダーバーがついていることが分かります。参照に使うものが "_MainTex" であれば問題ありません。
また、Secondary Texture を使用したい場合もあると思います。Secondary Texture の名前を使い、Shader で使うこともできます。
参考にこのあたりのことが分かるリンク先を載せておきます。