2025-07-21 16:58 CEST

spring: develop 9fdfe7c3 Diff ] Back to Repository ]
Author Committer Branch Timestamp Parent
Beherith GitHub develop 2020-04-05 21:12:33 develop 0f3a85f7
Changeset LOAM (Lazy ROAM) for develop branch (0000508)

* LOAM (Lazy ROAM) for develop branch

ROAM frees up the entire triangle pool that stores the triangles of each tesselated patch (129*129 hmap pixels) and retesselates all patches whenever any in the visibility of patches occures, or if the unsynced heightmap changes (e.g.) explosion
LOAM does nothing when patches only go out of view, or when patches go into view, and a not-too-stale tesselation is aviable
when a 'stale' patch comes into view, only it is retesselated, and retesselation can affect neighbours, which is tracked and updated accordingly
when a heightmap change occurs, only that patch is retesselated, and if the neighbours are affected, that is updated accordingly
The cost: the mildly increased memory cost of keeping a larger triangle pool updated
the advantage is lag-free scrolling on a map
If the LOAM triangle pool runs out for any reason, then all the stored patches are all reset, and the whole view retesselated (exactly like it happens with ROAM on every visibility change)

* Update LOAM

Added detail increase on zoom in, fixed some midpos errors, shadow meshes are rendered from playercam perspective (much nicer, lower tri load)
Fixed a bug that caused VBO updates for every patch every time

* LOAM less lazy, but distribute load evenly over frames, behave well on zooming :)

* use _STPF_

* type pedancy
mod - rts/Map/Ground.cpp Diff ] File ]
mod - rts/Map/SMF/ROAM/Patch.cpp Diff ] File ]
mod - rts/Map/SMF/ROAM/Patch.h Diff ] File ]
mod - rts/Map/SMF/ROAM/RoamMeshDrawer.cpp Diff ] File ]
mod - rts/Map/SMF/ROAM/RoamMeshDrawer.h Diff ] File ]