Had dreams about the Pioneer code actually. Kind of have a plan for tackling conversion to GPU based terrain. Odd that I already sort of have that working but cannot integrate it back into Pioneer :/ (https://github.com/fluffyfreak/pioneer/compare/seeNoEvil_00) that branch is a world of hurt.
Plan as it formed in dreamy dreamy lalaland:
- thread terrain generation with jobs,
- switch heightmapped planets (Earth/Moon/Mars) to use colour maps,
- preprocess all heightmapped planets maps into cubemaps/per-face-maps,
- make all planets render highest level noise into per-face-heightmap,
- unify/simplify terrain gen to all use above high-level heightmap,
- switch to generating per-patch heightmaps,
- using heightmap offset in vertex shader instead of generating vertices,
- use texture splatting (/other) for terrain instead of vertex colour,
- ???
- Profit!
By step #8 there's nothing to stop me replacing where the heightmap is generated, CPU or GPU. #8 is also at least an immediate 50% speedup since using the noise system for that is horrific. New patch data can come from anywhere off the back of any request since #1 moved that out into a generic "job" system. The rest is a mix of little bits of work and dealing with legacy crap.
Had dreams about the Pioneer code actually. Kind of have a plan for tackling conversion to GPU based terrain. Odd that I already sort of have that working but cannot integrate it back into Pioneer :/ (https://github.com/fluffyfreak/pioneer/compare/seeNoEvil_00) that branch is a world of hurt.
Plan as it formed in dreamy dreamy lalaland:
By step #8 there's nothing to stop me replacing where the heightmap is generated, CPU or GPU. #8 is also at least an immediate 50% speedup since using the noise system for that is horrific. New patch data can come from anywhere off the back of any request since #1 moved that out into a generic "job" system. The rest is a mix of little bits of work and dealing with legacy crap.