SRPを使うメリットとしてShaderGraphが使える事というのが言われていたような気がするのですが、ShaderGraphのターゲットとしてBuiltinも加わるみたいです(正式リリースではないので、どういう扱いかは分かりませんが)。
※タイトルはUnity2021.2としていますが、正しくはURP12.0.0からの追加です。
Changelog | Shader Graph | 12.0.0
環境
Unity2021.2.0b13
URP12.0.0
ShaderGraphの作成と動作確認
ShaderGraphの作成メニューも色々と階層化されて変わっているのが分かります。
その奥に作成するためのメニューがあって、現状はLitとUnlitのシェーダが作成できるようです。
簡単な動作確認としてフレネルエフェクトで縁の色を変化させてみました。
注意点
恐らく試験的な機能で、SRPのURPやHDRPとの互換性はあまりないのではないかと思います。
公式のカスタムライティングがそのまま使えるか試してみましたが、GetMainLight関数が上手く機能していない感じで、メインライトの情報を取得する部分で詰まりました。
代わりのメインライトの角度取得手段
https://docs.unity3d.com/ja/2018.4/Manual/SL-UnityShaderVariables.html:title:h350
試行錯誤したところ、一応直接変数からライトの角度を拾ってくることができたので、CustomFuncutionから取得できるようにしました。
void MainLightDirection_half(out half3 Direction) { #ifdef SHADERGRAPH_PREVIEW Direction = half3(0.5h, 0.5h, 0); #else Direction = _WorldSpaceLightPos0.xyz; #endif }
おわりに
Builtinのシェーダってサーフェイスシェーダが強力というイメージがありました。一方で現状の実装であればシェーダグラフで構築する場合にはSRPと同様にサーフェイスシェーダに頼らない実装になると思うんですよね。今回のこのbuiltinの対応は何に対する準備なんでしょうか、アナウンスがあった気もしないので気になりますね。