-
Notifications
You must be signed in to change notification settings - Fork 41
TODO
AMDmi3 edited this page Apr 1, 2011
·
18 revisions
- Drop quads, add support for generalized indexed triangle strips/fans instead
- Add materials support; store vertex buffers per-material, render correspondingly; use PolygonOffset for ordering; lines are `material' too
- Add texture coordinate support (enhances materials)
- Add shadows (stencil?) (requires materials and landuse polygons)
- To begin with, use preprojected polygonal shadows (needs polygon merger)
- Tweak lines so they don't fill (ortho) map on low zoom levels
- Completely switch to new-world OpenGL
- glBegin/end/color -> glUniform
- Fixed pipeline -> shaders
- gl*Pointer, glClient* -> glVertexAttribPointer
- Support for billboards (for POIs)
- Support for street names
- Implement tagdict for efficient tag storage
- Add support for tagged nodes
- Add support for osm-diff loading (data may be added, changed and removed)
- Add support for working in replication mode without having to hold planet (or some fixed region) in memory; database support is needed, maybe with external utilities
- Add generic `polygon' primitive to represent general and multi-polygons
- Support landuse=* and natural=* polygons (needs materials)
- Add point feature support
- For starters, power=tower and amenity=bench
- Fix road turns (curves instead of sharp spike)
- Add proper support for street intersections
- Render lanes
- Multipolygon support
- Basic CSG - don't draw edges on flat joined walls
- Automatic edger - takes geometry, creates edges for it, automatically removes duplicate edges and edges for flat surfaces
- Automatic merger for flat polygons (roads)
- Straight skeleton implementation for arbitrary hipped roofs
- Less restrictions on building shapes for other roof types (done for pyramidal/conical)
- Some-tree indexing of points
- Render lines as well
- BBox support
- Multiple LODs implemented in a same way as interlaced png's, e.g. each 8 (contig.) track points will be distributed into 4 levels as follows: L1 will 0th, L2 will hold 4th, L3 will hold 2nd, 6th and L3 will hold 1st, 3rd, 5th and 7th. By rendering L1, L1+L2, L1+L2+L3 or L1+L2+L3+L4 one can achieve desired point density.
- Proper handling of absent SRTM files - don't just die
- Add support in other layers
- Buildings should just be risen to appear on the ground
- Flat objects should be split, preferably into indexed strips as well
- LODs should be implemented (as simple as 2^-n * x grid downscaling)
- PreloadedXmlDatasource needs feature index by bbox
- Frustum culling (at render phase)
- OsmDatasource should have iterator-based interface with postgres schema in mind (are things like way-by-node possible? - required for geomgen)
- All external interfaces (especially Viewers) should have double "human unit" (lot/lan/height/angle) interface, not obscure internal fixed points
- Split geomgen into topic files (Roofs, Walls, Roads etc.)
- Document most class methods and members
- SRTM landscape layer (separate from geometry for now)
- TMS layer (displays image tiles from mapnik and other sources)
- XML parsing takes most of time: finish libfastosm (my very fast XML parser specially for OSM) and use it
- In geometry generation optimization focus should be optimal tags processing (std::string ops take quite a lot of time) and TranslatePoints optimization
- Add pprof (google-perf-tools) profiling support to cmake
- Render multiple tiles in one go (e.g. 16x16)
- Optionally, symlink empty tiles
- Use multiple threads for png saving
- getopt_long interface
- Ability to render single image of arbitrary size
- Need 16x multisampling for proper eyecandy, while hardware only provides 4x. Can think of accum buffer (it's very slow, but rendering likely won't be a bottleneck anyway) or render to texture with following downscaling
- Add jpeg saving support (more useful than png when texture support is added)
- Support rendering over existing tiles (allows to add more regions to existing tileset)
- Add support for loading multiple .osm files
- Qt viewer
- Mobile viewer (likely Qt as well)
- Geometry generator (like tiler, but for geometry)
- Persistent app for continuous database change watching and geometry tile updating - can be a base for other services (usable client, tile rendering infrastructure)