- Version ID: 3747
- Size: 136.66 MB
- Published: 2025-12-25
Changelog
New features, options and improvements
-
Major fixes:
- Triple screen-related issue with CSP not picking up regular AC configs fixed;
- Timing of rendering and physics threads rewritten, fixing some occasional problems with performance;
- Refraction headlights messing up certain meshes, especially LOD meshes, fixed;
- Graphics adjustments: grooves fix has been reworked to stop breaking things;
- V-sync not working correctly on some configurations fixed.
-
CSP physics:
- Torque reaction edge case fixed;
- More channels in CSP Logger and now variable precision to avoid some channels hitting data type limits;
- Wings app & CSP logger downforce/drag levels corrected (fins were being included due to incorrectly set flag in code, did not affect physics);
- New power steering max torque setup options;
- Fixed blanket temperatures and overrides;
- New
GRIP_MULT_Yintyres.ini; - Rewritten rev limiter to play more nicely with axle flex;
- CSP controller inputs: inputs for missing extras G…T are added, new
DRLinput for daytime running lights; - New
EXT_LOOK = CHECKBOXforsetup.inichanging look of an item into a checkbox (switches betweenMINandMAX); - Hide and disable setup items based on the state of other setup items using
EXT_VISIBLE_WITHandEXT_ENABLED_WITH; - Hide setup tabs by adding
[EXT_TAB_TWEAKS_0] TAB=ALIGNMENT EXT_VISIBLE_WITH=…(examples of queries:EXT_VISIBLE_WITH=WING_1shows a thing if WING_1 is non-zero,EXT_VISIBLE_WITH=WING_1:5is if it equals 5,WING_1≠5is if it’s not,WING_1>5if it’s above 5,WING_1≥5if equals or above 5, complex queries such asEXT_ENABLED_WITH='{ WING_1:5 & ( ! WING_2<3 | SPRING_RATE_LF>10 ) }'are supported as well).
-
Inputs:
- Some keyboard bindings failing entirely with high FPS fixed;
- New binding to toggle high/low means/lights off;
- New binding for toggling DRL;
- New binding to remove smoke;
- Direct input devices initialize with keyboard or gamepad input modes again, in background so loading speed wouldn’t be affected.
-
Audio:
- Gear change events mixup fixed;
- Surface audio not working if
WAVis in uppercase fixed; - Surfaces volume slider is fixed;
- New
Alter wind audiotweak replacing broken audio sample used for slipstreaming with a DSP effect; - New audio tweak playing wind audio from cars nearby;
- Wind volume fades out without atmosphere (for races in outer space);
Silence audio: default value changed to newWhen idling in backgroundfor better compatibility with idle-in-background from DXGI tweaks.
-
DXGI tweaks:
- New tweak activating Win11 efficiency mode when AC is in background, enabled by default;
- New
Consider DXGI’s occluded statetweak (previously, with 0.3 it was always on, now it can be disabled to debug issues if AC suddenly stops rendering sometimes); Smooth resizeoption in DXGI tweaks is enabled by default and improved a bit;- New experimental background idle option pausing rendering instead of limiting FPS (might help with some glitches on certain systems where AC would sometimes refuse to wake up after being Alt+Tab’ed back into);
- New
Adaptive V-syncoption temporarily pausing V-sync if FPS dips below 90% of display refresh rate, to prevent FPS halving; - Options confining cursor to AC window, forcing AC to be a topmost window and forcing focus that can be enabled based on conditions (fullscreen and/or VR, or always);
- Borderless window option (it can still be dragged and resized, even without a visible frame);
- Alternative V-sync implementations in case Windows 11 with its
Variable refresh rateoption blocks regular V-sync from working.
-
Rain FX:
- Rain drops missing on opaque materials with black alpha-channel fixed;
- Baked rain occlusion not applying correctly to skinned meshes fixed;
- Issue with rain puddles generation on low-detailed meshes using actual mesh fixed (now uses noise map again, like it was before, look for
Collecting puddle meshesin logs for more details); - Rain hits and splashes are slightly readjusted to reduce aliasing and better react to rain conditions;
- Rain hits fade nearby to be less distracting with open wheelers;
- Windscreen drops caused by actual water (falling off edges, or from other cars) are smaller;
- Rain splashes adjusted to fix issues with brightness, especially with LCS, now with a bit of a rainbow on a sunny day;
- Rain occlusion misbehaving with water surfaces and trees fixed.
-
Smart Shadows:
- First split reduction when camera is close to a car adjusted, should work smoother and have a more pronounced effect, also affects other splits;
- Shadow biases adjusted to reduce self-shadowing issues with double-sided shadows;
- When the sun is low, sun shadows trajectories update every frame (shadows moving unsmoothly look like crap, so I’m ok with a bit of a performance hit in exchange for that lovely smoothness);
- Shadows with custom shadow matrices disabled no longer break if origin shift is enabled.
-
Grass FX:
- Some local variance for grass shade;
- Scriptable filters that alter FOV no longer mess up grass culling;
TEXTURE_BASE_CHANCE = 0works properly, stops spawning basic grass nearby if normalized chance of basic grass is below 5%;- Customly colorized pieces (if color has red or blue component disabling surface color sync) don’t fade to green with distance.
-
Particles FX:
- Smoke from locked wheels is visible again;
- Smoke particles rendering improved to make things more lively;
- Screen smoke (effect filling screen with smoky effect if camera is within smoke particles) conditions for activation have been fixed;
- Flame and smoke particles from track configs no longer act strange for a first frame after spawning in;
- Fireworks: new behavior option, spawn only if scripts are using fireworks.
-
Skidmarks FX:
- A lot more responsive, can visualize ABS in action;
- Shape for newly spawned piece adjusted;
- Other small improvements.
-
Weather FX:
- Custom MSAA resolve handles LCS properly;
- New
ac.setCameraExposureMultiplier()for Weather FX styles just in case; - BC7 compression for cached clouds texture dropped, instead, number of slices has been lowered from 128 to 32 (simpler animation, but much better static quality, and still only using 45 MB of VRAM);
Increased cloud shadows resolutionoption is enabled by default;- Missing moon, earth and stars textures used by default Weather FX style fixed;
- Default Weather FX style: cloud map parameters adjusted, Extra FX emissives are 3 times brighter with LCS, to closer match the look without LCS, or the way Pure looks.
-
Online extensions:
- Using AI (with
[EXTRA_RULES] ALLOW_AI = 1) automatically activates net-aware AI tweak, which now should work a lot better; - New
[EXTRA_TWEAKS] LOWER_SEND_RATE_FOR_STATIONARY_CARS = 1lowering packets rate for stationary cars (experimental).
- Using AI (with
-
Adjustable car color (used in online, AI flood):
- Alter secondary color, interior color and more (for some of compatible cars);
- Loading of previously selected color fixed;
- Complex textures (above 16×16 px) are colorized instead of filled;
- Lua event
ac.onCarColorChanged()is raised properly.
-
New behavior:
- New tweak replacing AI smoothing with critically damped springs (purely visual, enabled by default);
Fix downshiftoption fixed;- New tweak lowering shifting thresholds on sectors with max speed hint around 120 km/h to stop calm traffic from redlining.
-
Small Tweaks:
- Dark suit tweak reworked to use actual proper skins;
- New tweak disabling shifting preload animation for drift or all cars (by default, disables animation for drift cars).
-
UI:
- IMGUI windows show icons next to titles to make things more distinctive;
- IMGUI windows now should store collapsed and pinned flag across desktops as well;
- Reworked forms saving (
acos.ini), should be compatible but a bit faster and a bit more compact; - Closing modal dialogs when clicking off improved, now ensures to not close it from the same click that opened the dialog.
-
New main menu & pause:
- Car preview in setup menu: a bunch of fixes and shading improvements, LOD A is used at all times;
- Menu movement with a mouse updated, now a lot less restrictive;
- New pause menu can be moved as well, photo mode button animations adjusted;
- Pause menu is always behind other windows (with an option to show apps in pause menu);
- Photo mode in pause menu hides pause menu apps;
- Look for cooldown timer and such updated;
- Sessions selector when viewing lap times and such fixed;
- Other tracks are present in the list of setup categories even if
Skip creating setup foldersoption is enabled; - Mouse wheel scrolling setup tabs is optional, disabled by default;
- Driver model flickering for a frame when leaving setup section fixed;
- Clicking on saved setup brings its name into
Save setupname input, but only if it’s empty or has an autofilled name already; - Slider malfunctioning on some of setup items with
%units fixed.
-
Photo mode app:
- Layout updated to be a bit more compact;
- Edit names of saved points, preview camera positions;
- CPL implementation rewritten to be more accurate and affect lights and digital screens as well (I finally got proper polarizing sunglasses).
-
Advanced chunkenization:
- The algorithm updated to save a bit of memory and run things a bit more efficiency, better handle low FOVs;
- Case with a node in track root storing static meshes (questionable KN5s) now will be chunked properly;
- Meshes with ignorable order now ordered by distant lights layer before being sorted by material;
- Small objects should no longer disappear in close distances.
-
Multiple ghosts:
- Ghost of the first lap should be recorded correctly now;
- The best ghost is mirrored to where AC stored ghosts originally, with extra data stripped, so that existing tools could still see the ghost (optional, enabled by default).
-
Showroom mode:
- Lap time on car digital instruments is stopped;
- Driving camera is no longer loaded or saved;
- Starting camera starts properly;
- Initial lag with car with setup restrictions is fixed;
- Brightness with default Weather FX style fixed.
-
Miscellaneous:
- New experimental KN5 streaming implementation;
- In-game assists editor available online in both old and new menu;
- Options to hide main menu and start the race automatically are visible;
Hyperthreading fixtweak has been disabled by default;- Nice Screenshots: option for LDR samples summation (disables bokeh entirely, not accurate, but just in case);
- Rewinding replay clears out particles;
- Extra FX: volumetric lights should look better with LCS;
- Render Stats: target FPS selector should be working;
- Autopilot (Ctrl+C) shows an icon in the top left corner;
- Shaking gear shifter (
SHIFT_HD) takes pause and slow motion into account; - Windscreen guessing (added to fix strange mods) updated, now uses total mesh area to stop some false positives (if you ever saw a car which would have a mesh inexplicably get
ksWindscreenshader, this thing is to blame, by the way); - New physics experiment allowing CSP to keep loading and not waiting for wall physics meshes to initialize;
- Few physics experiments upgraded to completed;
- Render Stats app pauses when AC is in background;
- CSP should be able to handle displays of varying DPI better;
- Method of detecting display refresh rate updated, now should work more reliably;
- FPS limiter below 5 keeps AC responsive (while waiting for the next frame, AC will keep processing window messages);
- More informative loading screens when loading replays;
- VR tweaks:
Confine cursor to window areaoption moved to DXGI tweaks, moved one no longer active by default; - CSP trees: fake shadows are compatible with origin shift again, billboards switch to higher resolution LOD for accumulation screenshots;
- Flicker of dynamic objects with origin shift fixed;
- Groove meshes (AC making grooves darker as the race goes on): new custom implementation (pretty much the same, but a bit faster and a bit smoother, and should allow to get things compatible with streaming);
- Activating replay online no longer trims final replay recording;
Debug rain occlusionbutton in CSP debug app now affects skinned geometry as well;- Crash handler now checks if crash originated in a different DLL, and warns about it early;
- Fix for some crashes related to autopilot and such, might fix other AI-related issues too;
- Handling of
AC_CFG_PROGRAM_NAMEenvironmental variable fixed; - New tweak for replays shifting car inputs for remote cars online based on their ping;
- Brake Disk FX: carved effect is more noticeable, width increased by 50%;
- Navigators: map rendering should be a bit faster, better compatible with origin shift;
- Occasional crash happening at the start of a race with multiple AI cars fixed;
- License plate generator fixed (last glyph was missing);
- Slightly increased AC process priority to try and outcompete Discord;
- Bounding sphere compute for non-renderable meshes uses a simpler rougher route (they don’t need precise bounding sphere anyway);
- Saving of caching CSP data should be a bit more reliable, fewer chances to end up with useless
.newfiles; - Alt handling to stop beeps with Alt-containing shortcuts redone in a way to keep regular Alt shortcuts working better;
- HTTP flags (used for Lua web API and other web requests from CSP) updated, should speed things up, especially on Windows 10+;
Flatten nodesoption removed;- Size of custom gear label in the gear app fixed;
- Rare crash (that looks like another compiler error) related to track lines API fixed;
- Developer option to produce detailed crash reports (taking more space);
- Timezone database updated to 2025 (notable changes: DST in Brazil and Mexico have abolished);
- Additional car icons in the top left corner fixed;
- Threadpools garbage collector should be a bit less intense;
Foreground checkoption hidden, checks area coverage by default;- Logging for CSP attempts of detecting optimal display frequency;
- Saving should be a bit more resilient;
- Some instabilities related to GPU processing fixed.
-
Car & track configs:
- New
[SHADER_REPLACEMENT_…] STICKERS_FIX=1for stickers mesh to overlay any mesh below it (should work the best withDEPTH_MODE = LESSEQUAL); - Track audio:
RELATIVEaccounts for the entire transform, not just for the local offset relative to parent; - New
AVERAGE_NORMAL_MIXparameter for Extra FX emissives that might help in some extra difficult cases; - New
INPUT = DRLfor car instruments,BIND_TO_DRLfor car lights,FALLBACK_DRL_COLORfor custom emissives (by default,OFF_COLORworks only if daytime running lights are active, but ifFALLBACK_DRL_COLORis set,OFF_COLORis applied at all times), keyboard binding to toggle DRL manually; - New flag for extra car animations (
[ANIMATION_…]): setAB_ANIMATION = 1and animation will go from 0% to 50% on activation, from 50% to 100% on deactivation, and then loop back to 0%; - New
[DATA] DI_0_ALPHA = <0.5>, [DIRECT]for adjusting alpha of digital instruments (for now, only v2 texts); - New
[BASIC] DISABLE_SHIFTING_ANIMATIONS_WITH_AUTOSHIFTER = 1for cars that use automatic shifter as a form of automated gearbox (not recommended, proper way of doing automatic gearbox is also available now); - CSP animated wipers are loaded last-to-first, fixing compatibility with old broken mods animating the same mesh multiple times (at around 0.2.8 times, a mesh would actually be animated twice at once causing some problems, later it was fixed so that already used meshes would be excluded, but it broke some mods, now it should work and not have a conflict);
- Animated wipers tool: better support for UI scale;
- Car settings
ALLOW_INTERIOR_SSAOandALLOW_INTERIOR_SSGIhave been removed (they weren’t affecting HBAO+ and ASSAO anyway, and fixing that would surely annoy a lot of people); - Track configs:
[VAO] FORCE_APPLY=1to apply VAO tweaks to newer VAO patches (v4 and above); - New
[SPECTATORS] ALLOW_DYNAMIC=0/1parameter for track configs overridingDynamic spectators amountoption in track adjustments; - New
ownMaterial:yandinserted:y(for nodes and meshes from[MODEL_REPLACEMENT_…]) properties for scene queries; - Material adjustments change actual material values, not just the ones mirrored to GPU (solves some issues with them not applying correctly in some cases);
- Default light pollution tint for tracks is no longer zeroes (intensity is still 0 though, this just simplifies configuration a bit);
- New
DISTANT_LAYER_FADE_ATandDISTANT_LAYER_FADE_SMOOTHfor track lights used when distant layer is active; - Updating track distant lights config no longer triggers full reload;
- Track shader replacements are loaded only once at the start (previously, they were loaded for each KN5 again and again);
- Trees surface alignment is forced to recompute if one of tree meshes doesn’t have data cached (and not if cache contains data for a mesh that isn’t present like it was before);
- Objects Inspector shows static status of track meshes (static meshes are faster to draw).
- New
Lua
-
Common API:
- New car state fields:
.isAIUsingRainTyres(fix for now hidden.aiRainTyreswith a wrong type),.isAIGoingToPits,.aiLapsLeft; ac.uniqueMachineKey()is de-deprecated (now, CSP computes the key at launch, so there is no need to wait for it);- A bug with some of car and sim states not being filled in correctly at the start of the game fixed;
math.isnan()shouldn’t misbehave anymore;ac.ControlButton:setDisabled()should be compatible with the hold mode flag;- New global variable
__monitoredavailable to all scripts: iftrue, script tab in Lua Debug app is opened.
- New car state fields:
-
UI API:
- New
ui.windowTitleWidth()function; - Unbinding all of
ac.ControlButton():control()inputs removes the section entirely (shouldn’t affect regular AC bindings, only the custom ones); ui.modalPopup(),ui.modalPrompt(): proper arguments for automatic closing, default tofalsefixing recent regression;- Extra car icons (
ui.drawCarIcon()): size with UI scale and positioning with fuel icon are fixed.
- New
-
I/O:
- New
os.loadDLL()function just in case; io.scanDir(): missing file attributes, such as.isArchive, are fixed.
- New
-
ui.GIFPlayer():- Animated GIFs: better support for certain types of loops;
- New methods for
ui.GIFPlayer()for rewinding, pausing and resuming playback; - WEBP support improved;
- State sharing between scripts (use
:rewind()to detach a player from others); - If a player is assigned as a texture using Scene API, it keeps working after being GC-ed;
- GIFs no longer flicker if game FPS is low;
- Animated textures (GIF and WEBP) can be used naively in both UI API and with skins/shader replacements (could be a faster alternative to using
ui.MediaPlayerfor everything).
-
Gameplay API:
- New
ac.setDriverShiftAnimationPreloadThreshold()in Gameplay API; ac.applyContentConfig(): option to set a key for localized config updates, more track features can be altered.
- New
-
Scene API:
- New
:blendAnimation()for Scene API allowing to mix few animations together (plus, AC animation compute has been rewritten to smooth and streamline things); - Geometry shots of
sceneRoot:yescalled frequently keep nearby geometry and cars from being unloaded or switched to lower LODs (now, OBS cameras can render things far away more reliably); - New
:setGrass()for geometry shots to include grass from Grass FX.
- New
-
Physics API:
physics.addTrackSurface()no longer uses Embree, instead live track surfaces are handled by ODE to improve editing performance in exchange for tyres raycasting performance (as long as new surfaces are somewhat low-poly, it should be fast enough, and if they’re not low-poly, it’s not going to work all that well regardless), should help with instability as well;- Function
physics.setAIPitStopRequeststops AC from telling AIs to go to pits for about 100 ms if called withfalse; - New
physics.setAILapsToComplete()allowing to override internal counter AC AIs have telling them when to stop racing and go back to pits.
-
Car scripts:
ac.setGearLabel()got a parameter disabling shifting animations and audio;ac.AudioEvent()now can use syntax likecars/:own/engine_intto create an audio event without specifying car ID explicitly (so[AUDIO_REDIRECT]could work).
-
Car physics scripts:
- New
ac.extendCarState()allowing to save and load extra data from car states (used by apps such as TimeShift); ac.readDataFile()in car physics scripts can actually access car data with relative paths if car data is packed (with the previous fix, it would only work if path is absolute);- New
ac.showNotification()allowing to show warnings similar to downshift warning (more types are coming soon, let me know if there is something you need); - New
ac.setGearsGrinding(): option to add gearbox damage; - New
ac.replaceClutch()allowing to define a custom clutch implementation; ac.setExtraMass(): arguments to specify damping, stiffness and key (allows to move the mass around);- New
ac.CarPhysicsValueID.ForcedAutoclutchallowing to fully disable autoclutch, even if selected input method tries to keep it enabled; - New
ac.accessCarPhysics().targetGearallowing to track shifting process; - New
ac.CarPhysicsValueID.DrivetrainOpenThreshold,ac.CarPhysicsValueID.DrivetrainClutchOverride,ac.CarPhysicsValueID.DrivetrainDriveVelocityMult,ac.CarPhysicsValueID.DrivetrainEngagedGear; __dirnameof car physics scripts from packed data now points to/datafolder, matching behavior of unpacked scripts (I hope nobody was using it to check if car data is packed, because that was a bug).
- New
-
Libraries:
- New
shared/physics/automatic-transmissionand three more to simplify setting up automatic and automated manual transmissions; - New
shared/ui/replaylibrary to simplify building a custom replay UI; - New
shared/sim/dilibrary for altering some properties ofdigital_instruments.inilive; - New
shared/sim/eventslibrary for rare events (currently, allows Weather FX styles to listen to light pollution configuration changes); - New
shared/utils/steamvrlibrary for some Steam VR extras; - New
ghost.stripRecordMetadata()for getting rid of extra 0.3.0+ ghost data; shared/ui/components: functions for the new assists editor;- Libraries
shared/are loaded from internal storage to ensure integrity of scripts using them, actual files on a disk are now for documentation purposes only.
- New
-
Other changes and fixes:
- New experimental
ac.getSteerJointFeedback()for FFB scripts; - Precomputed Lua bytecode uses unique machine key for validation, cache files generated on one PC won’t work on another anymore;
- Some crashes related to Lua resource management, causing, for example, crashes on restarts for some apps using
ui.GIFPlayerto play static GIFs, fixed.
- New experimental