━━━━━━━━━━━━━━━━━━━
Tired of rain passing through roofs, buildings, interiors, glass structures and covered areas?
This asset is built around that exact problem.
Instead of relying on a single collision method, it combines local SDF collision, large-area Roof Masking, Water Masking, Ground optimization and Depth Buffer Collision into one system designed for detailed environmental rain interaction without requiring an expensive world-sized volumetric SDF.
Rain can interact with walls, ceilings, roofs, interiors, overhangs, bridges, props, vehicles, moving and rotating SDF Sources, glass structures and other complex geometry — while Splashes, Ripples, Impact Mist and sliding surface particles add secondary interaction after impact.
Transparent or visually complex surfaces can also use dedicated hidden SDF proxy geometry while the original rendered mesh and material remain unchanged.
A glass roof, for example, can stay visually transparent while a simple hidden SDF proxy provides the collision volume used by the rain.
More Than Simple Rain Collision
━━━━━━━━━━━━━━━━━━━
Rain does more than simply disappear when it hits geometry.
Surface impacts can generate Splashes, Ripples and Impact Mist, while Splash particles interacting with the local SDF can continue moving along detected surfaces.
On suitable sloped geometry, this creates runoff-like motion across roofs, glass and other collision surfaces.
Water is handled separately through a dedicated Water Mask, providing the interaction height used for Ripples and water-aware Splash behavior.
Key Features
━━━━━━━━━━━━━━━━━━━
🏠 Rain Occlusion for Roofs & Interiors — block rain beneath buildings, canopies, bridges, overhangs and other cover.
🧊 Local Moving Aquarium SDF — nearby baked SDF Sources are dynamically combined into a runtime Texture3D for detailed local 3D collision.
🌍 Hybrid World Coverage — local SDF provides detailed nearby collision while Roof Masking and Depth Buffer Collision continue handling a much larger surrounding area at lower cost.
🪟 Glass & Transparent Surface Interaction — use hidden SDF proxy geometry for rain collision without changing the original transparent material.
🧩 Custom SDF Proxy Geometry — use simplified or purpose-built collision-authoring geometry for thin, complex or visually expensive meshes.
💧 SDF Surface-Sliding Splashes — impact particles can continue moving along collision surfaces, creating runoff-like behavior on suitable slopes.
🌊 Water Interaction — detect water-surface height, spawn Ripples and prevent normal Splashes from continuing below the water surface.
🌫️ Impact Mist — configurable secondary mist particles add detail to surface impacts.
🔄 Moving & Rotating SDF Sources — baked Sources can move and rotate at runtime without rebaking.
📐 Tiered SDF Sources — use multiple bake-resolution tiers to balance detail, texture usage and runtime cost.
♻️ Reusable Baked SDFs — repeated objects can share the same baked SDF texture while keeping independent runtime transforms.
🎯 Camera & Ground Culling — reduce unnecessary Aquarium processing where full local coverage is not required.
📉 Adjustable Rain Density Outside the Aquarium — reduce distant Drops and their downstream Splash, Ripple and Mist cost.
🛠️ Weather & Water Proxy Tools — generate technical masking geometry without modifying the original object's layers, materials, colliders or scripts.
🧰 Complete SDF Authoring Workflow — SDF Source Marker, SDF Source Baker with Test Bake / Preview, SDF Scene Overview and SDF Source Cleaner.
⚙️ URP & HDRP Setup Assistants — validate project and scene configuration and automatically apply supported fixes.
🎨 Customizable Rain Particles — adjust particle textures, colors, sizes and behavior for Drops, Splashes, Ripples and Mist.
📦 Custom Streaming Support — SDF Sources can also be registered manually for chunked worlds, additive scenes, pooling and project-specific streaming systems.
Detailed Collision Where It Matters
━━━━━━━━━━━━━━━━━━━
The Aquarium is the core of the local SDF system.
Instead of maintaining one enormous SDF for the entire level, nearby pre-baked SDF Sources are selected and combined on the GPU into a configurable moving local volume.
This gives nearby rain detailed three-dimensional collision with geometry such as walls, ceilings, interiors, overhangs, props and moving or rotating baked SDF Sources.
Outside the Aquarium, rain still uses Roof Occlusion + Depth Buffer Collision, allowing broad world coverage without extending detailed 3D SDF processing everywhere.
The architecture is intentionally split across specialized systems:
The goal is a practical balance between:
Coverage ↔ Precision ↔ GPU / Memory Cost
Designed for Production Workflows
━━━━━━━━━━━━━━━━━━━
SDF Sources use multiple bake-resolution tiers: 16³ · 32³ · 64³ · 128³ · 256³
Large structures can be divided into compact logical Sources instead of wasting voxel resolution on empty space, while repeated objects can reuse the same baked SDF texture.
The included Editor tools are designed to make this workflow manageable across larger scenes:
You can define Sources, preview generated SDFs before committing them, inspect Source state across the scene and clean up unused baked data.
Dedicated Weather and Water proxy tools keep technical masking geometry separate from normal gameplay objects, while the Setup Assistants handle supported URP/HDRP project and scene configuration.
Known Constraints & Design Trade-offs
━━━━━━━━━━━━━━━━━━━
The system is designed around pre-baked local SDF data and several specialized masking techniques. Some constraints come from the underlying simulation and voxel-based representation, while others are intentional design choices made to keep runtime cost, memory usage and world coverage practical.
Full SDF collision is local by design.
Detailed 3D collision is evaluated inside a configurable moving Aquarium volume around the assigned tracking Transform, rather than across the entire world. The covered physical area depends on Aquarium resolution and voxel size. Outside that volume, Roof Masking and Depth Buffer Collision provide broader lower-cost coverage where applicable.
Runtime SDF rebaking is not provided.
Source geometry is baked in the Editor and the committed SDF is used at runtime. Sources can move and rotate without rebaking, but changes to the mesh or other baked geometry data require a new bake.
Scale changes require rebaking.
Scale is part of the baked SDF representation.
Deforming geometry uses a baked pose.
Skinned meshes can be baked from their current deformed pose, but the resulting SDF is static. Simpler rigid proxy Sources can be manually attached to moving bones when approximate animated collision is sufficient.
One standard Aquarium Controller is supported.
Projects requiring multiple independent simultaneous Aquarium volumes need custom integration.
Water Mask uses mesh geometry, not the final shader-deformed surface.
Shader-only waves, tessellation and GPU vertex displacement are not reproduced automatically in the Water Mask. A separate Water Proxy mesh can provide a simplified interaction surface for Ripples and Splash handling when needed.
Extreme particle speeds can tunnel.
As with other discrete particle collision systems, unusually high velocities may require tuning particle speed, simulation settings or collision geometry.
Some orbit or elevated-camera setups require a different tracking Transform.
A nearby camera rig or gameplay pivot can be used instead of the physical rendering camera, or directional culling can be set to 360°.
Custom streaming may require project-specific registration integration.
Projects using custom chunk streaming, pooling, Addressables or other specialized lifetime-management systems may need to integrate the provided Source registration methods into their own loading workflow.
More detailed explanations and recommended workflows are included in the full documentation.
Full Documentation Available Before Purchase
━━━━━━━━━━━━━━━━━━━
The complete Version 1.0 documentation is publicly available
→ Read Full Documentation (PDF & Markdown available)