L3DT documentation
Large 3D terrain generator

L3DT release 2.5

Released on the 20th of April, 2007 (see announcement)


User interface


  • Added heightfield editing tools to Sapphire 3D renderer.
  • Added brush size/shape to DM paint tool (last used value is remembered).
  • Added copy, paste, select all, and deselect area to edit menu.
  • Added 'Edit→Select area' option (for copy, paste, export).
  • Enabled water flood tool and water body delete tools for mosaic maps.


  • MipMapped main window display, for faster rendering of large mosaics.
  • Threaded map rendering, with cancel button.
  • Added view shortcuts (1=DM, 2=HF, etc. '~' for cycle.)
  • Added 'View→Show map area' option.
  • Added '3D' toolbar option, for opening the 'sapphire' 3D renderer.

Menu options

  • Added 'Operations→Heightfield→Edit heightfield in 3D'
  • Added 'Operations→Heightfield→Filter (diffusion)'
  • Added 'Operations→Heightfield→Fractal inflate'
  • Added 'Operations→Alpha maps→Alpha express'
  • Added 'Operations→Design map→Resize design map'
  • Added all installed climates to 'climates' menu, allowing direct edit.


  • Made cancel button in progress box turn to 'Really?' button after 1st click, requiring 2nd click. This avoids accidental cancellation.
  • Added 'Export to Atlas' menu option and dialog (note: requires Torque plugin.)
  • Added move up/down buttons to plugin manager.
  • Checked for changes in extension dialog before asking for reset.
  • Enabled wizard presets in standard edition.
  • Beeps when calc queue is completed (off by default, enabled 'Settings→Local settings', then 'Calc→AutoComplete→BeepWhenDone').
  • Remembers last used settings in image drape.

Algorithm changes

  • Improved accuracy of shadow mapping with light divergence & multi-casting (L3DT Pro only).
  • Allowed re-sizing of mosaic heightfield.
  • Added stronger heightfield erosion.

Parallel multithreading

  • Created thread manager.
  • 'Basic' parallel multithreading:
    • calc_LM_lighting — to be revised in v2.5a
  • 'Better' parallel multithreading (via threadman):
    • calc_TN_GenMap
    • calc_TX_GenMapPro
  • Used CCriticalSection lock for Get/SetPixel in CMosiacMap when tile allocation is changed.
  • Used CCriticalSection lock for loading of textures/bump maps in CTexLayer (needs more testing).

File I/O

  • Made re-size on export create a temp mosaic (uses less RAM.)
  • Added option to nuke temp directory on close ('Local→File→DeleteTempDirOnExit') - on by default.
  • Switched L3DT's temp dir to subdir of TEMP environmental variable (by default, can be changed).
  • Made option to force MinAlt/MaxAlt in HF image import to apply to 0→255 greyscale range, rather than Imin→Imax range from image. Option is at 'Settings→Local settings→File→Import→Image→UseGreyscaleRange'.
  • Allowed other file types to open from MRU (RUN, DEF.XML, HFF, etc - like proc cmd line).
  • Changed summary file extension back to HTML.
  • Removed RLE from WMF.
  • Re-used WMF for TWM (that's one less format!)
  • Removed mosaic sub-sample code (replaced by mipmapping).
  • Added georeferencing support for BT and HF2/HFZ formats.

Bug fixes

  • Debugged prog display on erosion routine for odd sizes (256×163 design maps, with mosaic HF tile size of 1536.)
  • Fixed bug in resize code that called GetMinMaxScale on non-HF/WM maps (see thread.)
  • Fixed overlay of plateaux on map edges.
  • Fixed resizing of non-square maps.
  • Fixed path handling when land type textures are on a different drive.
  • Fixed displayed map size in light/texture wizards.
  • Fixed lininterp pixel access in shadow calc (see this post).
  • Fixed high-res mipmapped drape (thanks: Leon.)
  • Fixed preservation of extents HF resizing (was preserving scaling instead.)
  • Redraw design map after 'Operations > Design map > Generate from HF'
  • Fixed mip-map bounds checking in CMapWrap::SetPixel.
  • Fixed tool view-mode checking (DM, WM, etc.)
  • Fixed split to mosaic.
  • Fixed bug in mosaic wizard pane (see this thread.)
  • Debug atFilterAM on climates other than temperate.
  • Add more hacks to make mosaic HF/WM work in L3DTVi2.
  • Fixed offset and null x-max, y-max edges in import DM.
  • Fixed refresh DM of when using design map schemes dialog.
  • Fixed DM resize (see this thread)
  • Fixed shadow offset with high-res normals/light-map.
  • Fixed slow speed when generating AM with a DM (see this post)
  • Fixed incorrect climate selection when no AM present (see this post)
  • Fixed black lines in light map/texture (see this post).
  • Fixed alpha layer depth selection in L3DT SE.
  • Fix bump-mapping of flat terrain (thanks Ryan!)1)


  • Moved settings to %APPDATA% (for non-admin privileges) .
  • Made settings more easily transferable between versions.
  • Added logfile link in start menu.
  • Added shell file associations for PROJ, MMF, ZEO, HFF, HF2, HFZ, TER (optional), BT (optional).
  • Made 'L3DT for Torque' version.



  • Allowed plugins to add functions to L3DT.
  • Allowed plugins to add menu options to L3DT.
  • Allowed L3DT to dynamically add zeolite functions.
  • Added ExtGetApiVersion to CExtAPI.h.
  • Added various API functions (see change log.)
  • Caught exceptions thrown in plugin functions.
  • Removed MFC dependence of CExtAPI (not derived from CObject, doesn't use AfxMessageBox)
  • Threading:
  • Made VarID_Climate, VarID_LandType and VarID_vector3f editable by var_EditUI

C++ wrapper classes

  • CzVar
  • CzList
  • CzStr
  • CzMap
  • CzFormat
  • CzComboSel
  • CzProgBox
  • CzBuffer
  • CzFunc
  • CzColour

File format plugins

Calculation / other plugins


  • Allowed plugins to be installed by drag-n-drop on L3DT icon (parse shell commands).
  • Allowed plugins with '.zeo' extension to be installed by double-clicking (shell file association)
1) Note to self: this is papered over; bug still occurs in matrix transform.
l3dt/history/v2.5.txt · Last modified: 2017/08/31 05:29 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki