WaterWorks - Simple water/ocean/river system for URP + reflection + refraction View on Asset Store (opens in new tab)

Package details

Latest version
1.0
Last updated
First released
Unity version
2021.2.7 or later
Package size
813 KB
Files
19
Favorites
1,326
Views in the past week
381

Price tracking

Last checked
Tracked since
Lowest recorded
Free on

Keywords

WaterWorks - Simple water/ocean/river system for URP + reflection + refraction

by GapperGames Studios (opens in new tab)

4.0 / 5 · 44 ratings

Ratings by stars
Number of ratings for each star rating
5 stars 23
4 stars 9
3 stars 5
2 stars 4
1 star 3
  • Price drop

A simple and powerful water system for URP

Discount -100% Previous price $4.99 Price Free

Get it free on Asset Store (opens in new tab)

Affiliate link · Purchases support this site

Price history

Last 6 months

USD
Price history for WaterWorks - Simple water/ocean/river system for URP + reflection + refraction, 6 months Current Free; lowest Free; highest Free in this period. $0 Jun Jul Aug Sep Oct Nov

Asset preview

1 / 8

WaterWorks - Simple water/ocean/river system for URP + reflection + refraction screenshot 1

WaterWorks - Simple water/ocean/river system for URP + reflection + refraction screenshot 1

About this asset

WaterWorks is a simple to use yet powerful water system. It allows for: Underwater Volumetric Fog, Realistic Reflections, Shore Waves, Foam, Caustics (underwater shadows), Refraction and more! A big feature is that the water automatically flows downwards on any mesh! You can customise the color and transparency and most other settings easily, however the default settings are the most realistic. This asset also works on mobile and supports underwater rendering.

UNITY 6 WaterVolume.cs fix:

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
// Note: Removed 'UnityEngine.Experimental.Rendering.Universal' as RTHandle is now stable
// and often available directly under UnityEngine.Rendering.Universal.
public class Water_Volume : ScriptableRendererFeature
{
    class CustomRenderPass : ScriptableRenderPass
    {
        public RTHandle sourceHandle; // Changed to RTHandle for consistency
        private Material _material;
        private RTHandle _temporaryRT;
        private const string ProfilerTag = "Water Volume Pass";
        private static readonly int TemporaryColorTextureID = Shader.PropertyToID("_TemporaryColourTexture");
        public CustomRenderPass(Material mat)
        {
            _material = mat;
        }
        public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData)
        {
            RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor;
            descriptor.depthBufferBits = 0;
            descriptor.colorFormat = RenderTextureFormat.Default;
            RenderingUtils.ReAllocateIfNeeded(ref _temporaryRT, descriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: TemporaryColorTextureID.ToString());
        }
        public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor)
        {
            ConfigureTarget(sourceHandle);
        }
        public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
        {
            if (_material == null) return;
            if (renderingData.cameraData.cameraType != CameraType.Reflection)
            {
                CommandBuffer commandBuffer = CommandBufferPool.Get(ProfilerTag);
                Blit(commandBuffer, sourceHandle, _temporaryRT, _material, 0);
                Blit(commandBuffer, _temporaryRT, sourceHandle);
                context.ExecuteCommandBuffer(commandBuffer);
                CommandBufferPool.Release(commandBuffer);
            }
        }
        public override void OnCameraCleanup(CommandBuffer cmd)
        {
            _temporaryRT?.Release();
        }
    }
    [System.Serializable]
    public class _Settings
    {
        public Material material = null;
        public RenderPassEvent renderPass = RenderPassEvent.AfterRenderingSkybox;
    }
    public _Settings settings = new _Settings();
    CustomRenderPass m_ScriptablePass;
    public override void Create()
    {
        if (settings.material == null)
        {
            settings.material = (Material)Resources.Load("Water_Volume");
        }
        m_ScriptablePass = new CustomRenderPass(settings.material);
        m_ScriptablePass.renderPassEvent = settings.renderPass;
    }
    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        m_ScriptablePass.sourceHandle = renderer.cameraColorTargetHandle;
        renderer.EnqueuePass(m_ScriptablePass);
    }
}

From the publisher's Asset Store listing.

Technical details

-Water Shader supporting reflections, waves, foam, caustics

-Volumetric Underwater Fog

Compatibility

Render pipelines supported in each Unity version
Unity version Built-in URP HDRP
2021.2.7f1 Not listed Compatible Not listed

As listed on the Asset Store.