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

はじめに

今回は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で鏡面反射を局所的にしています。

完成

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

qiita.com

nn-hokuson.hatenablog.com