Skip to content

water_create

Jan Boon edited this page Jul 5, 2026 · 2 revisions

title: Creating Water Surfaces description: Authoring water surfaces for a NeL landscape in 3ds Max — the water material, texture slots, reflection settings and export published: true date: 2026-07-05T00:00:00.000Z tags: editor: markdown dateCreated: 2026-07-05T00:00:00.000Z

Water surfaces are authored in 3ds Max as flat meshes carrying a NeL Material with the Water shader type. The exporter turns them into dedicated water shapes that render with animated bump-mapped reflections — either a static painted environment map, or a realtime reflection of the actual scene on capable hardware. This page covers authoring; for how the rendering works under the hood, see Realtime planar water reflections and Water shader effects.

Geometry

A water surface must be a flat, convex polygon (a single planar shape — lakes with complex shorelines are built from several convex surfaces on the same plane). The object must carry exactly one NeL Material with the shader type set to Water (shiny water shader); sub-materials are not supported. If you use the ColorAlpha map (see below), the mesh needs a UV mapping applied.

Surfaces on the same plane at the same height behave as one body of water in the engine — they share waves and, when enabled, share one realtime reflection.

Texture slots

With the Water shader selected, the material's texture slots take on water-specific roles:

Slot Role Required
1 EnvDay — environment map above water, day yes
2 EnvNight — environment map above water, night optional
3 EnvDayUnder — environment map under water, day optional
4 EnvNightUnder — environment map under water, night optional
5 Bump — small-wave height map (converted to a du/dv perturbation map at load) yes
6 Displace — large-wave height map (perturbs the small waves) yes
7 ColorAlpha — large-scale color modulation; its alpha is the shore fade optional
8 Unused

Day and night environment maps are cross-faded by the game's day/night factor. The Use scene envmap above/under water checkboxes switch the surface to a dynamically generated sky environment map instead of the painted one; this mode was never used in Ryzom production (the painted maps always won on quality).

The environment map alpha channel {#reflectivity}

Historically, the alpha channel of the environment maps encodes the water's reflectivity per texel: where alpha is high the reflection is opaque, where it is low the water shows what is underneath. Analysis of the original Ryzom assets shows the artists painted this as a function of the sky's brightness — bright clouds and the sun fully opaque, dark plain sky more transparent, with an overall floor around 40–70% depending on the region (the Fyros maps derive alpha linearly from each map's own luminance; the Tryker maps use a flat base with bright highlights pinned opaque).

The calculated reflectivity option (below) reproduces this rule in the shader instead — when it is active, the environment map's alpha channel is ignored, so new maps authored for calculated-reflectivity surfaces only need meaningful color.

Water parameters

In the material's Water group:

  • Water pool ID — selects which wave pool drives this surface's wave simulation. Surfaces with the same pool ID share wave state.
  • Water height factor — scales the pool's wave amplitude on this surface.
  • BumpMap / DisplaceMap Scale and Speed — UV tiling scale and scroll speed of the two wave layers, per axis. These set the character of the water: slow + large for open sea, fast + small for streams.
  • Compute water lightmap — include this surface in water lightmap computation.
  • Enable water splash — emit splash effects on this surface.

Realtime reflection settings

These settings exist since NeL Material version 15; older materials export with everything off and behave exactly as before.

  • Realtime planar reflection — marks the surface as wanting a realtime reflection of the scene. Whether it actually gets one each frame depends on the player's setting (a 0–4 budget in the client's FX options, default 1) and on the surface's on-screen size: the largest visible flagged planes win the budget. Surfaces that don't win a reflection this frame fall back to their environment map seamlessly.

  • Calc reflectivity on envmap — applies the calculated reflectivity (below) over the painted environment map, ignoring the envmap's alpha channel. Use this for surfaces that should match the look of reflection-enabled water without ever reflecting in realtime. Surfaces flagged for realtime reflection use this automatically whenever they fall back to the envmap, so the look stays continuous.

  • Reflectivity fresnel (bias / scale / power) — the view-angle reflectivity curve used by both the realtime reflection and the calculated-reflectivity envmap mode:

    • Bias is the reflectivity when looking straight down at the water (0.15 default — mostly transparent).
    • Reflectivity rises toward bias + scale at grazing angles (defaults 0.15 + 0.85 = a perfect mirror at the horizon).
    • Power shapes the falloff (2 default; higher keeps the water transparent over a wider angle before the mirror kicks in).

    On top of this curve, bright spots in the reflection (the sun, bright sky) are always pushed toward fully opaque, matching how the original environment map alphas were painted. Tune bias/scale/power per region the way the original assets varied — e.g. murkier jungle water wants a higher bias and lower scale than a clear oasis.

The defaults (0.15 / 0.85 / 2.0) were tuned in-game against the original Ryzom water and are a good starting point for any lake or sea surface.

Previewing

  • The Object Viewer renders realtime reflections for flagged shapes with an unlimited budget, plus the calculated-reflectivity envmap path. View → Force water reflections treats every water surface as flagged, for checking shapes exported before the reflection settings existed. Note that a water shape viewed alone mostly reflects the background color — load it together with surrounding scenery shapes for a meaningful preview.
  • The Ryzom client renders the feature under real conditions. MaxWaterReflections in the client config (or the FX options slider) sets the budget; development builds can also set ForceWaterReflections = 1; to treat every water surface as flagged, which is the quickest way to evaluate a zone before re-exporting shapes.

Export notes

The water settings are read from the NeL Material by the mesh exporter when it detects the Water shader type. Slots 1 (EnvDay), 5 (Bump) and 6 (Displace) are required; the export fails with a log message if any is missing. The reflection settings require plugin scripts from NeL Material version 15 or newer; re-saving an older scene's material through the current plugin upgrades it in place.

Clone this wiki locally