more eol-style
[xonotic/netradiant.git] / tools / quake3 / q3map2 / changelog.q3map2.txt
index 29446abda18c89b71248c2d8993faeb3aa2626ce..47bceb51a6ce143b61c0a3b33fbc2561d8788fda 100644 (file)
-Q3Map2 Version History + Changelog (Reverse Chronological Order)\r
-\r
-2.5.11 (2003-12-01)\r
-\r
-- New: added support for _skybox entities to generate "portal sky"\r
-  surfaces in games w/o native support (Quake 3). _skybox entities have\r
-  3 keys: _scale (default 64), and angle/angles (for rotation of the\r
-  skybox relative to the map)\r
-- New: added -skyfix switch to BSP phase as a workaround hack for\r
-  the black GL_CLAMP border on skybox edges on ATI (and newer nvidia)\r
-  video cards. Note: unnecessary in ET or JA\r
-- New: Added _anglescale to light entities for scaling angle attenuation.\r
-  Use a small value (< 1.0) to lessen the angle attenuation, and a high\r
-  value (> 1.0) for sharper, more faceted lighting\r
-- New: Added _lightmapscale support to misc_model entities\r
-- Custom shaders (external lightmaps, styles) will not be generated\r
-  if the find/replace text cannot be found\r
-- Tightened up light culling epsilon from 1.0 to 0.125 to stop certain\r
-  surface lights from being incorrectly culled (thanks RasputiN!)\r
-- Fixed bug where small 3 and 4 sided brush faces were getting fanned,\r
-  adding triangle/vertex counts\r
-- Moved to Visual Studio .NET, with aggressive optimizations enabled\r
-- Cleaned up missing image warnings\r
-- Parsing images out of shader stages if not found explicit/implicitly\r
-- Loads Enemy Territory implicitMap images if editor/light image not found\r
-\r
-\r
-2.5.10 (2003-10-22)\r
-\r
-- New: Lightwave model support (beta) courtesy of RR2DO2\r
-- New: Heretic 2 FM model support courtesy of Nurail\r
-- Re-enabled vertex cache friendly triangle reordering with fix\r
-- Disabled triangle reordering on certain surfaces, including autosprite\r
-  shaders due to visual errors\r
-- Fixed bug in radiosity where sorting of lights by style took forever.\r
-  Thanks ReBoOT!\r
-- Fixed bug in sun lighting code where maps too far off the origin would\r
-  not be properly it by sun or sky light. Thanks MindLink!\r
-- Entity causing a leak will be printed and selected in Radiant if BSP\r
-  monitoring is enabled. Requested by heeen\r
-- Fixed odd bug causing 10x slowdown in lighting in some maps. Should\r
-  be back to 2.5.7 performance. Also fixed a couple old bugs related to\r
-  autosprite shader (point) lights and backsplash lights not being styled\r
-  or setup correctly\r
-\r
-\r
-2.5.9 (2003-10-12)\r
-\r
-- Disabled triangle reordering for now (crashing on some maps)\r
-\r
-\r
-2.5.8 (2003-10-02)\r
-\r
-- New: Added two new sun parameters: angular deviation (width of the sun in\r
-  degrees) and sampling count (jitters). This allows for decent approximation\r
-  of penumbra "half-shadow" effects from sunlight with 16+ samples. These\r
-  parameters are accessible for entity lights (including spots and suns) via\r
-  these entity keys: _deviance and _samples. To use in shaders, use the new\r
-  q3map_sunExt <r> <g> <b> <brightness> <angle> <elevation> <deviance> <samples>\r
-- New: q3map_lightmapFilterRadius <self> <other> for light-emitting shaders.\r
-  Put *after* any q3map_sun directives or else your sun will be filtered. This\r
-  is good for eliminating the "stadium lighting" effect from q3map_skyLight.\r
-  Also usable as an entity key: _filterradius or _filter\r
-- New: Quake 2 MD2 model support in PicoModel for misc_model entities\r
-  (thanks to Nurail!)\r
-- Re-enabled vertex-cache-aware triangle reordering. Will probably have a\r
-  negligible effect on rendering performance, but can't hurt\r
-- Added short-circuit to raytracer: any empty nodes (including children) are\r
-  ignored on sun traces\r
-- Added BSP file size printout\r
-- Filtering of any kind now disables adaptive supersampling on a per-light,\r
-  per-ightmap basis\r
-- Fixed another _minlight <-> styled light interaction bug (thanks pjw!)\r
-\r
-\r
-2.5.7 (2003-08-31)\r
-\r
-- New: Jedi Academy support via -game ja\r
-- New: DDS (DXT1/3/5) texture support for future games\r
-- Re-enabled q3map_surfaceModel support, and the 'oriented' flag works as well\r
-- Re-enabled (fixed, really) large external lightmap support\r
-- Fixed a bug in the model code that would cause a crash if an uninvertable\r
-  matrix was created\r
-- Fixed a bug in Mathlib m4x4_t code where the tolerance for a singular matrix\r
-  was too low and crapping out on small (scaled down) matrices\r
-- Fixed bug in divide-by-zero on lightmap efficiency calculation\r
-- Added -force switch, allows unsupported BSP formats to (try) to be loaded\r
-\r
-\r
-2.5.6 (2003-08-15)\r
-\r
-- New: can convert BSP files to MAP files via -convert -format map. Note: not\r
-  perfect by any means, as certain pieces of data are irretrievably lost, such\r
-  as func_group entities (including terrain specifics), brush face texturing\r
-  info, and light/misc_model entities with Q3Map2-generated BSPs\r
-\r
-\r
-2.5.5\r
-\r
-- New: -scale N.N mode to scale the BSP\r
-- New: -light -lomem switch to supress trace BSP optimization. This\r
-  feature trades lighting performance for decreased memory usage\r
-- New: Added negative light support (note: will not darken below _minlight value)\r
-  might screw up radiosity, haven't tested much. Should work with entity\r
-  lights, shader lights, sun/sky lights and radiosity. Lightfilter shadows\r
-  tint negative lights too, so the end effect is subtraction of the color\r
-- New: Lightstyle support for non-Raven (JK2/SOF2) games, including Quake 3,\r
-  RTCW, ET, EF. Only works with lightmapped surfaces, use with care\r
-- Fixed long standing terrain texturing bug, should produce exact desired\r
-  results all of the time now. May require fixing alphamaps that were\r
-  kludged together to accomodate this bug on existing maps\r
-- Fixed bug (huh, wtf) causing misc_model surfaces to not be fogged\r
-- Fixed bug where fog brushes wouldn't fog surfaces if a global map fog\r
-  shader was present\r
-- Fixed bug where -patchmeta surfaces were being ignored for raytracing\r
-- Fixed long-standing bug where twosided surfaces were not correctly\r
-  bouncing light. You can now have a foggy glass window that re-emits\r
-  bright light with q3map_bounce 3.0 or so\r
-- Fixed really stupid bug in radiosity with bouncing styled lights\r
-- Stripping .map and appending .bsp in -info mode\r
-- Fixed bug where tesselated brush face surfaces were not being fogged\r
-- Twosided surfaces (using cull disable/twosided/none) are now lit twosided\r
-- Added tighter tolerance for alphashadow/lightfilter shadowing to raytracer\r
-  which fixed problem with double shadows from tracing near triangle seams\r
-- Brush entities should now be properly fogged. Really.\r
-- Styled lightmaps are no longer affected by _minlight (doh)\r
-\r
-\r
-2.5.4 (2003-04-01)\r
-\r
-- New: q3map_tessSize support for JK2/SOF2\r
-- New: -lightmapsize N argument\r
-- Fixed bug where switched styled lights weren't working correctly in SOF2/JK2\r
-- Fixed bug where external lightmaps with generated shaders were referencing\r
-  the wrong lightmap\r
-- Fixed bug causing lightgrid brushes to be ignored\r
-- Added variable sphere around trace sample points to inhibit occluder geometry\r
-\r
-\r
-2.5.3 (2003-03-06)\r
-\r
-- New: SOF2/JK2 light styles now supported\r
-- New: q3map_lightStyle N to set shader lightstyles\r
-- New: Tenebrae 2 support via -game tenebrae\r
-- New: -light -deluxe and -debugdeluxe for Tenebrae "deluxemap" static\r
-  lighting algorithm\r
-- Light envelopes now properly clipped to the PVS\r
-- q3map_vertexScale re-enabled (scales vertex lighting per-shader)\r
-- Minor bug in brush bevel code corrected\r
-- Brushes from func_group entities are correctly sorted on insertion\r
-- Fixed a couple misc warnings to print "percent" instead of "%"\r
-- Added -custinfoparms support to -light mode to suppress warnings\r
-- _minlight, _minvertexlight and _mingridlight order independent, and now\r
-  allow for values of 0\r
-\r
-\r
-2.5.2 (2003-02-17)\r
-\r
-- Fixed crash bugs with global map fog\r
-- Model loading really only warns once now\r
-\r
-\r
-2.5.1 (2003-02-17) (Splash Damage internal release)\r
-\r
-- Added more Hella-Fast juice to light code. Overall should be 35% faster\r
-- Refactored surface portion of raytracer code for less memory usage\r
-- Changed UVW epsilon in raytracer to catch more edge cases\r
-- Removed bounds check on occluded luxel finding, was causing more problems\r
-  than it was solving\r
-- Adaptive antialiasing code now ignores unmapped luxels for better shadow\r
-  edges and higher performance\r
-- Brushes in the BSP are now sorted opaque first\r
-- Fixed Really Stupid bug causing MapRawLightmap to take about 4x as long\r
-- Added optimization to make MapRawLightmap 2x as fast\r
-- New non-sucky quadrilateral subdivision of patches for MapRawLightmap\r
-- Patches with < 90 degrees of curvature are now box-lightmapped\r
-- Patch vertex normals now correctly stored, fixing bug in 2.5.0\r
-- Prints warning if map with < 10% detail brushes is detected\r
-\r
-\r
-2.5.0 (2003-02-14) (Splash Damage internal release)\r
-\r
-RAYTRACING AND SHADOW CALCULATION\r
-- New raytracing code. Rewrote the raytracer to maximize efficiency on modern\r
-  "caulk-hull" maps. Uses triangle intercept code written by SPoG, based on code\r
-  by Tomas Moller and Ben Trumbore (Journal of Graphics Tools, 2(1):21-28, 1997)\r
-  and a biased octree leaf subdivision scheme by Y.T.\r
-- Shadows (casting and receiving) are now controllable per-entity\r
-  New entity keys: "_castShadows" or "_cs" and "_receiveShadows" or "_rc"\r
-  Values: 0 = no shadows, 1 = worldspawn shadows, > 1 explicit shadow group,\r
-  negative values imply no worldspawn shadow interation.\r
-  *Entities, including model2 and RTCW misc_gamemodels can now cast shadows*\r
-\r
-RADIOSITY\r
-- Bumped up default and smallest radiosity patch size. Performance should be\r
-  approximately 4x with a small quality tradeoff\r
-- Radiosity patches now trace to centroid of triangle, and not bounds center\r
-- Radiosity and surface lights are now nudged around a bit if in solid\r
-- Radiosity light generation code is now thread-safe\r
-- Radiosity -dump files now .map instead of .pfb\r
-- Poorly worded "q3map_bounce" renamed to "q3map_bounceScale" (old still works)\r
-- New -bounceonly switch to store only bounced light in the BSP (for Tenebrae)\r
-\r
-MISC LIGHTING\r
-- Optimized case where light and sample are coplanar\r
-- Forcing nudged luxels to stay within lightmap surfaces' bounds\r
-\r
-CURVED SURFACES\r
-- New -subdivisions N argument, works with -patchmeta and -light for setting\r
-  patch level-of-detail. Default value is 8, use 4 to simulate default Q3\r
-- All patch tesselation code changed to create x-patterned tesselation for\r
-  better lighting\r
-- Storing patch LOD info in the .srf file for better patch light/shadows\r
-\r
-FOG\r
-- Reworked fog code to fix bad interation with fog and clipped models\r
-\r
-MODELS\r
-- Entities with attached MD3/ASE misc_models now have their bounds correctly set\r
-- Attached misc_models now support q3map_clipModel for solidity\r
-- Missing models will only warn once, rather than spew errors\r
-\r
-MISC\r
-- Metasurface merging no longer folds nonplanar triangles into planar surfaces\r
-  and vice-versa *\r
-- Fixed Really Stupid Bug where entity numbering was not loaded by lighting code\r
-  resulting in lightmaps merging across entity boundaries *\r
-\r
-* Might result in slightly larger BSP. For maximum efficiency, ungroup\r
-  func_group entities before doing a final compile\r
-\r
-TODO\r
-+ Document new shadow stuff\r
-+ Merge adjacent light-casting triangles into convex windings\r
-\r
-\r
-2.3.38 (2003-02-07)\r
-\r
-- New lighting code, return of Smoove-B. Intelligently antialises shadow edges\r
-  when you use the new -samples N switch. Get -extra quality in 1/3 the time\r
-- New lightmap filtering code. Now using a proper 0.25/0.5/1.0 filter kernel.\r
-  Also operates on individual lightsources, so per-lightsource filter/kernel\r
-  settings are now possible\r
-- New -patchmeta fixes, now does stitching and adaptive subdivision.\r
-  Thanks Sock!\r
-- Nonsolid patches will no longer be in the BSP when run with -patchmeta\r
-- Misc fog fixes, including q3map_noFog support in maps with global _fog\r
-  support (SOF2/JK2)\r
-- Now stripping misc_model entities from the BSP\r
-- Fixed disappearing face bug that's been present since 2.3.36.\r
-  Thanks Shadowspawn!\r
-\r
-\r
-2.3.37 (2003-01-24)\r
-\r
-- Building from GtkRadiant CVS trunk\r
-- Added new brush bevel code by MrElusive to fix lingering aas problems (sweet!)\r
-- Added -snap N arg to BSP phase for axial bevel plane snapping to reduce\r
-  clipped model plane count (note: will muck with above, use with care)\r
-- Patches in terrain entities should now have proper vertex alpha set\r
-- Fixed bug in fur code where fur was being limited to 2 layers (thanks pazur)\r
-- Reduced vertexlight search area to a reasonable size to keep vertex lighting\r
-  times down\r
-\r
-\r
-2.3.36 (2003-01-15)\r
-\r
-- Plane hashing re-enabled (I suck)\r
-- Plane hashing optimized (faster parsing of larger maps)\r
-- Plane finding accuracy code enabled\r
-- New ASE clipping code\r
-  + With above should be 10-50% faster\r
-  + Should generate 33% fewer planes\r
-  + Generates mostly-axial 5-sided polyhedra instead of pyramids,\r
-    for tighter 2-sided clipping\r
-- New -light args:\r
-  + -scale N -- scales all lightsources (area, radiosity, point, sky)\r
-  + -sky[scale] N -- scales sky lights (q3map_skylight, q3map_sunlight)\r
-- Changed fur code to scale fur offset based on original vertex alpha\r
-\r
-\r
-2.3.35 (2003-01-14)\r
-\r
-- PicoModel now inverts ASE T coordinate\r
-- BSP to ASE converter now inverts T coordinate\r
-- Disabling 2.3.34 triangle optimization code until I find out why it crashes\r
-- Fixed Conscript-q3map2 to use stack_size ld flags directly on Darwin/OS X\r
-- Added Conscript-q3map2 to q3map2.dsp for easier Win32 edit, *nix target\r
-\r
-\r
-2.3.34 (2003-01-08)\r
-\r
-- Building from merged GtkRadiant 1.2 -> 1.3 merged codebase\r
-- IMPORTANT NEW CHANGE: Light entities are now STRIPPED from the BSP file.\r
-  They are re-read in by -light from the MAP file. This has two consequences:\r
-  + It is no longer necessary to re-BSP & re-vis a map in order to change\r
-    lighting. You can just change lights in the map file and run -light.\r
-  + Slightly smaller BSP file, due to fewer entities\r
-  + Faster loading time, as the game code doesn't have to deal with them\r
-- Added new -ne (normal epsilon) and -de (distance epsilon) for tuning precision\r
-  of plane snapping to correct potential AAS/BSP issues\r
-- Using latest PicoModel, with support for RTCW MDC models\r
-- Surfaces per raw lightmap are now sorted by shader name, which should give\r
-  slightly better lightmap efficiency and lower in-game shader counts\r
-- Adjusted model code to use correct m4x4_t code & angles key\r
-- Minor bugfix in patch color gradient calculation code\r
-- Silenced erroneous areaportal warning spew\r
-- q3map_tcGen now works on model surfaces\r
-- Using default radiosity subdivide of 256 again (should make radiosity faster)\r
-- Enabled byte-swapping code so Q3Map2 can be compiled/run on little-endian\r
-  architectures (Mac OS X)\r
-\r
-\r
-2.3.33 (2002-12-08)\r
-\r
-- Added new -bouncescale argument for radiosity scaling\r
-- Added -pointscale and -areascale for consistent naming\r
-- Radiosity patch subdivision code enhanced\r
-- Hint portals split the BSP first (higher priority)\r
-- Antiportal and areaportal faces split the BSP last, to minimize errors\r
-- Areaportals work internally like hint and antiportals, so they no longer need\r
-  to be full brushes (the other sides can be skip)\r
-- External lightmaps are now named "lm_NNNN.tga" in the maps/mapname dir\r
-- Cleaned up some of -light argument processing\r
-- Planar surfaces w/o lightmaps will no longer be tagged as MST_TRIANGLE_SOUP\r
-  (this fixes problems with Particle Studio particles dropping out of view)\r
-\r
-\r
-2.3.32 (2002-11-30)\r
-\r
-- GtkRadiant (1.2.11) integration\r
-- Added epsilon to texture plane choose code to eliminate numerical\r
-  inconsistencies on brush faces slanted at 45 degree angles (bug 637)\r
-- Fixed bug in lightmap export after lighting when map contains 0 BSP lightmaps\r
-- Adjusted some light tracing constants to fix certain brush/patch seam shadows\r
-- Tinkered with skylight code again\r
-- Fixed bug where lightgrid would be black if level was compiled with -nogrid\r
-- Fixed -approx code to work in floating-point space, using _minlight\r
-- Fixed bug where vertex light code was using invalid pvs data to create\r
-  light list for surface, leading to incorrect vertex lighting\r
-- Fixed related bug in anti-light-leak code that was causing brush faces to go\r
-  black (bug 694)\r
-- New: _minlight sets _minvertexlight and (new) _mingridlight automatically\r
-- New: _mingridlight key to set minimum grid lighting\r
-\r
-\r
-2.3.31 (2002-11-21)\r
-\r
-- Stitching the edges of lightmaps on patches that wrap around (cyls and cones)\r
-  so the seam is no longer visible\r
-- The -patchmeta switch works better now, the patches are still stored in the\r
-  BSP for collision, but are pre-tesselated into nonplanar meta surfaces for\r
-  more efficient rendering\r
-- Better, more uniform lightmap sample position finding on patch meshes\r
-- Moved q3map_tcMod and q3map_alphaMod processing to the final phase\r
-- New: q3map_skylight AMOUNT ITERATIONS to replace surfacelight on sky surfaces\r
-  for much faster and more uniform sky illumination\r
-\r
-\r
-2.3.30 (Splash Damage internal release)\r
-\r
-- Fixed bug in PicoModel ASE material parsing code\r
-- Fixed a few seam/lightmap precision/projection errors\r
-- Increased MAX_SHADER FILES to 1024 and fixed overrun error when more than that\r
-  number of shaders was listed in shaderlist.txt\r
-- Increased a few compiler maximums for larger maps\r
-- New: -np N switch on BSP phase, works like -shadeangle, in that it forces all\r
-  planar shaders to be nonplanar with the shading angle specified\r
-- New: -nohint switch on BSP phase, omits hint brushes from compile for testing\r
-- New: -debugaxis switch on light mode. Colors lightmaps based on their lightmap\r
-  axis (which direction the lightmap was projected on)\r
-- New: -debugorigin switch on light mode. Colors lightmaps based on the luxel\r
-  origin relative to the raw lightmap's bounding box\r
-- New: -debugcluster switch on light mode. Colors lightmaps based on the pvs\r
-  cluster the luxel falls into\r
-- New: -convert switch to convert BSP to ASE file (experimental)\r
-- New: q3map_lightmapmergable directive to allow terrain to be mapped onto a\r
-  single lightmap page for seamless terrain shadows\r
-\r
-\r
-2.3.29 (2002-11-03)\r
-\r
-- Merged with latest CVS, fixed minor issues with matrix order\r
-- Fixed minor Sys_FPrintf/Sys_Printf substitution typo in Q3Map2\r
-- Expanded debug colors to 12 for debugging surface meshes\r
-- PicoModel: fixed ASE loader to support > 1 texture coordinate per-vertex,\r
-  so more models supported correctly, also loading vertex normals\r
-- PicoModel: md3 shader names are now cleaned. Suffixes (such as .tga or .jpg)\r
-  are stripped, and \ path separators are changed to /\r
-- New: Add :q3map to the end of any shader name, and it will be interpreted as\r
-  the named shader minus :q3map. Example:\r
-  textures/shaderlab/concrete:q3map -> textures/shaderlab/concrete\r
-  One potential use is the -approx feature to collapse lightmapped  surfaces\r
-  into vertexlit surfaces, saving lightmap space/memory\r
-- New: q3map_clipModel -- does what you think it does, sort of. This code ix\r
-  really experimental, and should *only* be used on large models such as terrain\r
-  (not small decorative models). This code will be evolving. Note: the shader's\r
-  surfaceparms are inherited by the magic clip brush, so if you have nonsolid\r
-  in your model's shader that uses q3map_clipModel, then the brush will also\r
-  be nonsolid\r
-\r
-\r
-2.3.28 (2002-11-01)\r
-\r
-- Bug 654 (http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=654):\r
-  Fixed problem where brush faces, drawsurfaces, and surfaceparms weren't living\r
-  together in perfect harmony (terrain surfaceparms now inherited by brushes)\r
-- Nodraw fog works now, albeit when you're underneath, surfaces above don't get\r
-  fogged properly. Could be good for foggy water where you want the above-water\r
-  portions to only be occluded by the water surface\r
-- Bug 656 (http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=656):\r
-  Number of lightgrid points displayed (byte size is currently out of proportion\r
-  due to internal storage format) when Q3Map is called with the -info switch\r
-- Fixed wack surface merging bug where code would attempt to merge triangles not\r
-  adjacent to the current set, causing bad lightmap projections on nonplanar\r
-  surfaces\r
-- Fixed tiny 1-character bug in 2d lightmap texture allocator where adjacent\r
-  luxels were being checked for occlusion rather than the actual source luxel\r
-\r
-\r
-2.3.27 (2002-10-31) Happy Halloween!\r
-\r
-- Fixed minor bug in scriplib bugfix where the last character in a file wasn't\r
-  being read.\r
-- Fixed bug where 0-area or bogus triangles were causing crash in MapRawLightmap\r
-  if they used a shader with a normalmap (thanks ShadowSpawn)\r
-- Fixed bug where lightmaps were getting hosed levelwide on a prerelease version\r
-  of 2.3.27\r
-- Fixed bug where lightmaps were getting knackered on models and certain patches\r
-- Merged latest PicoModel version from seaw0lf, adding support for ASE and WF OBJ\r
-  models (preliminary)\r
-- Increased MAX_MAP_PLANES to 0x40000 (~256k)\r
-\r
-Known issues:\r
-- Lightmap projection and surface merging on large ASE models sometimes flakes\r
-- Surface to brush surfaceparm propogation doesn't work properly with large\r
-  metasurfaces: http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=654\r
-\r
-\r
-2.3.26 (2002-10-27)\r
-\r
-- Now using GtkRadiant's libpng and zlib config (linked as DLLs)\r
-- Fixed bug in script parser where repeat calls to GetToken() were causing\r
-  memory corruption\r
-- Fixed SOF2 -rename bug\r
-- When using -game sof2 or -game jk2, the -flares argument is implied\r
-- Added -noflares argument to disable the above behavior\r
-- Added support for flares on entities. Use one of the following keys:\r
-  "_flare" "1" -- use default flare (different for each game)\r
-  "_flareshader" "path/to/flareshader" -- use a specific flare shader\r
-  Note: This only matters in SOF2/JK2 now. Make a light targetted (a spotlight)\r
-  to get it to aim the correct direction, otherwise it defaults to pointing \r
-  downward. You cannot have omnidirectional flares\r
-- Lightgrid size is automatically increased to accomodate large maps. The\r
-  MAX_MAP_LIGHTGRID error will never happen again\r
-\r
-\r
-2.3.25 (2002-10-22)\r
-\r
-- Go Giants!\r
-- Fixed bug where Q3Map would crash on writing the BSP after the light stage.\r
-  Thanks to Rap7or (#q3map) and loon8 (Q3W forums) [bug 641]\r
-- Fixed bug where surface lights were not affecting the light grid properly.\r
-  Thanks to Shadowspawn and djbob [bug 642]\r
-- NEW: Added -faster support to lightgrid calculations while fixing previous bug\r
-- NEW: Changed it so the BSP file is written to a temp file first, then renamed.\r
-  This should prevent BSP file corruption on crashes during writes\r
-\r
-\r
-2.3.24 (2002-10-20)\r
-\r
-- Fixed numerous outstanding bugs and issues.\r
-- Normal interpolation is now improved. It's slightly slower, but more 'correct'\r
-  in cases where you have 10 triangles in one plane and 1 triangle in another\r
-  meeting up and the 10 triangles were over-affecting the average. Only new\r
-  identical normals are averaged now. This change affects phong shading, meta\r
-  surfaces, and PicoModel\r
-- PicoModel up to version 0.7.6, BSD license, better 3DS model support\r
-- PicoModel library now fixes broken normals on MD3 and 3DS models\r
-- Bumpmapping code is improved. The correct tangent vectors per-triangle are\r
-  now calculated so the bumpmaps are consistent with regards to light direction\r
-- Metasurface merging code optimized. Should be about 100x as fast on complex\r
-  maps or maps using models with high triangle counts\r
-- Vertexlight code tweaked a bit\r
-- Triangle/winding orders now more consistent. Tesselated surfaces will have\r
-  a uniform triangle ordering (thanks RR2DO2)\r
-- NEW: "vertexDeform move" now parsed and surfaces are merged into the\r
-  appropriate  BSP leaves they may enter into (thanks to Bart Vrijkorte)\r
-- NEW: shader command: q3map_alphaMod. Currently takes a single form:\r
-  q3map_alphaMod dotproduct ( NX NY NZ )\r
-  where NX NY NZ are a unit normal (length of 1.0) specifying direction.\r
-  An example use would be snow in a shader's 2nd pass, using alphaFunc or\r
-  blendFunc:\r
-  q3map_alphaMod dotproduct ( 0 0 1 ) // surfaces facing upwards have snow\r
-  (idea contributed by RR2DO2)\r
-\r
-\r
-2.3.23 (2002-10-18)\r
-\r
-- In my haste to release the previous version, I neglected to give credit where\r
-  it was due. Seaw0lf had as much (probably more) to do with the new model\r
-  loading library (PicoModel). Because of his efforts, you can load 3DS models\r
-  and use them in misc_model entities.\r
-- PicoModel model library up to version 0.7. Improved 3DS support, more stable.\r
-- Surface models still not reenabled. Soon. :)\r
-- You can now remap a misc_model's shaders like this:\r
-  Key "_remapNN" "the/model/shader;the/real/shader"\r
-  This works just like TA terrain vertexRemapShader key. You can also supply a\r
-  * glob for the source shader if you want all your model's shaders to use the\r
-  specified shader:\r
-  "_remap" "*;models/mapobjects/tree/bark"\r
-\r
-\r
-2.3.22 (2002-10-16)\r
-\r
-- Moving to sensible Linux-style versioning.\r
-- The misc_model code has been completely rewritten, breaking surface models.\r
-  Surface models will reappear in the next release, once the new model API has\r
-  stablized.\r
-- New: MD3 and 3D Studio 3DS models now natively supported.\r
-- The misc_model "angles" key now supported. Values: "pitch yaw roll" in keeping\r
-  with standard Quake 3 angles order.\r
-- Models scaled with "modelscale_vec" now have proper normal scaling/rotation\r
-  (thanks SPOG).\r
-- Models can now be lightmapped.\r
-- Models can now have > 1000 vertexes per surface.\r
-- For best results for above, add the following to models' shaders:\r
-  q3map_splotchfix\r
-  q3map_nonplanar\r
-- 3DS models' MATERIAL NAMES ARE THE FINAL Q3 SHADER NAMES. YOU HAVE BEEN WARNED.\r
-- Models are generally 13373R. :)\r
-\r
-\r
-2.3.0-a21 (2002-10-02)\r
-\r
-- Fixed a stack of really stupid bugs in the lightgrid code. Should be faster\r
-  and more predictable now.\r
-- SOF2/JK2 lightgrid now compiled. This is the first version of Q3Map2 that can\r
-  compile full, release-worthy SOF2 and JK2 maps.\r
-- SOF2/JK2 damageshader and damagable brush faces should work correctly now.\r
-\r
-\r
-2.3.0-a20 (2002-09-26)\r
-\r
-- SOF2/JK2 worldspawn "fog" (and "_fog") shader key support for levelwide fog\r
-- SOF2/JK2 light "scale" key to scale light brightness\r
-- SOF2/JK2 -rename function for _bsp and _rmg_bsp shader renaming\r
-\r
-\r
-2.3.0-a19 (2002-09-24)\r
-\r
-- Shaders can now be subclassed (Q3Map relavant portions only, such as\r
-  surfaceparms, lighting, texture projection, etc). To subclass an existing\r
-  shader, add "q3map_baseshader X" where X is the name of the base shader.\r
-- Preliminary auto-model distribution over surfaces. You can now have things\r
-  like grass and tree models automatically distributed across your terrain\r
-  or other surfaces. To wit:\r
-\r
-  q3map_surfacemodel models/mapobjects/tree2/tree2.md3 64 0.001 0.5 4.0 0 360 1\r
-\r
-  q3map_surfacemodel <path to md3> <density in units> <odds of appearing>\r
-      <min scale> <max scale> <min angle> <max angle> <oriented>\r
-  \r
-  The last flag is 1 or 0, and sets whether the model gets fitted to the\r
-  orientation of the surface. Not functional yet. See screenshots page for\r
-  shots of this in action.\r
-\r
-\r
-2.3.0-a18 (2002-09-21)\r
-\r
-- misc_models can now be attached to any brush model entity. Just target the\r
-  brush entity with the misc_model (select model, then entity, hit Ctrl+K)\r
-- q3map_tcMod translate (or shift or offset) <s offset> <t offset>\r
-- q3map_tcMod rotate <degrees> (rotates around origin, not center)\r
-- q3map_tcMod scale <s scale> <t scale>\r
-- Metasurface merging now much, much better. Merges into roughly rectangular or\r
-  square areas wherever possible\r
-- q3map_terrain no longer sets Z-axis lightmap projection. It must be set in\r
-  the terrain layer shaders if you want previous behavior\r
-- Worlspawn _blocksize key now supports 3 elements for setting X Y and Z splits\r
-  independently of each other (use a value of 0 for no splits on that axis)\r
-- Misc bugfixes\r
-\r
-\r
-2.3.0-a1 through 2.3.0-a17 (2002-07 through 2002-09-20)\r
-\r
-- Elite Force support (via -game ef)\r
-- SOF2 and JK2 support (via -game sof2 or -game jk2)\r
-- All new image handling with PNG support\r
-- q3map_lightimage specifies image for radiosity and lighting\r
-- External lightmaps, set using q3map_lightmapsize <width> <height>. Up to\r
-  1024 x 1024 supported.\r
-- q3map_lightmapGamma <value> sets the brightness scale of a lightmap\r
-- q3map_lightmapsampleoffset <distance> to fix glitches in lightmapped terrain\r
-- Tons more features and bugfixes. See the forum threads for details/screenshots\r
-- Two new surfaceparms, "antiportal" and "skip," and associated shaders, for\r
-  allowing the mapper to more cleanly set up visibility data\r
-- Lightmaps will always have square texels now (no more stretching)\r
-- Vertex light improvements\r
-- Light grid improvements\r
-- q3map_lightrgb support for RTCW\r
-\r
-\r
-\r
-\r
-\r
-\r
+Q3Map2 Version History + Changelog (Reverse Chronological Order)
+
+2.5.11 (2003-12-01)
+
+- New: added support for _skybox entities to generate "portal sky"
+  surfaces in games w/o native support (Quake 3). _skybox entities have
+  3 keys: _scale (default 64), and angle/angles (for rotation of the
+  skybox relative to the map)
+- New: added -skyfix switch to BSP phase as a workaround hack for
+  the black GL_CLAMP border on skybox edges on ATI (and newer nvidia)
+  video cards. Note: unnecessary in ET or JA
+- New: Added _anglescale to light entities for scaling angle attenuation.
+  Use a small value (< 1.0) to lessen the angle attenuation, and a high
+  value (> 1.0) for sharper, more faceted lighting
+- New: Added _lightmapscale support to misc_model entities
+- Custom shaders (external lightmaps, styles) will not be generated
+  if the find/replace text cannot be found
+- Tightened up light culling epsilon from 1.0 to 0.125 to stop certain
+  surface lights from being incorrectly culled (thanks RasputiN!)
+- Fixed bug where small 3 and 4 sided brush faces were getting fanned,
+  adding triangle/vertex counts
+- Moved to Visual Studio .NET, with aggressive optimizations enabled
+- Cleaned up missing image warnings
+- Parsing images out of shader stages if not found explicit/implicitly
+- Loads Enemy Territory implicitMap images if editor/light image not found
+
+
+2.5.10 (2003-10-22)
+
+- New: Lightwave model support (beta) courtesy of RR2DO2
+- New: Heretic 2 FM model support courtesy of Nurail
+- Re-enabled vertex cache friendly triangle reordering with fix
+- Disabled triangle reordering on certain surfaces, including autosprite
+  shaders due to visual errors
+- Fixed bug in radiosity where sorting of lights by style took forever.
+  Thanks ReBoOT!
+- Fixed bug in sun lighting code where maps too far off the origin would
+  not be properly it by sun or sky light. Thanks MindLink!
+- Entity causing a leak will be printed and selected in Radiant if BSP
+  monitoring is enabled. Requested by heeen
+- Fixed odd bug causing 10x slowdown in lighting in some maps. Should
+  be back to 2.5.7 performance. Also fixed a couple old bugs related to
+  autosprite shader (point) lights and backsplash lights not being styled
+  or setup correctly
+
+
+2.5.9 (2003-10-12)
+
+- Disabled triangle reordering for now (crashing on some maps)
+
+
+2.5.8 (2003-10-02)
+
+- New: Added two new sun parameters: angular deviation (width of the sun in
+  degrees) and sampling count (jitters). This allows for decent approximation
+  of penumbra "half-shadow" effects from sunlight with 16+ samples. These
+  parameters are accessible for entity lights (including spots and suns) via
+  these entity keys: _deviance and _samples. To use in shaders, use the new
+  q3map_sunExt <r> <g> <b> <brightness> <angle> <elevation> <deviance> <samples>
+- New: q3map_lightmapFilterRadius <self> <other> for light-emitting shaders.
+  Put *after* any q3map_sun directives or else your sun will be filtered. This
+  is good for eliminating the "stadium lighting" effect from q3map_skyLight.
+  Also usable as an entity key: _filterradius or _filter
+- New: Quake 2 MD2 model support in PicoModel for misc_model entities
+  (thanks to Nurail!)
+- Re-enabled vertex-cache-aware triangle reordering. Will probably have a
+  negligible effect on rendering performance, but can't hurt
+- Added short-circuit to raytracer: any empty nodes (including children) are
+  ignored on sun traces
+- Added BSP file size printout
+- Filtering of any kind now disables adaptive supersampling on a per-light,
+  per-ightmap basis
+- Fixed another _minlight <-> styled light interaction bug (thanks pjw!)
+
+
+2.5.7 (2003-08-31)
+
+- New: Jedi Academy support via -game ja
+- New: DDS (DXT1/3/5) texture support for future games
+- Re-enabled q3map_surfaceModel support, and the 'oriented' flag works as well
+- Re-enabled (fixed, really) large external lightmap support
+- Fixed a bug in the model code that would cause a crash if an uninvertable
+  matrix was created
+- Fixed a bug in Mathlib m4x4_t code where the tolerance for a singular matrix
+  was too low and crapping out on small (scaled down) matrices
+- Fixed bug in divide-by-zero on lightmap efficiency calculation
+- Added -force switch, allows unsupported BSP formats to (try) to be loaded
+
+
+2.5.6 (2003-08-15)
+
+- New: can convert BSP files to MAP files via -convert -format map. Note: not
+  perfect by any means, as certain pieces of data are irretrievably lost, such
+  as func_group entities (including terrain specifics), brush face texturing
+  info, and light/misc_model entities with Q3Map2-generated BSPs
+
+
+2.5.5
+
+- New: -scale N.N mode to scale the BSP
+- New: -light -lomem switch to supress trace BSP optimization. This
+  feature trades lighting performance for decreased memory usage
+- New: Added negative light support (note: will not darken below _minlight value)
+  might screw up radiosity, haven't tested much. Should work with entity
+  lights, shader lights, sun/sky lights and radiosity. Lightfilter shadows
+  tint negative lights too, so the end effect is subtraction of the color
+- New: Lightstyle support for non-Raven (JK2/SOF2) games, including Quake 3,
+  RTCW, ET, EF. Only works with lightmapped surfaces, use with care
+- Fixed long standing terrain texturing bug, should produce exact desired
+  results all of the time now. May require fixing alphamaps that were
+  kludged together to accomodate this bug on existing maps
+- Fixed bug (huh, wtf) causing misc_model surfaces to not be fogged
+- Fixed bug where fog brushes wouldn't fog surfaces if a global map fog
+  shader was present
+- Fixed bug where -patchmeta surfaces were being ignored for raytracing
+- Fixed long-standing bug where twosided surfaces were not correctly
+  bouncing light. You can now have a foggy glass window that re-emits
+  bright light with q3map_bounce 3.0 or so
+- Fixed really stupid bug in radiosity with bouncing styled lights
+- Stripping .map and appending .bsp in -info mode
+- Fixed bug where tesselated brush face surfaces were not being fogged
+- Twosided surfaces (using cull disable/twosided/none) are now lit twosided
+- Added tighter tolerance for alphashadow/lightfilter shadowing to raytracer
+  which fixed problem with double shadows from tracing near triangle seams
+- Brush entities should now be properly fogged. Really.
+- Styled lightmaps are no longer affected by _minlight (doh)
+
+
+2.5.4 (2003-04-01)
+
+- New: q3map_tessSize support for JK2/SOF2
+- New: -lightmapsize N argument
+- Fixed bug where switched styled lights weren't working correctly in SOF2/JK2
+- Fixed bug where external lightmaps with generated shaders were referencing
+  the wrong lightmap
+- Fixed bug causing lightgrid brushes to be ignored
+- Added variable sphere around trace sample points to inhibit occluder geometry
+
+
+2.5.3 (2003-03-06)
+
+- New: SOF2/JK2 light styles now supported
+- New: q3map_lightStyle N to set shader lightstyles
+- New: Tenebrae 2 support via -game tenebrae
+- New: -light -deluxe and -debugdeluxe for Tenebrae "deluxemap" static
+  lighting algorithm
+- Light envelopes now properly clipped to the PVS
+- q3map_vertexScale re-enabled (scales vertex lighting per-shader)
+- Minor bug in brush bevel code corrected
+- Brushes from func_group entities are correctly sorted on insertion
+- Fixed a couple misc warnings to print "percent" instead of "%"
+- Added -custinfoparms support to -light mode to suppress warnings
+- _minlight, _minvertexlight and _mingridlight order independent, and now
+  allow for values of 0
+
+
+2.5.2 (2003-02-17)
+
+- Fixed crash bugs with global map fog
+- Model loading really only warns once now
+
+
+2.5.1 (2003-02-17) (Splash Damage internal release)
+
+- Added more Hella-Fast juice to light code. Overall should be 35% faster
+- Refactored surface portion of raytracer code for less memory usage
+- Changed UVW epsilon in raytracer to catch more edge cases
+- Removed bounds check on occluded luxel finding, was causing more problems
+  than it was solving
+- Adaptive antialiasing code now ignores unmapped luxels for better shadow
+  edges and higher performance
+- Brushes in the BSP are now sorted opaque first
+- Fixed Really Stupid bug causing MapRawLightmap to take about 4x as long
+- Added optimization to make MapRawLightmap 2x as fast
+- New non-sucky quadrilateral subdivision of patches for MapRawLightmap
+- Patches with < 90 degrees of curvature are now box-lightmapped
+- Patch vertex normals now correctly stored, fixing bug in 2.5.0
+- Prints warning if map with < 10% detail brushes is detected
+
+
+2.5.0 (2003-02-14) (Splash Damage internal release)
+
+RAYTRACING AND SHADOW CALCULATION
+- New raytracing code. Rewrote the raytracer to maximize efficiency on modern
+  "caulk-hull" maps. Uses triangle intercept code written by SPoG, based on code
+  by Tomas Moller and Ben Trumbore (Journal of Graphics Tools, 2(1):21-28, 1997)
+  and a biased octree leaf subdivision scheme by Y.T.
+- Shadows (casting and receiving) are now controllable per-entity
+  New entity keys: "_castShadows" or "_cs" and "_receiveShadows" or "_rc"
+  Values: 0 = no shadows, 1 = worldspawn shadows, > 1 explicit shadow group,
+  negative values imply no worldspawn shadow interation.
+  *Entities, including model2 and RTCW misc_gamemodels can now cast shadows*
+
+RADIOSITY
+- Bumped up default and smallest radiosity patch size. Performance should be
+  approximately 4x with a small quality tradeoff
+- Radiosity patches now trace to centroid of triangle, and not bounds center
+- Radiosity and surface lights are now nudged around a bit if in solid
+- Radiosity light generation code is now thread-safe
+- Radiosity -dump files now .map instead of .pfb
+- Poorly worded "q3map_bounce" renamed to "q3map_bounceScale" (old still works)
+- New -bounceonly switch to store only bounced light in the BSP (for Tenebrae)
+
+MISC LIGHTING
+- Optimized case where light and sample are coplanar
+- Forcing nudged luxels to stay within lightmap surfaces' bounds
+
+CURVED SURFACES
+- New -subdivisions N argument, works with -patchmeta and -light for setting
+  patch level-of-detail. Default value is 8, use 4 to simulate default Q3
+- All patch tesselation code changed to create x-patterned tesselation for
+  better lighting
+- Storing patch LOD info in the .srf file for better patch light/shadows
+
+FOG
+- Reworked fog code to fix bad interation with fog and clipped models
+
+MODELS
+- Entities with attached MD3/ASE misc_models now have their bounds correctly set
+- Attached misc_models now support q3map_clipModel for solidity
+- Missing models will only warn once, rather than spew errors
+
+MISC
+- Metasurface merging no longer folds nonplanar triangles into planar surfaces
+  and vice-versa *
+- Fixed Really Stupid Bug where entity numbering was not loaded by lighting code
+  resulting in lightmaps merging across entity boundaries *
+
+* Might result in slightly larger BSP. For maximum efficiency, ungroup
+  func_group entities before doing a final compile
+
+TODO
++ Document new shadow stuff
++ Merge adjacent light-casting triangles into convex windings
+
+
+2.3.38 (2003-02-07)
+
+- New lighting code, return of Smoove-B. Intelligently antialises shadow edges
+  when you use the new -samples N switch. Get -extra quality in 1/3 the time
+- New lightmap filtering code. Now using a proper 0.25/0.5/1.0 filter kernel.
+  Also operates on individual lightsources, so per-lightsource filter/kernel
+  settings are now possible
+- New -patchmeta fixes, now does stitching and adaptive subdivision.
+  Thanks Sock!
+- Nonsolid patches will no longer be in the BSP when run with -patchmeta
+- Misc fog fixes, including q3map_noFog support in maps with global _fog
+  support (SOF2/JK2)
+- Now stripping misc_model entities from the BSP
+- Fixed disappearing face bug that's been present since 2.3.36.
+  Thanks Shadowspawn!
+
+
+2.3.37 (2003-01-24)
+
+- Building from GtkRadiant CVS trunk
+- Added new brush bevel code by MrElusive to fix lingering aas problems (sweet!)
+- Added -snap N arg to BSP phase for axial bevel plane snapping to reduce
+  clipped model plane count (note: will muck with above, use with care)
+- Patches in terrain entities should now have proper vertex alpha set
+- Fixed bug in fur code where fur was being limited to 2 layers (thanks pazur)
+- Reduced vertexlight search area to a reasonable size to keep vertex lighting
+  times down
+
+
+2.3.36 (2003-01-15)
+
+- Plane hashing re-enabled (I suck)
+- Plane hashing optimized (faster parsing of larger maps)
+- Plane finding accuracy code enabled
+- New ASE clipping code
+  + With above should be 10-50% faster
+  + Should generate 33% fewer planes
+  + Generates mostly-axial 5-sided polyhedra instead of pyramids,
+    for tighter 2-sided clipping
+- New -light args:
+  + -scale N -- scales all lightsources (area, radiosity, point, sky)
+  + -sky[scale] N -- scales sky lights (q3map_skylight, q3map_sunlight)
+- Changed fur code to scale fur offset based on original vertex alpha
+
+
+2.3.35 (2003-01-14)
+
+- PicoModel now inverts ASE T coordinate
+- BSP to ASE converter now inverts T coordinate
+- Disabling 2.3.34 triangle optimization code until I find out why it crashes
+- Fixed Conscript-q3map2 to use stack_size ld flags directly on Darwin/OS X
+- Added Conscript-q3map2 to q3map2.dsp for easier Win32 edit, *nix target
+
+
+2.3.34 (2003-01-08)
+
+- Building from merged GtkRadiant 1.2 -> 1.3 merged codebase
+- IMPORTANT NEW CHANGE: Light entities are now STRIPPED from the BSP file.
+  They are re-read in by -light from the MAP file. This has two consequences:
+  + It is no longer necessary to re-BSP & re-vis a map in order to change
+    lighting. You can just change lights in the map file and run -light.
+  + Slightly smaller BSP file, due to fewer entities
+  + Faster loading time, as the game code doesn't have to deal with them
+- Added new -ne (normal epsilon) and -de (distance epsilon) for tuning precision
+  of plane snapping to correct potential AAS/BSP issues
+- Using latest PicoModel, with support for RTCW MDC models
+- Surfaces per raw lightmap are now sorted by shader name, which should give
+  slightly better lightmap efficiency and lower in-game shader counts
+- Adjusted model code to use correct m4x4_t code & angles key
+- Minor bugfix in patch color gradient calculation code
+- Silenced erroneous areaportal warning spew
+- q3map_tcGen now works on model surfaces
+- Using default radiosity subdivide of 256 again (should make radiosity faster)
+- Enabled byte-swapping code so Q3Map2 can be compiled/run on little-endian
+  architectures (Mac OS X)
+
+
+2.3.33 (2002-12-08)
+
+- Added new -bouncescale argument for radiosity scaling
+- Added -pointscale and -areascale for consistent naming
+- Radiosity patch subdivision code enhanced
+- Hint portals split the BSP first (higher priority)
+- Antiportal and areaportal faces split the BSP last, to minimize errors
+- Areaportals work internally like hint and antiportals, so they no longer need
+  to be full brushes (the other sides can be skip)
+- External lightmaps are now named "lm_NNNN.tga" in the maps/mapname dir
+- Cleaned up some of -light argument processing
+- Planar surfaces w/o lightmaps will no longer be tagged as MST_TRIANGLE_SOUP
+  (this fixes problems with Particle Studio particles dropping out of view)
+
+
+2.3.32 (2002-11-30)
+
+- GtkRadiant (1.2.11) integration
+- Added epsilon to texture plane choose code to eliminate numerical
+  inconsistencies on brush faces slanted at 45 degree angles (bug 637)
+- Fixed bug in lightmap export after lighting when map contains 0 BSP lightmaps
+- Adjusted some light tracing constants to fix certain brush/patch seam shadows
+- Tinkered with skylight code again
+- Fixed bug where lightgrid would be black if level was compiled with -nogrid
+- Fixed -approx code to work in floating-point space, using _minlight
+- Fixed bug where vertex light code was using invalid pvs data to create
+  light list for surface, leading to incorrect vertex lighting
+- Fixed related bug in anti-light-leak code that was causing brush faces to go
+  black (bug 694)
+- New: _minlight sets _minvertexlight and (new) _mingridlight automatically
+- New: _mingridlight key to set minimum grid lighting
+
+
+2.3.31 (2002-11-21)
+
+- Stitching the edges of lightmaps on patches that wrap around (cyls and cones)
+  so the seam is no longer visible
+- The -patchmeta switch works better now, the patches are still stored in the
+  BSP for collision, but are pre-tesselated into nonplanar meta surfaces for
+  more efficient rendering
+- Better, more uniform lightmap sample position finding on patch meshes
+- Moved q3map_tcMod and q3map_alphaMod processing to the final phase
+- New: q3map_skylight AMOUNT ITERATIONS to replace surfacelight on sky surfaces
+  for much faster and more uniform sky illumination
+
+
+2.3.30 (Splash Damage internal release)
+
+- Fixed bug in PicoModel ASE material parsing code
+- Fixed a few seam/lightmap precision/projection errors
+- Increased MAX_SHADER FILES to 1024 and fixed overrun error when more than that
+  number of shaders was listed in shaderlist.txt
+- Increased a few compiler maximums for larger maps
+- New: -np N switch on BSP phase, works like -shadeangle, in that it forces all
+  planar shaders to be nonplanar with the shading angle specified
+- New: -nohint switch on BSP phase, omits hint brushes from compile for testing
+- New: -debugaxis switch on light mode. Colors lightmaps based on their lightmap
+  axis (which direction the lightmap was projected on)
+- New: -debugorigin switch on light mode. Colors lightmaps based on the luxel
+  origin relative to the raw lightmap's bounding box
+- New: -debugcluster switch on light mode. Colors lightmaps based on the pvs
+  cluster the luxel falls into
+- New: -convert switch to convert BSP to ASE file (experimental)
+- New: q3map_lightmapmergable directive to allow terrain to be mapped onto a
+  single lightmap page for seamless terrain shadows
+
+
+2.3.29 (2002-11-03)
+
+- Merged with latest CVS, fixed minor issues with matrix order
+- Fixed minor Sys_FPrintf/Sys_Printf substitution typo in Q3Map2
+- Expanded debug colors to 12 for debugging surface meshes
+- PicoModel: fixed ASE loader to support > 1 texture coordinate per-vertex,
+  so more models supported correctly, also loading vertex normals
+- PicoModel: md3 shader names are now cleaned. Suffixes (such as .tga or .jpg)
+  are stripped, and \ path separators are changed to /
+- New: Add :q3map to the end of any shader name, and it will be interpreted as
+  the named shader minus :q3map. Example:
+  textures/shaderlab/concrete:q3map -> textures/shaderlab/concrete
+  One potential use is the -approx feature to collapse lightmapped  surfaces
+  into vertexlit surfaces, saving lightmap space/memory
+- New: q3map_clipModel -- does what you think it does, sort of. This code ix
+  really experimental, and should *only* be used on large models such as terrain
+  (not small decorative models). This code will be evolving. Note: the shader's
+  surfaceparms are inherited by the magic clip brush, so if you have nonsolid
+  in your model's shader that uses q3map_clipModel, then the brush will also
+  be nonsolid
+
+
+2.3.28 (2002-11-01)
+
+- Bug 654 (http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=654):
+  Fixed problem where brush faces, drawsurfaces, and surfaceparms weren't living
+  together in perfect harmony (terrain surfaceparms now inherited by brushes)
+- Nodraw fog works now, albeit when you're underneath, surfaces above don't get
+  fogged properly. Could be good for foggy water where you want the above-water
+  portions to only be occluded by the water surface
+- Bug 656 (http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=656):
+  Number of lightgrid points displayed (byte size is currently out of proportion
+  due to internal storage format) when Q3Map is called with the -info switch
+- Fixed wack surface merging bug where code would attempt to merge triangles not
+  adjacent to the current set, causing bad lightmap projections on nonplanar
+  surfaces
+- Fixed tiny 1-character bug in 2d lightmap texture allocator where adjacent
+  luxels were being checked for occlusion rather than the actual source luxel
+
+
+2.3.27 (2002-10-31) Happy Halloween!
+
+- Fixed minor bug in scriplib bugfix where the last character in a file wasn't
+  being read.
+- Fixed bug where 0-area or bogus triangles were causing crash in MapRawLightmap
+  if they used a shader with a normalmap (thanks ShadowSpawn)
+- Fixed bug where lightmaps were getting hosed levelwide on a prerelease version
+  of 2.3.27
+- Fixed bug where lightmaps were getting knackered on models and certain patches
+- Merged latest PicoModel version from seaw0lf, adding support for ASE and WF OBJ
+  models (preliminary)
+- Increased MAX_MAP_PLANES to 0x40000 (~256k)
+
+Known issues:
+- Lightmap projection and surface merging on large ASE models sometimes flakes
+- Surface to brush surfaceparm propogation doesn't work properly with large
+  metasurfaces: http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=654
+
+
+2.3.26 (2002-10-27)
+
+- Now using GtkRadiant's libpng and zlib config (linked as DLLs)
+- Fixed bug in script parser where repeat calls to GetToken() were causing
+  memory corruption
+- Fixed SOF2 -rename bug
+- When using -game sof2 or -game jk2, the -flares argument is implied
+- Added -noflares argument to disable the above behavior
+- Added support for flares on entities. Use one of the following keys:
+  "_flare" "1" -- use default flare (different for each game)
+  "_flareshader" "path/to/flareshader" -- use a specific flare shader
+  Note: This only matters in SOF2/JK2 now. Make a light targetted (a spotlight)
+  to get it to aim the correct direction, otherwise it defaults to pointing 
+  downward. You cannot have omnidirectional flares
+- Lightgrid size is automatically increased to accomodate large maps. The
+  MAX_MAP_LIGHTGRID error will never happen again
+
+
+2.3.25 (2002-10-22)
+
+- Go Giants!
+- Fixed bug where Q3Map would crash on writing the BSP after the light stage.
+  Thanks to Rap7or (#q3map) and loon8 (Q3W forums) [bug 641]
+- Fixed bug where surface lights were not affecting the light grid properly.
+  Thanks to Shadowspawn and djbob [bug 642]
+- NEW: Added -faster support to lightgrid calculations while fixing previous bug
+- NEW: Changed it so the BSP file is written to a temp file first, then renamed.
+  This should prevent BSP file corruption on crashes during writes
+
+
+2.3.24 (2002-10-20)
+
+- Fixed numerous outstanding bugs and issues.
+- Normal interpolation is now improved. It's slightly slower, but more 'correct'
+  in cases where you have 10 triangles in one plane and 1 triangle in another
+  meeting up and the 10 triangles were over-affecting the average. Only new
+  identical normals are averaged now. This change affects phong shading, meta
+  surfaces, and PicoModel
+- PicoModel up to version 0.7.6, BSD license, better 3DS model support
+- PicoModel library now fixes broken normals on MD3 and 3DS models
+- Bumpmapping code is improved. The correct tangent vectors per-triangle are
+  now calculated so the bumpmaps are consistent with regards to light direction
+- Metasurface merging code optimized. Should be about 100x as fast on complex
+  maps or maps using models with high triangle counts
+- Vertexlight code tweaked a bit
+- Triangle/winding orders now more consistent. Tesselated surfaces will have
+  a uniform triangle ordering (thanks RR2DO2)
+- NEW: "vertexDeform move" now parsed and surfaces are merged into the
+  appropriate  BSP leaves they may enter into (thanks to Bart Vrijkorte)
+- NEW: shader command: q3map_alphaMod. Currently takes a single form:
+  q3map_alphaMod dotproduct ( NX NY NZ )
+  where NX NY NZ are a unit normal (length of 1.0) specifying direction.
+  An example use would be snow in a shader's 2nd pass, using alphaFunc or
+  blendFunc:
+  q3map_alphaMod dotproduct ( 0 0 1 ) // surfaces facing upwards have snow
+  (idea contributed by RR2DO2)
+
+
+2.3.23 (2002-10-18)
+
+- In my haste to release the previous version, I neglected to give credit where
+  it was due. Seaw0lf had as much (probably more) to do with the new model
+  loading library (PicoModel). Because of his efforts, you can load 3DS models
+  and use them in misc_model entities.
+- PicoModel model library up to version 0.7. Improved 3DS support, more stable.
+- Surface models still not reenabled. Soon. :)
+- You can now remap a misc_model's shaders like this:
+  Key "_remapNN" "the/model/shader;the/real/shader"
+  This works just like TA terrain vertexRemapShader key. You can also supply a
+  * glob for the source shader if you want all your model's shaders to use the
+  specified shader:
+  "_remap" "*;models/mapobjects/tree/bark"
+
+
+2.3.22 (2002-10-16)
+
+- Moving to sensible Linux-style versioning.
+- The misc_model code has been completely rewritten, breaking surface models.
+  Surface models will reappear in the next release, once the new model API has
+  stablized.
+- New: MD3 and 3D Studio 3DS models now natively supported.
+- The misc_model "angles" key now supported. Values: "pitch yaw roll" in keeping
+  with standard Quake 3 angles order.
+- Models scaled with "modelscale_vec" now have proper normal scaling/rotation
+  (thanks SPOG).
+- Models can now be lightmapped.
+- Models can now have > 1000 vertexes per surface.
+- For best results for above, add the following to models' shaders:
+  q3map_splotchfix
+  q3map_nonplanar
+- 3DS models' MATERIAL NAMES ARE THE FINAL Q3 SHADER NAMES. YOU HAVE BEEN WARNED.
+- Models are generally 13373R. :)
+
+
+2.3.0-a21 (2002-10-02)
+
+- Fixed a stack of really stupid bugs in the lightgrid code. Should be faster
+  and more predictable now.
+- SOF2/JK2 lightgrid now compiled. This is the first version of Q3Map2 that can
+  compile full, release-worthy SOF2 and JK2 maps.
+- SOF2/JK2 damageshader and damagable brush faces should work correctly now.
+
+
+2.3.0-a20 (2002-09-26)
+
+- SOF2/JK2 worldspawn "fog" (and "_fog") shader key support for levelwide fog
+- SOF2/JK2 light "scale" key to scale light brightness
+- SOF2/JK2 -rename function for _bsp and _rmg_bsp shader renaming
+
+
+2.3.0-a19 (2002-09-24)
+
+- Shaders can now be subclassed (Q3Map relavant portions only, such as
+  surfaceparms, lighting, texture projection, etc). To subclass an existing
+  shader, add "q3map_baseshader X" where X is the name of the base shader.
+- Preliminary auto-model distribution over surfaces. You can now have things
+  like grass and tree models automatically distributed across your terrain
+  or other surfaces. To wit:
+
+  q3map_surfacemodel models/mapobjects/tree2/tree2.md3 64 0.001 0.5 4.0 0 360 1
+
+  q3map_surfacemodel <path to md3> <density in units> <odds of appearing>
+      <min scale> <max scale> <min angle> <max angle> <oriented>
+  
+  The last flag is 1 or 0, and sets whether the model gets fitted to the
+  orientation of the surface. Not functional yet. See screenshots page for
+  shots of this in action.
+
+
+2.3.0-a18 (2002-09-21)
+
+- misc_models can now be attached to any brush model entity. Just target the
+  brush entity with the misc_model (select model, then entity, hit Ctrl+K)
+- q3map_tcMod translate (or shift or offset) <s offset> <t offset>
+- q3map_tcMod rotate <degrees> (rotates around origin, not center)
+- q3map_tcMod scale <s scale> <t scale>
+- Metasurface merging now much, much better. Merges into roughly rectangular or
+  square areas wherever possible
+- q3map_terrain no longer sets Z-axis lightmap projection. It must be set in
+  the terrain layer shaders if you want previous behavior
+- Worlspawn _blocksize key now supports 3 elements for setting X Y and Z splits
+  independently of each other (use a value of 0 for no splits on that axis)
+- Misc bugfixes
+
+
+2.3.0-a1 through 2.3.0-a17 (2002-07 through 2002-09-20)
+
+- Elite Force support (via -game ef)
+- SOF2 and JK2 support (via -game sof2 or -game jk2)
+- All new image handling with PNG support
+- q3map_lightimage specifies image for radiosity and lighting
+- External lightmaps, set using q3map_lightmapsize <width> <height>. Up to
+  1024 x 1024 supported.
+- q3map_lightmapGamma <value> sets the brightness scale of a lightmap
+- q3map_lightmapsampleoffset <distance> to fix glitches in lightmapped terrain
+- Tons more features and bugfixes. See the forum threads for details/screenshots
+- Two new surfaceparms, "antiportal" and "skip," and associated shaders, for
+  allowing the mapper to more cleanly set up visibility data
+- Lightmaps will always have square texels now (no more stretching)
+- Vertex light improvements
+- Light grid improvements
+- q3map_lightrgb support for RTCW
+
+
+
+
+
+