夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

ShaderGraphで基礎的なToonShaderを作る

本日はShader勉強枠です。

昨日テンプレートではなくノード内でUnityのDirectinalLightを扱うShaderを作成しました。

redhologerbera.hatenablog.com

ノード内でライトを扱うメリットとしてはライトを扱った高度な処理を可能とすることです。

今回はToonShaderを作成していきます。

〇ToonShaderとは?

Toon(トゥーン)シェーダーは手書きやアニメ調の見た目を実現する手法です。

日本のUnity業界ではUTS2(ユニティちゃんトゥーンシェーダー2)が最も有名なシェーダーとして使用されています。

learning.unity3d.jp

影を滑らかに投影するのではなく濃淡をはっきりとデフォルメしていることが特徴です。

〇Normalize

f:id:Holomoto-Sumire:20210816083208j:plain

[Normalize]ノード(正規化ノード)はすべての値を正規化します。

実際は以下のような処理が行われています。

void Unity_Normalize_float4(float4 In, out float4 Out)
{
    Out = normalize(In);
}

docs.unity3d.com

[Normalize]ノードを作成し、[Saturate]ノードのアウトプットと接続します。

f:id:Holomoto-Sumire:20210816083613j:plain

以上で影の付き方の濃淡をはっきりさせトゥーン調ができました。

f:id:Holomoto-Sumire:20210816083813j:plain

実用的なトゥーンシェーダーは影の色なども変更出来るので今後の実装で行っていきます。