L3DT documentation
Large 3D terrain generator

L3DT release v2.9

Released on the 17th of August, 2010 (see announcement)

Major features

Compatibility fixes

  • Fixed Windows 7 compatibility (WDDM 1.1 driver resets).
  • Fixed ZeoPerfMon_NT plugin for RAM/CPU monitor (was broken in Win 7 x64).

Torque plugin

  • Fixed path of 'materials.cs' in T3D TER import.
  • Added 'reset' button to T3D Material Manager, to regenerate T3D material list from L3DT alpha map list.
  • Added 'Normal map' to T3D Material Manager.
  • Fixed T3D material importer to correctly set L3DT alpha map layer MtlName / TexFile / NormFile settings.
  • Added check to material mask→alpha map converter to warn of invalid values (see post).
  • Add a tiled T3D exporter (BETA).
  • Updated T3D material code to match changes in alpha map names in L3DT v2.9 (i.e. now using mtl name for layer name, rather than tex image name).
  • Fixed water block export for T3D (see post).


  • Add ability to define filters from script files, with example zfilter files included with installer.
  • Added 'ZeoScript' filter (via ZG_script plugin), which takes an arbitrary number of input pins and renders and arbitrary number of outputs. Uses new 'ExternVars' option of ZeoScript plugin.
    • Provided example graph (Sine generator.zgraph).
  • Created 'ZeoGraph' wrapper classes for use with plugin APIavailable on request.
  • Data type casting:
    • Added limited automatic casting of types via 'CastType' filter.
    • Added 'CastFrom2' filter, to allow 'ZeoScript' filter to render to explicit pin types.
  • ZeoGraph user interface changes:
    • Mapped 'del' key to filter remove handler.
    • Added 'copy' and 'paste' menu options.
    • Double-click on background opens 'add filter' window.
    • Alpha sorting of filters in 'add filter' window.
    • Added 'disable filter' option in menu and toolbar (hotkey = SPACE).
    • Added TAB hotkey for cycling through filters.
    • Made ZeoGraph window remember current working directory (in session only).
  • Added variable creation filters (Variable.int, etc.), via ZG_var plugin.
  • Added map conversion filters
    • ByteMap.ConvertToHF, Heightfield.ConvertToRGB, Heightfield.ConvertToByte, WaterMap.ConvertToHF
  • Added colour map manipulation filters
    • ColourMap.ScalarProd3, ColourMap.SplitComponents, ColourMap.MergeComponents
  • Added misc. calculation filters:
    • DesignMap.SetLayer and DesignMap.GetLayer.
    • Heightfield.Invert and Heightfield.MinAndMax
    • Heightfield.CalcGradient, Heightfield.CalcGradientX and Heightfield.CalcGradientY
    • Heightfield.Inflate (using InflateMosaic)
  • Added flow control filters:
    • Select, Gate, IfElse
  • Added math filters:
    • Modulo, Power, SquareRoot, Log10, RandomFloat
  • Added logic filters:
    • Or, And, Not, Nand, Nor, Xor, IsNullHandle
  • Added string filters:
    • Concatenate, Length, Find, Replace, Compare, Left, Mid, Right, MakeUpper, MakeLower
  • Bug fixes
    • Fixed bug in 'save' that forgot to set window title and stored file name.
    • Fixed bug when loading filters with variable pin count/type (namely, CastType2 and ZeoScript filters).
    • Enabled 'ZG_tee' filter in L3DT for Torque (was accidentally omitted from extension index).


  • Created ZeoScript just-in-time (JIT) compiler (see blog post).
  • Re-built script editor window in atScriptEditor plugin, with minor changes.
  • Modified ZeoScript to report fewer errors on bailout following compilation error.
  • Modified script manager to scan for scripts in the scripts directory, and changed 'remove' button to perform delete on scripts placed in the scripts directory.
  • Added 'RunScript2' function, which takes options list as arg. Recognised options are:
    • FileName [string]
    • WorkingDir [string]
    • ExternVars [varlist]
  • Added alpha sorting to 'Scripts→Edit script' and 'Scripts→More scripts' menu options.
  • Syntax changes:
    • <zs:…> syntax replaced by <…>
    • <m:…> operator replaced by <GetMap…> function
    • <f:…> operator replaced by <GetFormat…> function
    • <v:…> operator replaced by <GetVar…> function (for globals)
    • <cast:…> operator replaced by <cast…> function.
    • <&:…> operator replaced by & operator.
    • <*:…> operator replaced by * operator.
    • 'new' and 'delete' functions now behave like C equivalents, via hvar pointers, and using new heap list.
    • C-like variable name rules are now enforced.
    • removed 'goto'.
    • Ended automatic dereferencing of hvars to var arguments; users must now manually reference/dereference.
  • Added new functions:
    • strfind, strreplace, strupper, strlower, strleft, strright, and strsub
    • fgetc and fputc
    • list.Append (in ZeoWrap).
    • var.CopyValue and var.GetName (in ZeoWrap).
    • dirsel.InitDS and dirsel.GetDirname (in ZeoWrap).
    • combosel.InitCS, combosel.GetOptions and combosel.GetCurSel (in ZeoWrap).
  • Bug fixes:
    • Fixed 'stresc' function, which did not correctly close escaped strings within strings in some cases.
    • Fixed handling of literal characters.
    • Fixed casting of characters.

Algorithm changes

  • Added mask generator calculation.
  • Added tangent space normal generation (see this thread).
  • Automatically disabled shadow casting when the sun elevation angle is 90 degrees.
  • Modified design map generator to make flatter maps on small scale terrain (see this thread).

Alpha map changes

  • Added anti-aliasing to alpha maps, to match TX anti-aliasing mode.
  • Modify alpha map algorithm to use names based on materials, rather than textures.
    • Alpha layers now have names like 'std_grass', rather than texture names like 'grass1'.
  • Fixed bug in XML exporter, where colours of layers were incorrectly set.

Other features

User interface

  • Add 'Crop' tool to map layer menu (uses selection, or if none selected, enter coordinates). — see thread.
  • Add menu icons from toolbar bitmaps:
    • Main window (e.g. open, save, rotate, etc.)
    • Sapphire
    • ZeoGraph
  • Renamed 'Active map' menu 'Layers', and revised contents.
  • Renamed 'Mouse tools' menu 'Tools'.
  • Created duplicates in 'Tools' menu of HF, AM and TX 'Edit in 3D' options within 'Operations' menu.
  • Moved 'Utilities→New map layer' to 'Layers→New map layer'.
  • Changed menu item names to refer to map layers, rather than maps.
  • 'Select active map' dialog was renamed 'show map layer', to match menu item.
  • Trimmed toolbar (removed buttons for image drape, CPU throttle, RAM chart).
  • Updated 'import map layer' and 'new map layer' dialog boxes.
  • Added 'ZeoGraph' option to 'Operations' menu.
  • Added 'copy text' button to event log window.
  • Updated RAM chart window to include working set size, double buffering, etc.
  • Moved 'climates' and 'materials' menus into new top-level 'resources' menu.
  • Added 'New climate…' and 'New material…' menu options.
  • Replaced dialog in combosel to support multi-selection lists.


  • Revised plugin API to v2.9.
  • Modified 'var_EditUI' to maintain variable and parent handles of child variables.
  • Modified 'var_ReInit' to maintain parent handle.

File I/O

  • Added new L3DTio_DDS2 plugin to support larger DDS images without DevIL memory limitations.
  • Added import MOLA plugin (for IMG and LBL files).
  • Add export WM as TIN script.
  • Added Unreal G16 support to L3DTio_BigBitmap.
  • Modified HF mosaic import to read and apply MMF vert scaling for non-native formats.

Bug fixes

  • Fixed bug in zURL that was causing crashing when unable to connect to server.
  • Fixed bug when using 'Operations→Texture map→Generate map' option to generate mosaic texture without first having saved project (see this thread).
  • Fixed thin transparent margin in 1st pane in wizard (using SWP_FRAMECHANGED flag).
  • Revised auto-flooding of lakes to work properly with small horizontal scales, and use improved lake search/test algorithm.
  • Fixed lin interp to not mangle edges on wrapping maps (see bug report).
  • Fixed bug that caused memory corruption when % symbol was present in filename.
  • Fixed preservation of variable parent handle when lists are edited via var_EditUI.


  • Modified L3DT to store default resources in installation directory, and copy to users' profile directory when new version if first used. This allows multiple users/profiles on same machine to use L3DT (see request).
  • Created new 'SilentError' flag for plugin settings, to allow plugin loading to fail silently (used for 'ZeoPerfMon_NT', which is now enabled by default).
  • Added check for whether 'ZeoPerfMon_NT' plugin is enabled when opening ram chart (a la CPU throttle).
  • Modified InflateMosaic function to take file config arg as hvar (if NULL, HFZ is used), and allow null map and file names (auto-generated).
  • Improved startup speed by storing plugin crash flags in separate files per-DLL, rather than saving whole extensions.ini.xml file.
  • Modified extension manager window & command line parser to support re-loading of plugins.
l3dt/history/v2.9.txt · Last modified: 2017/08/31 07:32 (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