tuan kuranes
02-08-2006 15:49:59
----------
- Use a specific namespace
- doxygen doc on everything.
- Logo and icons
- generate, use a more complex terrain folder with subfolder (height, texture, coverage, alpha each inside a order of magnitude of terrain (see recursive PLSM2)) with memory (roughness cache, option, best pool option, etc...)
- Paging
* Make PLSM3 recursive each page being tile of a bigger terrain (smaller heightmap bu bigger scale)
* Make Data source being providable by user directly using delegates.
* Threaded page, texture Loading
* Add dynamic registering system for Data Source Objects, so that user could register new datasource from client side.
- Refactor all getTiles, getPosition, GetPage into a "Global Positionning System".
- LOD:
* Add multiple LOD scheme (least distance-only and distance + tile roughness)
* Check if use the Binary Triangle Trees for Terrain Tile Index Buffer. (half less index buffer needed, as well as 1 more LOD possible.) can be optionnally activated where LOD scheme allows it (Can only link to 1 LOD away.)
* Using Lod Listener delegates, Give plugin user the ability to implements its own LOD scheme.
- Visibility
*Octree horizon culling using horizon rasterisation (considering use of quadtree and least square plane, see game programming gems 4)
* use that least square plane optimisation for terrain intersection ray queries (iterating over "quadtree planes..." hierarchy should be several order of magnitude order faster)
* separation of Occlusion octree scene manager into its onw .lib, which will results into a Occlusion octree scene manager.dll and plsm3.dll linked to that static lib.
* make occlusion demo/test case without any terrain.
- GetOption/setOption use an Option class that handle Option directly, using a std::map that contains 'value/descritption/valuetype/delegates' as well as a default map (loaded/loadable from user file too) which option mechanisme reverts to if it cannot find a value from map loaded from user config file.
- config files using sections : lod, paging, material, etc...
Octree horizon culling using horizon rasterisation (considering use of quadtree and least square plane, see game programming gems 4)
- Texturing
* Atmospheric scattering (with and without pixel shaders)
* user getshadowat point to "shadow" its own objects if in mountains penumbra.
- Deformations/painting
* Make any deformation/painting/texturing use filter classes :generic filter system that can be used from mapsplit/ deformation and painting.
* Make a filter that generation any number of coverage/alpha using max/min slope for each splat, as well as min height/max height
* update pages data when painting/deforming terrain at end of session. (or thread ?)
- Mapsplitter
* Use of Paging in mapsplitter, as memory is the main problem of mapsplitter when operating on maps (erosions, smooth, infinitize, normal, splats, horizon, etc...) So that we can effectively handles 16183*16183 png heightmap
- Add More Demos. (forest, water, selection, minimap, deformation, painting, etc..)
- Add a MapWizard.
- Add a automatic mapsplit mode inside plsm3 runtime if not already mapsplitter and .gen.fg is missing. (implies merging of .gen.cfg and .cfg)
- Add Poolset usage Log (a Debug help to calibrate finely the initial pool value by map usage.)
Refactor into multiple projects :
- occlusion octree library : octree, CHC occlusion
- paging library : page, tiles, queues
- terrain library : filters
That will be linked to by :
- Occlusion Octree Scene Manager
- Paging Scene Manager (only paging and occlusion octree, no terrain)
- Paging Landscape Scene Manager (paging, terrain and occlusion octree)
- Mapsplitter : (paging, terrain)
Rerefence and must read:
Overall Design of a terrain engine
(please post here any desgin/request/desire, it will added to todo and post will be deleted for clarity afterwards)