Stylized water materials

The owned Sorolif/RTS Terrain/Stylized Water shader provides the general biome styles. Snow uses the separate Sorolif/RTS Terrain/Snow Water shader; see Glacier water. Autumn uses Sorolif/RTS Terrain/Autumn Water, with clear woodland water and floating bank leaves; see Autumn water. The release supplies four biome water styles, referenced by the corresponding biome presets. Forest uses Sorolif/RTS Terrain/Forest Water; Tropical uses the general Stylized Water shader; Snow and Autumn have their dedicated shaders. Their materials and optional light/foam masks live under Art and remain editable.

Biome Included water appearance
Forest Waves, crest foam, moving seabed light and fish silhouettes
Tropical Turquoise shallows, caustics and broken shoreline foam
Snow Cobalt/cyan depth, cold currents and breaking coastal ice
Autumn Woodland water with softly appearing floating bank leaves

The shaders combine procedural patterns with optional supplied foam/light masks. Ripples affect shading and the presets add subtle rendered vertex displacement, up to 0.035 world unit in the tropical style. CPU mesh vertices, water levels, colliders and bridge fitting retain their generated positions.

The dedicated Snow preset uses cobalt depths and transparent cyan shallows. Its currents, ice and shore breakup are independently adjustable. Snow_Water and WaterOnSnow share the style; the Tropical shader and materials remain independent. Snow's depth transition spans 2.2 units. Its own seabed light uses soft noise patches, rather than the general shader's Voronoi controls.

Assign a style

Choose a matching Biome preset, or assign an included material to MapDefinition.WaterMaterial. A directly assigned material takes priority over the biome. Duplicate a material into your own folder to customize it.

The starter wizard creates the new styles for new materials. Refresh preserves existing user shaders, colors and settings. An existing project can assign one of the included materials or explicitly reset a material using the preset API:

var water = new Material(Shader.Find(StylizedWaterPresets.ShaderName));
StylizedWaterPresets.Apply(water, BiomeType.Tropical);
definition.WaterMaterial = water;

Manage the lifetime of a runtime-created material in your project.

Camera and pipeline

Add StylizedWaterDepthCamera to your gameplay camera. It requests depth and opaque scene color in Built-in and configures the public camera data of an active URP installation. Demo and screenshot cameras already request depth.

Built-in makes one opaque-color copy before transparent rendering, shared by all water draws on that camera, and releases its temporary target after rendering. Disabling the helper removes only its own command buffers. URP uses its opaque texture through camera overrides; the helper does not edit a pipeline asset. Scene view cameras receive a transient helper when a map generator is present; this does not save a component in the user's scene.

In the URP Renderer asset, set Copy Depth Mode to After Opaques, or use Force Prepass. Depth must be available before transparent water is drawn. After Transparents copies it too late for these effects. The camera helper preserves your shared renderer asset and does not change this project setting.

The shader contains Built-in and optional URP passes. Package requirements skip the URP code when URP is absent; the module does not require that package. Native Editor rendering is checked in isolated projects on Windows Direct3D 12, Unity 6000.2.13f1 / URP 17.2.0 and Unity 6000.4.1f1 / URP 17.4.0, in Forward and Deferred. Terrain, vegetation and the four water shaders are covered together; see URP shader setup and verification scope. Other pipelines require separate validation.

Opaque seabed and banks provide the depth for shore effects. Without depth, water retains its deep palette and ripples. _UseDepth disables depth effects explicitly. Orthographic and perspective views use physical water depth along the surface normal, keeping the palette consistent when the camera tilts.

Controls

For Forest Water, the Open Sea Waves section controls the larger crest waves and their foam. Open Sea Start Depth is the resting distance from the water surface to the seabed, in world units. Waves start beyond that depth and reach full strength over Open Sea Depth Transition. For example, start 2 and transition 1 fades them in between depths 2 and 3. Start 0 preserves the previous appearance at every depth. The same mask affects wave displacement, normals, refraction and crest foam; the shallow/bank effects retain their controls.

Open Sea Distance From Shore is a separate horizontal clearance from land. Both conditions must be satisfied. Crest Foam Height Threshold controls which elevated parts of a wave produce foam; it is not a seabed-depth threshold. Depth gating uses the generated water mesh's UV1 depth data, without an extra texture or camera-depth read. Meshes without that metadata retain the previous behavior; generate water through WaterGenerator to supply it.

Native previews

The calibration basin and illustrative rocks show the water independently of the final environment props.

Classic water Snow water Tropical water

Tropical refinement — 19 October 2026

The tropical preset uses a lighter palette, lower shallow opacity, a longer depth-color transition and more fragmented white foam. The blade/terrain meshes, water height and collision are unaffected. The light network is entirely procedural, with no copied reference textures or external shader dependency.

Previous module material Refined tropical material
Before After

These native Unity views use the same calibration basin, camera and lighting. The terrain and spheres are illustrative test geometry. Generated-map views and Built-in/URP validation are included in the publisher report. Existing custom materials keep their values: assign Art/Materials/Water/WaterTropical to Water Material, or explicitly apply the tropical preset to a duplicate. The tropical Starter material in this working project has also been updated. The camera still needs depth before transparent water, as described above. The old Starter demo scene in this workspace now includes the existing StylizedWaterDepthCamera component on Main Camera; reopen that scene if it was already open during the update. Other custom scenes should add the component to their gameplay camera explicitly.

Tropical optics: scene color and animated bed

The tropical preset now refracts the actual opaque scene, including submerged props. Bed Distortion is 0.014, Refracted Bed Blend is 1 and Visual Wave Height is 0.035 world unit. Caustics Diffusion softens the light network. Distortion fades near the shore and rejects above-water depth samples to reduce bleeding. The neutral tropical seabed keeps the water blue instead of olive.

Generated tropical river Generated tropical lake

The native views use the real map generator. The shore comparison above uses the same basin and lighting before and after. The second animation frame below shows the moving foam, ripples and bed highlights. CPU water geometry and colliders retain their physical heights.

Second animation frame

Reflection polish and biome palettes

The sky tint and sunlight are composed as a separate surface coating after transmission. They are not amplified by dividing by shallow-water opacity. Sun glints are filtered at a distance, and the sky response uses gentler ripple normals to avoid bright bands. Built-in and URP both reject refraction samples above the water surface, including the colour filter footprint around them. This prevents displaced outlines when the opaque colour is downsampled. This is a stylized sky tint and direct sun highlight; it does not trace mirrored scenery or add a reflection camera.

Earlier tropical glare Corrected tropical reflections
Before After
Biome Character
Forest Blue-green water, neutral muddy bed, broken cream foam
Snow Cold blue depths, pale clear shallows, slow ripples
Tropical Existing turquoise palette, gentler reflections, animated bed light
Autumn Muted teal, warm shore foam and earthy bed

Fluid Emission defaults to zero. A custom warm-fluid style can use it for a visible fluid with no blue foam or caustics. It does not illuminate nearby geometry and does not require bloom or a postprocessing package. Surface film masks part of this emission to keep the cooling patches dark.

Only Forest, Tropical, Snow and Autumn presets are included in the release. Other enum values remain available for custom settings. Existing owned water/seabed material GUIDs are retained. Future starter materials use the same palettes. Refresh still preserves existing custom materials. Assign a matching included material when a direct override currently points to a custom older one. Regenerate existing maps to refresh any generated material copies.

Forest Snow Autumn

Forest caustics and lake shores

Forest water uses the included ForestCaustics light mask for moving seabed filaments. Seabed Caustics Mask accepts a replacement texture; Seabed Light Scale, Soft Seabed Light and Seabed Light Visible Depth control its world size, intensity and depth fade. The included mask is imported at 512 × 512 with mipmaps. Warped, overlapping patches avoid visible tiling; independent wave directions and wavelengths break up the surface pattern. Existing custom masks survive preset application.

In procedural Lake mode, contested islands use their own organic coastlines. The Lake group exposes Contested Island Radius Min/Max, Island Contour Irregularity and Island Minimum Water Gap. Placement reserves space for nearby player ramp landings before carving the lake. Beach shelves preserve the water between islands, and resource working pads remain on connected land. Other island layouts retain their existing generation rules.

Submerged Forest shoreline triangles use the seabed material. Grass placement also rejects roots below the local water level, including dry cells covered by the visual water border. Regenerate a saved map to update its terrain, island positions and grass placements.

The views use an owned calibration basin, simple stones and the same lighting. They demonstrate the materials independently of the final biome props.