RaindropFX Pro URP

About RaindropFX Pro URP – Unity VFX & Shader Pack

RaindropFX Pro URP Unity Asset Overview

In my experience building atmospheric games in Unity, camera-lens screen-space FX are often the make-or-break element for true environmental immersion. RaindropFX Pro URP addresses a long-standing headache for graphics engineers: delivering realistic, dynamic lens wetness and droplet distortion without tanking your frame budget on mobile or mid-tier hardware.

Architecturally, this asset hooks directly into Unity's Universal Render Pipeline (URP). Instead of relying on heavy, unoptimized blit passes or complex UI overlay canvas hacks, it operates primarily through custom Scriptable Render Features and optimized HLSL shader graphs. By reading the camera's opaque texture (_CameraOpaqueTexture) and distorting the UV sampling coordinates based on procedurally animated normal maps, it achieves convincing refraction, droplet merging, and gravity-driven trails right before the final post-processing pass.

Core Technical Features & Highlights

What sets this package apart from generic screen-space shaders is its attention to fluid physical behavior and render pipeline efficiency. Here is a breakdown of what is happening under the hood:

Ideal Use Cases & Game Genres

Honestly, you shouldn't just throw lens distortion onto every project, but for specific genres, it elevates the visual fidelity instantly:

First-Person Survival & Horror

If your player wears a gas mask, helmet, or diving suit, combining the condensation shader with dynamic raindrop trails creates intense claustrophobic tension when stepping out into harsh weather.

Cockpit-Based Racing Simulators

For automotive titles, windshield effects are mandatory. This asset shines here because of its screen-space mask wiping functionality. You can bind wiper animations directly to the shader's clean-mask parameter.

Dynamic Open-World RPGs

When transitioning weather states from bright sunlight to downpours, you can smoothly interpolate the _RainIntensity parameter globally via your environmental weather controller.

Quick-Start Unity Setup & Integration Guide

Setting up RaindropFX Pro URP in a modern URP project takes under five minutes if you follow these steps:

1. Register the Render Feature

Navigate to your project's active UniversalRendererData asset in the Project view. Click Add Renderer Feature and select RaindropRenderFeature. Ensure that Opaque Texture is enabled on your URP Pipeline Asset settings so the shader can sample screen color data.

2. Create a Raindrop Volume Profile

Add a Volume component (Global or Local) to your scene. Click New to create a profile, then select Add Override > Custom VFX > RaindropFX Pro. Enable the intensity and normal distortion parameters.

3. C# Scripting Controller Example

Here is a practical, production-ready C# component I wrote to handle dynamic rain intensity based on weather triggers or runtime events:

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

[DisallowMultipleComponent]
public class WeatherRaindropController : MonoBehaviour
{
    [SerializeField] private Volume targetVolume;
    [SerializeField] private float transitionSpeed = 1.5f;

    private VolumeProfile profile;
    private MaterialPropertyBlock propertyBlock;
    private float targetIntensity = 0f;
    private float currentIntensity = 0f;

    private static readonly int RainIntensityID = Shader.PropertyToID("_RainIntensity");
    private static readonly int DistortionStrengthID = Shader.PropertyToID("_DistortionStrength");

    private void Awake()
    {
        if (targetVolume != null)
        {
            profile = targetVolume.profile;
        }
    }

    private void Update()
    {
        if (Mathf.Approximately(currentIntensity, targetIntensity)) return;

        currentIntensity = Mathf.MoveTowards(currentIntensity, targetIntensity, Time.deltaTime * transitionSpeed);
        UpdateShaderParameters(currentIntensity);
    }

    public void SetRainIntensity(float intensity)
    {
        targetIntensity = Mathf.Clamp01(intensity);
    }

    private void UpdateShaderParameters(float intensity)
    {
        // Set global shader properties for screen-space raindrop passes
        Shader.SetGlobalFloat(RainIntensityID, intensity);
        Shader.SetGlobalFloat(DistortionStrengthID, intensity * 0.05f);
    }
}

Pros & Cons Assessment

Asset Details & Specifications

CategoryVFX / Shaders
Latest Versionv1.5.1
File Size10.76 MB
Added to PlatformFebruary 19, 2026
Views9 views
Downloads1 downloads
Favourites0 favourites
Official StoreBuy Original License on Unity Asset Store →
Issue with Package?Report Broken Link →

Developers Who Downloaded This Also Downloaded

Related Unity VFX Assets