Realistic WaterをUnity 2019.1で動かす

Sept. 28, 2019, 9:20 a.m. edited Sept. 29, 2019, 7:52 a.m.

#Unity 

Unityには水アセットがたくさんあります.その中でもRealistic Waterは2015年4月からリリースされており,古参のものと思います.いつだったかセールで手に入れていたので,さっそく手元のMacBook AirでUnity 2019.1.6f1にインポートしてみました(Realistic Waterのバージョンは2.0.3).そしてモバイル用のサンプルシーンであるSeaMobile.unityを開いてみると,

Texture creation failed. 'B5G6R5_UNormPack16' is not supported for Render usage on this platform. Use 'SystemInfo.IsFormatSupported' C# API to check format support.
UnityEngine.RenderTexture:.ctor(Int32, Int32, Int32, RenderTextureFormat)
Water_DistortionAndBloom:InitializeRenderTarget() (at Assets/KriptoFX/Water2.0/Scripts/Water/Water_DistortionAndBloom.cs:161)
Water_DistortionAndBloom:Start() (at Assets/KriptoFX/Water2.0/Scripts/Water/Water_DistortionAndBloom.cs:126)
Texture creation failed. 'B5G6R5_UNormPack16' is not supported for Render usage on this platform. Use 'SystemInfo.IsFormatSupported' C# API to check format support.
UnityEngine.RenderTexture:.ctor(Int32, Int32, Int32, RenderTextureFormat)
Water_DistortionAndBloom:InitializeRenderTarget() (at Assets/KriptoFX/Water2.0/Scripts/Water/Water_DistortionAndBloom.cs:161)
Water_DistortionAndBloom:LateUpdate() (at Assets/KriptoFX/Water2.0/Scripts/Water/Water_DistortionAndBloom.cs:133)

というエラーが出てしまいました.残念ながら水も映っていません.

そこで,エラーの示すWater_DistortionAndBloom.csの161行目を見てみると,

source = new RenderTexture(width, height, 0, RenderTextureFormat.RGB565);

とありました.このRenderTextureFormat.RGB565すべてのグラフィックカードでサポートされているわけではないようです.そのため,これをより一般的RenderTextureFormat.ARGB32に変えました.

source = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32);

すると,

thumbnail

と無事に動くようになりました(ただ,時々RenderTextureがうまく動かなかったりと少し不安定だったので,新しくシーンを作ってそちらにPrefabを置いてしまうのが良さそうです).