Use small displacement first, then add complexity after capture geometry is stable. These effects change reflection sampling rather than scene geometry or water height.
The Visual Effects master switch#
Visual Effects bypasses optional shader appearance, distortion and fades when off, while retaining their stored values. Strength and Opacity remain active. Enabling Waves, Ripples, Blur, Fade or Soft Edges also enables the master switch.
Mirror mode suppresses wave and ripple displacement. Pixel Safe Distortion quantizes displacement; it does not change the original scene.
Directional waves#
| Field | Units and behavior |
|---|---|
| Waves | Enable the primary directional displacement. |
| Wave Amplitude | Surface-plane displacement. Around 0.015–0.035 is a gentle starting range; excessive amplitude can expose capture edges. |
| Wave Speed | Phase speed in radians/second. Negative reverses phase travel; zero keeps a static pattern. |
| Wave Frequency | Radians per plane unit; higher values repeat more crests. |
| Wave Direction | Phase/displacement direction. (1,0) and (0,1) separate axes; use meaningful nonzero directions. |
| Secondary Wave | Independent enable, amplitude, speed, frequency and direction; can run without the primary wave. |
The screenshot is an artistic example, not required defaults. Keep capture margins bounded when adding distortion.
Radial visual ripples#
| Field | Meaning |
|---|---|
| Visual Ripples | Enable one continuous radial shader pattern and Visual Effects. |
| Ripple Amplitude | Radial displacement in plane units. Small values preserve recognizable details. |
| Ripple Speed | Radians/second; negative reverses phase travel. |
| Ripple Frequency | Phase repetition with distance from the center. |
| Ripple Scale | Scales radial distance before phase calculation; larger values tighten the pattern. |
| Ripple Center | Source-plane coordinates. Direct gameplay edits require NotifyVisualEffectsChanged(). |
Try amplitude 0.01, speed 1, frequency 12 and scale 1, then place the center near a visual focal point.
// Existing surface reference: WaterReflectionSurface water;
water.SetRipples(true, 0.01f, 12f, 1f, 1f);
water.Settings.Effects.RippleCenter = new Vector2(0f, 1f);
water.NotifyVisualEffectsChanged();
// Or use a built-in ripple configuration:
water.SetRipplePreset(ReflectionRipplePreset.Subtle);Runtime parameter order#
SetWaves takes enabled, amplitude, speed, frequency, direction. SetRipples takes enabled, amplitude, frequency, speed, scale. The order differs, so check the API reference when wiring values.
This is one continuous visual ripple field per surface. There is no automatically tracked splash-point list or collision-event simulation. Gameplay can move the center or change parameters through the API.