夜風のMixedReality

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

UntiyURPの新機能Decalで水面コースティクスShaderを作る。 その①

本日はShader学習枠です。

UnityではUntiy2021.3で追加された新機能であるデカールを使用してShaderを作成します。

〇Decalとは?

DecalはUnity2021以降のURPで導入された機能です。

オブジェクトとして存在するある領域内のオブジェクトにテクスチャを描画する仕組みになります。

使用するためにはURPSettingsのRendererFeatureにDecalを追加する必要があります。

次にシーンにRendering→URP Decal Projector**を追加します。

以上でデカールの配置が完了します。描画されるマテリアルはRUP Decal ProjectorMaterialで設定可能です。

〇ShaderGraphでDecalマテリアルのカスタマイズ

ShaderGraphとしてDecal Shader Graphが使用可能になっています。

Decalはオブジェクト自体に使用されるShaderではなく投影に使用されるShaderのためVertexシェーダーブロックは特に何もないようです。

〇コースティクスシェーダー

コースティクスとは透明な物体に当たって屈折した光が描く模様を指します。

今回は川などの水底に映るような演出をDecalのShaderを使用して作っていきます。

画像はコースティクス(https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9)より引用

①ShaderGraphにVoronoiを配置します。

Voronoiは平面上にランダムに打った無数の点同士の距離が等しい位置を1とした図形です。

水面表現によく使われます。

Timeノードを配置しAngle Offsetへと接続します。

これによって模様がランダムに動くようになります。

この時点でシーンで見てみると次のようになります。

VoronoiのUVに対しRadial Shearノードを接続します。

これによって歪みを生じることができます。

強さを1にして程よい歪みに調整します。

④最後にMultiplyノードで変数化したカラーを掛け合わせ完成します。

色味を調整することでかなり水面に近い表現ができました。

本日は以上です。

次回以降でHoloLensでこちらの表現を応用していきます。