Universal RP x Visual Effect GraphでDiffuseを実現する


2021年現在、ARKit x Visual Effect Graphでエフェクトを作る際に、以下のようにiOSデバイスがHDRP(High Definition Rendering Pipeline)をサポートしていないと怒られてしまい、かっこいいエフェクトが作れない問題に直面しました。

Platform iOS with graphics API Metal is not supported with HDRP.

自分的には、Visual Effect Graph上でLit ShaderによってDiffuseを表現したかったので、Universal Rendering Pipeline上でどうにかLit か Diffuseを再現する必要がありました。そこで以下のブログを参考にShaderGraph上でDiffuseを再現しました。

手順

1. VFX Shader Graph作成

Project内で右クリック -> Create -> Shader -> VFX Shader Graph で作成

2. Diffuse shaderを書く

参考にしたブログより少しシンプルにしていますが、以下のように

fixed diff = saturate(dot(i.normal, i.lightDir));

を再現して、それをオブジェクトの色と光源の色に掛け合わせればOKです。ちなみに図のように光源色は掛け合わせなくても、問題ないです。

3. Visual Effect GraphでShaderを設定

オブジェクトの色、光源の色、光源の座標を設定できるようにします。

Tips: VFX Property Binderで光源の座標を外部から設定をすると便利です。

ということで、Universal RP x Visual Effect GraphでDiffuseを実現できましたー。これでARKitに入れられます。