Racer
-----

1. COPYRIGHTS
2. SUPPORTED HARDWARE
3. OPERATING SYSTEM NOTES
4. DEVELOPMENT LOG

================================================================
                       (1) COPYRIGHTS
================================================================

Racer is a free car simulation for Windows, Linux and Mac OS X.
See the website for many details: http://www.racer.nl

Ruud van Gaal
Cruden B.V.
http://www.cruden.com

Racer
Copyright (c) 2000-2009, Ruud van Gaal
All rights reserved

Newton Dynamics Engine
See the accompanying 'license_newton.txt' file.

Open Dynamics Engine
Copyright (c) 2001-2009, Russell L. Smith.
All rights reserved

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the names of ODE's copyright owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

Rain & Thunder samples - Storm package by RHumphries

These works are licensed under the Creative Commons Sampling Plus 1.0 License.
To view a copy of this license, visit http://creativecommons.org/licenses/sampling+/1.0/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
See http://freesound.iua.upf.edu/packsViewSingle.php?id=147

================================================================
                    (2) SUPPORTED HARDWARE
================================================================

By selecting 'Options', then 'Controls', you can setup a wide
varietry of hardware supported by DirectX 9.0c.
An auto-detect button is available that will detect & setup:
- Logitech G27 wheel
- Logitech G25 wheel (the buttons are probably wrong though; derived from the G27)
- Logitech MOMO force wheel
- Logitech WingMan Attack 2 joystick
- Logitech Wingman Formula Force GP USB
- Thrustmaster F1 Force Feedback Racing Wheel

Other wheels & joysticks will need manual setup.

================================================================
                   (3) OPERATING SYSTEM NOTES
================================================================

Mac & Linux versions typically lag several versions. The Linux version gets the most attention for updates.
Linux variations:
- Less support for exotic controllers (PMD)
- No support for frame locking (on PC, this is also for nVidia Quadro cards only)
- No support for PI Toolbox

Running this software may require installation of Visual C++ DLL's, which can be found at:
http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en

================================================================
                    (4) DEVELOPMENT LOG
================================================================

v0.8.20 (7-9-10)
----------------
- Set gamma to 1.0 in data/renderer/common/hdr.cg - gamma is done in your display!
- Added shader texture option 'mode' to specify linear or SRGB maps. Default is 'srgb'. Bumpmaps need 'linear'
  otherwise their normals will be un-gamma'd (an SRGB image has gamma~0.45 where Racer works in linear light, gamma=1).

v0.8.19 (27-08-10)
------------------
- The cubemap camera position was wildly off, giving incorrect culling of objects in the reflected
  environment often. This also fixed the appearance of seams in the cubemap sides.
- Using glGenerateMipmap() while loading textures - supposedly faster than using GLU.
- Switching free shifting and up/down shifting is now automatic. The default mode is still
  stored in the data/controls/presets files for the initial gear.
- Auto exposure downsampling is now down without mipmaps but FBO's instead
  (data/renderer/fullscreen_shaders_hdr/luminance_downsample_*.cg). Mipmaps was not working ok.
- In Ctrl-2 you can now see the luminance and RGB values of the rendered image. This to debug
  sky values (the values shown represent a kilolux value).
- Auto-exposure is now working ok, so the TOD editor now also has an exposure factor next
  to direct exposure (only useful without auto_exposure). This factor is multiplied with the auto exposure
  calculations, so even if the auto exposure is trying to get a nice lit image, you can bring it down
  at night (purposefully under-exposing).
- Auto exposure now uses log averaging of the screen pixels to get a better 'luminance' value. First,
  the log luminance is calculated for all pixels, then this is downsampled until we get the average
  screen luminance.
- Used Stereo's ToneMap function to desaturate dark colors. Also added a blue-shift for night scenes.
- Cloud color is multiplied with lightAmbient (sky color) in the sky shaders, so the clouds are now
  more visible and don't need 'clouds 7' hacks.
- Auto exposure 'steps' setting has been replaced by 'time_per_sample'; it used to be framerate
  dependent.
- Controller lock can now be specified (data/controls/default.ini). Used it on a G27, setting lock
  to 900 in the controls file and in the Logitech Profiler software. Setting it lower in Profiler just gives
  a mild software-controlled lock which is not too useful, so I just leave it at 900.
  See data\controls\presets\logitech_g27_racing_wheel_usb.ini for an example (joystick0.lock=900).
  Set the car.ini's steer.linearity to 1.0 preferably. Now, the steering lock will match that
  of the wheel directly.
  Racer caps the steering lock to what the car can do (car.ini's steer.lock), so for this feature
  you really need a capable (900 degree wheel), otherwise you won't be able to make the degrees
  required for the car to turn fully.
  The default controller lock is 0, so people with less capable wheels
  can still play (probably setting linearity for the controller to around 0.5). In that case,
  the full range of the controller maps to the full range of the car's steering wheel.
- Per track TOD loading; the track can contain a tod/ directory. Curves that are not defined
  are loaded from data/renderer/tod.
  

v0.8.18 (20-08-10)
------------------
- The Lobbyserver wasn't updated to use the new ENet version, so older version could connect
  but were refused, and newer versions couldn't connect. Fixed.
- Autoexposure formula revised to exposure=gradient/luminance+offset. Thanks to Colin Pan.
  It's much better but somehow the scene luminance doesn't seem to be calculated correctly
  for non-power-of-two resolutions (glGenerateMipmap).
- Added a 'loading' or 'busy' indicator (data/images/loading_*.tga and the loading.indicator_pos setting)
- Rain was invisible in bright times of the day
- Some particles were dark as a result of the switch to klux lighting
- Tonemapping (in hdr.cg) used a 0.1 factor - removed that and for auto_exposure this means
  gradient should be set to ~1.0 instead of ~10.0 (exposure=1/luminance).
- Added special.ini parameters under 'sun': azimuth_offset (rotation wrt North),
  year, day, month, latitude, longitude and timezone. The sun XYZ TOD curves disappeared.
  See also http://www.racer.nl/tutorial/newtrack.htm#sun
- Added 'sun azimuth <x>' command to change north angle live.

v0.8.17 (13-08-10)
------------------
- Revise TOD/lighting scaling - the base lighting unit is now kilolux. Direct sunlight is
  around 32-130 klux, skylight 10-25 klux, moonlit night=0.001 klux
  (see also http://en.wikipedia.org/wiki/Lux)
  The curves are not too great yet, but the nice thing is that the car lights vary
  from day to night.
- Mie/rayleigh combination mix reverted to the original paper; slight change of color,
  but this blends the world objects more nicely into the sky with some mie.
- Removed specular curves from TOD editor - it's now copied from the diffuse curves
- Revised split distances and smCor[] in constants.cg once more.
- Also using 4 splits now, with splitrenderjump<x> so it's faster even than 3 splits without jumps
- New white styling

v0.8.16 (11-08-10)
------------------
- Mirror texture was 8-bits, now HDR (16-bits)
- Mirror uses data/renderer/fullscreen_shaders_hdr/mirror_hdr.cg to handle HDR->LDR while painting
  so it looks as intended
- Sparks didn't render right when used with a mirror or live_track=1 (prevModelViewProj)
- TOD editor using 'edit tod' for exposure. Horizontal=0000-2359, vertical=variable.
  The editor jumps live to the time you're editing. It replaces a number of variables
  that were hardcoded/constant. The future will see per-track tod support.
- Revised split distances and smCor[] in constants.cg

v0.8.15 (06-08-10)
------------------
- Multiplayer linear interpolation revised due to timing problems. The spline method currently
  is a bit buggy because of these revisions. Now default interpolation is linear (at 10Hz).
- Added standard_grass_v/f.cg shaders for grass (using the tree shader gives problems with shadows)
- Added dyn_standard_wave_v/f.cg for waving objects for cars (not too useful?)
- standard_bump_detail_v/f.cg had syntax errors
- Baja's collide.dof had an undefined material, fixed (thanks to Boomer541)
- BlackBox is removed (doesn't work on Win7) and replaced with StackWalker (only tested on Win7)
- fixed dyn_standard_bump_speca_v/f.cg shadow generation
- Replay save dialog wasn't visible, now it is (and dragable even)
- Replay movie creation dialog wasn't visible.
- Replay movie audio had some faults. It now downsamples any 5.1 sound to stereo (hope the channels
  are ok) and saves a more correct .wav. Also the adding to replay.avi now seems to work correctly.
  Also, the conversion to 16-bit was buggy and could generate spikes.
- Car 3D sounds now get a '3D spread' of 90 degrees. Previously, stereo input signals in 3D
  would become mixed to mono (as 2 mono sources at the same spot). With the 90 degree spread,
  they are played 45 degrees left & 45 degrees right, so this should provide a stereo separation.
  It would be nice thus if engine sounds in the future become stereo, probably.

v0.8.14 (30-07-10)
------------------
- Shaders fixed for ATI cards again, so it should run again on that. No shadowmap filtering though;
  the ATI path doesn't support for-loops, nor PCF for depth filtering.
  Cg shaders are compiled with '-DATI' when running an ATI card (#ifdef ATI).
- Tracked & Modeler recompiled for new fmodex.dll
- Modeler/DOFFix's model optimize now also try to optimize submaterials (Multisub materials
  where only 1 submaterial is really used). Needed for Swiss Stroll's .dof files.
- CSM now uses PCF correctly (nVidia only, ATI doesn't seem to support free PCF)
- Flares reworked a bit regarding visibility, which was with respect to the camera direction,
  now a view vector from camera->flare. Billboarding keeps normal and direction, to avoid
  wide flares (like for a 3rd brakelight) to rotate wrt the underlying brakelight geometry.
- All shaders now render into 1 render target (RT). This had an effect on bloom though,
  so the bloom brightness pass was modified (in data/renderer/fullscreen_shaders_hdr/bloom_bright_f.cg)
  This also fixes problems with blending materials, although the shaders will all need
  to output the base texture's alpha to work correctly when blending.
- AI didn't reset correctly with Shift-R (it would try to start driving immediately)
- AI throttle playing before the start is improved
- Fixed standard_bump*.cg shadow generation, which was non-existant
- Added 'graph step' variables: susp0.piston_velocity, damper_force, arb_force and length to visualize
  damper behavior.
- Sky shaders now 'stick' the Z coordinate to the far plane. This alleviates the need for an internal
  very far projection matrix, so no projection matrix switching takes place while rendering the scene.
- Using 2 layers for sky shaders with both layers set to 'depthfunc=always' didn't work correctly
  and was drawn in 2 passes instead of 1. Fixed (and used in Carlswood_NT).
- Added shader 'cast_shadow' global option (shader_<x>.cast_shadow=0 for example).
  If set to 1, any geometry with this shader is skipped
  during the shadow generation phase (so it won't cast a shadow in the final render).

v0.8.13 (23-07-10)
------------------
- Updated FMOD to v4.30.5 (needed in a first attempt to create a 64-bit Racer, for what it's worth)
- standard_blur_f.cg had a syntax error; fixed.
- You couldn't select shadowmapping (CSM) but no bloom. Now you can with fs_filter1=shadows_f.cg
  (automatically done when selected from the menu)
- Bugfix: first moving menu image was faulty
- Added 'bloomFactor' to data/renderer/common/constants.cg (0.5) to adjust bloom amount
- Special.ini's gfx defaults were not too handy, giving division by zero and slow framerates.
- Number of available flares raised to 60 (was 40)
- Added physics.tracks.use_road_noise option to optionally ignore road_noise from track special.ini files
  (not really useful for the internet version)
- 'show carpoints' now also shows flare normals
- Flare aspect was changed with viewing angle, making it appear as if the normal was bad.
- Flare texture rotation now a bit nicer (dot product with camera X instead of Z)
- Updated CSM filtering (+bloom) to use GPTDBiz's PCF filtering (nice work!)
  It does have some aliasing/Z artifacts currently though, which need fixing.
- dyn_standard_bump_reflect*.cg had a bug in normal passing, which generated too much shadow areas
  (all areas where the normals had negative components)
- Added 'track load <name>' console command to load an entire track (not too useful for general use)
- empty_f.cg shader was not released, giving QLOG warnings
- Rain could disappear sometimes (bad renderstate)

v0.8.12 (09-07-10)
------------------
- Added camera.auto_switch_director_track_cam setting to avoid automatic track/director camera mode switches
  By default it's off.
- Lighting/shadowing fixes in shaders (dyn_standard_bump*.cg, dyn_standard_bump_speca*.cg)
- The Baja had some bad shaders (metal parts in car.shd)
- Modeler gave a lot of QLOG errors.
- Modeler ASE imports now show a dialog if too many indices are used in 1 geob.
- Accepting new graphics options would crash Racer
- Added auto-calibration for controls (not too useful for consumer controllers though)
  See http://www.racer.nl/tutorial/ctrlset.htm#values
- Shadowmapping now done using a texture atlas instead of a texture array. This for ATI cards.
- On ATI, shadowmaps could not only be a Z-channel. ATI seems to need color buffers.
- More tweaks to get ATI to work better. Our experiments show that alpha_to_coverage is very poorly
  supported, but at least shadowmapping seems to work better. nVidia cards recommended.
- sky_daynight*.cg fixed to do the same as sky_*.cg, only with an added night texture.
- Halo effects in shadow mapping improved through the use of Z information
- Added dyn_standard_speca_f.cg shader for 1 texture with specular control using alpha.
- Cg parameter passing in the render engine was cached. Lots faster.
- CSM is now orientated to look like a square. Also, subpixel movement has been fixed.

v0.8.11 (02-07-10)
------------------
- Added standard_wave_banner_v.g for waving banners, see http://www.racer.nl/tutorial/waving_flag.html#banners
- Skidmark painting more robust (texture usage and render state could cause transparent or black renders)
- Non-Cg version still tried to load shadowmapping Cg shaders when renderer.shadowmapping.enable was 1
- Projected lights intensity back from 1.1 to 0.6( data/renderer/shaders_*/projected_texture_f.cg)
- Default shader_<x>.reflect value is now 1.0 (was 0)
- Modified per shader layer reading of .ambient a little; otherwise the global shader_<x>.ambient
  did not default to the global shader_<x>.diffuse. This only really influences non-Cg .shd files.
- dyn_standard_reflect_window_v/f.cg improved to do per-pixel fresnel.
- Reflection shaders fixed to respond to ambient/diffuse more accurately ('diffuse=0 0 0' still gave a shadow).
- The Lambo brakediscs now heat up through an alpha layer, looks better
- shadowmapping.shadowintensity removed - shadows are ambient and need not be softened (would only include false diffuse lighting)
- Shader directories combined into data/renderer/shaders/*. Compilation uses -DCSM for shadowmapped variety.
- Shadowmapping optimized a little bit in the .cg shaders.

v0.8.10 (25-06-10)
-------------------
- Using Newton 2.22 which fixes bugs in track collision meshes sometimes
- Modified shader sorting a bit - decal objects such as skidmarks on roads should use layer0.depthwrite=0
  so that they render AFTER the road itself (which does depthwrite=1)
- Added csm_f.cg which is bloom_shadows_f.cg without bloom (just a bit faster)
- 'reload car' would crash sometimes. Also, 'reload car <name>' now works correctly due to the same issue.
- The 'join game' dialog was invisible (though active)
- Driving in reverse no longer causes the brakes to heat up
- Fixed bug with VBO's which could cause crashes while painting
- Failed DOF loads could cause the next models to be loaded without generating VBO's (slower rendering)
- Added support for DDS files which don't supply all mipmap levels
- LDR no longer supported; the hdr.enable option is gone
- 'strict' mode (dev.strict=1) now also catches shaders without vertex & fragment shaders; v0.9 will require Cg shaders
- Lambo rear wheels were unshaded
- Atmosphere shaders optimized. Also normalized the sun intensity, so special.ini sun.intensity should now be around 1.0!
- Started documenting on how to convert for v0.9, see http://racer.nl/tutorial/updating_v09.htm
- Added 'racer_nocg.exe', which loads track_nocg.shd and car_nocg.shd files instead of track.shd/car.shd
  This enables you to provide simple shaders for old machines/cards. See http://racer.nl/tutorial/nocg.htm
- 'show carpoints' now also shows the backfire points
- Added 'envmap.live_track.render_once' to generate a single envmap at start time, then not update it again (for speed)
- Added 'scale' parameter to shaders (shader_<name>.scale) which is passed to Cg shaders
- Added 'standard_mix2_f.cg' for mixing of 2 textures using a control texture. Useful for tracks.
- Also added 'standard_mix1_f.cg' and 'standard_mix2w_f.cg', see http://racer.nl/tutorial/shading_tracks.htm
- Fresnel properties for GPU shaders can now be set: shader<x>.fresnel.bias, scale and power.
  See http://racer.nl/reference/shadereng.htm#matglobal

v0.8.9 (03-06-10, ~r1190)
-------------------------
- Bugfix: lateral damping prediction for the wheels wasn't correct. Could result in laterally shaking cars.
  If you still have that (stiff cars mainly), try adding a bit of tire_damping to each wheel. I.e.
  tire_rate=200000 -> try tire_damping=2000 (0.01*tire_rate).
- Bugfix: shader global diffuse/ambient (not in the layers) wasn't read in the right order, therefore
  setting a global diffuse color, then no ambient color would still result in the ambient color
  not taking the diffuse color values (which should happen, so that ambient=diffuse by default).
- standard_heat_f.cg has added passing heat through alpha, so not the entire brake disc has to light up
- Highly improved rain & snow, based on the method used in Project Gotham Racing 4. It does mean
  that rain & snow are now mutually exclusive.
- Added 'prev_camera' control to switch to previous camera mode (inverse of change_camera, normally key C)
- Added 'thunder <x>' script command to set thunder intensity (only on when it rains as well)
- Skidmarks now adhere to car tire widths.
- Skidmarks use a Cg shaders (shaders_hdr/skidmark_*.cg)
- Dials painting put deeper in the render pipeline to avoid dials disappearing.
- Depthbuffer available as texturemap in postprocessing Cg shaders; see data/renderer/fullscreen_shaders_hdr/show_depth_f.cg
  Usability still debatable (there are problems with it; multisampling...).
- CSAA support (nVidia cards); see renderer.motion_blur.coverage_samples. Typically use samples=4 and coverage_samples=16
  for a view that looks like samples=16 but is almost twice as fast.
- Added renderer.bloom.width and height to set FBO initial size (default is 512x512)
- New engine load calculation (for audio mixing) takes rpm, calculates throttle at which that rpm would be 'idle'
  and compares to the current throttle. If throttle is really depressed more, load is present.
- Logging group added: 'ai' (set log.groups.ai to 1) for ai_line_delta variable logging.
- Added a console.port_mt multi-threaded socket for external status requests (only for RaceManager-type applications)
- Added cascaded shadowmapping support; set renderer.shadowmapping.enable to 1. Racer then uses data/renderer/shaders_hdr_csm
  (csm=cascaded shadow mapping). Turn off shadows.project_shadows (set to 0) to lose the old projected shadow
  and use fs_filter1=bloom_shadows_f.cg to generate shadows during postprocessing of each frame.
- Added dev.strict; if set to 1, any errors will immediately be fatal once a track or car loads.
- Materials without (Racer) shaders (defined in .shd files) get warned about in QLOG. Strict mode will also trigger on these.
  Note that future versions of Racer (v0.9.0 final) will probably refuse materials without Cg shaders even.
- Tracked/Modeler revised to use only 1 double-buffered window. Dialogs now all live in the same window.
  This will be useful to overlay Racer with regular GUI, enabling future onscreen editing (live shader editing for example).
- Tracked now has direct model information under F4 mode (like 'Information' in Modeler)
- Autoclutch rpm in car.ini can be set to 0; this is then dynamic and tries to attain maximum torque from the engine
  depending on the amount of throttle. More throttle means the autoclutch rpm is moved towards the rpm at which
  the engine generates the most torque.
- Dropped stencil shadow support - it is replaced with shadow mapping.
- Added 'londistlap' logging for group 'position' (useful for detecting lap crossings in external log processing software)
- Added car.ini susp<n>.warplen to define a length used when the car is dropped onto the track. Default is 0, which
  calculates a reasonable value ((minlen+maxlen)/2)
- Bugfix in tangent calculation (bumpmap); some tangents were NaN
- Bugfix in DDS loader for the last 2 mipmap levels
- Added 'optimize_dof <file>' script command to optimize DOF files straight from Racer (no need for Modeler for that).
- Added dev.optimize_newton_tree to optionally skip optimization of trackcollision.bin collision trees (development only)
- The console command 'reload car' can now also load a different car, i.e. 'reload car lambomurcielago'

v0.8.8 (24-12-09)
-----------------
- Fixed Pacejka loading for MF5.2 - didn't reset all to 0 at initialisation time
- Increased Win7 compatibility; with Aero theme, dialogs would stay hidden behind main window(s).
- Using Alt-Tab to switch applications now longer lets the Alt key hang (needed to press it again to really release)
- Using themes could make black lines appear due to the window's size not being correct. Fixed.
- Added minimap.alpha (defaults to 1) to make minimap semi-transparent.
- Added documentation page in the menu with links

v0.8.7 (18-12-09)
-----------------
- Removed dependencies on VC DLL's (static linking) to avoid VC Redistributable download & admin access.
- Bugfix: the implicit wheel integration was not entirely correct. Also expanded to work for non-linear dampers.
  Now, dbg_car.susp_implicit_integration=1 is useful again (especially with stiff cars).
- Bugfix: car.ini CG offsets were not entirely correct; using a Z offset resulting in twitchy pitch behavior.
  CG handling was revised and the problem is now gone.
- In CG fixing (and changing physics slightly), wing positions are now defined relative to the nullpoint,
  rather than CG. This was the last setting that was still relative to the CG, and now everything is relative
  to the nullpoint. Does have an effect on all cars with CG away from the nullpoint.
- Implicit wheel integration now also implicitly does spring forces. Also a bug was fixed for sqrt type dampers.
- Baja fixed up some more (some QLOG errors)
- Fixed force feedback 'inertia' force DirectX error (invalid param).
- Added Max2009 exporter (in max/) to the installation
- Added a start of dedicated race server (server.ini); see http://www.racer.nl/tutorial/multiplayer_server.htm
  The lobbyserver will reject older Racers than v087 because of the settings it now sets to race.
- New multiplayer.expected_clients_timeout setting to timeout races where not all people connect.
- Lobby improved to show bots.
- The control setup screen now shows controller names instead of an index.
- Control setup now has 'autodetect'. For Logitech G25/G27/MOMO wheels, Wingman Attack 2 (joystick),
  Thrustmaster F1 Force Feedback wheel currently, although the G25 is probably off with the buttons
  (I only have a G27, MOMO and some others). Please send me data/controls/default.ini for your
  controller, plus the name of the controller.
- G25/G27: Default max_torque for FF wheels is now 20Nm (joystick<n>.max_torque); consumer wheels twitch too easily
  (saved in data/controls/default.ini)
- Support for the G27 leds (based on car.ini's min_warn_rpm/max_warn_rpm, defaulting to 70%/90% of max_rpm).
- min/max_warn_rpm now based on a car's max_rpm (commented out in data/cars/default/car.ini)
- Added stick friction for controllers; data/controls/default.ini, joystick<n>.stick_friction. For low speed.
- Locked diff still allowed wheel velocities to differ
- Support for GMax MD3 exports (see http://racer.nl/tutorial/gmax.htm) in Modeler.
  No bones, just vertices & faces. No normals yet as well.
- Multiplayer server disconnect now also disconnects all clients
- Upgraded to use ENet v1.2.1 for the network middleware
- FBO mirror didn't work correctly when motion_blur.method was 4 (FBO). It also could cause Racer to crash.
- Newton.dll is no longer used; Newton is linked in statically.
- Also upgraded to Newton 2.10. This fixes the world_size problem where cars would get stuck at far-away locations partly.
- Simple car shadow would shake in corners; it now follows the car much better.
- Changed shader_<x>.ambient default; it will now take the diffuse value if not defined.
- Added sun diffuse/ambient etc readouts in Ctrl-2 debug screen.
- Added 'sun diffuse <x>' and 'sun ambient <x>' script commands.
- Using a Cg car on a non-Cg track could result in black (non-Cg) objects (envmapping was taking place it seemed)
- Added best line drawing (F3 toggles this); see also racer.ini:gfx.show_bestline. Based on the first car's AI line.
- Increased the max number of tracks supported in the Track Select screen to 250 (was 50).
- Console now accepts editing of lines while entering commands (left/right)
- Default movable damping was very high; cones got stuck to the car.
- Car selection now has a listbox (and revised with a smaller car)
- Track selection has best-laps removed to make room for a larger listbox
- Experimenting with glFinish() in the timing to get less jerky framebuffer swap behavior (if vsync=0)
- Fixed flares appearing in live track envmap.
- Fixed bug M1: "Live environment mapping for clients in multiplayer events is that of the host."

v0.8.6 (06-11-09)
-----------------
- Cleaned up the Baja - 1 Pacejka set, bumpstops, collision model
- The Baja didn't work in LDR graphics mode (missing Cg shaders)
- collision.report_car_track_collision didn't work for Newton. Fixed.
- Added 'analyse all' and 'analyse wheels' script commands. Now runs text editor to show resulting file (data/dump/analyse.txt)
- Movables are working again (flag 1024 in geometry.ini, see also TrackEd)
- Added tire damping for load next to tire rate (car.ini: wheel<n>.tire_damping). Try 1/100th of tire rate for starters.
- idle_rpm with idle_method=1 now really makes the engine run at idle_rpm, instead of slightly below it
- Keypad-5 now immediately resets to the default camera settings, instead of moving slowly
- Added 'on_allfinished.rex' script which is run right after all cars have finished
- Improved control noise detection - sometimes control movements were never seen if the initial position was off
- Force feedback joysticks now use a background option which seems to keep forces running when switching windows.
- Ctrl-1 Mz view is now shown from the wheel, not the steering wheel (to match with caster/kingpin units)
- Magic Formula 5.2 support (car.ini, model=1, see http://www.racer.nl/reference/pacejka.htm) - including combined slip!
- Pacejka player improved (slipratio variation reduced, slipangle passing had a RAD2DEG factor bug)
- Pacejka player now supports MF5.2 tires.
- Partial .tir file support (industry standard Pacejka format) - for MF5.2 import only (wheel<n>.pacejka.import_file=myfile.tir)
- Added limits.world_size to be able to set the max world size. Bigger=less performance, but some tracks seem to need it (development).
- Added debug screen subpages; pressing Ctrl-1 upto Ctrl-9 multiple times toggles through the subpages (if present)
- Added stats.default_info_sub setting for subpages of every debug page (tires for example has 2; press Ctrl-1 twice)
- Removed explicit wheel lock force adjusting (pointing the force in the reverse velocity direction) - the friction circle
  methods (and MF5.2) handle this internally already, so it was a double effect.
- A slightly pitched car could make it roll forward automagically.
- Keyboard (digital) controls were framerate dependent; made independent. Keyboard controls are still not recommended.
- Improved failing FBO detection to avoid crashes when your driver doesn't support framebuffer objects.
- LSD's were very buggy; completely revised, they now seem quite spot on. Someone prove me wrong. ;-)
- Salisbury diffs added as LSD's, with the power_ratio and coast_ratio calculated from the angles/clutches. Preload is bad though...
- Info on diffs updated on http://www.racer.nl/tutorial/differentials.htm

v0.8.5 (8-9-09)
---------------
- Bugfix: wheel Pacejka damping for the last wheel was applied to all other wheels (!)
- Unculled polygons (cull=none) in tracks could be driven through on one side - remove data/tracks/<trackname>/cache to regenerate collision mesh
- Stencil buffer support for FBO's; that fixes see-through projected shadows for cars (renderer.motion_blur.method=4).
- Generic models are working again. See http://www.racer.nl/tutorial/generic_models.htm
- Generic model transformation matrix generation has been improved (no shearing, stable axes). Orientation is still an issue (what is up?)
- Increased number of generic models to 50 (from 10)
- Added live track FBO's (much faster): set envmap.live_track.fbo to 1
- Live track FBO bits can be set to 8 or 16 (envmap.live_track.bits); 16 is HDR.
- Live track FBO size can be set (envmap.live_track.size). Default around 512.
- Improved bloom a bit.
- Menu pimped up with background images.
- DDS DXT5 alpha was not flipped correctly; fixed.
- Modified a bunch of Cg shaders slightly. HDR only really; LDR will be obsolete at some point.
- motion_blur.blur_alpha now works again for method=4. Better motion blur sofar than with motion blur Cg shaders. Try 0.75.
- Added spline.ini lines.use_mesh_hits option to ignore the spline for road smoothing (only used for AI/minimap etc).
  This doesn't drive on triangles (which was unsmooth on even Speedest2) but on the spline quads, which feels much better.
- Added a new damper force correction method (2) which is slightly better than before. Selectable in dbg_car.damper_correct_method
- Added bumpstop/reboundstop damping (car.ini, susp<n>.bumpstop_damping, susp<n>.reboundstop_damping). Try 10000.
- Added ARB force correction, although it doesn't seem to be used much and doesn't correct much.

v0.8.4 (18-8-09)
---------------
- Ghost cars didn't work in LDR mode (missing Cg shaders)
- Cg compile errors are now shown in a dialog with full details
- Got rid of ATTR8/9 in the dyn_standard_bump_reflect_v/f.cg shaders, so the Lambo runs on slightly older hardware
- Fixed bounding box offsets so older cards can now drive without getting stuck on the road.
- Added car.ini engine.min_warn_rpm and max_warn_rpm; also added view variable 'rpm_warning' which gives 0..1.
  Useful for digital rpm shift indicators. See http://www.racer.nl/tutorial/dials.htm
- Added loading.bar_y option to move loading bar
- Car bounding box wasn't drawn correctly (at world origin) with bloom enabled.
- Added directory name in car selection screen.
- v0.8.3 might have left a large pile of temp files undeleted
- Multiplayer timing revised; using time_per_update=100 and linear_interpolation=0 should work better (over internet)
- Revised road spline functions to be smoother and fix problems with some corners
- Dials in live track envmap no longer appear (buffer is cleared before painting the envmap so it may be a bit slower)
- Carlswood: steer noise reduced for some surfaces
- Improved quaternion slerp which fixes some 360 degree flips (replays/multiplayer).
- Collision boxes now painted in green.
- Newton 2.07 used (seems to fix some high-speed collision crashes).

v0.8.3 (7-7-09)
-----------------
- Modified sky_daynight*.cg shaders to correctly include 'night' parameter and night texture cloud coverage
- Removed dbg_stats.frame_line option. I never used it.
- Bugfixes in the AABB tree for collisions; the tree was not really optimal.
- Bugfix in splines for looped tracks; there was a problem at start/finish after some optimizations.
- Ctrl-Shift-F didn't always jump forward. Now jumps at least one spline forward.
- Added more possible load in Pacejka player to simulate truck loads for example (30kN).
- Added car.ini engine.idle_throttle to set non-zero throttle for carburator engines when coasting (for idle_method=1).
- Integrated views.ini painting into the scene graph, so interior dials shouldn't disappear anymore
- Added inidiff.exe tool to compare 2 ini files logically (based on the variable tree, not textually)
- Added .shd file shader<x>.layer<y>.alpha_to_coverage option to use alpha-to-coverage. Useful for unblended grass without sorting.
- Added track special.ini's gfx.fog.extinction_factor to set atmosphere fog 'density'. Normally 1, >1=more haze
- Added 'extinctionfactor <v>' script command to manually set the factor.
- Added *.shd shader<x>.tangents setting that determines whether tangents are used. Normally 0 but set this to 1 for bumpmapping for example.
- renderer.use_vbo=1 works again. Slightly faster on my machine.
- Added mirrors.texture.lod_factor (set to ~0.1 for example) to set LOD factor in mirror
- Track spline tangent handling has been slightly modified for just a bit more smoothing
- Added 'lights on' and 'lights off' script commands to turn on/off car lights.
- Added ghost car support; see racer.ini's ghost section and http://www.racer.nl/tutorial/ghost.htm
- Added 'standard_wave*.cg' shaders for waving flags based on texture coordinates.
- Experiments with Newton physics library (you need a specially compiled exe though).
- Tracked modified to offset movable objects using 'offset_dyn' instead of 'offset' (for Newton collisions with dynamics objects)
- Removed data/cars/default/car.ini engine.inertia.final_drive; it's obsolete.
- Added geometry.ini movable flag: add 1024 (Newton only) - also settable in TrackEd
- Added gfx.show_movables_bbox option (Newton only) to show collision shapes of movables.
- DOF reading skips GHDR flags; there were some very old models with bugs in this field.
- Added car.ini body.model_collide for collision 3D model (Newton only)

v0.8.2 (24-04-09)
-----------------
- Bugfix: projected shadows could lead to a crash in certain situations.
- Added envmap.live_track.sides_per_frame to set update count of live envmap
- Car.ini camera<n>.view variables were read, but never used. Removed loading them, they are (and were) obsolete.
- LOD (level of detail) for objects is now adjusted to take into account the camera FOV (normal FOV=50).
- Split fullscreen_shaders directory into LDR and HDR variants (data/renderer/fullscreen_shaders_hdr and _ldr).
- Added car.ini engine.idle_method to avoid throttle being slightly open all the time. See http://www.racer.nl/tutorial/engine.htm
- Now enforcing engine.stall_rpm to be at least 100 rpm less than idle_rpm to enable the new idle_method 1.
- Added engine.braking_torque_curve to specify a curve for the engine braking instead of the linear parameters.
  (the Lambo now uses such a curve for demonstration)
- Modified smoke particles to have no velocity. Also increased the brightness somewhat.
- Bloom map was 16-bit, now 8-bit.
- Added car.ini audio.skid audioset based on skid amount (around 0..2). This allows subtle scrub sounds before
  going to screeching & screaming.
- Added 'gearwhine_off' audioset for gearwhine under deceleration circumstances.
- Fuel consumption was based on engine output torque, added internal friction (engine braking torque) in fuel use calculations.
- Renamed racer.ini variable 'collision.report_car_trk' to 'collision.report_car_track_collision'
- Added car.ini's reboundstop_len and reboundstop_k for much the same as a bumpstop, only to prevent wheels falling through susp<n>.maxlen
  see http://www.racer.nl/tutorial/suspensions.htm#reboundstops
- susp<n>.restlen no longer needs to be smaller than maxlen. It ignored precompression that way.
- Added fuel.rof to overrule the fuel grams/liter parameter. Normally it's around 700 for regular petrol.
- Added views.ini 'invert' field (0/1) which inverts the variable (like 'factor' which multiplies it)
- Nullpoint is now also painted with 'show carpoints'
- DDS file support; but ONLY in .shd files, and ONLY A8R8G8B8,DXT1/3/5 formats, and ONLY 2D textures. Useful for improved mipmapping perhaps.
- Removed skid.wav from default/car.ini, since it interfered with the new method for skid sounds
- Views.ini settings 'orientation', 'min_offset' and 'max_offset' were not described on racer.nl. See http://www.racer.nl/tutorial/dials.htm
- Added 'var=time_of_day' option for views.ini files. Use format=time_of_day to get a string like 00:00 upto 23:59
- Updated Config with a few graphics settings (low/med/high/extreme) to easily select HDR/bloom/motionblur etc.
- Also added 1920x1200 & 2560x1600 resolutions to Config.
- Fixed show_splines=1 and show_car_points which were invisible when bloom was turned on.
- Added standard_bump_v.cg/standard_bump_f.cg to the installation for HDR.
- Optimized a few bits to get slightly better performance. Running Racer with 8 cars is too slow still though.
- Added a sort level for shaders; the major ones are now: opaque, blended+alphafunc, alphafunc. Useful for blended+alphafunc'ed trees.
- Set physics.async to 1. Better for multi-core machines, and who knows it doesn't have too many race conditions (pun not intended).
- Cg 2.2, which supposedly fixes the problems with ATI cards and 'MaxInstrSlots=-1' type of errors.

v0.8.0 (02-04-09)
-----------------
- Bugfix: OpenGL3.0 drivers would crash Racer due to a mistake in getting some extension function pointers.
- Bugfix: track's with special.ini gfx.time below 1000 (10am) were not interpreted correctly.
- Bugfix: turning on projected lights no longer kills some 3D dials
- Heavily modified Cg shaders. Also added a lot more. See http://www.racer.nl/tutorial/gpushader.htm
- Projected lights used alphafunc, which made lights on semi-transparent object pixely.
- Added car.ini's model_reverse_l/r models for true rear lights. This should do away with the views.ini hack to add reverse lights.
- Modified live track envmapping to not do all sides every frame. Lots faster.
- Removed dbg_stats tree in racer.ini (it was obsolete).
- Added 'clouds' script command for Cg-shaded skies, added 'clouds' uniform float parameter for Cg shaders (0..1).
- Also added 'clouds' in a track's special.ini (env.clouds)
- Added resolution.vsync to sync to display frequency or not (0=max fps, 1=sync, >1=set interval)
- Added moving helmet (+pilot body) model option in car.ini. See http://www.racer.nl/tutorial/helmet.htm
- Raised the number of possible flares for each car to 20 (was 10)
- Simple (single-polygon) shadows for car views without a body model are now turned off.
- Removed 'fx.sky_enable' option. The sky is always on.
- Removed 'gfx.reflections' option. Was/is obsolete.
- Added graphics.show_names to be able to indicate driver names floating above cars.
- Added mirrors.texture.fbo setting to render into an offscreen framebuffer object (faster)
- Added mirrors.texture.fbo_samples setting to enable anti-aliasing of the mirror.
- Added HDR rendering basics (renderer.hdr.enable=1). Uses data/renderer/shaders_hdr directory if enabled, shaders_ldr otherwise.
- Added Bloom rendering for HDR mode (renderer.bloom.enable=1).
- Split data/renderer/shaders directory in two: shaders_ldr and shaders_hdr. HDR is the way to go. LDR will be deprecated.
- Added ini.auto_lights setting (0/1) to determine with time-of-day controls a car's light automatically
- Added shader 'reflect' material property for reflective Cg shaders (in the same line as diffuse, ambient, specular etc).
  Use this in conjunction with [dyn_]shader_reflective_v/f.cg for example.
- Added car.shd/track.shd 'motion_blur' variable to turn off motion blur velocity map generation for certain shaders (wheels mostly).
- Added auto-exposure settings for HDR rendering (racer.ini:renderer.auto_exposure.*)
- Added fx.sun.auto_time_of_day to track real current (PC) time for the time of day in Racer
- Added fx.sun.fast_time_factor to set time speed. Normally 0 for no time change, 1 for realtime, >1=faster than realtime
- Added fueltank in cars. See data/cars/default/car.ini (fuel.* settings). Currently in alpha. No fuel means no throttle.
- Added fuel view variables for views.ini files (for cars). See http://www.racer.nl/tutorial/fuel.htm for details.
- Added formatting option for views.ini; 'float_1' displays a value with 1 decimal (for example: 123.4).
- Added 'sample_hold' option for view elements to get slow-updating dials (mostly useful for digital dashboards)
- Added fx.sun.flare option to remove sun flare. It doesn't match with the Cg sun position.

v0.7.3 (27-01-09)
-----------------
- Bugfix: Sun direction for non-Cg shaders was bad.
- Controller setup crashed upon Saving (if more than 2 controllers were defined in data/controls/default.ini).
- Changed 'fast_time' syntax to be a speed modifier. I.e fast_time 5000 does a quick 24h loop (was already like this in v072).
- Removed 'renderer.gpu_shaders' option. Cg is a requirement now.
- Modified Ackerman effect; the factor should always be >0, and probably >1 for realism.
- Modified Lambo's ackerman of wheel1 to 1.2 (was -1.2) to fix turning symmetry.
- Modified brakelight threshold from 0.2 to 0.1 (at 10% braking, the brakelight will turn on)

v0.7.2 (22-01-09)
-----------------
- Flipped car light image projection (while there are still almost no cars with lights). The image was vertically flipped.
- Added 'fog density <x>' script command. Fog beginning to change to general atmosphere functions though.
- Added global shader material properties which are passed to Cg; see http://racer.nl/reference/shadereng.htm#matglobal
- Added an atmosphere to Carlswood. For general info on atmospheres, see http://racer.nl/tutorial/gpushader.htm
- Added Cg shader parameters: lightAmbient, Ka, Kd, Ke, Ks, shininess and a bunch of others, see http://racer.nl/tutorial/gpushader.htm
- Added car.ini projected light 'far' falloff variable (lights.light<n>.far), see http://racer.nl/tutorial/car_lights.htm#projected_lights
- Modified car light Cg shaders to include Some1's coloring (thanks!).
- Tracked: load track now keeps the camera in the same location.
- Added Ctrl-Shift-F key which resets the car, only forward a bit.
- Added lightly animating trees to demonstrate Cg in Carlswood (data/renderer/shaders/animate_test_v.cg).

v0.7.1 (09-01-09)
-----------------
- Bugfix: inboard dials weren't positioned correctly
- In vertex/fragment shaders, 'uniform float time' didn't work anymore
- Added shader<name>.layer<n>.ambient & diffuse material properties for car.shd/track.shd files (wasn't read)
- Modifying time of day; the sun location is now calculated precisely. For now based on the Netherlands, July 15th. North is up onscreen.

v0.7.0 (23-12-08)
-----------------
Mostly the same as v0.6.5, only this version uses Cg shaders
- Added flares to enhance car lights. See http://www.racer.nl/tutorial/car_lights.htm (quite a few parameters)
- Added car projected lights options; see http://www.racer.nl/tutorial/car_lights.htm
- Added track special.ini's gfx.night setting to indicate night tracks (car lights then turn on by default)
- Car lights turn on automatically at rain & night tracks
- Added car.ini:animation.flash_lights to be able to flash all lights (only usable probably for F1-style cars)
- Bugfix: live envmapping was bad; it used an old renderer. Also the rendered area was not 90x90 degrees actually per side (aspects were not 1).
- Bugfix: car LOD system always skipped first LOD
- Bugfix: car model offsetting only worked for the highest LOD
- Bugfix: snow/rain grip only worked on 1 axis instead of 2.
- Added track's special.ini sun.enable to disable sun painting (for dark tracks)
- Added track's special.ini env.thunder to directly set thunder amount
- Added track's special.ini gfx.shadows.intensity_projected to set intensity of projected shadows of cars
- Added drafting/slipstreaming between cars (car.ini:aero.draft.*)
- Moved aero info to Ctrl-2 debug screen
- Added dev.log_last setting to automatically show the last QLOG entries if any errors/warnings occurred at exit (for development of cars/tracks).
- Added animated rain using a curve (special.ini:env.rain_curve=...). The X axis is the time in seconds.
- Curved: added 'normalize' function. The Lambo still had an absolute torque.crv file.
- Curved: added 'scale' function. Always useful.
- Rain/snow environment.*.grip_factor limited to 0..1 to avoid unrealistic modifications.
- Added gfx.show_aero option to visualize aerodynamics (drafting only)
- Added script commands: show aero, hide aero, show carpoints, hide carpoints
- Added engine torque to engine logging group (next to rpm, gear)
- Modeler bugfix; ASE normals weren't modified by TM_ROWx (often wheel models, when exported using ASE and
  imported in Modeler) would have strange lighting problems where the light appeared to rotate along
  with the model. Re-exporting to DOF should fix this (this applies to car modelers then).
- Tracked: added 'track_template.shd' generation for all used materials in a track
- Added 'watchdog.exe' to the installation (useful for the lobbyserver)

v0.6.5 (23-12-08)
-----------------
This version is the last one that comes without Cg shaders. Useful for people with
lower-end graphics cards that want a taste of Racer. See v0.7.0 for the list of changes,
although this version skips on some features (lights for example).

v0.6.4c (25-09-08)
------------------
- Added stats.standings_alpha_scale to make data/images/standings.tga more transparent
- Added fx.fade_alpha_scale to set the max fading amount at the end of a race (0..1, 1=full black,0=fully transparent)
- Made the endings statistics less opaque
- Reversed anti-pitch; it was working as a magnifier instead of pitch damper

v0.6.4 (23-09-08)
-----------------
- Bugfix: locked differentials flooded QLOG with warnings (CalcLockingTorque)
- Bugfix: damper curves didn't work when dbg_car.susp_implicit_integration=1
- Bugfix: skidding sounds only worked in right turns
- Added skid factors to multiplayer protocol; this version is incompatible with older ones!
- Added global Cg shaders for cars & tracks in data/renderer/shaders
- Added racer.ini:renderer.gpu_shaders option for those with crap video cards
- Added a bunch of Cg shaders to improve rendering quality; OpenGL2 cards are more or less required now
- Lambo now uses per-pixel lighting with Cg shaders
- Added wheel spin velocities in the driveline debug screen (Ctrl-8)
- Added dev.note_ini_fallback to get QLOG messages for variables taken from data/cars/default/car.ini
- Removed warning on bottoming out for LUT springs
- Added a 'udpterm.exe' tool for remote live debug messages (in combination with dev.udp_output=<host:port>).
- Improved skidmarks so they don't pop up behind the car but are kept ending underneath the wheels
- Improved handling of clutches with high torques
- Optimized sun detection a bit (doesn't work yet with FBO's though)
- Added a few fullscreen shaders as demonstration (multiply/..., see data/renderer/fullscreen_shaders/)
- Upgraded track envmaps (data/images/track_*.tga) to 256x256 for improved reflection maps (was 128x128)

v0.6.3 (15-08-08)
-----------------
- Bugfix: a multiplayer client sending a chat message repeated forever
- Bugfix: when a multiplayer client arrived in a race, it was stuck in the 'start scene' (can't drive off)
- Bugfix: while blipping, the wrong acc/del mix was taken
- Bugfix: title wasn't shown in menu
- Bugfix: surface dust_color wasn't used for smoke/gravel particles
- Added car.ini's susp<x>.k_curve to define a .crv file for spring force vs deflection. Useful for non-linear springs (but not bumpstops!).
- Added bumpstops; susp<x>.bumpstop_len and susp<x>.bumpstop_k (they are an extra spring)
- Added car.ini's susp<x>.damper_curve to define a .crv file for damper force vs piston velocity. Useful for non-linear dampers.
- Added auto_clutch per car (car.ini:engine.autoclutch=1). Still possible to turn it on always in racer.ini (assist.auto_clutch=1)
- Added dbg_car.max_tan_sa. Default was 0.75, now upped it to 20.0. Has an effect on sliding physics.
- Added LSD type differentials (1-way/1.5-way/2-way) through car.ini's differentials.diff<x>.type=3, preload, power_coeff and coast_coeff.
- Added locked differentials (type=4); this keeps the attached wheel velocities the same
- Sky objects no longer modify the shader implicitly; skies must have a track shader defined (in track.shd). It did more worse than good.
- Better checking for FBO's being possible (for fullscreen shaders)
- Improved smoke a bit, plus gravel particle gravity; smoke may be hard on FPS though (data/renderer/particles.ini).
- Added 2nd skid sound for longitudinal skids (audio.skid.sample2)
- Added audio.hook_incar_to_camera=0 to avoid very loud in-car sounds
- A car with only 'acc' audio now gets a bit more volume when idling (65% instead of 35%)
- Tracked: ambient audio can now be created at the camera or selection position. Also now possible to move them directly.
- Added new icon (thanks to whoever uploaded it on the forum)

v0.6.2 (12-08-08)
-----------------
- Bugfix: replay after end of race now fades back to a normal view (was black).
- Bugfix: acc/del engine audio mix of AI car used player throttle control instead of AI throttle
- Bugfix: autoclutch took over clutch even when clutch pedal was already depressed
- Bugfix: race.ai.performance was set so the 2nd AI car drove only at 50% performance.
- Bugfix: the ini bracket checking gave a false alert when the last line didn't end in a newline.
- Bugfix: traction control now also works for FWD cars; you need the right order of wheels though (0=FL, 1=FR, 2=RL, 3=RR)
- Switching from implicit wheel integration to explicit (a few settings in racer.ini:dbg_car.*); it seems stable and
  doesn't have the problem of suspension forces not matching with load forces, plus the 'damper sucking
  the car to the ground' bug also seems gone with this method.
- Blip/cut throttle is now specified per car; see http://www.racer.nl/reference/carphys.htm#gearshift
  (the appropriate variables were removed from racer.ini)
- Driver name is now taken from racer.ini instead of data/drivers/* (was like that since 0.6.0)
- A car's views.ini now can also accept 'factor_inv' instead of 'factor'; this to ease RPM leds for example
- Modified acc/dec mix to be exactly; accVol=throttle, decVol=1-accVol (brakes affected volume in a weird way)
- Added dbg_car.tustin_tire setting to use experimental tire integrator. Not advised to try. :)
- show_car_points=1 now also shows the CG and the roll centers (including some lines to visualize the 3D)
- Using timing.max_steps now pauses the sim at the end instead of exiting
- Added env.temperature to set air temperature (only used for brake discs)
- Added brake disc temperature tracking (glowing brake discs); see http://www.racer.nl/tutorial/howto_glowing_brakediscs.htm
- Added menu.show_console setting to optionally paint the console in the menu (default is 0)
- Screensaver killing upon starting Racer is a bit faster, so the exe starts a bit faster
- It's now possible to do a QuickRace with 0 laps (non-ending)
- 'Free Driving' now explicitly sets 0 laps and no limit on time.
- Added gearwhine.wav to the distribution for cars that use it.
- Improved detection of shadow loss when the car is flying.

v0.6.1 (01-08-08)
----------------
- Fixed 'too many network adapters' crashes
- Fixed smoke animation in replays
- Set shaders.enable=1 in distribution (accidentally at 0 in the previous release)
- Modified road noise amplitude; v0.6 switched to Simplex noise (not Perlin) and that was faster in frequency
- Added stats.show_wrong_direction setting to be able to turn off the wrong-direction indicator.
- Added stats.max_race_view to limit all the stat views that F1 loops through (not all are useful)
- Added Cg compile errors to QLOG.txt when a shader fails to compile
- Added car engine jitter parameters (see http://www.racer.nl/reference/carphys.htm#enginejitter) to control engine jitter when shifting
- Engine acc/dec mix slightly modified; it was pure throttle application, now accVol=throttle+0.2-brakes (limited to 0..1) (decVol=1-acc)
- Added dbg_car.simple_susp_live_rate_slope; when implicitly integrating the wheel position, the suspension rate slope was calculated incorrected.
  Set to 1 for backwards compatible suspension physics, 0 for more realistic damping (used only when dbg_car.susp_implicit_integration=1)
- Added dbg_car.damp_vertical_velocity_reversal. Set to 1 for dampening wheel velocity reversal (sign change).
  Perhaps more stable with hard dampers. Default=0 for backwards compatibility.
- Improved error messages when ini files have mismatching brackets ({ and }) (detection, line numbers)
- Track special.ini's gfx.clear_color has been made obsolete. It will always be 1 (no speed increase detected)
- Racer.ini had timing.slomo set to 10. Now set to 0 to give more fps.

v0.6.0 (17-7-08)
----------------
- Modified engine sound mix; now, it's always a mix between acc/dec sounds. This does mean that the sound
  is always loud unless you downmix the decelerate_* audio trees in car.ini. The mix is based
  on engine output (more 'acc' sound if the engine torque reaches its max_torque)
- The engine scales its internal lookup-table to get a valid 'maxTorque' reading in debug output Ctrl-8
  (needed this for the audio mix above).
- LOD for tracks didn't work. It now does, only LOD definition has changed somehwat; lod_out has disappeared (!).
  To improve Swiss-Stroll for example, search & replace lod_out with lod0_z (gives about 20% fps increase here).
  Check http://www.racer.nl/tutorial/lod.htm for the latest definition.
- renderer.min_detail and max_detail set to 1.0. It was 0.3..3.0, which normally made visibility increase by 3x.
- Sky objects could be flipping on & off due to the wrong far-plane culling being used. Now, sky objects
  are NOT culled at all (so more expensive and non-optimal but it seems ok).
- quickstart=1 works again
- The fader was always painted; fps should be a bit higher now.
- Scenegraph animation was a bit optimized. FPS increase is hard to notice though.
- ODE has always been compiled with asserts, ouch. Didn't seem to make a different in fps though.
- Defaults for racer.ini's renderer.max_detail and min_detail were 2 and 0.1, now both 1.0
- Added a flywheel special effect to the engine sound; upon shifts, some jitter is added to the engine frequency.
- Start lights image could appear offset when quickstart=1
- Added 3D lights support for start sequence; see http://www.racer.nl/tutorial/newtrack.htm#startlights for details.
- Special.ini's gfx.fog.mode was never read. Fog always used GL_EXP fog.
- Projected shadow is now off for the focus car if no car model is shown (model=2 in car.ini)
- Added mirrors.simple.x/y to be able to place the mirror
- Added min/max FPS tracking (in the profile debug view, Ctrl-6). Is reset when toggling FPS on/off (Ctrl-F).
- Added menu.wait to potentially make the menu a bit more CPU friendly
- Current car's engine sounds are 2D when inside the car, 3D when outside (track view for example)
- Added mirrors.texture.offset and texture.angle to be able to modify the mirror direction.
- Added stats.flag_pos for the racing flag position
- Fog was modified to NOT use the GL_NV_fog_distance OpenGL extension; funny fog on very large polygons could occur (inverted).
- Bugfix in Modeler when exporting WRL's when the original did not have a texture assigned to a material.
- Added support for fullscreen Cg shaders (see http://www.racer.nl/tutorial/howto_fullscreen_shaders.htm) like sepia, bloom etc.
- Fullscreen (FBO) shaders support anti-aliasing on cards that have extension GL_EXT_frame_blit (nVidia 8xxx series and up) through
  racer.ini's renderer.motion_blur.samples (set to 1/2/4/8/16 samples for example, depending on your card's maximum AA)
- Added 'motionblur method <n>' and 'motionblur blur_alpha <f>' commands (see http://www.racer.nl/reference/scripting.htm).
- Multiplayer car requests are handled very differently from previous versions. This was targeted at LAN games, not sure how it'll work on the internet.
- Known problems: turning on motion_blur method 4 gives funny projected car shadows (no stencil buffer yet)

v0.5.7 (8-3-08)
----------------
- Bugfix: gearbox could go out of sync
- Bugfix: clutching back up after a shift was buggy
- Bugfix: mirror rendering was visible in the lower lefthand corner (not cleared correctly)
- Car and track directories with spaces are now automatically renamed to use underscores
- Lobby improved; now sends Racer version and checks if a player can actually host a game (!)
- Multiplayer improved; should be less jerky (set linear_interpolation to 0 again!)
- You can now use shift up/down again when the gearbox is in automatic

v0.5.5
------
- Added a multiplayer lobby. It's a start, just useful for honest players. lobby.racer.nl hosts a server
  but you can run your own (lobbyserver.exe). Featuring nicknames, hosting, joining races.
  Not sure how multiplayer works on the internet currently. LAN races still require multiplayer.* settings
  to be set manually (linear_interpolation=1, time_per_update=10) if you run a local lobbyserver.
- Removed gfx.fade_to_black option. It always fades.
- Revised networking code to identify cars better. There were problems of the wrong cars getting updated in multiplayer.
- Bugfix: ESC in pause now works again
- Bugfix: dials were often disappearing or enlarged
- Bugfix: 'reload car' now works a bit better and doesn't crash after a lap
- Bugfix: racetime was limited by default (max_time_race)
- Bugfix: some files were missing (trackstub.tga...)

v0.5.4.4
--------
- Bugfix: autoclutch movement when shifting; no longer slams the clutch in and out when shifting
- Bugfix: shift sounds are now in 3D, no longer in 2D (volume was always the same)
- Bugfix: chatting should now work from every multiplayer machine
- Bugfix: music defined only for the menu doesn't play anymore during the race (if no music defined)

v0.5.4.3
--------
- Disabled Black Box generation when models can't be loaded
- Fixed fullscreen crashes on Mac
- Mac version sets textures.compression=0 by default (Intel gfx drivers issues)
- Kingpin support, much like caster. To be documented.
- Fixed disappearing time comparison view

v0.5.4 beta2 (Mac)
------------------
- Added snow (enter 'snow 0.7' for example in the console). Snow is set per-track with special.ini:env.snow=0.7 for example.
- Bugfix: the sun wasn't working anymore. Fixed that.
- Sun blending mode change (much more intense).
- Added per-track sun intensity (special.ini:gfx.sun.intensity), default=1.0
- TrackEd now outputs a 'track.shd' file when splitting for shader generation convenience. Also it did not optimize the output DOFs yet!
- TrackEd's Cut Multisub ASE has been improved for double material/geomname situations (objects could disappear during cutting)
- TrackEd's Cut Multisub ASE now saves the smaller ASE files directly in data/tracks/<trackname>/ase for ease of converting.

v0.5.4 beta1 (Linux)
--------------------
- Removed rain enable setting (racer.ini); rain is always enabled
- Curved: Modified to allow for easier support of negative values (0-axis is drawn)
- Added controls.max_start_throttle to reduce max throttle at the start
- Added indicator_left, indicator_right and hazard_lights controls
- Added indicator_left, indicator_right as view variables
- Added flash_duration to views for flashing elements like indicator lights (no 3d equivalent yet)
- Added indicator audio for cars (audio.indicator.sample) which is activated by indicator_left/right/hazard_lights

v0.5.3 beta8
------------
- Security fix: fixed an overflow opportunity in the console.
- Bugfix: Menu still had blue tones in it
- Bugfix: Pacejka's a12 values were never read.
- Automatically detects ATI cards to turn off certain functionality.
- 'X' was mistakingly used to enter console commands; took that out.
- Added: 'wasapi' (Vista audio) and 'openal' sound drivers for audio.type
- Added speakermode to audio section to set modes such as 5.1 audio.
- Added basic support for Cg vertex & fragment shaders in Racer shader
- Development option: audio.distortion, if set to a value >0, adds distortion to all sounds.
- FMOD version updated to v4.08.05 (supposedly better on Vista).
- Added per-track rain setting (special.ini:env.rain from 0 to 1)
- Added rain sample set (in racer.ini:audio) for rain sound
- Added thunder samples
- Added spray particle system for the rear wheels
- Added 'dof_fix' utility to be able to get rid of 'old ZModeler export' warnings.
- Added 'ini' utility to modify ini files (from batch files for example)
- Spaces in car directories are no longer allowed (to avoid problems with AI for example)
- Spaces in track directories are also no longer allowed
- Added racer.ini:replay.enable to disable replay saving. Replay buffer wrapping in long races leads to slowdown.
- racer.ini:assist.time_allowed_nowheel works again (you may want a smaller time here than in time_allowed_offroad)
- Support for 6-wheel cars is back (first it didn't calculate the wheelbase, resulting in NaNs)
- Support for default AI lines (ai/default.ini); see http://www.racer.nl/tutorial/newtrack.htm#default_ai

v0.5.3 beta6/7
--------------
- Network (multiplayer) reworked a lot. Using ENet as an intermediate network library now (meaning reliable packet sending should work)
- Bugfix: ini file reads could result in extra information at the end for CR+LF formatted files.
- Bugfix: if a remote client connected before the local client (a multiplayer master is both client & server) cars wouldn't update properly
- Tracked bugfix: material index was one off in the ASE Multi/sub cutter (!)
- Tracked: when using 'Cut Multisub ASE', any resulting texture tiling/offsets weren't used.
- Tracked: Convert ASE->DOF improved (could take a LONG time); optimization is also optional now.
- Tracked: ASE importer had a bug for some split ASE files with lots of vertices but few faces.
- Tracked: added some keys/functions in Spline mode to facilitate editing splines a bit better.
- Bugfix: Ackerman wasn't applied correctly to the steering wheels (effectively operated only on 1 wheel).
- Added shader's mipmap_min_lod and mipmap_max_lod parameters again. Used to crash on ATI cards, not on nVidia. Does it work now?
- Added shader mipmap_lod_bias variable to modify mipmap behavior.
- Added resolution.no_border option to get rid of borders in non-fullscreen windows
- Added 'global' setting for freeshifting in data/controls/default.ini
- Added 'dbg_car.susp_implicit_integration' to racer.ini. 1 is the old Racer behavior, although it generates weight bugs (Ctrl-9)! Wheels get more spikey when this is 0.
- Changed spline painting colors from yellow to red and thick green for start/finish
- Added data/locale/racer_english.txt as a 'backup' language for untranslated texts in other locale files
- Added Dutch locale (racer_dutch.txt)
- Some extra locale texts (ai.learn_on etc)
- Removed wav/mp3 load failure message when menu AVI was used (without accompanying sound file)
- Stub image (when no image can be found) is now a little more colorful (red/blue)
- Added racer.ini:textures.compression (defaults to 1) to enable app-wide support for texture compression
- Added shader 'compression' key (globally and per layer!) to be able to disable compression for certain textures (skies!)
- See http://www.racer.nl/tutorial/gfxtweak.htm#texcompression for texture compression details.
- Some texture map loading changes; images without alpha will be stored as GL_RGB instead of GL_RGBA (might help performance)
- Views (for cars) are no longer loaded sequentially; instead of going through the list, now they're properly referenced as views.view0, views.view1 etc.
- Same for view elements; now referenced using views.view<n>.elt<m> instead of iterating. This should not make a difference normally for car views, except when the views.ini is not correct.
- Removed 2 second pause when starting 'Race' (this is needed for slave computers, but was even used no slaves were connected)
- Improved ini file reading speed for slightly faster startup and loading cars etc.
- Improved readability of debug info (^1-^9; shadow added)
- Fixed location of some object in non-800x600 resolutions; start lights, console text.
- Revived motion blur; it seems to start to work with at least my DuoCore/nVidia7950 machine (renderer.motion_blur.passes).
- Optimized particle drawing if no particles are visible
- Added 'trackmap save' command to save the live environment trackmap. For non-live trackmaps.
- Smoke image from Some1 included (thanks!)
- Fixed brakes flickering when ABS kicks in
- No crashes anymore when body.dof isn't found (seen a lot with Mustang2005GT; perhaps updates were installed?); a dark cube of 1x1x1m is created instead
- Added car.ini wheel<x>.reverse_steering option to allow reverse steering
- (beta6 fix) mirror was using compression so it was slow, and ATI drivers even crashed or were mangled at best
- Screenshots now use TGA again.
- Added 'debug <n>' script command to control debug info through scripting.
- Added 'format=<f>' to car's views.ini digital view elements. Format can be 'simple', 'time' or 'relative_time'. See www.racer.nl/tutorial/newcar.htm#views
- Added 'volume <x>' script command to set the master volume.
- Added sideload control (future motorbike simulation)
- Added aero.body.cz (and cy) for generic body downforce generation (only drag was supported) (car.ini)
- Added car.ini engine.braking_offset (next to engine.braking_coeff) for a more detailed engine braking torque line.

v0.5.3 beta5
------------
- Bugfix: texture caching didn't work for shaders
- Bugfix: data/cars/default seemed to be missing from the installation
- Bugfix: fog works again
- Timing no longer using QueryPerformanceCounter() to avoid trouble (slowdown/skipping) on dual-core machines
- Added ellipsoid drawing for racer.ini's gfx.show_car_bbox
- Added car.ini body.box_offset to move collision box around
- Added process.cpu_affinity_mask to limit Racer to run on only certain processors
- Support for compressed textures; default is to use compressed textures (not used for fonts and some others).
- Fixed rendering order issues with smoke & transparent car materials
- Started particle definitions through data/renderer/particles.ini (not complete yet)
- Smoke particles are white again (different blend mode)
- Added mirror update rate (mirrors.texture.update_rate) and visibility (mirrors.texture.visibility)
- F4 now loops through mirror OFF/Texture/Full instead of just on and off
- Omitting default/car.ini is no longer allowed; it would lead to subtly modified car behavior
- dbg_car.warp_rotated was deprecated
- Added collision.report_car_trk option to report when car-track collisions take place (in the console)
- Added warning for cars that still use body.restitution_coeff in their car.ini
- Improved shadow hiding; when flying high, the simple shadow could flicker on and off
- Added resolution.x/y parameters to position non-fullscreen window
- Framerate throttling details can now be set with renderer.min_detail/max_detail
- Switching realtime speed (i.e. 'realtime 2') no corrects timing to avoid stalls/catchups
- Bugreports (crashes) now add the latest QLOG entries to the report

v0.5.3 beta4.0
--------------
- Bugfix: replay crashed when first smoke particle was fired
- Slightly improved Modeler's ASE import function to handle multi/sub materials just 1 level deep
- Added graphics.use_track_loading_image option to turn on/off track-specific loading.jpg loading.
- Model offset works again

v0.5.3 beta3.0
--------------
- Bugfix: screendumps saved JPEGs only with .tga extension (now .jpg)
- Bugfix: loading.jpg wasn't found in track directory.
- buildar: added */? pattern matching (buildar data.ar *.dof) and always stores lowercase names.
- Added buildar.exe to the distribution
- Added pacenote implementation (see script command on the website)
- Added global view that is always displayed (for static logos); data/gui/globalviews.ini
- Added throttle off sound; is played once throttle goes from >0.2 to <0.2
  and RPM>5500 (currently hardcoded)
- Added race.auto_return_time for automatic resets to start (rally stages)
- Added surface skidmark=0 option to avoid skidmarks being generated on some surfaces
- TrackEd: added spline order moving to move around the start/finish line
- TrackEd: added camera fly mode (use cursor fwd/bwd and mouse to fly around)

v0.5.3 beta2.1
--------------

Known bugs:
- Car displaying in car selection screen is still a bit simple compared to before (due to the scenegraph)
- Haven't tested the car generic models with the scenegraph; they may be
  temporarily unusable.
- Stenciled shadow separated drawing is temporarily not available
  due to the new scenegraph changes.

Changes:
- Added a scenegraph; a big structural change but a cleaner approach.
- Texturemaps are longer searched for transparent pixels; this may mean
  that some shaders need to be added, but it's faster and more efficient this way.
- Tracked: added track object splitter, which cuts DOF files through a grid by material.
  For some tracks this can make rendering MUCH faster (seen 400% improvements on Kyalami
  taking something like 400m x 400m grids).
- Tracked/Modeler: improved model optimize for vertex cache ordering (unfortunately to use
  this it means having to reoptimize all models out there).
- Improved simple shadow polygon vertex generation
- Bugfix: Tracked buffer overrun in F4 mode (object properties)
- Bugfix: wheel blur models appeared in car selection
- PacPlayer: added wheel index selector
- Removed a bunch of superfluous log messages at program exit.
- Added (yet unused code) potential hitting of movable objects; not optimized yet.
  This will require a major restructure.
- Renderer is faster most of times, though it now mostly requires shaders instead
  of taking the safest route to get the looks right.
- renderer.desired_fps added for automatic detail adjustment; works best on tracks
  which have a lot of objects; tracks like Swiss Stroll will exhibit more flickering
  of large objects (lots of trees). Tracks like Kyalami work better with detail
  reduction though if you use unsplit (see TrackEd) tracks.
- Added shader sort_offset (in *.shd files) to fine-tune shader sorting (range -99..+99).
  Useful for large fences for example which have sorting problems.
- Added view3 in a car's views.ini that is used for trackcam views (falls back to view0 if not defined)
- Expanded 'graph' console command with derivative and extra signals (see website).

v0.5.3 beta2.0
--------------
- Audio setup wasn't read from racer.ini but hardcoded (FMOD4). Fixed.
- Fixed fx.fog=0 bug that made tracks black/dark. Moved to renderer.fog as well.
- Surface types are now read 'through' splines, so splines are no longer only the first (road) type!
- Multiplayer sends through brakelights (starting at about 20% to avoid flickering)
- Multiplayer LAN play improved (collisions, timing)
- Lap indicator added
- Added dbg_car.max_tire_penetration to avoid bouncy cars when rolling over
- Pacecar improvements (a bunch)
- 2-car race summary view (instead of the fullscreen one); press F1 a couple of times
- racer.ini:stats.race_view setting to select initial race summary.
- LOD sensitivity varies with camera zoom (based on FOV=50).
- Added car.ini:engine.enable_stall (default 1)
- Added script 'spline move <y>' to vertically move the current spline (live editing)
- Added script command 'spline save' to save the splines (actually it turns out not to be really useful)
- First timeline of track fixed hard to first spline. This probably WILL affect
  tracks. AI might wiggle, in which case you need to shift all splines or
  move the grid positions (easier).
- Added shifting into N/R even in automatic gearbox.
- Implemented traction_control.min_velocity (wasn't used before) to disable TC at low (world) speed
- Added gearwhine (again) to the audio section.
- Added ABS braking factor, which multiplies braking signal (car.ini:abs.braking_factor). Normally 1.
  Added because ABS allows for harder braking.
- Improved AI (lateral behavior during passing); fixes nervous behavior close to other cars
- Improved AI; removed target spring and some unneeded interpolation. KISS.
- Added AI performance array in racer.ini:race.ai.performance (i.e. '1.0 0.9 0.95 1.0 0.95').
- Added 'ai performance <x>' script command to modify AI performance live
- Added 'ai on' and 'ai off' script commands
- Added support for generic models (see www.racer.nl/tutorial/generic_models.htm)
- New page on faking motorbikes a bit (www.racer.nl/tutorial/motorbikes.htm)

v0.5.3 beta1.6
--------------
- Bugfix: Fixed some small bugs (crash while skidmarks is disabled etc)
- Bugfix: Track audio volumes were broken
- Bugfix: no doppler effect while in car camera view
- Track selection screen listbox slider works again and is visible
- Spinning wheels while standing still now gives skid sound
- Optimized for Pentium4
- TGA loader reworked; is theoretically a bit faster
- Added shader layer<x>.mipmap_minlod and mipmap_maxlod to be able
  to make a mipmap range. Useful for road shaders where mipmapping
  quickly makes things blurry; set mipmap_maxlod to 3.5 for example
  (1000=all levels, 0=only 1st high resolution level)
- Fixed the new camera system a bit so in case of no trackcam,
  it switches to the last car camera. See Carlswood for an example.
- A cunning test to get wheels to stay off the ground polygons a little. ;-)
- TrackEd v3.0 with alpha functionality for new camera system
  (add/remove camera doesn't work for one)

v0.5.3 beta1.5
--------------
- Sound is software again; too many problems reported with hardware sounds
- Auto-reset is turned off by default
- Auto-reset won't reset unnecessarily anymore on unsplined tracks
- New camera system which uses keyframes. If you're using this system, ALL
  cameras in a track must use the system, as it's not compatible with the old trackcam system.
  The new camera system only works with splined tracks.
- Added viscosity to the surface definitions. For gravel-type surfaces (use values ~0..1 in special.ini)
- Re-installed checking for transparency to automatically make materials transparent
  if no explicit shader is defined.
- Blurred wheels work in replays

v0.5.3 beta1.4
--------------
- Added pacecar.min_distance_time for subtler braking
- FMOD update to 4.0 (FMOD Ex); now using hardware 3D voices again (hm)

v0.5.3 beta1.3
--------------
- Bugfix: sound is back in replays
- Bugfix: memory leaks in car selection screen
- Bugfix: multiview slave FOV offset for funny aspects were off
- Bugfix: multiplayer+multiview slaves issues
- Car selection screen is a bit lighter
- Console can now be painted even if sent to UDP (console.paint=1)
- Added menu background movie support (no audio); see menu.*
- Revived controller setup screen
- Added initial car camera if initial camera mode=0 (carcams); camera.initial_car_camera
- Auto soft reset for offroad conditions (assist.time_allowed_offroad)

v0.5.3 beta1.2
--------------
- Bugfix: Timeline comparisons could go wrong when laptime differences were large.
- Bugfix: No longer a need to specify a track's road_noise_threshold; if absent, 0 is assumed
- Bugfix: Wheel blur models now also work in reverse
- Bugfix: replay movie generation didn't update car position.
- Bugfix: Racer crashes when renderer.use_vbo was set to 1 but the gfx card didn't support it.
- Bugfix: No shift_miss played on hard crashes anymore (this actually had to do
  with the driveline getting velocity mismatched for engine vs rest of the driveline).
- Bugfix: engine would stall when holding clutch depressed and shifting.
- Bugfix: fast AI automatic gearboxes would lead to shortshifting a lot.
  Added a minimum 300ms time delay between each up- and downshift.
- Bugfix: Tracked's preview trackcam function works again.
- Autoclutching has been refined a bit so that controller override is a bit better.
- Added on/off script commands for traction control (tc), abs and asl. I.e. 'abs on' or 'abs off'.
- The clutch has been reversed (again); it now acts more like the throttle
  and brake pedals. Clutch=0 means pedal unpressed, clutch=1 means fully depressed.
- Clutch is depressed in the start sequence (you can't drive off)
- race.quickstart=1 turns off the start lights sequence (hurrah! ;-) )
- Console output can now be logged (racer.ini:console.logfile=<file> generates data/dump/<file>)
- Revised controller engine entirely; instead of the control sets (data/ctrlsets/*), now
  data/controls/*.ini files are used to define controllers and the controls they perform.
  This was necessary because of the high number of proprietary controllers (motion/FF wheels).
  See data/controls/default.ini for an example.
- Changed the hardcoded 'c' key into a control function; use change_camera in data/controls/* to
  define a control to switch views.
- Added manual/automatic gear selection (racer.ini:assist.auto_shift=1 for always automatic)
- Added shift in/shift out sounds (car.ini:audio.shiftin.sample and shiftout.sample)
- Added a HTML ReadMe file to the installation.
- Added fast shifts (car.ini: gearbox.shifting.fast) to avoid waiting for shift-up control
  to be released while shifting (keeping the gearbox in neutral while depressed).
  Useful for racecars which shift very fast.
- Added horn sound (car.ini:audio.horn.sample)
- Added master volume of all audio (racer.ini:audio.mastervolume)
- Most texts are now taken from a language file (data/locale/racer_english.txt) for easy translation
- Tracked: modified movements; left mouse button=move around, SHIFT=pick/draw, CTRL=move fast

v0.5.2 beta9.0
--------------
- Improved skidmark system; had problems when skidmarks were all used
- Suspension stability tweaks; suspension functions could leave cars
  bouncing more than they should at standstill. Things may feel a
  little different.
- Improved LAN multiplayer collisions (LAN only though; lots of bandwidth!)
  The improvement is considerable, however probably internet play may
  be impossible due to increased bandwidth during collisions.
- OpenGL error in renderer fixed (stack underflow when using proj. shadows)
- Some multiview bugs fixed (multiplayer cars not visible on multiview slaves)
- Multiple wheel gfx models (5) supported for varying speeds; use wheel<x>.model2
  upto wheel<x>.model5 to specify other wheel models. wheel<x>.model<n>.velocity
  then determines the velocity (radians/second) at which this model starts
  being used. Notice the models must be in order from slow to fast.
- Car camera switching during trackcam viewing is now optional. Use
  camera.use_carcam_while_trackcam (set to 1 to allow carcam switching)

v0.5.2 beta8.9
--------------
- Fixed jittering of wheels while being steered in replays.
- Fixed skid sounds in replays; they were on when just braking.
- Got rid of a DLL which took a couple of seconds at startup time.
- Slight improvements in AI opponent detection (left/right/front)
- AI braking for slower cars in front improved
- Steering wheel 'xa' angle works again
- Replays are now backwards compatibile with 1.1 (052b88)
- Replays also store current gear; incompatible with 052b88.
  (not enough time passed so I'll stick with replay format 2.1)
- Replays now deduce the speedometer position (from gear & car velocity).
- Steering wheel now interpolates in replays; was a bit jerky
- Shadow intensities definable per car; car.shadow.intensity_light and intensity_dark (0..1)
  This is used with projected shadows to get the shadow intensity inside and outside
  the projected shadow. See also www.racer.nl/reference/carphys.htm#miscgfx
  The projected shadow's opacity is defined in graphics.shadow.intensity (default 0.3).
- Perlin noise thresholds definable in special.ini (road_noise_threshold=<v1> <v2>...)
  This indicates the minimal amplitude needed before the bump gets activated.
- Fixed crash at exit when track used LOD models.
- Named timelines; for example timeline.line1.name=Eau Rouge
- Bugfix: persistent skidmarks were only saved for Carrera

v0.5.2 beta8.8
--------------
- Fixed texture detach error in QLOG (splash screen related)
- Skidmark image is now used; data/images/skidmark.tga (NOT skidmark.bmp anymore!)
- Skidmarks are persistent; they survive multiple races.
- Default projected shadow is now the body model if none is explicitly defined.
- Smoke in replays is back.
- Replays also record brakelights and skid amount.
- Replays are incompatible with older versions (!) due to skidmarks etc.
- Shadow improvements; the single poly shadow is culled so might not appear
  anymore on hills where it used to when viewing from low camera angles.
- The single poly shadow will be clipped by the projected shadow, so it
  only appears visible where the projected shadow is as well. This does
  mean the shadow model should be available, or it looks quite ugly.
- The single poly shadow plane is calculated according to the splines,
  not the polygon intersections anymore (a little more accurate, perhaps
  making it disappear a bit more though).
- Camera movement keys have been inverted to feel as moving the cameraman.
- New camera movement keys; Ctrl-4/6/2/8 move the camera offset.

v0.5.2 beta8.7
--------------
- Added scripts (data/scripts). onrace.rex and oncar.rex are currently run
  at the start of each race, and as every car is loaded.
- Added telemetry graphing; console 'graph step -1 1 wheel0.road_noise' for example.
- Added Perlin road noise; fractal like road noise. A track's special.ini's
  surface now also know about 'road_noise_frequency' and 'road_noise_amplitude'
  for a maximum of 4 octaves of Perlin noise.
- Added 'echo' console command.
- Fixed trackcam bug in replay; they weren't switching.
- Added 'run' console command; runs the script data/scripts/<name>.rex
- Added 'graph clear' console command.
- AI velocity calculations are more gradual now. Used to jerk a bit.
- Improvements on the Spoon's car shadow
- Removed some pipe checking (which gave some errors)

v0.5.2 beta8.6
--------------
- Fixed replay profile bug, which prevented replays from running.
- Fixed Carlswood treelines render problems, thanks to Alfanut.
- Bugfix: the A key used to increase car camera FOV.
- Keypad + and - change car camera FOV. Notice the change in sense of speed.
- Bugfix attempt: font errors on older Windows version (Win95) in TrackEd.
- Mirror is now always updated, even if the F4 mirror is not enabled, since
  the mirror may be used in car models.
- Screen clears no longer happen by default; the track's special.ini file
  must include gfx.clear_color=1 when the sky is transparent or appears funny.
- car.ini addition: ai.grip_factor (normally 1.0)
- Bugfix: car selection screen now only shows highest LOD model.

v0.5.2 beta8.5
--------------
- Detection of running Racer twice. It won't run twice now.
- Multiview slaves now also connect & run if the master is already running.
- Autojoin slaves now also connect & run if the master is already running.
- Automatic slave machines startup when master starts (through Spawner).
- Spectator view now gets car & track sent through
- Aspect ratio setting for non-4:3 displays (Mac mostly)
- gfx.ini and debug.ini are now incorporated in racer.ini; they're now obsolete.
- Commandline arg: -f <file> selects racer.ini file to use.

v0.5.2 beta8.2
--------------
- Minimap keying is now done a little better (gray background on minimaps)
- AI improvements
- Listserver basic support (multiplayer)
- Bugfix: car.ini:steering.linearity had an implicit effect on the wheel lock
- Added realtime scaling (both slowmotion and fastmotion). See debug.ini:timing
- Added gfx.ini:shader.enable test setting
- Added gfx.ini:texture.enable test setting
- Pacecar braking is more subtle
- ABS is always enabled for AI
- Fixed a number of memory leaks (some very big ones); memory management overhaul
- Turning off the texture mirror (F4) now also improves rendering speed
- Improved projected shadows to work decently with the shader system

v0.5.2 beta7.9
--------------
- Fixed bug with tracks without surfaces

v0.5.2 beta7.8
--------------
- Bugfix: wheel lock left too much steering capability
- Bugfix: director camera audio origin was always at world center
- Added surface 'skid_sound' option for surface (special.ini) to turn off skid sounds
  for certain surfaces. See http://www.racer.nl/tracked.htm
- Added surface 'dust_color' implementation for colored smoke.
- AI recording (Ctrl-F6) now displays the AI lines as they're being recorded,
  so it's easier to spot if AI recording goes wrong.
- All audio is now done in software; with boards (SBLive?) that had only so many
  channels, any sounds played beyond that would all be on a single channel.
  Had problems with the Lamborghini decelerate sounds on an Intel AC97 internal soundchip.
- Added racer.ini:audio.voices (defaults to 32) to set the max. number of samples played.
  Note that Racer uses a LOT of samples, but few of them are actually mixed at one time,
  so I just leave this at 128 for example.
- Slightly modified volume determination of engine (overall more volume)
- Bugfix: mirror sometimes turned black (lighting was on for that polygon)
- Added global emissive light for tracks. This is an emissive light that adds to ALL
  shaders. Per track, in special.ini:gfx.sun.global (i.e. gfx.sun.global=0.3 0.3 0.3 1).
  This can be used to lighten up cars on a track if the weather is sunny for example.
- Mirror texture, if not used, is now gray instead of hard-red

v0.5.2 beta7.7
--------------
- Added 'analyse dampers' console command that gives an overview of damper forces
  at some velocities (0.1 upto 0.5 m/s). To verify damper forces with actual data.
- Bugfix: AI steering improved a lot (was based on steering lock rather than wheel lock)
- Bugfix: shifting could shift from R to 1st or 1st to R in one step.
- Bugfix: steering ratio was half of what it should have been.
- Added car.ini AI fields; ai.understeer_correct and ai.oversteer_correct. Magic
  factors (around 30?) to add oversteer/understeer corrections to steering. Larger
  numbers mean less impact. Lots of magic and it's more of a try.
- AI cars now always use traction control
- Modified first line of log file for Miran's replay analyzer (some fields)

v0.5.2 beta7.6
--------------
- Fatal error messages will show a messagebox (multiplayer join errors and such) on Windows
- Fixed minimap transparency, minimap car offsets on non-800x600 view.
- Fixed console UDP output; no console painted anymore if console UDP is active.
- Steering ratio is now deduced from the steering wheel and wheel lock. FF will be affected!
- Track selection preview.tga files can now use alpha channel (transparency).

v0.5.2 beta7.5
--------------
- AI improvements; no longer blind but wary of other cars
  (problems with steering though, work in progress)
- Mouse preset showed flickery in the control setup screen
- Added initial camera mode (debug.ini:camera.initial_mode)
- Added camera mode; director (next to track/car/heli).
- Throttle blipping during downshifts (racer.ini:controls.blip_throttle=1)
- Separate upshift/downshift can be specified in car.ini to allow to tune throttle blips.
  Set car.ini:engine.shifting.time_to_declutch_down, time_in_neutral_down and
  time_to_clutch_down (defaulting to the standard shift times specified in time_to_declutch,
  time_in_neutral and time_to_clutch).
- Fixed bug when using texture quality reduction; could crash while resizing.
- Fixed minimap bug which appeared too far right on some tracks
- Minimap hides when no splines are defined.
- Added z-buffer, alpha and stencil bit depths to gfx.ini. Default is not to use
  alpha bits (was 8 before).
- Added bump/rebound damper functions for more damper behavior variation; see:
  http://www.racer.nl/reference/carphys.htm#suspdamper
- Added camber change wrt suspension deflection, see (for all suspension geometry effects):
  http://www.racer.nl/reference/carphys.htm#suspgeometry
- Added camber change wrt steering
- Added bump steer (toe change wrt steering)
- Cleaned up some QLOG warnings, assumes tracks with no id are for v0.4.9 for example.
- The ^9 debug screen now also shows dynamic RC heights for front and rear.

v0.5.2 beta7.4
--------------
- Fixed controller setup for non-800x600 resolutions
- Fixed nasty bug with revlimiter; could be on.

v0.5.2 beta7.3
--------------
- Minimap added, see racer.ini:minimap, use F6 to toggle
- Network layer renewed, no more 2 player limit (but no time correction or collisions)
  (incompatible with older betas)
- Revlimiter added, debug.ini:car.rev_limit_time and car.ini:engine.max_rpm
- Controller setup screen is now working and replacing the control set files.

v0.5.2 beta5.4
--------------
- Initial FPS displaying can be controlled in racer.ini:stats.fps
- Console enabling/disabling through racer.ini:console.enable
- Console UDP output support (console.host/port)

v0.5.2 beta5.3
--------------
- AI shifted poorly if controls.cut_throttle was set to 1.
- Race timing added; speed traps, best-time comparisons
  (F1 to walk through the modes)
- A bit more compatibility with older tracks for skies.
- Hiding of cursor (fullscreen mode) is now optional; see racer.ini's graphics.hide_cursor

v0.5.2 beta5.2
---------------
- Small LOD fix; LOD objects could disappear for a small moment due to slightly
  different geometric centers (flickering).
- Spectator view: if racer.ini's multiplayer.audience is 1,
  no car will be loaded (only the remote cars will be shown).
- Wrap variables added to shader layers to help rid the extra lines
  at the top of treelines for example (see site:ref/shadereng.htm).
- Added $mirror texturemap which contains live rendered mirror view. See gfx.ini's
  mirror.texture settings. Use $mirror in shaders.
- Renderer can now handle 10,000 objects visible at the same time (Z-sorting). Was 1,000.
- Quickrace #ai cars now works at once.
- Models stored in .ar files didn't correctly find/load shaders.
- Traction control now also works in reverse gear.
- Brake 3D models are no longer inverted vertically.
- If "loading.jpg" exists in the track directory, that image will be used for loading.
- Splash screen (see racer.ini:splash and data/images/splash.jpg)
- Some race support; start lights, flagging after a number of laps.
- Cursor is turned off in fullscreen mode

v0.5.2 beta5
------------
- Renderer now uses Z-sorting for transparent geobs. Big geobs may still
  render incorrectly (models with lots of trees for example) as no sorting
  per polygon is nor will be implemented for performance reasons.
- Added traction control (see www.racer.nl/reference/carphys.htm)
- Added engine mapping; non-linear throttle for low gears
- Steering linearity modifiable per car (steer.linearity)
- Linearity can be inverted; using a value>1 actually exaggerates
  the responsiveness (for controls, steering, throttle etc).
- Automatic damping parameters for relaxation length (damp_predict_lat/long)
  should deal with excessive bouncing back of cars.
- LOD support for tracks & cars; see www.racer.nl/tutorial/lod.htm
- Audio simplified a bit; engine sounds in/out now working.
- Simple mirror (toggle with F4)

v0.5.2 beta4.1
--------------

- Seemingly the bug of crashing on the Start/Finish line is fixed
(full recompile).
- Carlswood Z-buffer problems ('sinking in the road') fixed; sky objects
had all their shaders modified to be of type SKY (and no FOG). However,
some sky objects also contains (unused) shaders of other objects, mistakingly
updating those too.

v0.5.2 beta3.4/beta 4
---------------------

- Fixed slip bug (you could do 360's instead of 180's)
- Emission color from DOF materials are ignored (to get rid
  of the red shine on a lot of tracks)
- Old tracks should now have visible skies (implicit shader
  changes to include sky=1 and fog=0).
- You can control whether the throttle is cut during shifts
  in racer.ini's controls.cut_throttle.
- Warnings are generated if the Pacejka curve generates longitudinal
  forces with 0 input (wheels will rotate a bit by themselves).
- Fixed keyboard.ini to work again (clutch was negated)
- Experimental 4WD hack; wheel<x>.powered=1 is accepted and will
  add engine torque to a wheel without a differential.
- Old cars with the old audio engine now work again (an implicit
  audio set is created).

v0.5.2 beta3.3
--------------

- Brakelights now work; need shaders though (car.shd) to render correctly.
- Audio now works for more than 1 car.
- Console now displays in various resolutions at the right location.

v0.5.2 beta3.1
--------------

Bugfixes:
- Modeler's Import DOF could crash
- Old 050f cars could turn out quite white (Nissan Silvia was tested to work now)
- Reflection map emulation of v050f cars was not done properly
- Reflections on cars could flip randomly, depending on the viewpoint
- FPS counter had a small memory bug
- AI acc/dec performance was accidentally still cut down by 50%

v0.5.2 beta1-3
--------------

Features:
- Improved multiplayer prediction (splines); best with framerates around 50+
  and LAN though (no time corrections).
- AI races in simplistic form; use Quick Race. With car-car collisions!
- Track steer/road noise.
- Stabilized FPS readout
Bugfixes:
- Collision normals fixed; you can now actually flip the car without flying
  into space!
- Some gfx engine bugs fixed.

v0.5.2 alpha 8/9
----------------

Features:
- Controller setup screen now mostly works. Try a MOMO. :)
- Screensaver/monitor power off should now be off while
  Racer is active (Windows).
- Modeler can now rename materials.

Bugfixes:
- Fixed Modeler's moving system, which was unusable.
  Now uses an Arcball. Pretty nice.
- Pacejka player crashed when selecting a coefficient above ~12.
- Envmaps needed to be rendered upside down, lefthanded.
- ASE import (of TrackEd & Modeler!) incorrectly imported
  MATERIAL_AMBIENT as emission.

v0.5.2 alpha 7
--------------

- Cubic environment mapping support for shaders. Set a shader's
  texgen_s, r and t to reflection_map and use map=$trackenvmap.
- Live track environment mapping. Damn costly. Set gfx.ini's
  envmap.live_track to 1 to have a taste.

v0.5.2 alpha 6
--------------

- Wheels could disappear (graphically) when making high jumps
- Debug.ini's gravity_body=0 fixed to work.
- Gfx engine bugfixes (a bunch)
- Wheel can no longer separate from suspension
- Camber angles limited (unrealistic forces otherwise)
- Car shaders were not sorted with track shaders.

v0.5.2 alpha 1
--------------

? Added better support for POV Yaw & Pitch angle changes.
? Added support for trackIR (www.trackIR.com) head tracking
  through POV Yaw and Pitch controls.
- Fixed font widths for Parhelia Surround Gaming modes.
- Added car.ini engine.shifting.time_in_neutral variable
  to add a neutral phase while shifting.
- Logging added; see www.racer.nl/reference/logging.htm.
  Enough to do a serious telemetry analyzer.
- Throttle cut during shifting
- No more quick-shifting; you need to release the shift up/down
  control before the next shift can occur.
- Shifting is initiated by shift control; the next gear
  will only be selected once the shift control is released
  (while depressed you'll stay in neutral gear)
- New graphics engine in place for easier experimenting and shaders.
- TrackEd also uses new gfx engine.
- TrackEd's batch import (ASE/VRML) optimizes models better
  (as in Modeler).
- New shader editor, Shady.
- Geometry.ini DOF filenames are now stripped of whitespace
  (could lead to strange trouble when using a track.ar file)
- All material texture maps are now handled in lowercase,
  to avoid platform incompatibilities.
- Specular highlights on tracks now possible.
- New camera system using SMD (spring/mass/damper).
  Backwards compatible with old Racer v0.5.0 style cams.
- Added digital view element (for digital speedometers)
- Added factor in view elements (for example to go from
  m/s to kmh for digital view elements)
- Cars now have their specific projected shadow model.
  See car.ini's graphics.shadow.

Bugfixes:
- Clutch negation wouldn't work if min>max.
- Engine torque reaction was reset to 0 at the start of a game.

v0.5.1 alpha 2
--------------

- Controller is reacquired when application focus is lost. This
  should help when Alt-TAB-ing out of the program for example.

v0.5.1 alpha 1
--------------

Fixes:
- Projected shadows could be whitish; fog was still on
  (seen on Mac and a certain XP/Geforce2MX machine)

Features:
- Added multiple audio samples for engines, skidding, wind etc.
- Added track surface sounds


v0.5.0 final
------------

Fixes:
- Autoshift doesn't shift out of reverse/neutral anymore
- Better Join/Host multiplayer handling. On Mac, you'll have to use
  racer.ini's multiplayer.server_remote to specify a remote server.
  Host/Join now actually works at once. Try it on a LAN first though.
- Better collision response (some ERP changes in debug.ini)
- Improved keyboard.ini (but totally unrecommended)

Features:
- Improved multiplayer prediction code; cars move smoother
- Multiplayer smoke
- Multiplayer wheel heights; wheels don't sink in track

Known bugs:
- Replays don't work for multiplayer.

v0.5.0 beta13
-------------

Fixes:
- The Fer312 car.ini had a typo; locking_coefficient
  should have been locking_coeff.
- Typing 'P' twice during a replay would turn the realtime
  back on, and getting back out of the replay, realtime
  would be catched up, giving incorrect superfast responses. 
- Using Shift-R now doesn't cause bad replays anymore. Simtime
  keeps on running when Shift-R is used.
- Wheel<n>.x offset now added to suspension location, instead
  of just being reset to 0.
- Replays could crash at the end.
- JPEG loader works again
- Using a brake model works with projective shadowing.
- Tire forces were in the wrong direction

Features:
- Added function motion plugins. (data/plugins/*)
- Improved locked wheel behavior
- Nicer smoke

v0.5 beta 10-II
---------------

- Fixed bug where a car could drive on indefinitely in a large
  turn with some initial speed.
- Degenerate splines detected and skipped
- Degenerate track triangles detected for car-road touching.

v0.5 beta 10
------------

Fixes:
- Car-track collisions are a lot better; using ellipsoid collision
  shape instead of box. See also debug.ini's collision.* variables.
- Shift-R/Shift-P now reset the car's velocities. A bit more stable.

Features:
- The differential can be attached to any set of wheels. Use
  differential.output0 and output1 to select the wheels.
- Pacejka camber coefficients are checked at car load time. If they
  look suspicious, a warning will be generated in QLOG.txt.
  Suspicious means that Fy or Mz decreases with added camber. This
  may give an indication of Pacejka values that use a reversed
  lateral axis.
 

v0.5 beta 9
-----------

Mac:
- Controllers are now searched for by product and vendor id;
  the controller index system was too problematic.

Fixes:
- Projected shadows now also work on remote cars

Features:
- Projected shadows now lighter for transparent areas (windows...)
- Debug text (^1-^9) are scalable (racer.ini: stats.scale)

v0.5 beta 8
-----------

Beta 7-II : Fixed roll torque bug
Beta 7-III: Fixed sound bug (for hardware accelerated boards)

Fixes:
- Splines on Nurburgring are now much faster
- Spline bug fixed near start/finish
- Suspension min/max limits now handled better
- Handbrake is no longer limited by the maximum brake torque
- Smoke while driving in reverse
- Incompatible cars can no longer be selected (in 'Select Car')
- Track lighting direction is now derived from the sun
- Using the clutch controller overrules the autoclutch.
- The joystick utility (Windows only) now correctly reports all
  axes. Just the last DX8 incompatibility straw.
- Low speed & torque damping to get rid of low-frequency wobbling.
- Suspension is now compressed in the car selection screen.

Features:
- Projection shadow of car on track
- Replay buttons auto-hide
- Digital controls can be turned into analog values using
  'make_analog=1' for that control. For digital gamepads etc.
- Controller input and output now independent of framerate
  (see racer.ini:controls.time_input and time_output)
- Control's 'sensitive_rise' and 'fall' are now independent
  of framerate. Their effect has changed (you may need to tweak
  them to the new system).
- Multiplayer improved; now both client & server see the cars.
  One on one only currently! Very rough stuff though.

v0.5 beta 6/7
-------------

Beta 6 was Mac-only. To avoid confusion over features, beta 6
was never released on the PC.

Incompatibilities:
- Rollcenter used to add the suspension position. This didn't seem
  that logical so the addition is now gone (!). This means that
  for every car.ini, you need to retweak the roll center. To get
  pre-beta6 behavior, add susp<x>.x/y/z to susp<x>.roll_center.
  This now makes the rollcenter's base the nullpoint.
- Track and car id's must be used from now on.
- SGI release has been dropped.

Fixes:
- Fixed yaw torque bug; cars would spin under braking too quickly.
- Fixed telemetry; CG height was calculated incorrectly.
- Fixed automatic shifting; wasn't running.
- Fixed magic drive bug; when one side of the car had a
  lower suspension Y coordinate, the car would start to
  drive by itself. Also had some impact on weight transfer.
- Fixed weight transfer bugs (all directions)
- Fixed anti-pitch weight transfer bugs
- Fixed track popup objects
- Fixed bug in automatic shifting; erratic downshifting.
- Fixed spline offset bug; small fluctations from poly to poly.
- Several small fixes & enhancements.

Features:
- FMOD updated to v3.6 (all platforms).
- JPEG files now accepted on Windows/Linux/Mac. Note that JPEG
  does not support alpha channels. Also don't use colorkeying
  in JPEG images; JPEG is too lossy for that to work.
- Telemetry now fully functional onscreen.
- POV following; see racer.ini (controls.pov_follow); allows head yawing
  to follow the steering wheel motion in car cameras.
- Helicopter camera view. Press C twice.
- Audio system upgraded to cache samples with the same filename.
- Car selection now sorts by name
- Car selection has 2 more lines: credits & comments
- Roll center debug displaying improved.
- Low-LOD steering wheel possible (steer.model_low) for outcar views.
- View elements can now be tilted; view<v>.elt<x>.xa (and ya, za)
- Linux version now has working fullscreen.

Mac version:
- Support for sound (FMOD3.6)
- Support for USB controllers; Thrustmaster Modena 360 Pro control set created.
- Now also has working fullscreen.
- Multiple mouse button support (used to only see the primary button)

Notes:
- The 350Z car.ini has a typo: susp_rear.anti_pitch=0.5 instead of anti_pitch-0.5

v0.5 beta 5
-----------

Bugfixes:
- Fixed camber bug; camber was converted twice from radians to degrees
- Fixed trackcam bug; used to be able to crash quickly when switching
  from car to track cameras on tracks with few cameras.
- Fixed point_to_point bug; on every save, TrackEd would enable
  point_to_point. (A-B tracks)
- Replay buttons look a bit better.
- Improved resource releasing to avoid memory leaks.
- Some other small bug fixes.

Features:
- Last track is cached. Quitting to the menu and restarting on the same track
  (or watching a replay on that track) doesn't need to reload the track.
- Parhelia Surround Gaming support (3 monitors) (gfx.ini:resolution.monitors)
- Telemetry screen (^9). Still being worked on.
- Carlswood is the new default track.
- Buzzbomb's Ferrari P4 is the new default car.

v0.5.0 beta2
------------

Bugfixes:
- Toe on rear wheels didn't work
- Engine mass is now added to the body
- Aero was twice as much as it should be
- Gear velocity didn't match actual velocity.
- Specular hilites were awful from trackcams.

New features (physics)
- Driveline redesigned for more flexibility, clutch etc.
- Analog clutch
- Analog handbrake implemented?
- Free shifting possible (ActLabs Shifter etc.)
- Smoke bug fixed for older drivers/cards.

- Camber calculated for the wheels vs. track
- Static wheel camber
- Camber change / suspension deflection
- Camber change / steering degree
- Camber change / caster

- Engine stalling is now possible
- Starter engine; press S to use the starter (if present)
- Smoke bug probably fixed for older drivers/cards
- Velocity is taken from gearbox (not the body velocity)
- Force feedback at low speed is filtered to avoid shaking
- body.restitution_coeff is used again (wasn't in v0.4.9)
 
Additions:
- A-B tracks now possible (non-closed)
- Upto 3000 track objects possible (was 1500)
- Replays can now be exported to .tga files (in data/dump/)
- Replay markers are used to limit exports (not saves though).
- F12 saves a screenshot in data/dump/ (as a Targa file)
- Car camera movements using the numerical keypad.
- Modeler: translate operation added
- TrackEd: no spline limit anymore

Misc:
- In replays, P now means play/slomo (was ENTER)
- ENTER in replays now reselect the last button clicked

Changes in car.ini files:
- differential.ratio is now used instead of gearbox.end_ratio
- differential.inertia is used for the ring gear inertia
- audio.ini and env.ini are now included in racer.ini for simplicity

v0.4.9
------
Bugfixes:
- TrackEd's Batch ASE import contained a texture bug.
- ASE importing could lead to alpha=0 in the diffuse color,
  which would render an object fully transparent (invisible)
  when rendered from certain track points (tough one). If you
  have this problem, reimport the ASE files.
- The FMOD dll and .so (Linux) had division by 0 bugs and have
  been replaced with newer versions.
- The mipmap and trilinear features in gfx.ini weren't
  correctly applied.
- TrackEd: Sky bug fixed (moving around didn't move sky well)

New features (physics):
- Anti-roll bars added to the physics engine.
- Dampers are now MUCH more stable (implicit integration).
- Ackerman steering is now possible.
- Much improved collision detection response. Thanks to
  Russel Smith's ODE library (www.q12.org).
- CarLab: Analysis button added which gives info on the
  car, like weight ratio, suspension critical damping etc.
- CarLab: a button to modify the weight ratio of the car
  (is otherwise quite some work)
- AABBTrees for the track introduced to even out and speed up
  wheel-track collision detection.

New features (graphics):
- Vertex color support (see the
  new Carlswood track, downloadable at Strat's site).
- TrackEd/Racer: Driving line overlays possible (decals).
- In gfx.ini, mipmap can be set to 2 to use more linear filtering
  (instead of 1 for nearest filtering, or 0 for none at all).
- Sun (with whiteout and editable flare in gfx.ini)
- Lens flares
- Skidmarks (for settings, see gfx.ini)
- Fog is now defined per track instead of globally.
- Separate brake light models.
- Separate front light models.
- Separate wheel brake models (that don't rotate along,
  but do steer with the wheel).
- Basic replays possible (press F2); thanks to Mitch
  for providing the buttons.
- GUI improved; buttons that may be clicked with the mouse,
  and selected with TAB/Shift-TAB and ENTER.
- Improved reflection map (full use of the texturemap).

New features (audio):
- Frequency upgraded to 44.1kHz.
- Music possible in section (menu/racing/replays). MP3/WAV etc.

New features (misc):
- Keyboard support (I still think driving with the mouse is easier)
- Wingman Force 3D joystick control set.
- Gravis Eliminator Aftershock control set.
- Updated Guillemot Ferrari wheel control sets.
- Fer312 car attached. It now has a setup very similar to an
  existing GPL setup from Alison Hine. There are still some unknowns.
- Sound playing in the original v0.4.8 had a bug, which could
  give you no sound. This has been fixed.
- Pacejka editor now works for the most part (except Save).
- Thrustmaster Nascar Pro Digital wheel control set added
  (thanks to Adam Light).
- UDP output possibility of the acceleration forces and car
  orientation. This is done to facilitate any chair control
  that you may want to do (!).
- Ini files can now refer to trees with '~' (and overrule).
- Replay viewing from the menu

Changes:
- TrackEd now defaults to flags=0 when importing objects. This was
  done because a big Monza import gave more objects to turn off
  than to turn Collision and Surface flags on for.

New requirements:
- DirectX8 (for DirectInput)

v0.4.8
------
Bugfixes:
- When the car bottomed out, the wheel could get stuck
  for too long and gave strange forces, making the
  car seem to float or fly.
- Ran Purify on Racer and this caught a lot of tiny bugs. Fixed
  those and some memory leaks.

New features:
- Improved spline handling using full 3D surface patches;
  retry the Oval once more and you'll feel the difference.
- Surface detection; multiple track surface types
- Kerb force feedback effects (thanks to the above)
- Added the Evo6 as the new default car. It can show off more
  of Racer's capabilities than the Ferrari P4 can.
- Full 3D cockpit is now possible (separate models, 3D dials etc).
  You can specify a special incar model for detailed cockpits.
- Steering wheel model possibility added (the Evo6 has one).
- Physics option to use suspension force for load instead of
  direct tire forces. Idea by Paul Harrington. See debug.ini's
  use_susp_as_load. Perhaps gives more stable grip.
- Basic UDP multiplayer facilities for LAN networks (no dropped
  packets are traced so it will probably do very bad on
  modem connections). Not much yet, don't hope for too much.
- Improved envmapping; now also possible on transparent windows
  on multitexture-capable boards.
- Collision detection improved; it's harder to get stuck now,
  either in the railing or in the track itself.
- 3D sound (using FMOD) on Windows & Linux (see http://www.fmod.org)
- Upgraded sound system to 16-bit, 22kHz (upgrade those samples!).
- Music possible in the menu; no music is included because that
  would make the download bigger. Check racer.ini's menu.music.
  Streaming MP3, WAV and some others are supported.
- Toe in/out for each wheel
- FOV settings added for each car camera
- Added an ActLabs Force RS FF control set. Note these things come
  in various configurations. I now have a shifter, and support for
  it will be added in a future version.
- Added a Microsoft Gamepad control set.
- TrackEd adds batch ASE import (useful for people making new tracks)
- Modeler can set shininess per material now.
- Modeler can edit ambient/specular/diffuse/emissive color per material.
- 'F' in Modeler toggles current-material flashing.
- Optimize in Modeler improved.
- Carlab fixed to give correct car camera views.
- Carlab can now edit the car camera FOV.
- Carlab's dialog now shouldn't disappear on Win98 machines.
- Ran Purify on Racer and fixed quite a number of bugs that it found.
  Has run cleanly through Purify (and you don't know how
  clean that feels!).

New requirements:
- A TCP/IP network protocol, because every game now behaves
  a bit like multiplayer.

v0.4.7:
-------

Bugfixes:
- Modeler's ASE loader improved (had some bugs with some models,
  esp. with UVW unwrapping); also improved the optimizer to
  handle the new methods better.
- TrackEd & Modeler popup dialogs are now not overdrawn anymore.
  This problem was most apparent on Win98. It is a driver problem
  still, but I'll just circumvent it then. :(
- Debug output to COM1 is now optional (setenv QDBG_COM=1).
  This may resolve problem with wheels that are hooked on COM1.
- On Win98, a lot of people had trouble running Racer more than twice.
  My sound code is better now, in that COM is uninitialized at
  exit time. This is likely to fix the two-time running problem.
- FF jittering at low speed is damped more.

New features:
- Added a new friction combination method, courtesy from
  Gregor Veble for the idea, which gives better behavior,
  meaning more warning before the tire starts slipping.
  This friction method is now the default. It resembles
  very much the method from chapters 24/25 from Brian Beckman.
- Mipmapping, trilinear and anisotropic filtering support.
  See gfx.ini's new options.
- Aero drag for the body
- Wing aerodynamics
- Engine torque reaction on the body (like in GPL)
- Improved skid sound code (I think).
- Support for more than 1 controller
- Dual controller controlset for Logitech FF wheel
  and CH Pro Pedals (courtesy from Alison Hine)
- TSW2mod controlset (courtesy from Uwe Schuerkamp)
- Non-linear control support (variable from linear to non-linear)
- Improved the JoystImm utility (Win only) so it now handles
  more than 1 controller (you can select it).
- Improved TrackEd movement and selection
- Car selection screen
- Track selection screen
- Best laps are recorded per track (10 per track) and per driver
  (just 1 driver for now in data/drivers/default)
- Some transparency support for the cars. Still rudimentary,
  but working a bit.

v0.4.6.1:
---------
- Fixes major grip bug; now it finally feels a bit realistic.
  You now get twice as much grip, like it should be.

v0.4.6:
-------
- Last-minute fix of a major bug on Linux where you would get
  only 1 texture for the track and 1 for the car (ugly!).

New features:
- Environment mapping on the cars; nice reflections.
- Splined surfaces; much smoother surfaces. Retry the oval!
- Separate specular highlights; creates specular highlights
  on cards that support it (on the car for example).
- Differential improved; viscous locking (but slippery).
- A horizon is now possible (the original sky is included
  in Carrera, although I also tried a sky from GPL's Silverstone
  with success)
- Ferrari 312 '67 car added, thanks to Neil Bainbridge
- Lotus John Player Special '72 car added, thanks to Christoper
  A. Landt and Christopher M. Steed
- Modeler can now import .3do objects (from GPL for example).
  It converts from a tree to a flat object, so don't think
  it can import tracks. Only recommended for small objects.
- Modeler can now select materials (reflection mapping
  is defined per material).
- TrackEd has been enhanced for spline surfaces, better
  trackcam editing (preview) etc.
- Further enhancements here & there (it's not so easy anymore
  to get Racer to 'lock' when the car gets out of control)
- Source of D3/QLib library and EGL (extending OpenGL for OpenGL1.2).

v0.4.5:
- Rendering optimized a little.
  It now sorts by material, made some 10% difference on my O2.
- Texture loading optimized.
  Multiple occurences are only loaded once. This was previously only used in TrackEd. Should load (much) faster now and use much less memory. If you previously tried to convert tracks like Monza, try again; this version should be much better.
- Differential code has been placed in. It's quite beta, and will exhibit quite a few problems while driving (or should I say trying to drive).

New features:
- Linux version added! Not a fully compilable version, but perhaps interesting for future serving of races. Strangely enough, the Linux version was up & displaying in 3 days. No sound yet though. Any takers?
- Collision detection (car vs. track). A bit crude still; no angular impulses yet (and no angular rotation collision prediction). Thanks to Dave Eberly for his OBB-Triangle detection code.
- Power oversteer.
  Note the Ferrari is quite heavy and requires some pushing to make it spin out from a start. The addition was possible thanks to a friction curve which specifies maximum friction based on the slip velocity. But oh gosh, ofcourse there's too much oversteer!
- Lit tracks; some lighting can be added to the tracks (it's on by default).
  Although subtle, it does add a bit of flavour. To get lighting to work on old exported tracks, use TrackEd, select your track, and click 'Add Lighting'. This will process all track .DOFs and add normals so that lighting works correctly.
- Transparent track objects (fences and such).
  Although the rendering order is not be correct in all cases, alpha rendering is supported. For .BMP texturemaps, any purple pixels are made transparent. The bridge rail in Carrera for example. Note that half-transparent textures (if you use .tga files) will not render in the right order.
- ACT Labs wheel control sets were added (thanks to Dedlast)
- Logitech wheel axes support.
  The Logitech wheel used slider axes and these could not be specified. Support was added. Use 'slider0' or 'slider1' as the axis name in the control set files (no Logitech ctrlset exists yet; please send one to me if you get it working)
- More axes are supported; the Logitech wheel uses a slider axis, and this was not recognized. Now if someone can do a control set that I can include... (use slider0 or slider1 instead of the regular axes, X/Y/Z/RX/RY/RZ).
- Full compilable source available for Win32, SGI and Linux.
  I might have forgotten things, or getting it to work is (very) unclear. Mail me with what you had to do to get it to compile, or what your problems are in getting it up, so I can make it easier for future releases. Warning: it might be a bit of a mess right now; didn't put enough time I guess into testing and searching for omissions.
- Force feedback improved.
  I now have friction working to get rid of the loose feel at low speeds. Look at the msff_ff.ini file in data/ctrlsets for some new parameters.

TrackEd changes:
- AI waypoint editing now possible (consisting of direction markers and left/right road markers; possible speeds are learned by the robot drivers).
- Camera handling is now a bit where it should be; not too much funny alpha stuff. It's ok to do your own track camera's, in fact, I'd love to see what you make of it, since I don't really put time into those much.

v0.4.1:
- Tire model enhanced with lateral force buildup, with thanks to Chris West & Gregor Veble for the help
- A lot of variables are shown; a bit too much for the casual driver. :)
- The laptime is back; it was there, but culled out by mistake.

New features:
- Track cameras! To show off, it starts in trackcam mode by default, hehe. Press C to switch to car view (and C again to switch back). Track cameras are still in beta, they will be enhanced soon with a couple of extra features.
- SGI version now available.
- Guillemot Ferrari control set (thanks to Shane Lowry)
- Applying the friction circle is optional; try debug.ini's car.apply_friction_circle and set it to 0 and 1; see the difference. Understeer or snap oversteer? Hm... In my opinion, WITH the friction circle on it's much to slippery. WithOUT it is VERY understeering.
- Some extra documents collected from Usenet discussions.

v0.4:
- Pacejka tire model; better than the original curves.
- Force feedback! Yes, with Pacejka this was a piece of cake. HOWEVER, the response I feel with my MSFF wheel is too late. Will have to do some future prediction like GPL, but how...
- Optimized triangle intersection; your FPS may go up quite a bit.
- Engine torque curve normalized, with a torque factor to get the maximum torque.
- Released a small track called 'Carrera'; very cute, and it contains a bridge where you can drive under and on. So it's basically Suzuka ready. :)
- Physics of the Ferrari once more revised (for Pacejka) so it now weighs twice as much.
- A shadow is projected onto the ground. Looks much nicer.
- Shifting with buttons.
- Mouse support (select the mouse controller from Config).
- A digital clutch has been included (it's analog, but handled in a digital way).
- Engine inertia added; the engine must now spin up as well as the rest of the drivetrain.
- Engine rpm is better simulated.
- A crude open differential is simulated.
- Wheel lock is handled better; you used to be able to steer the car even with fully locking front wheels.
- Bug fixed; QLOG.txt could get uncontrollably large on Windows systems. Limit is now 1Mb.
- Source code included (not yet compilable; more coming later)

v0.39.2:
Bugs resolved:
- Shift-R / Shift-P now work completely fine. The suspensions wasn't reset completely when in bad shape.
- Drivability is a bit better, though perhaps you might want to tweak the braking parameters.
- Camera following is now correct, no more run away cams
- Installer path fixed; should now create correct shortcuts (tested in Win2000/95)
- 1st frame had no track for collision; this caused the massive helicopter flight
- 1st frame quaternion matrix was off; 1st frame was badly oriented
- Grid/pit positions and timelines were rounded to ints, are now floats
- Suspension could get locked indefinitely, this caused strange bouncing
- 4WD was accidentally turned on, hehe, it's now rear wheel drive.

New features:
- Car is lit (looks a bit better)
- Wheel models!
- Camera 10 (key '0') is an in-car view (sort of)
- Fog introduced; you can turn it off in gfx.ini
- Brake factor introduced in the physics to get a means of brake balance

v0.39.1:
- Shift-R / Shift-P now work far better; they also reset
  the suspension and wheels.
- The car's physics have been tweaked a little bit.
  It's a bit more drivable now.
- No display lists are being used; this didn't seem
  to make much of a difference on my card, and it
  saves a lot of memory (I tried a lap on Monza,
  but it was swapping too much at 256Mb). And no,
  Monza is not downloadable on my site (on others
  though).
- Timing is improved; it should have better resolution
  now. Although you won't see it through the car's
  behavior, the Physics% and Graphics% are much more
  stable now.
- Icons are created in the installation. How handy!
- Curved was missing from v0.39. My mistake.
- The camera pitch has been improved, and you should
  be able to see more clearly now where the car is
  going in the default view.

v0.39:
- Added info on track timelines used in Racer.
- Timelines also really work, so you can now drive an actual lap time! (best lap time is shown under the current lap time)
- Physics engine reworked to use quaternions (the car's body now has gyroscopic precession as well).
- Gravity now always point down (not that it won't flip! ;-)
- views.ini file; it's now possible to create dials, timers etc. in a very flexible way.
- Roll centers for the suspensions
- Actual camera's from the car.ini file are used (keys 0-9)
- Grid/pit positions (easily created from TrackEd too)

v0.3 (28-01-01)
- Bugfix: body gravity now points down always
- Pitching of car; an American-style jumpy car was the result :)
- Rolling of the sprung mass
- Tire rate suspension; the wheel is part of the suspension
- Small simple track model (create by a Racer .trk file)
- Controller configuration for quite flexible controller setups

v0.2 prerelease (13-10-00):
- Slip ratio/slip angle model to be able to use real tire test data
- Better integration; fixed simulation frequency (100-1000Hz); editable
- Body stub graphics
- Frames/second counter (a bit jumpy)
- Fullscreen possible
- Wheels graphics may be replaced by .ASE model files (3DS Max for example)
- Front wheel drive works reasonably well (modify testcar.ini)
- Joystick/wheel controller input (Win32/DirectX7 needed);
  MSFF split axis only
- Very simple suspension system and graphics; mostly non-functional yet
- Curve editor to create and edit curves for slip ratio etc.
- More camera viewpoints
- The Racer modules are now put into a library (for multiple apps using
  the Racer universe, like the Car Laboratory).
- Very crude rev-limiter (if rpm>max then torque=0)
- Car Laboratory Win32 car editor; skeleton mostly

v0.1 (30-08-00)
- First release, some turning, throttle etc. with mouse.

END OF LOG
