-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
+
+
+
+
+
+