====== Development plan: Unscheduled features ====== This page lists the features that are intended to be included in L3DT //eventually//, but have not yet been committed to any particular release. | << [[l3dt:plan:frogger|Next release]] | | << [[l3dt:plan:plus_one|Release after next]] | ===== Zeolite ===== * {{:common:todo.gif|TODO}} Allow plugins to add map types to L3DT. * More functions (CORE): * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zvar_CastTo]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zmap_tile_GetLockState]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zvar_GetParent]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zmap_ZeroMap]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zlist_AddItem]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zlist_AddItemCopy]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:zlist_ReleaseItem]] * {{:common:todo.gif|TODO}} Add [[zeolite:functions:ztype_CanCopy]] * More functions (via zeofuncs): * {{:common:todo.gif|TODO}} classes.climate.GetByName * {{:common:todo.gif|TODO}} classes.landtype.GetLayerList * {{:common:todo.gif|TODO}} classes.texlayer.GetTextureName * {{:common:todo.gif|TODO}} classes.texlayer.GetBumpmapName * More wrapper classes: * {{:common:todo.gif|TODO}} CzClimate (work underway) * {{:common:todo.gif|TODO}} CzLandType * {{:common:todo.gif|TODO}} CzMaterial * {{:common:todo.gif|TODO}} CzTexLayer ===== User interface ===== ==== Improve startup speed ==== * Moderate logging of startup data? (e.g. contents of settings files?) * Split update data into separate 'updates.ini.xml', to cut down on size of local.ini.xml. [//This won't improve startup speed, but will be neater.//] ==== User profiles ==== * Interface for loading/saving default settings as an XML profile (or patch file?) * A 'load defaults' option for specific apps (eg. DF2, BF2, TSE, TA-Spring, etc.) ==== CommonUI ===== * Classes * GroupBox (part of static?) * Tree * List * Report (part of list?) * Tab * Things to handle * Fonts * Window positioning * Setting styles * Nesting of controls (dialogs in dialogs, etc) ==== Plugin-driven display ==== * Integrate Sapphire with main window (nb: this will solve tool window order problems :!:) * Allow Sapphire to set menu & toolbar. * Allow Sapphire to hide / modify status bar. * Split 2D rendering into Topaz.zeo. * Add thumbnail viewer (like Expose) in Calcite.zeo ==== Other user interface features ==== * Add validator to climate editor to ensure the climate has no gaps in its altitude bands ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=2159|see bug report]].) * Add 'recalculate' wizard mode, where user selects calcs to be run, but doesn't have to re-enter parameters ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=1365&start=0&postdays=0&postorder=asc&highlight=|see request]]). * Add option to display georeferenced coordinates in status bar ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=6166#6166|see request]]). * Add 'preferred program' window, for choosing preferred image viewer, script editor, text editor, etc. //[Note: using shell by default. However, this will fix image viewing problems in Linux.]// * Add 'bump map strength' to TN and LM wizards (defaults to 1). * Change edit-box validation in remaining dialogs to get rid of MFC 'please enter an integer' messages. * Disable pop-to-top when calculations finish (this is caused by basic prog box.) * Pixel information displayed in mouse hover box. * Cross-hatching on DM to indicate modified pixels. * Modify clip alt range tool so that an alt range can be selected (combo becomes above|below|between, with last option enabling a second edit box), and the set alt can either be relative or absolute (set to|shift by). * Pan with middle mouse button. * Dynamic list of schemes in view menu. * Show progress when minimised (in system tray?) * Make calculation progress window non-topmost (instead, bring to front when L3DT is activated?) * Calculate map byte allocation in exporter (hey, this could be a calculator plugin!) * A memory allocation check in wizards, to prevent out-of-ram events. * Cancel button for file I/O (multithread I/O, add plugin support for new prog box). ... maybe change implementation of CzProgBox to point to new prog box? * Add a nice 'Image drape' feature for Sapphire, with semitransparency support using 3rd texture unit ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=4771#4771|see this thread for request and method]]). * Revise wizards to be more intuitive (DM size, HF size, Wtable, etc.) * Maintain zoom when changing maps ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=6014#6014|see request]]). * Improve texture layer interface ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=6860#6860|see request]]). * Use dialog font in map tab control, for ease of use: * Measure tab height for fonts. * Measure tab width for font (with min and max). * Add origin support to 'crop' tool (top-left, bottom-left). * Add map size to status bar, and fix column widths ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=6693#6693|see request]]) * Context sensitive help, linking to the on-line or off-line tutorial((Is this still necessary with wthrus?)). * Create a wizard dialog for batch engine. * Algorithm parameters 'tweak' interface. * 'Blended' display in texture-combining wizard((This is just eye-candy.)). * Customisable contour lines((This is just eye-candy.)). * Restore defaults for schemes.ini. * Preview display for light map wizard ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=614|see this post]]). * Re-implement multi-threaded view buffer preparation. * Implement multi-buffer painting in view. ===== Tools ===== * Tablet support for brush tools. * Heightfield editor for 2D view. * Add mask map to prevent editing of map areas (i.e. to blank-off parts of the DM when using the brush.) * Add limits to design map elevation brush (i.e. raise by ..., up to...) ===== Algorithms ===== ==== Design map algorithms ==== * Add blur function for design map altitude ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=802|see this thread]]). * Allow 32k x 32k DM's (limit to 2M x 2M HF pixels). Change checks etc. * Split design map into: * DM-Height (float) * DM-PeakMask (BYTE) * DM-FracMask (BYTE) * DM-CliffMask (BYTE) * DM-ClimateMask (BYTE) * DM-ErosionMask (BYTE) * DM-LakeMask (BYTE) * DM-OverlayMask (WORD) ==== Heightfield algorithms ==== * Add 'fill in' algorithm for GeoTIFF terrain ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=1494|see request]]). * Fully plugin-defined terrain algorithms (variable DM/HF ratios!) * Move entire thermal erosion routine into plugin, to demonstrate new API features. * Release source code of several algo plugins (design/inflate? thermal?), to demonstrate API features. * Add menu options for remaining heightfield passes (peak, mountain, fluvial/thermal, etc.) * Add coastal / river erosion (terrain suffers greater brittle fractures when wet at base). * Larger heightfields * Automatically make DM mosaic when HF tiling is enabled and DM is larger than HF tile size (for new DM, blank ==== Water map algorithms ==== * Bake water map onto texture (waves, swells, etc) for orthographic maps (e.g. boardgame maps). * Make water plane calc switch sea/lake type depending on edge conditions. * Have some salinity-loss in shallow seas, to account for rivers connected to the sea. ==== Light mapping ==== * Radiosity mapping (e.g. [[http://www2.ati.com/developer/gdc/D3DTutorial10_Half-Life2_Shading.pdf|this]]). * Export 'shadow height map' option. * Calculate ambient occlusion. * For specular lighting: * Update materials in installer. * Test & tweak. * Document. ==== Texture mapping ==== * As requested by [[http://www.bundysoft.com/phpBB2/viewtopic.php?t=1114|Uray]], and [[http://www.bundysoft.com/phpBB2/viewtopic.php?p=6044#6044|Forboding Angel]]: * Add diffuse and specular components to materials. * Allow creation of diffuse and specular maps. * Allow land types to have multiple materials, with noise-based blending between them. * Noise may be perlin-based, or from a wrapping mask image. * Apply changes to bump-mapping calc too. * Add displacement-mapping to TX_GenMapPro. ==== Selected area calculations ==== * Do light-map area calculation for Andy. * Add 'Calculate area' wizard. * Add calc.AM.GenMapArea func * Add calc.LM.GenMapArea func * Add UI to allow calculation of selected areas. * Add stop/resume feature (remembers tiles completed, allows resume of remaining tiles). ==== Mesh decimator ==== * Allow user to specify triangle limit, and split triangles in order of variance until limit reached ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=2070&p=8832#p8832|see request]].) * Optimise triangles consistently across tile borders, instead of using unoptimised triangles ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=2070&p=8832#p8832|see request]].) ==== Other algorithms ==== * Algorithm for stitching two or more map projects together seamlessly. * Investigate calculation suspend/restore. ===== Fancy features ===== ==== Generalised 3D model support ==== * Implement model class in L3DT, and expose via plugin API. * Rebuild Azurite and atMeshDecimator to use model system. * Rebuild OBJ, S3O plugins to use model system. * Rebuild Sapphire to use model system. * Add model manager. * Allow all plugins to share model objects. ==== Other fancy features ==== * Caves. * Flowing water (rivers, waterfalls, rapids, etc.) * Simple linear feature creation (roads, rail, fences, etc.) * Design heightfield by drawing contours. * Generate design map from user-designed 'primitives map' (e.g. plains, hills, mountains, etc). * Vector/polygon based area definition for overlays and other operations((Isn't this what Leveller does? Should I replicate this?)). * Latitude-based climate variation (eg poles-to-tropics). * Preview option that generates only specific parts of the heightfield((I'm not sure this can be done, but I'll keep it on the list for now.)). * Strata-masking of erosion. * Allow different water colours for different water types (swamp, river, etc.) * Interpolate contour lines to generate heightmap. * Allow partial wrapping (east/west and north/south) --- //[[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2119&p=8916#p8916|see request]]//. ===== File I/O ===== * Add option to (re)export alpha map XML from outside of wizard ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2160&p=9067#p9067|see request]].) * Add option to import heightmap from OBJ or other mesh format ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=2&t=2715&p=10158#p10156|see request]].) * Plain-text file option in texture splatting (as opposed to the XML file). * Add support for VTP Enviro tilesets. * Add alpha-only RGBA export for alpha-maps (um...why?) * 'Export to DF2' ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=238|see here]]). * Add option to change mosaic naming scheme (using regex?) * Add XSLT for bundysoft XML files. * JPEG 2000 plugin, using [[http://www.openjpeg.org/index.php?menu=main|OpenJPEG]]. * Plugin for file preferences. ===== Optimisations ===== * Re-optimise water flooding routine. * Use SSE2 assembly optimisations where possible. * Investigate speed improvements to progress renderer. If possible, increase prog map size. ===== Sapphire ===== * Interface for adjusting movement speed ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=3&t=2102&p=8813#p8806|see request]]). * Multithreaded pre-emptive texture tile loader for Sapphire, to reduce single-frame lag when moving. * Add a gridbox overlay to the 3D viewer, to help users that need to align features with particular places. * Support for 3D navigation in Sapphire using devices such as 3DConnexion's SpaceNavigator. ===== Resources ===== * Change default textures to be powers of two in size. ===== Unsorted ===== * Plugin for VarListTree (use for settings). * Plugin to force wrapping on maps that do not already wrap. ===== Tertiary features ===== ==== L3DT Standard Edition ==== * {{:common:done.gif|DONE}} Allow high-res textures up to 32x (same as Pro). * {{:common:todo.gif|TODO}} Allow high-res attributes maps (up to 4x?) * {{:common:todo.gif|TODO}} Allow high-res light maps (up to 4x?) * {{:common:todo.gif|TODO}} Include Spring SD7 exporters. Following to remain reserved for Pro: * Large map support (greater than 2049x2049px). * Multi-core support. * Batch support. * High-res normal maps & bump-maps. * High-res alpha maps & RGBA alpha maps. * Mosaic heightfields. * Mosaic split/combine. ==== Undo and backup/restore ==== * Modify [[bundywiki>plugins:fileio:L3DTio_Backup|L3DTio_Backup]]: * {{:common:done.gif|DONE}} Don't backup maps that aren't initialised (instead flag that they are to be freed on record revert). * {{:common:todo.gif|TODO}} Backup/restore project's climate list (for calcs and for map editing). * Add automatic backup to: * {{:common:todo.gif|TODO}} 3D ramp mouse tools for HF (inc. bulldozer, leveller, line & c) * {{:common:todo.gif|TODO}} Manual flood / delete water body tools. * Other: * {{:common:todo.gif|TODO}} Backup map settings (from map settings list). --- // or should these be considered volatile?// * {{:common:todo.gif|TODO}} Add 'history' dialog box. * {{:common:todo.gif|TODO}} Handle water body list preservation through undo. * {{:common:todo.gif|TODO}} Add restore points within calcs, e.g. when making large heightfields. * {{:common:todo.gif|TODO}} Add 'backup map' function to wizards (e.g. in bundyengine); this would allow us to store settings before they're overwritten. ==== Network rendering plugins ==== * Network client plugin: * {{common:done.gif|Done!}} Implemented map-transfer interface. * {{common:done.gif|Done!}} Implemented script execution handler. * {{common:todo.gif|TODO!}} Implement calculation abort handler. * Network server plugin: * {{common:done.gif|TODO!}} Implemented map-transfer interface. * Both plugins: * {{common:done.gif|Done!}} Developed project settings sync message handlers. * {{common:todo.gif|TODO!}} Develop climate and material synchronisation message handler. * {{common:todo.gif|TODO!}} Demonstrate network rendering on TN calc. * {{common:todo.gif|TODO!}} Demonstrate network rendering on LM calc. * {{common:todo.gif|TODO!}} Demonstrate network rendering on TX calc. ==== Vegetation / object mapping ==== * {{:common:done.gif|DONE}} Create 'vegtype' class. * {{:common:todo.gif|TODO}} Allow user-provided output ID code. * {{:common:done.gif|DONE}} Create calc_VM_GenMasks function, to generate masks for each veg type in project. * {{:common:todo.gif|TODO}} Add slope/sun-based LT/veg mask param ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7848#7848|see request]]). * {{:common:todo.gif|TODO}} Create Veg mask wizard, in which user selects veg types to use. * {{:common:todo.gif|TODO}} Create veg editor and veg manager windows. * {{:common:todo.gif|TODO}} Push veg to Sapphire, //somehow// * {{:common:todo.gif|TODO}} Vegetation (for Spring) ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=2368#2368|see here]].) ==== Automatic settings / climate / materials migration ==== * {{:common:todo.gif|TODO}} Share custom climates / materials between different L3DT versions. * {{:common:todo.gif|TODO}} Share custom presets and other settings. ==== Unsorted ==== * {{:common:todo.gif|TODO}} Remove/rebuild 'StdFont' support. * {{:common:todo.gif|TODO}} Fix CTextureMap::UpdateArea (in Sapphire) for single maps (mipmaps not done yet!) * {{:common:todo.gif|TODO}} Create climate for blended TGEA Atlas terrain. * {{:common:todo.gif|TODO}} Add geovent texture to Spring exporter. * {{:common:todo.gif|TODO}} Create supertexture blender to pre-calculate a material's texture and bump-maps at 2x, 4x, 8x, 16x, etc, to accelerate later bump-map/texture blending algorithms. * {{:common:todo.gif|TODO}} Add a file overlay tool to //Sapphire//. * {{:common:todo.gif|TODO}} Fix 'cancel' bail-out errors for TN, LM, etc... * {{:common:todo.gif|TODO}} Add benchmarking features ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=791|see this thread]]). * {{:common:todo.gif|TODO}} Add markers to project, and can be created/deleted in Sapphire (also goto). In 2D view too? * {{:common:todo.gif|TODO}} Generate selected area for HF in design/inflate. * {{:common:todo.gif|TODO}} Add perlin weighting to texture AA blending? * {{:common:todo.gif|TODO}} Add displacement mapping (for light maps only?) * {{:common:todo.gif|TODO}} Update climates to use new DDS texture set. * {{:common:todo.gif|TODO}} Extend climate algo to include custom LT params options (e.g. alt ranges as heightfields.) * {{:common:todo.gif|TODO}} Add option to change project edge wrap flag ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=5935#5935|see this thread]]). * {{:common:todo.gif|TODO}} Reduce default horiz scale to 1m. * {{:common:todo.gif|TODO}} Modify installer to allow installation of start menu items, desktop links & file associations for all users ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7349#7349|see request]]). * Unicode build * Convert string code to 'const char*' and CStringA * {{:common:todo.gif|TODO}} bundyscript * {{:common:done.gif|DONE}} calc * {{:common:done.gif|DONE}} classes * {{:common:todo.gif|TODO}} CommonUI * {{:common:todo.gif|TODO}} dialogs * {{:common:done.gif|DONE}} ext * {{:common:done.gif|DONE}} file * {{:common:done.gif|DONE}} helper * {{:common:todo.gif|TODO}} lib * {{:common:done.gif|DONE}} map * {{:common:done.gif|DONE}} var * {{:common:todo.gif|TODO}} wizards * {{:common:todo.gif|TODO}} all plugins that use strings * Recompile with UNICODE flag set, and convert UI code, where necessary, to 'const wchar_t*' and CStringW