Log On


-super is the replacement for -extra and -extrawide, they're still there, but it's equivalent to doing -super 2 and -super 4, respectively

-meta is with the first stage
try this: bsp -meta, then -light -debugsurfaces. that'll show you in bright colors where the surfaces are. run with -v too, it'll spit out a bunch of stats about how much is getting merged/removed/fixed/saved. To compare, Run w/o meta, and do a -light -debugsurfaces

try q3map -export <mapname>, that'll export the lightmaps as number tg images in maps/mapname/lightmap_NNN.tga

keep in mind that if you have a bunch of identical hallways or rooms with identical lighting they'll probably use the same lightmaps

you can have the terrain brushes as part of worldspawn, and no func_group is necessary. you can have terrain as part of anything, really. any base shader will work, but you have to set a few keys

q3map_shadeshangle is a new shader key

use q3map_tcGen ivector ( 256 0 0 ) ( 0 256 0 ). that will project the texture every 256 units in X, and every 256 units in Y

tcMod scales in the stages will slow your framerate down quite a bit.

if you want to complicate things further, you can have new additional layers that project on a different axis. say, for sides of cliffs: q3map_tcGen ivector ( 512 0 0 ) ( 0 0 512 )

if you use r_clear 1, sparklies are easier to spot

terrain gets chopped now. terrain faces are just normal brush faces now, with the exception that they are forced through the metatriangle surface pipeline.

"terrain" "1" isn't necessary anymore

any ent can have an alphamap specified with "_indexmap" or "alphamap" keys, and "_shader" instead of "shader", _layers" instead of "layers" etc.

-debugportals is a useful bsp switch. try it :) it'll bsp the map with visible portals so you can see exactly where vis can and cannot see

-thresh, btw makes phong shading smoother because it averages more surface normals per luxel. -thresh 0.5 means every triangle is subdivided to 0.5 samplesize. it's like -extra for luxel mapping, it defaults to 1.0

it'll never merge more than 64 verts into a terrain surface chunk, if you're ever wondering how it's doing you can always do a -debugsurfaces in either bsp or light phase

shadeangle works fine on some maps but shadowspawn's map has ramps and stuff that hose the shading.

WARNING: Couldn't find image for shader << is this still normal for terrain problems? <@ydnar>jer: yeah it's because there is no image associated with terrain shaders they have no qer_editorimage or q3map_ligutimage hich is why I added q3map_tcGen and q3map_texturesize

you may have to brighten up some surface light shaders or toss in a few dim point lights to compensate for -fast, but that should be less annoying than waiting 7 hours I figure

(-extra = -super 2)

ent lights = point lights, area lights = surface lights

area lights are much slower, they are more expensive to calculate. -fast allieviates that problem to a degree. think of -fast as another lighting mode entirely.

with bounce, lighting will get brighter with each successive pass as light gets bounced around.

The terrain is no longer this "special" shit anymore. It's normal brush faces like everything else except it passes through the metasurface pipeline. so unlike before, structural brushes WILL chop up terrain.

run -light -fast -nogrid -debugunused and then noclip around the map and then noclip around the map. run around the map first, see if you can see any hot pink action. see, I pack small lightmaps into the unused portions of larger lightmaps.

ok dude, caulk that wall. you're probably getting sparklies there because it's fanned.

ok, since lightmaps are packed now, uncaulked faces that were previously black will start showing up as sparklies.

-onlyents is broken, has been broken, and will continue to be broken until it is fixed in Radiant. <!Pointy> it's a radiant bug? <!ydnar> YES

ents will bounce light in radiosity, btw so doors/plats/bobs will reflect light.

autosprites emit light, but they are point lights

<@{wf}shadowspawn> someone was asking about fog a while back, if its possible to do volumetric lighting on it. is that just fantasy? * @ydnar rolls his eyes

_lightmapscale scales the samplesize

q3map_tcGen vector and q3map_tcGen ivector are the two supported methods. ivector = inverse vector, easier to read, vector is ( 1/units 1/units 1/units ) form rather than ( units units units ) form.

-patchmeta (pre-tesselates patches in the bsp). -patchmeta is really, really wierd ok?

-super goes from 1 to infinity, but nobody's got the ram to do more than 16 or so. though I suppose if someone did a 64-bit build of q3map it could work.

_lightmapscale 2.0 will make the samplesize for worldspawn brushes 32 instead of 16

<@{wf}shadowspawn> omg you cant tell me that -filter is good if it does it that fast

Here's basically how the radiosity in Q3Map works:
  1. Set up and clear world lighting data to black (L = 0).
  2. Create point/spot lights from the map's entity lights and area lights from drawsurfaces with shaders that emit light.
  3. Clear (high resolution) temporary one-pass lighting to black (T = 0).
  4. Illuminate the world (T = T + light).
  5. Filter temp lighting data (antialiasing, blurring, missing data fixups) (T = T + fixups).
  6. Copy finalized temp lighting data to radiosity lighting data (R = T) and add it to permanent world lighting data (L = L + T).
  7. Delete current list of lights.
  8. For every surface in the world, take its radiosity lighting data (the light that was recieved during the last pass), and derive a new list of lights. This typically results in several thousand lightsources.
  9. Repeat steps 3 to 8 as much as necessary.

The only surfaces that don't re-emit light during radiosity are skies or shaders tagged with q3map_bounce 0. The color a surface re-emits is based on a sampling of the texture color and the lightmap (or vertex light).

A blue wall will not reflect any red light. A red wall will reflect red when lit with a white light.

The alpha values of a surface scale how much a translucent surface re-emits light. To supress this, make a custom image for q3map_lightimage.

disable none
q3map_globaltexture q3map_notjunc

Q3Map2 Version History + Changelog (Reverse Chronological Order)

2.5.3 (2003-03-07)

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

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

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

- Optimized case where light and sample are coplanar
- Forcing nudged luxels to stay within lightmap surfaces' bounds

- 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

- Reworked fog code to fix bad interation with fog and clipped 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

- 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

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