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-2012, Ruud van Gaal
All rights reserved

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

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
- No support for frame locking (on PC, this is also for nVidia Quadro cards only)
- No support for PI Toolbox

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

v0.9.0 RC10 (??-08-2014, r?)
------------------------------
- DirectInput added back to provide joystick/wheel support again
- geometry.ini flags=16 now hides an object.

v0.9.0 RC9 (06-08-2014, r5532)
------------------------------
- Suspension forces refactored to work with limiting suspension length to minlen..maxlen
- Noronha tire force mixing in reverse went bad.
- Noronha tire forces could grow large at low speed. Clamped at 1.5x the nominal load.
- Tire rotational damping at low speed modified slighty (a factor 57.8 changed to 100.0 in the calculation).
- Added 'normals on' and 'normals off' console commands to visualize geometry normals.
- 'wireframephys on' now also shows normals of the collision geometry. This after trouble
  with geometry that pointed the wrong way, sucking in the car instead of repulsing.
- Bugfix for car engine audio; accelerate_out and decelerate_out were not mixed correctly for incar cameras.
- Added skid_lat and skid_lon car audiosets for separate lat/lon sample control.
- Added 'odometer_lap' view variable which resets per lap.
- Relaxed texture loading to accept non-power-of-two sizes.
- TrackEd/Modeler/PacejkaPlayer/CurvEd are now all in their own subdirectories.
- TrackEd is now 64-bits only. Needed for large tracks.
- TrackEd warnings on audio producers fixed.

v0.9.0 RC8 (01-11-2013)
-----------------------
- Added 'float eye' passing to fullscreen shaders (postprocessing) as a Cg uniform (0=left/1=right).
- Modified shadowmapping.cg; it could compile badly due to iSqrtSample being used as a constant
  and a local variable in one line.
- Added 'splitter' console command in Racer itself. I.e. 'splitter 500' will do a 500x500m grid split
  from <trackname> to <trackname>_split. Copy the track itself first from <trackname> to <trackname>_split
  and let the splitter overwrite things in the _split version of the track.
- Added 'atlas optimize' command, to generate an atlassed version of the track in <trackname>_atlas.
  Much like the splitter above (first copy the track). Not fully working yet.
- Added dev.argument_tracing option in racer.ini for explicit argument stack tracing. Only useful
  when you have a crash that requires more information than just the function stack trace. Only
  a few arguments are supported inside Racer. Slows down the program if used.
- Const sized arrays in Onyx are now possible: const int MAX_ELT=5; int a[MAX_ELT];
- Font rendering now much more crisp.
- car.ini wheel<n>.tire_model.relaxation_length_lat (and _long) of zero is now accepted (uses instantaneous slip angle/ratio)
- Onyx fork() command to spawn off SPU processes.
- Onyx improvements; peephole optimizer, #ifdef/#define/#else/#endif, #error "message"
- Onyx deg2rad(), rad2deg(), atoi(), atof(), split(), acos(), asin(), atan2(x,y) functions.
- Slipratio clamping in car wheels is now configurable in racer.ini: dbg_car.max_sr (defaults to 1.5)
- Combined slip method #10 (SimilarityMarno) is a validated method that is being used in production at Cruden.
  It still isn't optimal though when trying to get drifting cars for example.
  It uses a mix using slipRatio and slipAngle (slip=length(SR,SA), Fx*=SR/slip, Fy*=SA/slip).
- Added ProcessCount(), deg2rad() and rad2deg() internal functions to Onyx.
- Improvements for the DirectShow replay exporter; replay.video.muxer, replay.video.yuv_convert
  Codecs are still an issue; the Windows Media 9 one seems most stable for now (but slow).
- Added racer.ini replay options for automation of replay movie files (requires dedicated configuration files).
- Added Cg shaders for the simple polygon shadow underneath the car.
- Fixed atmosphere extinction for a lot of the dyn_*.cg shaders.
- racer.ini's gfx.check_opengl_errors is now collapsed into dev.opengl_checks.
- Added car.ini body.yaw_damper magic torque for drifting car control.
- Onyx 'continue' for for/while/do-while/loop.

v0.9.0 RC6 (24-04-2013)
-----------------------
- Fixed Tracked white menu background
- Camera toggling (with the C key) had an extra mode that should not be there (this was an entity mode)
- Fixed bug in shadows_f.cg full screen shader.
- dbg_car.flip_tan option removed from racer.ini.
- Fixed audio pitch bending frequency to use the original frequency of the loaded sample, instead of the audio engine output frequency.
  This could lead to incorrect pitch shifts for example with samples that were stored in 48kHz but played back at 44.1kHz.
- Added warnings for missing LOD models (which could cause disappearing models when generating the shadow maps)
- Modified scaling of racer.ini's dbg_controls.throttle/brakes/clutch/steer to use normalized values (0..1) rather than 0..1000
- Added filtering around wheel (tire) forces; a 2nd order Fz Pacejka input filter (fz_filter_frequency/fz_filter_damping)
  and a 1st order Fy (lateral) Pacejka out filter (fy_filter_frequency). Both in data/cars/default/car.ini.
- Also added a 1st order Fx (longitudinal) Pacejka output filter (fx_filter_frequency).
  These are useful when dealing with high-fidelity surface data (Lidar or high-frequency road artificial noise)
  to prevent very spiky lat/lon accelerations (giving unrealistic grip loss).
- Added dev.opengl_checks to check lots of times for OpenGL errors.
- Added dev.run_first to be able to start a command (like a batch file) before starting Racer.
- Added audio options in car.ini; understeer_oversteer (experimental) and damper sounds. See http://www.racer.nl/tutorial/car_sounds.htm
- Added spline.ini option lines.lateral_divisions to tesselate the spline laterally. This highly improves cambered curves in the road. Values around 6-20.
- Fixed panorama_f.cg shader to light up the texture (would quickly become either black or whitish, never showing the texture image itself).
- Added rtd2ascii.exe tool to convert binary RTD (telemetry) files to ASCII.
- Added fmod() and abs() functions to Onyx, next to improved error/crash reporting.
- Onyx now requires all code to be defined in functions. For independent running of Onyx scripts (onyx_run.exe), you'll need to create a 'void main()' function.
- Added friction_circle_method 10 (similarity model/Marno Hopmans variant) which accepts per-wheel lyka and lxal tuning parameters.
  (wheel<n>.pacejka.lyka and wheel<n>.pacejka.lxal). These define Fy influence on slipratio (ka=kappa=slipratio) and Fx influence
  of Fx on slip angle (al=alpha=slip angle). Normally you'd use values lower than 1 (and larger than 0) for these lambdas.
- friction_circle_method can be overruled per-wheel (so per-car) under wheel<n>.friction_circle_method.
- Removed dbg_car.use_slip2fc option (obsolete).
- Revised the rendering path to be able to override the main FBO's size. This for surround rendering with split rendering for all 3 screens.
  See also www.racer.nl/tutorial/surround_rendering.htm
  Current issues: Z-buffer is shifted between split screens (screenCenter uses screenLeft's depth buffer).
- Added quad-buffered stereo support (see racer.ini:resolution.stereo.quad_buffered). nVidia Quadro only currently; 3D Vision may follow for Geforce cards.
  See also www.racer.nl/tutorial/stereoscopic.htm
- Added 'vsync <n>' command to set vsync live.
- Autoexposure data/renderer/fullscreen_shaders_hdr/luminance_downsample_f.cg now detects NaN onscreen to avoid exposure spikes.
- nvidia_perf_path added in racer.ini, which needs to point to nVidia's PerfKit DLL. See http://www.racer.nl/tutorial/profiling.htm
- Motion blur taken out for the moment by default.

v0.9.0 RC5 (15-11-12)
---------------------
- Ctrl-I now inverts debug readout colors (it used to roll through the debug readout views)
- Onyx compiler improved with bugfixes, type-casting.
- Onyx pointers (hm).
- Onyx now supports float const ('const float x=0.5'), while, for and do-while.
- Onyx supports basic yielding of scripts (coroutines, triggered each frame).
- Onyx internal function abs(), sqrt() added.
- A default Cg shader is created for materials without an explicit shader. To avoid black materials.
- car.ini's now accept wheel<n>.pacejka.negate_camber. Some TIR files/coefficents out there
  seem to reverse camber (inverting influence on Fy tire forces). This option inverts camber sign
  as it goes into the Pacejka formulae.
- lighting.cg no longer adds Ks (specular) to the ambient term.
- .f32 file support for textures in .shd files; future development for sky colors.
- Added $water_reflection texture map for shaders, in the same way $mirror exists. This works with renderer.water.*
  to render a mirror image of the scene into a 2D reflection map, which can be used for a water shader.
  See also water_f.cg/water_v.cg in data/renderer/shaders.
  To be elaborated.
- The default debug text color is now white again.
- Timing is passed to the Cg shaders in TrackEd for some animations.
- Explicit low LOD steering model removed; use the model LOD available for the regular model (steer.model) (in car.ini)
- Car cameras can explictly turn the steering wheel on or off (camera<n>.steering_wheel=0 or 1). The default is 1 (added to data/cars/default/car.ini).
  See also http://www.racer.nl/reference/carphys.htm#campos
- Number of materials in a track raised to 6000 (from 4000) for some nasty import tracks.
- TrackEd's generate template shader generated '<unnamed_QObject>' for unloaded textures.
- Added engine.shifting.cut_ignition in car.ini; instead of cut_throttle=1, you can leave throttle open and cut
  part of the ignition instead. A value of 0.5 for example will output 50% of engine torque to the clutch/gearbox/wheels,
  so is smoother while shifting.
- Autoclutch during shifting linearized; it was now squared, making for a less smooth experience.
- New combined slip method for tire forces; #7. From Pacejka's book, the Similarity method. Does not require
  optimal_slipratio and optimal_slipangle anymore. More info on http://www.racer.nl/reference/wheels.htm#tireforces
- When the tire left the surface, slip angle and ratio were reset to 0. This was not realistic for a bumpy surface,
  since you lose a lot of traction when the tire is bouncing a bit. Now it keeps on tracking slipAngle/Ratio.
- Different fonts (Eurostile)
- Added dyn_standard_bump_ao_f/v.cg shaders for ambient occlusion map (much like the mix shaders really).
- After all these years, on Win7/64bits with 32-bits Racer, got PerfKit working with PerfKit v2.2.0.12166 from nVidia ('debug 6 1').
- Added 'float serverTime' uniform for Cg shaders to get (an estimate of) the multiplayer server time. To sync vertex shader effects across multiple PC's.
- Added active differentials basics using Onyx. See http://www.racer.nl/tutorial/differentials_active.htm
- Added a global 'lowpass' DSP option. Mainly used for testing for a future 'muffle' parameter per car to soften incar sounds.
- Added track audio per surface (in special.ini). If not defined, the default global surface type audio is used.
  See http://www.racer.nl/reference/tracks_surfaces.htm

v0.9.0 RC4 (09-08-12)
---------------------
- Passing of scale and dt in motion blur done directly to motion_blur_f.cg
- 'graph delta ...' command did not seem to work. Fixed.
- 'show carpoints' now also paints the warp matrix (initial position/rotation)
- Task priority not set higher anymore; it can conflict with ethernet drivers apparently
- 'reset car' (or Shift-F/Shift-R) now also takes into account the initial roll angle (banking of the surface)
- lighting.cg could generate NaN when shininess was 0 (specular maps can do that)
- Onyx execution speedup by around 50% with function tables.
- Modeler now has a 'Unify materials' button to let the model use only the first material.
- Automatic transmission now accepts curves for better shifting; see http://www.racer.nl/index.php?jump=tutorial/gearbox.htm#automatic_transmission
- Onyx now supports equalities between ints (int i,j; if(i>j)...)

v0.9.0 RC3 (02-07-12)
---------------------
- Added resolution parameter for motion blur shader (motion_blur_f.cg). Requires vsync=1 to work reasonably well.
- Reverted SMD camera up orientation, since it sticked to up even if the car was rolling.
- Added 'uniform float2 resolution' parameter for Cg shaders. Used in the motion blur shaders.
- Added theoretical sprung mass weight distribution under Ctrl-9, see also http://www.racer.nl/index.php?jump=reference/carphys.htm#bodymass
- Motion blur on by default; improved by detecting non-moving objects better.

v0.9.0 RC1 (25-06-12)
---------------------
- Bugfix: wiper interval was too short, so it behaves the same as the 'Normal' speed.
- Bugfix: color grading was bad and could give black suns and other artifacts.
- Upon a Shift-F/Shift-R, the wheel rotation speeds were not reset.
- Add specular ambient lighting; any specular shader now gets an additional specular*lightAmbient component
  to add specular light due to the sky.
- Added 'min' values for headphysics, to independently control min/max for each of the 6 degrees of freedom (by default, min=-max).
- Support for angle.xyz for head cameras, to rotate the direction of the camera.
- Fixed camera pitch/roll follow improved yet again.

v0.8.44 (22-06-12)
-----------------
- Cubemap images in shaders can be loaded from subfolders (textures/glass*.tga for example)
- Added a few Onyx functions for generic models, key pressing and car retrieval. Enough to make
  animating trunk and doors (not replayable).
- Light control now works for the car in focus (even AI cars, if they don't have automatic lights turned on).
- Bugfix: light control used to work for the ghost car instead of the real car.
- Most camera position calculations moved from GPU to CPU to avoid pipeline stalls.
- Car position in 'Select Car' screen was bad.
- Onyx compiles could crash when the script had an empty last line.
- From-to (SMD) cameras now have a revised 'up' vector calculation.
- Culling in shadowmap pass reverted back to cull=none for some shadow issues.
- Color grading shader fixed; the B and G channels seemed mixed up.
- Head physics camera type added. See http://www.racer.nl/index.php?jump=tutorial/car_cameras.htm
- Improved follow of pitch/roll for fixed car cameras.
- Exhaust particle normal is listened to again.
- Ghost car now has rotating wheels.

v0.8.40 (07-06-12)
------------------ 
- User camera offset and angles now take an approach relative to the camera. It might take a while
  to get used to it compared to the old method.
- User camera offset/angle works with fixed & free (SMD) car cameras.
- Selecting graphics options and then doing a race would not have any controllers loaded.
- Look left/right works again
- Onyx classes now supports member functions (no constructors yet)
- Added Onyx mouse functions to get coordinates & buttons (see data/scripts/onyx/include/racer.oxs).
- Added timing.fixed_time_step for ultrasmooth graphics; set vsync=1 and fixed_time_step to 0.016666
  for example for a 60Hz screen. May go wrong when Triple Buffering is turned on though.
- Shadowmap rendering pass will now invert culling (instead of turning culling off entirely).
- TrackEd's Split function would generate bad DOFs if more than 21,845 (or perhaps 65,536?) vertices were present
  in a single cell. Now it will generate multiple DOFs, each containing at most 21,000 vertices.
- Replay exporting development using DirectShow (instead the ancient VideoForWindows) to get better
  video files. May requires openglfilter.ax to be registered (run 'regsvr32 /s openglfilter.ax').
  See http://www.racer.nl/index.php?jump=tutorial/replays.htm
- Replay export using DirectShow (replay.video.type=2) now requests a filename (intermediately generates replay_TEMP.avi/wav).
- Replay format changed; now stores the driver names as well and can display those in replays (if show_names=1 in racer.ini).
  The format is incompatible with previous replay formats.
- Added replay.auto_save, replay.database.dir for more control on saving replays
- Added support for custom reflection maps in tracks, see http://www.racer.nl/index.php?jump=tutorial/reflection_map_creation.htm
- audio.frequency was unused for a long time. It became apparent when writing replays where timing was off due to 48kHz vs 44.1kHz
  discrepancies.

v0.8.39 (27-04-12)
------------------
- car.ini susp<n>.k_factor now influences regular springs. Also works with the system ('set car0.suspension0.k_factor 0.5')
- 'doc scriptfuncs' and 'doc scripttypes' now output HTML (more readable).
- TrackEd: added checkbox to turn on/off colorizing of object flags in Properties (F4) mode.
- TrackEd could display bad colorize flags
- TrackEd now saves LOD Z information in geometry.ini when saving (used to throw it away)
- TrackEd's model information now displays information on all LOD models.
- Dof_Fix could report continously optimized indices; this was due to every object being loaded to get tangents.
  Now, tangents are only created if a shader is attached that requires tangents (tangents=1 in .shd files).
- Camera offsets fixed when moving the CG for from/to cameras and fixed-type cameras (see http://www.racer.nl/tutorial/car_cameras.htm)
- Fading of menu->race->results->menu restructured internally.
- Add Lidar section to TrackEd (not that you normally would have Lidar data).
- Increased the number of supported DOFs in a track from 5000 to 10000.
- Render engine supported number of blocks (geobs) in view increased increased from 3000 to 5000.
- 'debug <n>' command extended to support a subpage, i.e. 'debug 6 2' for the Onyx profile view.
- Images/textures can now be loaded up to 8192x8192 in size
- racer.ini's textures.max_wid/max_hgt increased from 2048 to 8192
- Ghost cars now load their shaders from the same car directory, only using car_ghost.shd instead of car.shd.
  No longer do you need a separate data/cars/<car>_ghost directory.
- Added 'reload onyx'. Onyx is an relatively complex scripting language that is much like C++, and will be used
  in the future as an interface for external physics, or other places where script overriding might be useful.
  See http://www.racer.nl/tutorial/onyx.htm
- Added 'run <script.oxs>' console command to run an Onyx script.
- Added onyx_run.exe, which compiles and runs an Onyx script. Useful for debugging (a .oxa ASCII file is generated as well).
- Added 'show triggerlines' and 'hide triggerlines' commands.
- Modeler's Import ASE function speed improvement.
- Particles did not use Z-testing.
- Backfire particles were spawned in the wrong position when the car had velocity.

v0.8.38 (10-01-12)
------------------
- Look_up/look_down controls added for to make TrackIR devices possible. See http://www.racer.nl/XXXXX
  That makes head tracking possible, although currently a bit crude.
- In your controller file you can add global.up_down_velocity to set up/down look velocity (default=250)
- In your controller file you can add global.up_down_look_max to set the max up/down look angle (default=45)
- Removed energy conserving diffuse/specular lighting for version 0.9.
- Auto exposure turned back on. It can cause dips in framerate on some systems (every second, a grab is mipmapped
  to obtain the scene brightness).
- Added shader .mipmap_bias for the global shader and optionally for separate layers.
- Added cubemap mipmapping to all reflection shaders for environment mapping.
  Requires a good graphics card; otherwise, turn off envmap.generate_mipmaps (set to 0).
- Fixed keep_aspect (dials/views.ini) for multi-monitor setups.
- Setting up graphics settings and starting a race would crash.
- Added dev.collisions setting to globally turn off collision checking.
- Wireframe mode gave bad texturing for the rest of the graphics.
- Trackcam FOV clamped to zoom range indicated by the camera
- Newton solver parameters reverted in the hopes of fixing now & then hangups (10-200 seconds each, after several hours of play)
- Car camera offset seems back working; the FIXED camera type should now work correctly again.
- Shadowmapping in car camera mode focuses on the car, even if the camera from/to positions are some distance away from the car.
- Reverted back to FMod 4.30 (was v4.36) since some people had volume problems at startup.
- Differential power_ratio warnings were mistakenly given for non-LSD type diffs.

v0.8.37 (23-12-11)
------------------
- Added views.ini keep_aspect property to maintain aspect ratio for static images. See http://www.racer.nl/tutorial/dials.htm
- dyn_standard_reflect_window_f.cg now uses alpha as reflectiveness as well; opaque parts get less reflection
- TrackEd's AutoAseToDof has improved error messages on bad submaterial usage.
- TrackEd: some (progress) dialogs never appeared. Copy flags to group didn't work.
- TrackEd now colorizes the Collide and Surface flags in Props mode (F4) for easy tweaking of flags.
- standard_bump_detail_f.cg had a hardcoded 12x scale; now it uses the scale defined in the .shd file
- The garage track is not shown in the 'Select Track' screen anymore.
- Added log.events.host/port settings for remote racer tracking (niche usage).
- Lidar data (track.rld files) can now be sorted and driven on. Pro use only.
- Added car pitch/roll in body AND world coordinates in the Ctrl-9 debug screen.
- Added 'analyse shaders' command to check all shaders (track.shd/car.shd).
- The shaders default 'reflect' value for each layer is now 0 (was 1).
- Final tweaks in the shading system; energy conservation for diffuse and specular. For diffuse colors, this
  means diffuse colors are divided by PI (assuming diffuse colors are kept between 0 and 1), and specular
  colors are being corrected with (n+6)/8*PI.
  See also http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/
- Timers are now in microsecond accuracy using QueryPerformanceTimer(). Multicore machine issues?
- Profiling is more accurate due to the better timer accuracy. More graphics divisions added.
- Shader cast_shadow property by default is now 0; it's better to explicitly define shadow-casting materials
  since you don't need a lot of shaders to cast shadows to still get a good image.
  You *will* need to add cast_shadow=1 lines for shaders that you want to cast shadows.
- Depth texture setup optimized for shadowmapping; quite a big fps increase.
- Added look/left right controls (look_left, look_right) to dynamically look left or right (Q/W by default)
- In your controller file you can add global.left_right_look_velocity to set left/right look velocity (default=250)
- In your controller file you can add global.left_right_look_max to set the max left/right look angle (default=45)

v0.8.36 (11-11-11)
------------------
- Bugfix: script parentheses could cause confusion: 'paint sin($a*0.8)+10 at float[2]{ 50,50 };'
  would give numbers between -1..1 instead of 9..11 (priority conflict).
- Bugfix: the camera locations not relative to the nullpoint. This does mean
  you should move your camera positions!
- Added 'terminal' console command; this opens an output window. Also added dev.terminal in racer.ini to open it at startup.
  See also http://www.racer.nl/tutorial/development.htm . Useful for content development as well; seeing warnings quickly.
- Entering of console commands is now also possible in the menu screen (although not many commands work here).
- Added 'debug <path>' to show a subtree's values live, much like the Ctrl-1 to 9 screens.
- data/cars/default/car.ini contained a differential tree which was not used; now split into 'differential' and 'differentials' (the latter is preferred)
- FMOD upgraded to v4.36.5 (fmodex.dll)
- Added 'reload globalviews' console command to reload data/gui/globalviews.ini
- Added damage parameters to default/car.ini (damage is still very alpha functionality)
- Added views.ini type 'clip' (for example for a filling bar) - currently it stretches the image though
- If a car's view0 was empty, Ctrl-9's second subpage could crash
- Added 'get focus car' script command to retrieve the car in focus (unlike 'get local car' for example)
- 'doc scriptfuncs' now opens the file after creation.
- Pacejka player could not edit 'a0' in Pac96 mode.
- Pressing Ctrl-0 twice would crash
- racer.ini's collision.report_car_track_collision now shows collisions between objects in the console
- DOF_Fix had an endless OpenGL error loop
- Endless roads possible by defining endless.min.x/y/z and endless.max.x/y/z in a track's special.ini
  See http://www.racer.nl/tutorial/endless_track.htm
- Newton upgraded to v2.34 (newton.dll)
- Movables initial state is now no longer to freeze; this to fix framerate issues (although it's a little slow at the first few frames).
- Added generic model align_axis property, to fix one of the axes of a generic model (to prevent rotations; only 2 endpoints are defined).
  This was done for Boomer's IMP car, to keep a suspension model from rotating when moving.
- Added susp<n>.susp_y_change_per_rad (around 0.01 to 0.1) to dynamically move the suspension attachment point for geometric effects.
- Ini.exe would crash when adding a non-existing key
- Added 'show lidar' and 'hide lidar'. High-end laser scanned tracks only (alpha development).
- Added 'lidar movex <v>' plus movey and movez commands to translate Lidar data to match the track.
- Gearwhine sample now also uses jitter (similar to the engine).

v0.8.35 (23-09-11)
------------------
- Pacejka window appeared single buffered in Windows XP, resulting in flickering.
- Added 2 pages to ^9 (telemetry) debug view; all possible and actually used view variables
- Added 'surface' group to logging (ASCII/RTD) with world surface intersection coordinates for all wheels (used internally for laser-scanned tracks).
- RTD logging of orientation is now done in Yaw/Pitch/Roll instead of the car rotation quaternion
- Timing has been restructured - only the multiplayer server now keeps track of time, to sync laptimes across multiplayer.
- Added 'fps on' and 'fps off' console commands.
- Added 'view <n>' command to set the view (normally changed with F1)
- Added the start of a 'system' of parameters & signals, which will give inside info on all kinds of parts. This will be useful
  for external tweaking tools, and also internal ones. A generalized way to access parameters. Currently the tree is very
  limited, and no external tools are available yet to tweak.
- Added 'system export' commands to export the system tree to an HTML file. Racer will open the HTML file after creation.
  See also http://www.racer.nl/tutorial/system.htm
- Added 'set <path> <value>' to set a parameter in the system.
- Added 'get <path>' to get float parameter in the system.
- The 'graph' command now also accepts any parameter in the system; i.e. 'graph step 0 600 car0.engine.rotation_vel'
- Added 'camera <n>' command to switch cameras using a console command.
- Added 'fov <f>' command to set camera FOV directly.
- Added power steering curves for assist/friction/damping/spring (spring only for high-end platforms)
- Curved can now also offset all points
- GPLex dropped for now.
- Added alpha version of 3DS Max exporter (see max/ directory)

v0.8.34 (07-07-11)
------------------
- Bugfix: Director cam didn't work
- Bugfix: Rain didn't affect grip (snow did)
- ENet upgraded to v1.3.3 (small change to avoid unreliable packet regression, and disconnect fix)
- Added input limiters for Pacejka curves for slipangle/ratio/camber/load (see data/cars/default/car.ini)
  (wheel<n>.pacejka.slipangle_min/max etc); see http://www.racer.nl/reference/pacejka.htm#inputsoutputs
- Bugfix: Replay was never painted; no camera was defined.
- Bugfix: particles in replays were not animated in reverse mode. Now they are (although not entirely correct)
- Turning AI on while offroad would cause a crash.
- Added ai.spring_factor in car.ini to add some magic forces to keep the car on track (use 'ai scale' for example
  to add some speed to the AI line; check out 'ai save' and such).
- CurvEd import of ASCII txt and CSV added.
- CurvEd imports were buggy (zero) if more than 50 points were imported.
- Added textures.stub in racer.ini to optionally load a single texture for every loaded shader; useful
  when testing mipmapping (if you're using mipmaps effectively, see http://www.racer.nl/tutorial/stub_textures.htm)
- Added data/images/texture_stub.dds as a default images for the feature above
- Added dev.fast_fade in racer.ini to allow quick fades while developing
- Added wheel roadnoise filtering to simulate rubber; see http://www.racer.nl/reference/wheels.htm
- Added ai.rc_factor in car.ini to be able to help AI if you give it a high grip_factor as well. See http://www.racer.nl/reference/carphys.htm#ai
- Added ai.cg_factor in car.ini to lower effective CG height to help AI drive faster through turns without flipping.
  See also http://www.racer.nl/reference/carphys.htm#ai
- susp_implicit_integration now set to 0 for explicit physics. It seems stable for F1 cars with tire_damping,
  and the implicit method creates buggy load values in the tires.
- Added ghost.update_if_loaded (defaults to true) to determine whether to update the ghost lap (if you're faster),
  even if you've explicitly loaded one with ghost.load.
- Materials without names in DOF files used to get the exact texture name (ie 'body.tga'). The extension is now cut, so it'd become 'body'.

v0.8.33 (27-05-11)
------------------
- Added 'gfx.show_traffic_lines' option to visualize track grid
- Added 'show traffic' and 'hide traffic' console commands
- Traffic improved to be usable
- Added 'gfx.bestline.source' which determines whether the bestline is derived from AI or the ghostlap
- Added log.buffer_time to be able to change the log buffer size
- RTD logging improved
- DXT3 dds format was flipped incorrectly (bad detection of DXT3 format)
- dbg_controls.throttle/brakes/clutch/steer now work again (if dbg_controls.update=0)
- Multiview camera were slightly off wrt eye position
- Added 'show log' and 'hide log' console commands to show live log details
- Cg dll's updated to v3.0.16
- Added log.database.dir for eternal logging of RTD telemetry files (customer)
- Added ghost.time_scale for slow-motion ghost laps (mostly for testing use)
- Changes in thread creation (handle leak fix)
- Added data/images/fadeout.tga where Racer fades to in menus and other situations
- Added 'show ailines' (and 'hide') to visualize AI liqnes
- Pressing Ctrl-F6 to drive an AI lap now accepts AI cars; they will try to train themselves.
  Use 'ai learn save' to save the trained lap.
  Let it run for quite a number of laps. See http://www.racer.nl/tutorial/newtrack.htm#default_ai
- Added 'ai reset' console command to reset AI velocities to 50 km/h (for AI training purposes)
- Added 'ai scale <v>' console command to scale AI velocities
- Experimental friction circle method added; #6. Is like #3, only without clamping max_slip_len (dbg_car.friction_circle_method). Doesn't seem too viable though.
- Per-wheel tweaking of 'max_slip_len'; an addition to the tire model to constrict large slip lookups
  See http://www.racer.nl/reference/wheels.htm#combinedforces

v0.8.32 (11-02-11)
------------------
- The Lambo differential ratio was a bit low (1.75) - reverted to 2.53.
- Differential could become unstable when the 2 wheels got opposite reaction forces.
- Removed obsolete wheel<n>.friction_road values from data/cars/default/car.ini.
- Replay audio (replay.wav) was empty when recorded.
- Multiplayer fixes (billboard nodes/car names)
- Smoke tweaks (soft particles, improved motion)
- Shadowmapping normal dependency improved for shadow acne reduction

v0.8.31 (14-01-11)
------------------
- Added racer.ini dev.note_ini_unused to check for unread car.ini parameters. See also http://www.racer.nl/tutorial/development.htm
- Color grade shader improved.
- The wind could get stuck in growing infinitely, making particles shoot away after a while
- Differential reworked, since it had a bug (it accepted ratios <1.0).
- Clutch wasn't restored after shifting when autoclutch was 0 in racer.ini and the car.
- Flare colors could dip below 0 (weird colors) when using non-klux flare color values
- Flare default color is now '40 40 40' (was '1 1 1'), see also http://www.racer.nl/tutorial/car_lights.htm
- TrackEd would save splines where lines.paint_end would always be the number of splines, even if you specified less
- TrackEd would overwrite the gfx.sky values in special.ini with generated values (when saving)
- TrackEd still used Newton 2.26, so loading any track would recreate trackcollision.bin. Upgraded to Newton 2.29.
- Flare billboarding now screen-aligned by default; see http://www.racer.nl/tutorial/car_lights.htm#flares
- A multiplayer client pressing Shift-R would get stuck waiting for a race start. Now modified to let Shift-R behave as Shift-F.
- Smoke/grass particles no longer spawn when a wheel is off the ground.

v0.8.30 (06-01-11)
-----------------
- Car selection would crash after a race
- Car flare light blending modified - alpha,1-alpha (was alpha,one)
- Menu images were sometimes dark - was a 'linear vs srgb init' problem
- F1 stats scaling corrected vertically
- standard_xtree_f.cg didn't use 'sunny' parameter
- Made the menu image a bit more transparent to see the slideshow
- Added color grading per track; see http://www.racer.nl/tutorial/colorgrading.htm

v0.8.29 (31-12-10)
-----------------
- Added surface 'forbidden' field (in special.ini); if set to 1 (default=0) it will reset your
  car to the road if you set racer.ini's assist.time_allowed_offroad. See http://www.racer.nl/reference/tracks_surfaces.htm
- Car and track version checking is now updated to '090'. If your track/car doesn't match this
  compatibility info, you'll get a warning in QLOG. All content must be updated!
- Autoclutch RPM now only really hunts for max torque in 1st gear. Other gears are the old way (more subtle).
- 'Ini' tool can now modify references ('ini wheel0.pacejka pacejka_front' for example).
- Clutch mechanism revised since some clutch-controlling subsystems (gearbox/anti-stall/controls)
  would not mix correctly, giving hard jerks when shifting up/down.
- Added dbg_car.max_brake_reduction (=0.2) which determines the minimum brake torque reduction when wheels stop spinning.
- Added car.ini engine.launch_control to specify autoclutch_rpm=0 behavior in 1st gear.
- Added X-tree shaders for nicer X-tree shading, see http://www.racer.nl/tutorial/xtrees.htm
- Cg parameters Kd, Ka, Ke and Ks (diffuse/ambient/emission/specular) expanded to pass RGBA instead of just RGB.
  Not used in the Cg shaders yet though; the use is a bit unclear still.
- Minimap painting was bad when car select screen was called first. Same for mirrors.
- Minimap paint could cause statistics paint to become transparent
- Added 'graph step 0 1 clutch' option to visualize clutch behavior.
- Wheel heat shader gives more light
- View elements get lit at night.
- panorama_f.cg had a syntax error.
- Just loading a controller profile would save it if controllers were missing.
- Newton.dll is back, since that got rid of NaN errors when colliding cars with the track. It's also Newton 2.29 now.
- Added 'timing.pause_every_step' to optionally step through each iteration
- Fixed a bunch of replay sound issues (engine/horn/indicatorLeft/indiRight/hazard). Replays are now definitely
  incompatible with older replays; also may change before v0.9 comes out to fix further things (gearwhine?).
- The NoCG version was giving a lot of QLOG warnings.

v0.8.28 (22-12-10)
-----------------
- Minimap was painted even if no splines were present
- SMD chase cam shadow focus is now on the car, not near the camera itself
- 3rd shadow split distance reduced to 500m for detail. Last split is now faded out.
- Large car CG offset could get some 3D objects culled incorrectly.
- 'Select car' screen gave car.ini errors which were incorrect (due to fast loading of only the first part of car.ini)
- Force feedback was passed to steering wheel even if steering was not done through that wheel
- resolution.render_aspect didn't work; fixed
- Shadowmapping tweaked again for even less Z correction
- Pacejka Player tweaking lambda values wasn't correct for MF5.2 curves
- Backfire 'likeliness' removed until we get better turbo behavior (>v0.9)
- 'grip 0.5' appeared to also reduce engine torque. Fixed (doubly stored data in the code, as if grip=1).
- Only the first 2 splits are blurred
- Autoclutch RPM now slams the clutch harder around the optimal RPM. Works to get at the optimal torque rpm
  when driving off, although it is a bit harsh. Seems ok when I look at g-force graphs though.

v0.8.27 (16-12-10)
-----------------
- move_cg=1 didn't offset correctly: cameras, wipers, generic models, brake calipers, exhausts, dials, helmet, carlights Z/far.
- 'rewind' commands for live rewinding (if RTD logging is on)
- Default font made a little bigger again
- onspeedlimiter.rex gets executed when the speed limiter is turned on.
- Shadowmapping tweaked for director and other cameras.
- Fuel consumption reset to 0 when standing still (was 99.9 L/100km).
- A missing controller (defined in a controls file) would crash Racer
- Using something other than default.ini in racer.ini's ini.controls now works (can be saved)
- 3 profiles available in the controller setup screen.
- The names above the cars were black - fixed with floatingname_*.cg shaders.
- The wheel blur models would show in the car selection garage.
- Added grass smoke particles
- Select car/track screens sped up by loading only part of the car.ini/track.ini files. Assumes 'car' is at the top though (!).
- Selecting a car, then exiting would crash.
- When cars stood still, too much was damped away and the differential wheels would rotate a bit.

v0.8.26 (10-12-10)
-----------------
- Skidmarks tweaked to be more opaque.
- Some bumpshaders modified the normal map's alpha, giving funny reflectiveness issues.
  Resolved using an extra 'common/utils.cg' file with UnpackNormal() and used in all bump shaders.
- Best line tweaked; fades out near the car, green lines are faded. Less intrusive.
- Added Logitech G25 wheel preset file (thanks to QuadCoreMax)
- Modeler can now export a template shader (.shd) file for a loaded model
- Pressing P in replay a few times doesn't mess up the volume (on/off) anymore
- Non-Cg version still created mirror and live track FBO's
- Particle system would crash with some car/track combinations. Seems related to culled single-poly fences.
  The road is culled and single-poly, and really hitting the track seems a problem for Newton.
- Same change for the particle system done to the exhausts (arrays instead of std:vector)
- Not all collide polygons were used for Newton's collision tree. Rebuild trackcollision.bin
- Car selection screen now loads 'garage1' track as the environment. Pitpos0 is the car location.
- Tracked spline selection now accepts Shift-[,] for multi-select (local grip editing)
- Default font made a bit smaller, since everyone's running at least 1024x768 anyway.
- The Ctrl-9 screen could show bad load balance when the nullpoint was outside
  of the front and rear wheel susp<n> locations (extreme CG movement tests).
- CG translation bugfix in the physics; an important one! Use move_cg=1 in racer.ini.
- Ghost car playback didn't work correctly.

v0.8.25 (2-12-10)
-----------------
- Setting racer.ini's textures.compression to 0 had an effect on visuals (no SRGB).
- Ctrl-1 now shows when the force feedback is saturating the wheel (>20 Nm).
- Controller setup screen now removed POV and added horn and wiper controls.
- 'sunny' default was 0, should have been 1.
- standard_bump_f.cg now takes specularity from the normalmap's alpha channel (2nd layer)
- Only 3/4 of the tangents was passed for each objects. White spots and black triangles.
- Baja shader bug fixed (dyn_standard_bump_speca.cg was used)
- ff_damping (in car.ini) was applied to the wrong FF setting (friction instead of damping)
- Small change in spline triangle checking for road surfaces; in Carlswood doing Shift-F
  4 times failed to recognize the underlying spline triangle.
- Y offset in viewelt_f.cg removed; dials were slightly moved up a centimeter.
- Using Cg 3.0 toolkit (was 2.2) from July 2010.
- smCor for the 3rd shadow split slightly increased
- Only angular 3D view elements (dials) were painted correctly. Other texts could appear rotated.
- 'show splines' and all debug lines & points were rendered in HDR mode thus dark. Now drawn in LDR
  after postprocessing to remain visible at all times.
- Live track envmapping anti-aliased the whole main FBO on each side update (ouch). Faster now
  when setting render_once to 0.
- Mirror was anti-aliased twice. Slightly faster now.
- Exposure gradient changed from 0.5 to 0.35 (darker exposures)
- Music & background image handling in all setup screens now supported.
- More live track options in the graphics setup screen.
- Added bestline_v/f.cg for visible rendering of the 'best line' (F3 to toggle bestline)
- Added bestline.tga in data/images as an overlay image (uses alpha channel).
- 'sunny' included in sky shaders (GetSkyColorAtm) for the sun disc
- Undetected controllers would crash the controller setup screen in a few places.
- The lobby was painted incorrectly when using 3 monitors.
- Fixed stack underflow in car selection screen.

v0.8.24 (26-11-10)
------------------
- dyn_standard_bump_reflect_*.cg rewritten to work in world space. Faster & reflection
  is now also affected by the normal map (quite noticable).
- Same for dyn_standard_bump_*.cg; it now also takes the bumpmap's alpha for reflectiveness (specular).
- dyn_standard_bump_speca_v/f_cg was removed; use dyn_standard_bump*.cg instead (which does
  the same thing).
- Controller stick_friction threshold velocity decreased from 20 m/s to 5 m/s (hardcoded).
- Added 'u' to position logging (normalized lateral position on the track)
- Added projected lights intensity: car.ini's lights.light<n>.color (default=4 4 4). In klux. Check
  the Lambo's car.ini.
- async now runs the physics thread full throttle; it must run on a separate core if you want to avoid
  it impact the other threads.
- TrackEd reworked to use the full render engine. Flashing also works again. Stack overflow fixed.
- Wheel setup screen now includes friction/stick friction/damping/inertia sliders.
- Added car.ini car.ff_friction, ff_stickfriction, ff_damping and ff_inertia factors to tune force feedback.
- Also added car.ini car.ff_gain, which modifies the ff_friction etc values directly (default=1.0)
- Added console commands 'ff friction <x>', 'ff stickfriction <x>', 'ff damping <x>' and 'ff inertia <x>'
  for live setting of FF values. Absolute numbers for the controller, not car relative (0..10000).
- Fixed typo in NightSaturate() (no green in B&W color) in hdr.cg
- Tangents now generated in 4 coordinates (was 3). Mirrored UV seams are now being duplicated
  to avoid tangent trouble where UV and mirrored UV parts meet.
- Modeler can now show tangents (T to toggle). It already did normals (N to toggle).
- Tangents were never used as VBO's; now they are (slightly faster).

v0.8.23 (19-11-10)
------------------
- Steering revised quite a bit - the controls for steering left/right now use degrees, instead of being
  normalized. This changed some things inside the physics engine to use rotation more directly.
  The idea: set your controller's lock correctly. With cars that have a steering lock that is smaller
  or equal to that of the controller lock, the steering is direct (1:1). If a car has more lock defined
  in its car.ini, linearity will be applied on the controller's steering output (now in degrees) to let it
  use the full range of the car's steering wheel (linearity=controllerLock/steerLock).
  This all targeted a bit for 900 degrees where you no longer then have to tweak for a lot of cars.
  The controller setup screen is being worked on to visually check the lock (press F5 twice in the setup
  screen to show the 'Wheel' page).
- Controller lock is now saved in the setup screen.
- A new important physics tweak is available: dbg_car.flip_tan. Defaulting to 0 (the v0.8.22 behavior),
  setting it to 1 modifies the slipangle calculations for each wheel to use atan() rather than tan().
  The tan() has been in there for a long time, to stabilize high slipangles. But, tan() makes values
  worse as they grow, instead of flattening them like atan(). So, this needs to be investigated;
  probably it has quite an influence on slipping behavior (with big slipangles).
- bloom_shadows_f.cg accidentally had bloom turned off
- Flare Cg shaders tweaked for nicer looks (alpha changes)
- log file position group added 'lap' (ASCII format)
- Added motion_blur.stencil option - use 1 for the old projected shadows, 0 for shadowmapping (faster)
- Added dev.nvidia_perf option that will try to access nVidia PerfSDK counters if installed.
  Install an instrumented driver for this to work.
- Added a profile debug page (Ctrl-6, may have to press twice for the 2nd page) to see some nVidia performance counters.
  I must say it bluescreened my XP machine more than once, so be careful with instrumented drivers.
- Added envmap.live_track.frames_per_update for more live track mapping control
- Fixed some tough render engine bugs that messed up Z-buffer usage (mirror on made the screen flicker)
- Generic models weren't transforming; fixed.
- Added wiper modes (off/interval/normal/fast), use 'w' to switch to the next mode (see also Ctrl-4 for the current mode)
- dyn_standard_bump_reflect_f.cg now also lets bumpmap alpha affect specular (next to reflectiveness)
- Sky_f.cg and sky_daynight_f.cg modified so clouds=1 now gives the normal effect (and does not raise
  cloud regions to 175 klux!)
- A track's exposure in special.ini is now correctly used as the initial exposure (no more starting
  with white, then coming back to a normal exposure if you set this one to a nice value; like 0.02?)
- Fixed a bug in the fresnel calculation in dyn_standard_bump_reflect_v.cg, which gave bad looking 
  reflections.
- Selecting Bloom/Shadowmapping from the menu gave problems with undefined 'gammaFactor' errors.
- Surround Gaming mode camera aspect fix (director mode)
- A surface's 'grip_decline_driveline' now defaults to 0 (was 1). Fixed issues with grip declining by default.
- Panorama shader's extinction now uses 'scale' Cg parameter instead of hardcoded value (5). Add 'scale' to
  your track.shd file.
- Backfire would sometimes not work. This and a bunch of other uninitialized data fixed.
- 2D elements in the render engine could mess with motion blur blending (OpenGL state cache).
- When bloom was on, the aliased buffer was anti-aliased twice! (for bloom and at postprocessing)
- blur_alpha didn't work; the fullscreen shaders didn't output correct alpha. Using a bit of blur_alpha now
  by default (0.3).
- Auto exposure sampling did an anti-alias pass; now it uses a previously anti-aliased result (faster).
- Dropped config.exe for now - anybody using it actively? Most should be settable ingame.
- Added 'sunny' in special.ini (tracks); 0=totally overcast, 1=super sunny. For ground objects.
  Needs to be added to all fragment objects though. Also adds script cmd 'sunny <x>' to set it live.

v0.8.22 (10-11-10)
------------------
- Added speed limiter (controlled per car); see http://www.racer.nl/tutorial/engine.htm#speedlimiter
- If the speed limiter is on, the rpm_warning variable will 'flash' between 0 and 1. Useful
  for Formula-style cars which indicate it that way.
- Added view var 'speed_limiter' that is 1 if the speed limiter is enabled (default: SPACE key)
- Added rev limiter time per car; see http://www.racer.nl/tutorial/engine.htm#revlimiter
- Added view mapping curve to map input values to output values. This allows for non-linear
  dials, such as km/h gauges, commonly seen on lots of cars. See http://www.racer.nl/tutorial/dials.htm
  and look for the 'map' variable.
- HDR tonemapping now uses the Uncharted 2 method. See http://www.racer.nl/tutorial/hdr.htm
  This looks cleaner (a bit in the GT5 direction). In constants.cg you can add some gamma to increase
  contrast (default=1.0).
- Modified auto exposure filter gain from 0.1 to 0.001 (much slower)
- Decoupled dynamic exposure integration from exposure sampling; made it smoother with less sampling.
- dyn_standard_bump_reflect_f.cg had a bug in its fresnel calculation, resulting in funny reflection
  factors. Fixed.
- Multiplayer collisions using forces/torques instead of SetPosition(). Newton could get seriously
  stuck when doing that (taking >1 second while resolving collisions for a single step).
  Still a bit alpha functionality.
- Flares are now rendering using Cg to be able to give them more light. The 'color' property
  of a flare should now be in klux, so a value of around 'color=40 40 40' should be better.
- TOD editor can now zoom in with Z key (multiple zoom levels); some curves needed precision at the low end.
- TOD exposure curve improved so things also work without auto-exposure.
- standard_mix*.cg shaders changed to put the most important texture in layer0. This was needed since
  projective lighting only uses the first texture to light the scene, and that was a control texture,
  giving funny black & white looks when lit. See http://www.racer.nl/reference/gpushader.htm
- Renderer now caches OpenGL's texenvmode for a small performance gain.
- Added 'reload track' console command.
- Added 'sound reverb <n>' console command. Useful in combination with trigger lines to give certain
  areas of the track reverb sound. See http://www.racer.nl/reference/scripting.htm
- Carlswood sky improved (thanks to Luthobu)

v0.8.21 (29-10-10)
------------------
- Added improved process control for physics.async=1; the original process.cpu_affinity_mask now controls
  the entire process (all threads). 'process.main_thread_affinity_mask' was added to control the main
  thread cores. Additional, when physics.async=1, physics.thread_affinity_mask then controls
  the cores on which the physics thread may run.
- 'cache_geodes' didn't work well when cars used data.ar to store .dof models. Common names like 'body.dof'
  would conflict and different cars could use the same 3D models.
- Shadowmapping splits are now blended to make smoother transitions
- Shadowmapping per-split filtering can be turned on/off using renderer.shadowmapping.blur (0/1)
- renderer.auto_exposure.filter_gain was read incorrectly and thus had no effect (defaulting to 0.05). Fixed.
- Added wheel<n>.tire_damping_lowspeed and tire_damping_threshold for car.ini. Tires physically stiffen
  up when rotating, but at low speed they get a lot of damping. Real life values arond 5.0 for the threshold
  velocity and 2500.0 for tire_damping_lowspeed. See also http://racer.nl/reference/wheels.htm#tireforces
- dev.log_last now set to 0 by default since many people will not know what to do with QLOG anyway.
  For content developers 1 is highly recommended.
- Removed the 'can't create envmap' error message on some DOF files - it isn't useful anymore.
- Switched Newton from v2.22 to v2.24. Small objects seem to have difficulty when colliding with cars.
- Modified dyn_standard_bump_speca_f.cg to accept 'scale' float parameter. This scales the normal map's
  texture coordinates.
- Some large memory leaks fixed inbetween races.
- Renderer could crash in certain mixes of static geometry and custom geometry (particles/skidmarks etc)
- Ini keys with a dot (.) are found and warned about in QLOG. Some cars (F458 test version) had 'fresnel.bias'
  defined directly in the ini file, which won't work (use fresnel { bias=xxx } ).
- View dials now have Cg shaders - data/renderer/shaders/viewelt_*.cg. Needed for klux lighting to avoid
  very dark dials.
- Added bounce_amount and bounce_alpha properties for shaders to allow for lighting to not mix with the
  alpha channel (Carlswood's road incorrectly reflected light; not enough light was reflected/bounced).
  See also http://www.racer.nl/reference/shadereng.htm#matglobal
- Added surface 'grip_decline_driveline' property to allow grip to decrease when you go off the driveline.
  Needs more work though.
- mirrors.texture.lod_factor set to 1.0 to avoid quickly disappearing geometry in the mirror

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-2000):
- 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-2000)
- First release, some turning, throttle etc. with mouse.

END OF LOG
