Create stylized lakes, rivers, pools, swamps, and large bounded oceans with a water system built specifically for retro-inspired URP projects. ๐
Retro Water System for URP combines a hand-written water shader with reusable profiles, CPU surface sampling, Rigidbody buoyancy, projected caustics, underwater camera effects, and a configurable tiled-ocean system.
The shader is designed around the visual tricks that made older 3D games memorable: stepped animation, visible vertex movement, faceted lighting, limited color bands, texture pixelation, affine-style distortion, ordered dithering, and intentionally crunchy highlights. Every major retro effect can be reduced or disabled, allowing the same system to range from heavily stylized PSX water to cleaner low-poly or PS2-inspired water. ๐ฎ
This is more than a single water material. It is a complete, profile-driven water workflow for designers, programmers, and technical artists.
๐จ Retro Surface Rendering
- Object-anchored or world-locked surface texture mapping
- Texture tiling independent from Transform scale
- Directional flow and stepped value-noise waves
- Adjustable wave scale, height, height bands, and animation frame rate
- Object, world, or view-space vertex snapping
- Faceted normal blending
- Full-resolution or deliberately pixelated texture sampling
- Affine-style texture warping
- Palette reduction and color bias
- Ordered Bayer dithering
- Banded lighting and opacity
- Off, Retro Glints, and Classic Specular highlight modes
- Rim lighting
- Shallow and deep water coloring
- Depth-based color blending and shoreline foam
- Opaque, cutout, and transparent surface modes
- Optional displaced shadow casting
- URP fog, additional lights, and shadows
The surface texture and wave mapping are controlled independently, so stretching a mesh into a river or large lake does not have to stretch its texture.
๐พ Reusable Water Profiles
Build reusable RetroWaterProfile assets that can control:
- Shader appearance
- Surface mapping and CPU sampling
- Caustics
- Underwater camera effects
- Optional ocean generation and LOD settings
Three material workflows are supported:
- Runtime Instance automatically creates a private material from the profile.
- Baked Profile Material uses a shared material asset generated from the profile.
- Manual Material leaves shader properties under direct material control while the profile can still drive supporting systems.
Profiles can be switched through code at runtime, making it easy to transition between calm, stormy, polluted, magical, or other water states. โก
There are provided default starter profiles for:
- Calm Lake
- Windy Lake
- River
- Gentle Ocean
- Rough Ocean
- Swamp
- PS1 Extreme
๐ Tiled Ocean and LOD
Optional ocean mode creates a bounded water grid from the configured ocean size and chunk size.
- Configurable X/Z dimensions and chunk size
- Automatic chunk-count safety limit
- Adjustable near-grid resolution
- Multiple mesh LOD levels
- Viewer-based LOD selection
- Configurable LOD distances
- Optional maximum render distance
- Separate distance-based wave-detail LOD
- Far-wave height and detail reduction
- Continuous world-space waves across chunks
- World-locked texture mapping
- Crack-free shared LOD borders
- Automatic edge-chunk sizing
- Per-chunk material property blocks
- Editor build, rebuild, clear, and diagnostics tools
Nearby chunks retain detailed vertex movement while distant chunks use fewer vertices and simplified waves, helping large oceans stay practical without flattening the water near the player.
โ Rigidbody Buoyancy
Add RetroWaterBuoyant to a Rigidbody for force-based floating behavior.
- Automatic collider-volume samples
- Center-of-mass, local-offset, and Transform sample modes
- Distributed buoyancy forces
- Adjustable buoyancy strength
- Adjustable resting sink depth
- True sinking when maximum lift is below object weight
- Wave-normal and wave-velocity influenc
Description sourced from the Unity Asset Store listing.