For the past few months I have been working very hard on a stylized water shader for the Universal Render Pipeline. The result is a beautiful shader, which is feature rich and easy to customize.
The main focus when developing this shader is to create a shader with a lot of room for artistic freedom and customization. The exposed parameters have been carefully chosen and put into an easy to use custom material editor. A lot of different visual styles can be achieved as youâll see in the screenshots.
Built for URP Highly compatible 100% Shader Graph
⢠Depth based color gradients
⢠Surface foam
⢠Intersection effects
⢠Foam shadows
⢠Refraction
⢠Caustics
⢠Basic buoyancy
⢠Basic underwater effects
⢠Toon lighting options
⢠Surface specular reflections
⢠Supports fog and point lights
⢠Planar reflections
⢠Gerstner waves
⢠Vertex color support
⢠Local or world space UVs
⢠Orthographic camera support
⢠Custom material inspector
⢠Support window
⢠Full source code + SG nodes
⢠Extensive documentation/manual
You can check the compatibility page to make sure the shader will work with your project. Also be sure to check this page about performance.
⢠Water shader
⢠Foam, surface normals and caustics textures
⢠Several water prefabs and materials
⢠Demo scenes
I have put a lot of effort and passion into this asset and Iâm dedicated to making this shader as good as I can. If you have any questions or feature requests, please let me know.
You can find an extensive manual here. The best way to contact me would be through discord at https://discord.gg/6QQ5JCc or through email at alexanderameye@gmail.com. You can find additional contact methods under the contact section in the manual.
It seems that shaders made with shader graph will automatically support VR. I canât test this since I donât own a VR headset, but I think the shader will work with VR out of the box. Some feedback about this from someone who owns a VR headset would be greatly appreciated.
That would be great if you can look into VR as a supported feature.
I had been meaning to incorporate a cool and lightweight water shader for my project. VR support would be an extra added bonus.
Iâll buy the asset once itâs released in the asset store for my other non-VRprojects. That way I can also sign in as a test subject on VR devices for you if you are interested in allowing external testing to take place.
Hows the performance like for the asset on mobile and PC? Does it hogs a lot of processing power?
Being that itâs Shader graph-based and all.
I asked around and updated my previous comment. It seems that shaders made with shader graph should work out of the box with VR. So even though I canât test this personally, I have reason to believe the shader will work with VR but I can not guarantee this for now.
In order to have good performance on mobile, I have created a mobile variant of the shader that is more lightweight (but with less features). On my own mobile phone I get 60fps with the mobile variant and the lighting option of the shader set to âbasicâ. I have updated the mobile demo page so there is a dropbox link where you can download the .apk file.
You can expect future updates from me focusing on performance and optimization. Shader graph itself also has a few performance-related updates in the pipeline so hopefully that should help as well.
The package was just submitted for review by the asset store team
Hopefully soon but realistically it will take between 2 weeks and a month to be reviewed. Due to COVID-19 approval times are a bit longer so we will have to be patient.
hello alex, the link on your webpage to assets store is not work, it transform to home page of assets store, can you rebuild it again or directly post the assets store link on there? thanks!
Do you mean the water looks like jelly/oil, or I should add the option to make it look more like jelly/oil? In the material inspector there are a lot of properties you can play around with to achieve various styles of water.
Thank you ^^
This is currently marked as in research on the roadmap. Iâd like to add it, but I havenât settled on an implementation yet. Iâll need to do some research, see what works well, but no promises.
Great looking water. Thanks for publishing.
I seem to have a problem rendering whatâs labeled as the âWindWakerâ variation in the Demo scene. Is it because itâs for mobile and Iâm testing on PC?
Thank you for the support, that means a lot. Your target platform does not matter, the mobile variant shader should be visible as well.
Does the issue get fixed when you go to Stylized Water For URP > Materials > Mobile and then right click on the Windwaker material and click Reimport? Alternatively you could also try to reimport the mobile variant shader in the same way. Itâs located under Stylized Water For URP > Shaders.
Iâve had this issue before where Unity sometimes doesnât import materials correctly after downloading an asset from the store and I need to reimport them to fix it.
Thanks for your answer. Turns out I bothered you for nothing. I think I found out I produced the problem myself.
The mobile shader seeks for a subgraph under a particular absolute location (âAssets/Stylized Water for URPâ/âŚ).
If the asset is not located where you expected it to be, it wonât find the subgraph and appear pink. Everything else works fine. Changing the location to where the asset wants it to be fixes it.
Maybe it could be interesting to change it to a relative location in the future.
Iâve had that issue as well before. Actually, I am not using any absolute location references anywhere in the asset. Iâm not looking for subgraphs through code or anything, the whole process happens in the .shadergraph file. The issue is with Shader Graph itself. Custom function nodes just use an object field where I reference the .hlsl file and subgraphs donât have any references or paths for me to set, itâs just automatically. Somewhere along the way when moving around nodes, Shader Graph loses the reference and refuses to compile.
Maybe they already fixed this in the newer versions or maybe they will fix this is the future. I hope this gets improved. For now, Iâll mention it in the âtroubleshootingâ section in the manual. Thank you for sharing the issue you were having!