【Unity】ShaderGraphでBlinn-Phong鏡面反射を作成する

はじめに

今回はBlinn-Phong鏡面反射を作成していきます。

環境は Unity 2021.3.25f1です

Universal Render Pipeline を使用しています。

ノード作成

ノード全体図です

ハーフベクトル作成部分です。 視線ベクトルとライトのベクトルを足して正規化するとハーフベクトルを作成できます

ライトの取得はCustomFunctionノードで作成しています

#ifdef SHADERGRAPH_PREVIEW
    Direction = half3(0.5, 0.5, 0);
    Color = 1;

#else
    Light light = GetMainLight();
    Direction = light.direction;
    Color = light.color;
#endif

法線とハーフベクトルの内積で鏡面反射を表現することができます。Powで鏡面反射を局所的にしています。

完成

Blinn-Phong鏡面反射の参考にしたもの

blog.applibot.co.jp

nn-hokuson.hatenablog.com