UnityのURPで水シェーダーを使ってみた。URP Stylized Water Shaderアセットでやってみた

unity urp 水 Unity
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^_^*)

この記事はUnityのURPで水シェーダーを使ってみたので、それについての記事です。

動作確認した最新のバージョンは Unity 6000.0.32 です。

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

HDRPにはデフォルトの水機能があったが…

ChatGPTに聞いたけどURPにはデフォルトの水機能はないっぽいですね…。

unity urp 水

HDRPの水機能はデフォルトでかなり綺麗にできるのでラクでしたね。

特にアセットとか探さなくてもこれだけでいけそう。

Built In Render Pipelineではスタンダードアセット(配布終了)が使いやすかった

もう新規配布は終了しているけど、これは使いやすかったかな。配布終了前にマイアセットに追加してた人は使えるけど、エラーが出るからスクリプトを削除しないといけない。

URPで水を作る方法

URPで水を作る方法はいくつかあります。

透過シェーダーで半透明にする ※リアルではないが手軽

UTS3は透明度をスライダーでいじればいいだけなのでラク。

以前トイレの水をこれで作ってみた。

blender トイレ 便器 作り方

リアルではないけど、ちょっとした水ならこれでも十分かもしれない。

コップの水とか量が少ない水だとこれでいいかな。

Litシェーダー+リフレクションプローブ+ノーマルマップを動かす

ChatGPTに聞いたらこれも良い感じになるらしい。

unity urp 水

URPにはHDRPのようなデフォルトのリアルな水シェーダーはありませんが、リアルな水を表現する方法はいくつかあります。お風呂の水をリアルにするには、次の要素を組み合わせると良い感じになります。

  1. シェーダーを工夫する
    URPでリアルな水を作るには、Litシェーダーやカスタムシェーダー(Shader Graph)を使います。

透明度(透明な水を表現): Surface Typeを「Transparent」にする。

屈折(Refraction): 屈折マップを使うか、スクリーンスペースでUVを歪ませる。

法線マップ(Normal Map): 波紋のような細かい揺れを追加。

メタリック & スムースネス: メタリックを低め(0付近)、スムースネスを高め(1.0付近)に設定。

反射(Reflection): 反射プローブを使って環境の映り込みを加える。

  1. 反射を入れる
    URPではScreen Space Reflection(SSR)がないので、以下の方法で反射を表現できます。

Reflection Probe(反射プローブ)を使う → 水面に環境が映り込むようになる。

Planar Reflection(平面反射) → 公式にはないけど、アセットやカスタムシェーダーで実装可能。

  1. 波紋や水流の動きを加える
    お風呂なので大きな波は不要ですが、小さな波紋を加えるとリアルになります。

Flow Map(流れを表現するテクスチャ)を使う

Normal Mapをスクロールさせる(動く水の表現)

Gerstner Waves(水のうねりを頂点シェーダーで表現)

  1. 水の深さを表現する(深度フェード)
    Shader Graphで深度フェード(Depth Fade)を使うと、浴槽の底が見える表現ができます。
    水の端では透明にして、中央部分を少し濃くすることでリアルになります。
  2. 泡や水滴のエフェクト
    泡のパーティクル(Particle System)を追加する

水滴がつく表現(デカールやスクリーンスペースのマスク)を加える

結論
URPにはHDRPのようなデフォルトのリアルな水はないですが、Shader GraphやReflection Probeを活用すれば十分リアルな水を作れます。
まずは Litシェーダーの透明設定 + Reflection Probe + Normal Mapのスクロール あたりから試すといい感じになりますよ!

んー、でもテクスチャ用意しないといけないのか…。

思ったより難しくはなさそうな気もするけど、なんか結構めんどくさそうなので無料のアセットを探してみます(^_^;)

アセットストアでURP用の水アセットを探す

アセットストアで検索すると結構ありますね。

「URP 水シェーダー」無料 検索 -Unity Asset Store

unity urp 水

もしかしたら既にバンドル購入した時とかに一緒に購入しているかもしれない(^_^;)

「こんなアセット買ったっけ?」みたいなことが結構あるので、Unityを長く使っている人はマイアセットを見てみると案外既に持っているかもしれないです。

まぁ昔買ったやつだとアップデートが止まっている可能性もあるけども。

GithubでURP向けの水シェーダーを探す

検索すると結構出てくるので、良さそうなのがあるかもしれない。

「unity urp water」Repository search results · GitHub

しかし古いやつも多いため、Unity6など新しいバージョンで動作するかは入れてみないと分からないですね(^_^;)

Unity公式のBoat Attack DemoかViking Villageの水だけ使う

Unity公式が出してるやつはこれだけかな?結構前のやつだけど…。

GitHub – jimma-unity/BoatAttack: Demo Project using the Universal RP from Unity3D

でも検索したらUnity6向けのブランチもあるようだからいけるかもしれない。

URP Water / Attack Boat demo – Unity Engine – Unity Discussions

あとアセットストアにUnity公式のViking Villageっていうのが無料であってこれにもURP用の水が含まれてるんだけど↓、これもBoat Attack Demoの水を使ってるみたいでUnity6だとエラーが出てダメでした。

Unity2020.3.33で作られたっぽいからそのあたりのバージョンなら使えると思う。無料だしダウンロードしておくのも良いかも。

Viking Village URP – Unity Asset Store

無料アセットを試してみる

検索したら無料でも良い感じのがあったので使ってみます。

Simple Water Shader

これはキラキラした部分はカメラで映す方式かな?

URP Stylized Water Shader

こっちは普通にリフレクションプローブで反射させる感じ?

綺麗だけどそのぶん重いかな(^_^;)

まぁこれを使ってみようかな。

URP Stylized Water Shaderを使ってみる

これサンプルシーンの水をプレハブ化して使おうかと思ったけど、真ん中に穴が空いていたからちょっと使えないですね(^_^;)

マテリアルだけでもだいぶ水っぽくなったので、とりあえずキューブを追加してマテリアルを適用します。

マテリアルのパラメーターを調整します。

バンプなんとかを調整するだけでかなりそれっぽいですね…。私が求めているお風呂の水はこのくらいで十分ですw

このくらい光が反射しているとこれだけで十分良い感じに見える気がする。

unity urp 水

私の場合はこれで十分かな(^_^;)

おわりに

無料アセットで手軽にできて良かった。

まぁだいたいこのくらいの見た目なら十分かな。

あとはライトやリフレクションプローブなどで調整して、Bloomをかけたりして凄そうに見せると良いかもしれない。

また何かあれば追記します(*^_^*)

タイトルとURLをコピーしました