1 | | Two related problems: |
2 | | * Modifying terrain causes a noticeable delay in Atlas when super fancy water effects are enabled, since it recomputes all the water render data. |
3 | | * I think one thing which would help is waiting until the user has stopped modifying terrain before updating, but it will still cause a delay. |
4 | | * Not sure if it's feasible to do a partial update of the data, perhaps restricted to a certain area which was modified? |
5 | | * Another thing to consider, if we allow terrain to change during games, the same case will be used, and as annoying as it is in Atlas, it would be far worse to experience this delay in-game. |
6 | | * Other options: threading or optimizing the computation, or splitting it into multiple steps? |
7 | | * Changing water height doesn't force the data to update, should be a simple fix to `CCmpWaterManager`. |
| 1 | Atlas cannot have foam or waves because it is currently too slow to compute. This is linked with some water settings (waviness notably) which should force an update whenever they are updated. |
| 2 | |
| 3 | To help with this issue, we could: |
| 4 | |
| 5 | * Wait until the user has stopped modifying terrain/settings to update, which would improve usability drastically if it's really slow. Alternatively, we could only update the patches visible on camera when updating, and update the others when the user is finished (this could also be used for in-game terrain changes if it happens to be too slow). |
| 6 | * Do partial update of the data (currently 4 arrays: 2 for wave direction, one for foam amount, one for "distance to shore"). If we could update only the foam amount, for example, it would be much faster to simply change the waviness and we could likely re-enable foam in Atlas. |
| 7 | |
| 8 | ~~Ultimately, we could also thread the computation, optimize it as much as possible, or do it in multiple steps. Two related problems:~~ |
| 9 | |
| 10 | * ~~Modifying terrain causes a noticeable delay in Atlas when super fancy water effects are enabled, since it recomputes all the water render data.~~ |
| 11 | * ~~I think one thing which would help is waiting until the user has stopped modifying terrain before updating, but it will still cause a delay.~~ |
| 12 | * ~~Not sure if it's feasible to do a partial update of the data, perhaps restricted to a certain area which was modified?~~ |
| 13 | * ~~Another thing to consider, if we allow terrain to change during games, the same case will be used, and as annoying as it is in Atlas, it would be far worse to experience this delay in-game.~~ |
| 14 | * ~~Other options: threading or optimizing the computation, or splitting it into multiple steps?~~ |
| 15 | * ~~Changing water height doesn't force the data to update, should be a simple fix to `CCmpWaterManager`.~~ |