====== L3DT release v11.08 ====== Released on the 19th of August, 2011 ([[bundynews>l3dt:ann:v11.08|see announcement]]) ===== Major features ===== ==== Tiled mesh exporter ==== * Implemented new mesh exporter user interface ([[l3dt:userguide:io:export:mesh|See user guide]], [[bundynews>l3dt:2011:jun:22|announcement]].) * Implemented tiled mesh decimator ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=2070|see request]]). * Added support for exporting optimised meshes as tiles ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7665#7665|see request]]). * Added support for exporting selected area ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7753#7753|see request]]). * Added support for non-contiguous memory in decimator triangle array, to allow larger mesh sizes. * Used dynamic non-contiguous memory for vertex/index buffer to remove need for re-rendering. * Added support for exporting meshes as mosaic maps by forcing high-res, unoptimised triangles at tile edges ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=1202|see this forum thread]]). * Added support for DAE (COLLADA), OBJ, 3DS, X, and ZMESH file formats. * Added automatic reverse-winding of faces for 'XZ plane' coordinate system in all file format handlers. * Add image layer file format selector UI ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=2&t=2109&p=8866#p8866|see request]], and [[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=2114&p=8894#p8894|here]]). * Added UI-less decimator extension function as ''calc.mesh.DecimateHF'' ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=11&t=1181|see this forum thread]]). * Added progress bars to mesh rendering. ==== Memory management ===== * Implemented 'virtual mosaic maps', using non-contiguous memory, to reduce memory fragmentation. * Created ''CMapWrap::InitMap2'', which takes a value for map alloc mode (DONTCARE, RAM, MOSAIC, MOSAIC_SYSPAGEFILE, MOSAIC_MEMMAPFILE) * Re-mapped CMapWrap::InitMap to use CMapWrap::InitMap2 with DONTCARE by default; if you care, use Init2 with explicit map alloc mode. * Added [[zeolite:functions:zmap_Init2]] API function. * Modified 'Save' to de-allocate mosaic maps, saving memory. ==== Zeolite plugin API ==== * Implemented [[:zeolite:changes#v11.08|Zeolite v11.08]] (see link for changes). * Clean break in plugin API, with removal of back-compatibility hacks. * Recompiled all plugins. * Enforced minimum plugin API version checking on loading. * Revised plugin function namespaces to be more orderly. * Regularised function return values and naming conventions (e.g. capitalisation). * Rewrote remaining zeofunc-wrapped API functions as core functions. ==== Attributes map importer ==== * Added attributes map importer that takes arbitrarily indexed colour maps ([[bundywiki>plugins:fileio:atimportam&#using_atimportam|see user guide]]). * Attributes map importer can load indexed colour maps with a pre-defined palette file, or by using a colour assignment window. * Modified the [[bundywiki>plugins:L3DTio_FI|L3DTio_FI plugin]] to export a palette text file for colour-mapped attributes map images. ==== Algorithms ==== * Added ridged multi fractal heightfield generator, using libnoise ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=6&t=1921&p=8483#p8483|see request]]). * Added full-resolution export option for contour maps ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7811#7811|see request]]). * Improved Heightfield blending options: * Added 'calc.HF.CombineMaps2' function. * Added 'Heightfield.CombineMaps2' filter. * Added 'BlendHeightmaps' graph, to demonstrate the above ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=553&p=8083#p8083|see this post]]). * Added optional mask blending to [[bundywiki>plugins:calc:atMergeMap#using_atmergemap|Merge heightmaps]] importer, along with stretch/resize options. * Added ability to provide slope offset to design map ([[http://www.bundysoft.com/phpBB2/viewtopic.php?t=1710&start=0&postdays=0&postorder=asc&highlight=|see request]]). ==== Optimisations ==== * Re-optimised heightfield linear interpolation; resize is 60% faster, shadow casting is 70% faster ([[bundynews>l3dt:2010:dec:09|see announcement]].) * Added 'direct access' interface, for directly accessing map data without API overhead ([[bundynews>l3dt:2011:mar:10|see announcement]].) * Modified 'CzMap::GetPixel' and 'CzMap::SetPixel' to support direct memory access, bypassing all safety checks. * Implemented 'CzMap::OpenDirectInterface' and 'CzMap::CloseDirectInterface'. * Implemented [[zeolite:classes:CzMapTile]] class, to implement direct access interface for tiled maps. * Added [[zeolite:functions:zmap_tile_MarkChanged]] function, for use with direct access functions. * Revised [[bundywiki>plugins:calc:atConvertWaterToHeight|atConvertWaterToHeight]] to use direct access interface. * Revised [[bundywiki>plugins:calc:atCalc_AM_image|atCalc_AM_image]] to use direct access reading of AM. * Tested and validated for mosaics and in-RAM maps (>3x faster on one test) * Deprecated 'threadman.RunTiles' and created 'threadman.RunTiles2', which uses ''hvar'' args instead of ''ZFUNC'' and ''ZLIST'' args. ===== Other features ===== ==== User interface ==== === Script-defined menu options === * Added support for menu items to be added by ZMENU script files ([[bundynews>l3dt:2011:mar:02|see announcement]].) * Added support for OnUpdate callbacks to determine state with ZMENU files. === Update manager === * Automatically enable/disable/show/hide channels depending on version being used (std hidden in pro, & vice versa). * Automatically mark messages as read if they're older than the build version, so as not to bother users with old news. * Disabled automatic update checking if a crash occurs during update process. === Other user interface features === * Created new icon set, with support for larger sizes (64px and 96px are new). * Modified 'Open' wizard to accept all HF import formats, and to spawn 'heightfield import settings' wizard if non-native format is selected. * Added support for custom colour palettes for 2D display, using PNG images in the 'Palettes' resource directory, and added palettes to installer. * Re-enable halftone blending in main window (Win7 graphics drivers seem OK now). * Added progress bar for loading plugins during startup. * Created unified resource manager window for scripts, graphs and masks. * Added multi-selection support to CzComboSel class ==== Plugins ==== === Sapphire === * Force keyframes after variance changes, to speed-up settling. * Set maximum variance, to prevent endless variance increases when tri count is set too low. * Add extension functions for arbitrary mesh objects (loading/moving/scaling/rotating/etc). === ZeoGraph === * Updated to [[bundywiki>plugins:calc:ZeoGraph:changes#v2961|ZeoGraph v2.9.6.1]]. * Added top-level 'Graphs' menu to L3DT, and removed entry in 'operations' menu. * Add 'Graph Manager' to L3DT menu. * New filters: * Heightfield math filters (add, subtract, etc.) * Variable algebra filters (add, subtract, etc.) * Other changes: * Replaced ZG_Fractal plugin with zfilter script. === ZeoScript === * Updated to [[bundywiki>plugins:general:ZeoScript:changes|ZeoScript v2.9.6.0]]. * Added ''ZeoScript.RunScript3'' function, with explicit external vars and flags, and rval handle. * Renamed ''filesel.GetCurSelA'' and ''dirsel.GetCurSelA'' extension functions to ''filesel.GetPathA'' and ''dirsel.GetPathA'', respectively, and updated scripts accordingly. This change is to make the ZeoScript function name match those of the Zeolite API. * Added 'vector3f' functions to ZeoScript (via ZeoWrap). === Mesh plugins === * Implemented new CzMesh, CzMeshMtl and CzMeshFaceGroup API classes, and retrofitted to [[bundywiki>plugins:general:Azurite|Azurite]], [[bundywiki>plugins:calc:atMeshDecimator|atMeshDecimator]], [[bundywiki>plugins:fileio:L3DTio_X|L3DTio_X]], [[bundywiki>plugins:fileio:L3DTio_3DS|L3DTio_3DS]], [[bundywiki>plugins:fileio:L3DTio_B3D|L3DTio_B3D]], [[bundywiki>plugins:fileio:L3DTio_OBJ|L3DTio_OBJ]], [[bundywiki>plugins:fileio:L3DTio_S3O|L3DTio_S3O]], [[bundywiki>plugins:fileio:L3DTio_COLLADA|L3DTio_COLLADA]], and [[bundywiki>plugins:Sapphire|Sapphire]] plugins. * Add 'FaceWinding' options to support left & right handed coordinate systems to [[bundywiki>plugins:fileio:L3DTio_OBJ|L3DTio_OBJ]], [[bundywiki>plugins:fileio:L3DTio_X|L3DTio_X]], [[bundywiki>plugins:fileio:L3DTio_3DS|L3DTio_3DS]], and [[bundywiki>plugins:fileio:L3DTio_COLLADA|L3DTio_COLLADA]] plugins. * Add vertex normal export for optimised mesh to COLLADA, OBJ and X plugins. * Added vector4c/i/f/d and matrix3f classes to L3DT & API. * Included zvectors.h/cpp in API * Created ZMESH file format, and converted army man & tree mesh files to zmesh, and included in resources\meshes. * Included demo script for scattering trees/etc in Sapphire. === Other plugins === * Modified [[bundywiki>plugins:fileio:L3DTio_BigBitmap|L3DTio_BigBitmap]] to support padding in data section, as performed by PS ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=4&t=1900&p=8267#p8267|see this thread]]). * Updated [[bundywiki>plugins:fileio:L3DTio_TorqueTER|L3DTio_TorqueTER]] to handle unqualified TER filenames ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7888#7888|see this thread]]). * Updated [[bundywiki>plugins:general:atFuncBrowser|atFuncBrowser]] to alpha-sort function list. * Added [[bundywiki>plugins:fileio:L3DTio_ASC|L3DTio_ASC]] plugin to load/save ERSI ASCII grid files. * Modified [[bundywiki>plugins:fileio:L3DTio_XYZ|L3DTio_XYZ]] plugin to read/write georeferencing coordinates. * Modified [[bundywiki>plugins:fileio:L3DTio_FI|L3DTio_FI]] image to support loading of BYTE maps in 24bpp BMP/PNG files (previously supported 8bpp only). ==== Bug fixes ==== * Fixed smoothness of Sapphire. * Fixed path recording in Sapphire (bug with ComboSel). * Fixed the cursor raycast driver bug in Sapphire ([[http://www.bundysoft.com/phpBB2/viewtopic.php?f=5&t=1717|see this thread]]). * Fixed display of toolbar in Sapphire. * Fixed the '//Options->Terrain->Select texture...//' menu option in [[bundywiki>plugins:sapphire|Sapphire]]. * Fixed crash when using resizer on largish maps via ZeoGraph (reported by David via e-mail; reproduced using different graphs.). * Fixed window frame bug in ZeoGraph that occurs after graph load fails. * Fixed crash when disabling all plugins. * Fixed TN support for BMP plugin (was switching BGR->RGB in loader). * Fixed TN input in [[bundywiki>plugins:fileio:L3DTio_BigBitmap|L3DTio_BigBitmap]] (made white TN maps). * Fixed 'zero length script' error when opening design map brush. * Fixed 'SplitMosaic' and 'CombineMosaic' to work with virtual mosaics. * Fixed bug in mipmap saving when saving project ([[http://www.bundysoft.com/phpBB2/viewtopic.php?p=7586#7586|see this thread]]). * Fixed '//Operations->Mask maps->Generate masks//' menu item, which was broken. * Fixed contour map bug reported by Heiko in e-mail (now allows save of virtual mosaics, and also has progress bar for HF->RGB calc). * Automatically create directories when saving mipmaps that are not mosaics during project saving. * Automatically clear activation keys on failed activation startup. * Allow 'L3DT for Torque' users to manually input proxy address and port. ==== Documentation ==== * Updated the //[[bundywiki>tutorials:zeolite:aaron|how to make a new plugin]]// tutorial to reflect v11.08 of the plugin API. * Provided a [[bundywiki>tutorials:zeolite:upgrade_to_v3|new tutorial]] to explain how to upgrade existing plugins to v11.08 of the plugin API. ==== Installer ==== * Added file association for ZS and ZGRAPH files.