Simulation Performance Tips

KWS2 is heavily optimized, but performance is most critically impacted by how you configure simulation zones and particle systems.

Zone size is the single most important factor affecting performance and memory usage. Carefully planning the layout, size, and number of zones can make the difference between a smooth 60 FPS experience and a GPU bottleneck.

The following tips explain how zone setup and particle usage directly affect memory consumption, simulation speed, and overall efficiency.

To achieve optimal performance:

  • ⚠️ Avoid massive simulation zones — this is the most common cause of performance drops. Large zones produce huge textures and slow down simulation speed dramatically. (Scroll down for detailed memory and performance breakdowns Zone Size vs Performance)

  • ⚠️ Limit foam and splash particle counts — use only as many as needed

  • ⚠️ Lower simulation resolution per meter — improves memory and speed, but reduces fluid detail

  • ⚠️ Splash shadows are extremely expensive — use “Low Quality” or disable them completely if not needed. Receive Shadow Mode allows you to choose the shadow quality:

    • Low Quality uses per-vertex shadows, which are fast but can show more visual flickering.

    • High Quality uses per-pixel shadows, which are more stable visually but much slower.

    Cast Shadow Mode is extremely demanding, especially when using Directional Light with shadows — Unity renders the splash particles into the shadow map for each cascade, significantly increasing the cost:

    • Low Quality greatly reduces the number of particles that cast shadows, minimizing the performance hit.

    • High Quality allows all particles to cast shadows, which looks better but has a major impact on performance.

Zone Size vs Performance

The larger the zone, the higher the VRAM usage, and the slower simulation becomes. Each simulation zone generates several render textures — Velocity, Water Level, Intersection, Normal, Wet Map, Shoreline Mask, Foam, and others. The texture resolution is calculated based on the zone size (by default ~2.5 pixels per meter). For example:

  • A 2×2 km zone will produce 5000×5000 texture resolution (using default 2.5 pixels per meters), requiring nearly 1 GB of VRAM for simulation data alone (In the worst case, when all features are used, such as color simulation).

  • A 200×200 m zone generates textures with ~90 times fewer pixels, using only ~12 MB, and the simulation runs ~90 times faster, primarily due to the significantly lower pixel count and reduces memory usage, texture read/write operations, and bandwidth pressure.

  • Keep simulation zones as small as reasonably possible.

  • Split large areas into smaller subzones, which can be frustum-culled and dynamically updated only when visible.

This drastically reduces memory usage and improves performance

Last updated