Rendering Performance Tips
Rendering performance depends mainly on which visual features are enabled and how large the visible water area is. Below is a list of features sorted roughly by their GPU cost — from most expensive to lightest.
Most Performance-Heavy Features
Volumetric Lighting
The heaviest rendering effect in KWS2. Computes light scattering and caustics under the water surface by tracing multiple ray samples per pixel and iterating through every visible light and shadow. Performance: Performance impact increases drastically with resolution and iteration count — especially in HDRP, where each additional light source and shadow map adds a significant cost. Overall performance also depends directly on the number of active light sources and the number of those casting real-time shadows. Optimization Tips: • Reduce Volumetric Lighting Resolution or Iterations • Use "Dir Light Only" caustic mode instead of "All Lights" • Limit the number of lights with real-time shadows enabled
Planar Reflections
One of the most expensive reflection methods — renders the scene a second time from a mirrored camera. In HDRP, additional cameras are extremely costly even if they render only a few objects (unlike Built-in or URP). Use it only when accurate reflections of large objects or nearby environments are essential.
Optimization Tips: • Limit the rendering layers to only the most important objects — for example, mountains, buildings, or characters. Avoid drawing small props, grass, stones, and particles, as they can generate thousands of unnecessary draw calls. • Combine Planar Reflections with SSR reflections: planar captures major geometry (using layers), while SSR adds detail for everything else (small objects, vegetation, shadows). • Reduce reflection resolution to cut cost dramatically. • Disable shadows • (HDRP Only) Disable volumetric lighting, and cloud rendering in the reflection camera — these add major overhead.
Dynamic Waves Simulation (Large Zones & Heavy Particles)
The Dynamic Waves Simulation is one of the most GPU-intensive features in KWS2 — not because of complex math, but due to the size of its render textures and particle systems overdraw. Each active zone continuously updates multiple textures (flow, height, normals, foam, wetness, intersection masks, etc.), so performance scales directly with zone size and resolution.
Optimization Tips: • Keep zones small. Large zones create massive textures and slow down GPU read/write operations. Several smaller zones are far faster than one huge area. • Avoid unnecessary overlap. Overlapping zones double processing cost in those areas. • Reduce simulation resolution (pixels per meter). • Limit foam particles. Particle count affects both compute time and memory. • Limit splash particles size and count. Larger particles greatly increase overdraw and reduce FPS. • Use baked (cached) zones whenever possible — baked data loads instantly and requires no runtime simulation. • Disable unneeded features like color simulation, wet surface decals, or advected foam. • Disable splash shadows casting and receiving — use Low Quality or disable shadow receiving/casting entirely if not required.
These adjustments usually yield the largest performance gains, especially in scenes with multiple zones or wide river networks.
Medium-Impact Features
Refraction
Defines how light bends and distorts through the water surface. KWS2 offers two computation modes: Simple and Physical Approximation. The Physical Approximation mode produces more realistic underwater distortion by simulating light refraction based on viewing angle and depth difference, but it requires additional per-pixel calculations. Dispersion adds subtle wavelength color separation and has a small extra cost. When the camera is above water, refraction rendering automatically switches to a lower-resolution camera buffer to reduce GPU load.
Optimization Tips: • Use Simple mode. • Disable Dispersion. • Lower Refraction Resolution.
Ocean Foam Rendering
Foam is computed separately for each FFT cascade. The result is accumulated over time, gradually fading to create natural movement and persistence between frames.
In the fragment stage, foam textures are combined using stochastic sampling, which eliminates visible tiling and provides a continuous, detailed pattern even at close range.
Performance: Medium cost — computed once per FFT cascade and blended during the surface pass. Impact increases multiple cascades.
Optimization Tips: • Use lower FFT resolution — foam detail scales visually with displacement. • Use less FFT cascades if possible. • Disable foam entirely in calm weather (low wind) — generation is conditional on wind speed
Wet Effect
Darkens and adds subtle gloss to surfaces near the waterline using G-buffer pass in Built-in or Decal buffer in URP/HDRP The effect uses a wetness mask generated around the water surface and applied to nearby geometry. The pass is screen-space, so performance depends mainly on the on-screen size of water and number of overlapping zones. Large visible water areas or many local zones increase fill-rate and bandwidth usage. Medium cost — mostly fill-rate bound rather than compute heavy.
Optimization Tips: • Disable Wet Effect in scenes where water doesn’t directly touch geometry (e.g., open ocean). • Reduce the height of dynamic zones, since the decal volume covers their full bounds — smaller zones mean less overdraw and better performance
Caustics Rendering
KWS2 renders two types of caustics depending on the water source: Ocean Caustics - generated directly from FFT wave data in two cascades for different scales. Both cascades are stochastically blended in screen space to remove repetition and achieve natural wave-based movement. This is the more demanding mode, as it requires dynamic texture generation every frame.
Dynamic Zone Caustics - Use pre-baked textures (also two cascades), read directly in the shader and blended together. This method is lightweight.
Performance: • Dynamic Zone Caustics — very low cost (baked textures only). • Ocean Caustics — medium to heavy, depending on resolution, filtering, and dispersion settings.
Optimization Tips: • Disable Dispersion unless color separation is visually needed. • Keep Filtering off for distant water or gameplay cameras. • Reduce Caustic Resolution for large ocean scenes.
Mesh Settings
KWS2 uses a unified GPU-driven quadtree mesh to render all water surfaces — both the global ocean and dynamic simulation zones. The mesh is rendered procedurally on the GPU using instancting indirect rendering. Only visible chunks are generated and drawn. LOD transitions are blended smoothly to avoid cracks or visual gaps
Performance scales with: • Camera Far Clip Plane (larger draw range = more visible quads) • Mesh Quality / LOD Distance • Number of active Dynamic Zones (each zone override detailing distance) • Dynamically adjusts mesh density (LOD) based on camera distance, screen coverage, and wind strength — when wind speed is low, surface detail is reduced automatically to improve performance.
Optimization Tips: • Reduce Mesh Quality or LOD Distance in Quality Settings to lower vertex density. • Keep the Far Clip Plane as low as possible for your scene scale. • Limit the number and size of active Dynamic Zones • Avoid extreme Wave Height or Zone Height Offset values — they expand quadtree bounds and increase vertex updates. • Disable Wide-Angle Rendering Mode for standard cameras — it increases visible chunk count.
Light Features (Low Cost)
Screen Space Reflections (SSR)
Faster than any standard SSR implementation — it doesn’t use temporal accumulation, has no ghosting, and produces cleaner, more stable reflections. Uses a lightweight per-pixel ray march (~5 steps) with a single depth sample per iteration
Optimization Tip: keep enabled unless you need extreme optimization very low-end GPUs.

Anisotropic Reflections
Adds a subtle directional blur to reflections, simulating stretched highlights caused by wind and wave motion. KWS2 performs anisotropic prefiltering directly in screen space, using a short sampling loop (7–13 iterations depending on quality). Medium - Light perfrormance cost.
Optimization Tips: • Disable High Quality
Underwater Effects
Renders underwater lighting, color absorption, and reflections when the camera goes below the water surface. Includes support for Physical Approximation Reflection, Half-Line Tension, and optional Water Drops.
Rendering is resolution-dependent, as the pass runs full-screen and includes several texture reads and volumetric calculations. However, the effect is disabled entirely when the camera is not underwater — only visible underwater regions are rendered, and non-visible pixels are discarded to save performance. If the camera is rarely underwater, there is no performance impact.
Performance: Cost scales linearly with screen coverage (Heavy at 4K resolution, moderate at 1080p or smaller). Performance also depends on the number of Local Water Zones — each local zone adds blending and sampling overhead. Optimization Tips: • Disable Internal Reflection Mode • Disable Half-line Tension effect unless is visually needed • Disable Water Drops Effect
Last updated