0.3.0-preview440
- Version ID: 3973
- Size: 137.55 MB
- Published: 2026-06-04
Changelog
Section titled “Changelog”New features, options and improvements
Section titled “New features, options and improvements”-
CSP physics:
- Maxwell hysteresis for tires;
- Some ABS code updates;
- Revised engine delays (now functional);
- Fixed bug with engine air density sensitivity;
- Asymmetrical setup options for cosmic;
- Aero/ride height lookups fixed;
- CSP logger updates;
-
Revenantmode (pretty much rewritten from scratch by @Neoned):- Alt-tab drift compensator: replaced per-tick threshold with a running-balance accumulator; persists across recording, idle, and playback phases;
- Mid-playback alt-tab no longer truncates the ghost;
- Ghost resumes at the exact paused frame after exiting AC’s built-in replay (was teleporting to recording start);
- Fixed
Recording lost due to rewindafter replay-exit cycle; - Added replay-exit grace window for car teleports and a post-replay settle window for the compensator to filter AC’s transient session-clock snaps;
- KO threshold in breakable mode now uses horizontal magnitude of relative velocity — kerb-bounce vertical spikes can no longer false-trigger KOs;
- Removed directional bias on angled contacts, clipping the rear corner now KOs at the same closing speed as a head-on hit;
-
Upscalers:
- DLSS updated to 310.6.0, better support for user-provided DLLs;
- OptiScaler updated to 0.9.2, should work better with CSP approach;
- DLSS, XeSS and SGSR2: option to use FFX CAS for sharpening instead of NIS;
- New driver tags are compatible with DLSS and other advanced upscalers;
-
Audio:
- Bodywork audio logic rewritten, takes wheels load into account, works in replays (can be switched off in
dev.ini); - Skids and surface audio slowly fades in after the loading, to prevent audio glitches;
- Collision audio mixup fixed;
- Issue with skid audio playing for a frame when rain starts with default Weather FX style fixed;
- Bodywork audio logic rewritten, takes wheels load into account, works in replays (can be switched off in
-
New AI Behavior:
- A small issue with how AIs are using turbo in qualify sessions on some tracks fixed;
- Tweak for custom lateral grip estimation, enabled by default, with an option to account for brake-related weight distribution shift;
- Tweak for AI grip multiplier smoothing things out and cutting multiplier off if it seems like the car is at a risk of tipping over;
- Tweak disabling stability assist unless car is sliding;
Adjust shifting for slow sectorstweak applies in pitlane at all times;- AI Flood: fix for car trajectories after teleporting;
- Custom AI: a named pipe allowing to evaluate lateral grip live;
-
Controls:
- New tweak
Monitor connected devicesallowing AC to detect controllers connected live; - That old bug where sometimes some random buttons would change camera is finally fixed;
- A bug with Gamepad FX and mouse steering scripts fixed (recent regression);
- Extra input axis
__EXT_CLUTCH_ALTfixed, new__EXT_LOOK_AXISfor looking around (CM support is coming soon); - New
LUT_LINEARflag for axes incontrols.iniswitching LUTs to linear interpolation mode (good for setting up deadzones); - Mobile script of Gamepad FX fixed;
- New tweak
-
Experiments:
- New non-physics experiment: adaptive smoothing for remote cars, alters remote factor live to adapt to packets rate;
- New
Direct media accessnon-physics experiment accessing currenly playing audio from CSP directly, faster and with more details; - New
Custom FFB initializationnon-physics experiment (disabled by default); Clamp car mesh collidersexperiment is enabled by default;Repair wheel jointshas been updated and is moved back to experiments, disabled by default to be tested properly;
-
New main menu:
- Option to load last setup automatically;
- Change spawn set in an offline practice mode;
- A bit of extra details about selected car;
- Support for setup items sharing the same place with only one visible and others hidden;
-
Compatibility with Suspension Test Track:
- Cars are floating in the air on teleporting to pits and no longer keep teleporting in main menu;
- Tyres FX no longer malfunctions;
-
Showroom mode:
- Run showroom on regular tracks by adding
[__SHOWROOM_MODE] ACTIVE=1torace.ini(some support for CM is coming soon); - Press Page Up/Page Down in CSP showroom to switch car skins, Alt+~ to switch the car;
- Driver tags no longer show up in the showroom mode;
- Run showroom on regular tracks by adding
-
CSP Debug:
- Sliders to adjust temperature (
.debugAware()fromshared/sim/weatherhas been updated as well); - App no longer unloads automatically when closed;
- Wind speed slider got a label;
- Sliders to adjust temperature (
-
Miscellaneous:
- With sun shadows disabled, CSP will use VAO for fallback shadows;
- Sparks updated, brighter and with tweaked motion, few sparks from overheating brakes;
- DWrite fonts rendering (used by UI API and original AC) is optimized a bit more;
Accelerate mesh-ray checksoption updated, optimized and enabled by default if there is enough memory;- Tasks switcher (Ctrl+Tab): windows previews updated to be a bit more efficient, better handle windows changing sizes;
- CSP better communicates if a window user tries to open is being redirected away;
Redirect media players audio through FMODis fixed and back, still disabled by default for now;
-
Rendering fixes:
- Small improvements to trees billboards, shading of trees without LCS fixed;
- TAA is adjusted to be a bit less flickery, especially around flags;
- Grass FX:
COLOR_SHIFT_…no longer messes up grass color nearby; - Volumetric fog (and other effects using
render.fullscreenPass()with lowdepth) work better with super-low FOV views; - Brake Disc FX: glow is applied to a mesh in LOD B, if any, as well;
- Cables AA improved, better supporting different meshes, cables are slogging a bit based on ambient temperature;
- Ash particles shading adjusted;
- Space look: full eclipse projection is fixed;
- When drawing stars, CSP takes atmospheric refraction into account;
- Fake car shadows are better positioned for cars with only three wheels, with one wheel in the front;
- Simplified YEBIS step (used for virtual mirrors with some upscalers, for example) is improved, now syncing with autoexposure and supporting all built-in tonemap functions;
- Fake cars shadows: frustum culling adjusted;
-
Other fixes:
Awake physics in pitsno longer applies outside of pits (previously, it was active as long as setup menu was opened);- Non-finite ride height estimation in pits with cosmic suspension fixed;
- Original chase camera no longer jumps around when car flips;
- Saving and loading of opened apps updated, should be more reliable;
- Saving changes in PP Filters Editor multiple times per session fixed;
- A bunch of fixes for drivers heads movement;
- Removal of old autosaved replays rewritten to prevent removing unnecessary files, remove files based on creation date;
- Small fixes for graphs of Render Stats app;
- CSP is once again compatible with cars with
'and alike in their folder names (regression happened somewhere in late 0.2 or 0.3); - Zeroing shared memory files should be more reliable;
- A rare replay-related crash should be fixed;
- Car ground plane computation improved to better handle uneven surfaces;
- Cars data caching improved;
[DEV] EXTRACT_RESOURCESoption fixed, previously would only work on CSP version change (or withcfg/extension/state/version.iniremoved);- AC logo and help apps are always hidden, even if they’re visible in
acos.ini; - When checking if AC window is covered, CSP takes into account if it’s partially outside of working space;
- CSP warns about badly saved DDS textures with
[TextureLoader]prefix in logs; - New DDS loader now supports incorrect block-compressed textures (BC6/BC7 with sizes not divisible by 4), adds some padding (only way for it to work);
Configs
Section titled “Configs”-
Cars:
- New
[BASIC] REMOVE_STATIC_STEER_ANIMATION_SETS=1stopping AC from shifting static nodes withsteer.ksanim(fix for some older mods); - New
[FRONT/REAR] IGNITION_TEMPERATURE=…parameter for car configs for tuning visual tyre flames effect (default temperature is 350 °C), particles adjusted; - New
LDR_OUTPUT=1for[RENDERING_CAMERA_…]for drawing the scene in LDR color space, allowing to bind results to a texture or drawing via Lua directly; GENERATE_MIPSof[TEXTURE_PREPROCESSING_…]should be working now;- CSP no longer wastes time updating unused
[TEXTURE_PREPROCESSING_…](turns out, that’s a thing with some mods); [MESH_SPLIT_…]: newLOOK_AT_NORMALSmode (the same parameters asLOOK_AT);- Nodes from
[REFLECTIONS_FX] INTERIOR_NODESare included into interior masking; - Default value for lights’
DISTANT_GLAREis 0 for open wheelers, should solve some problems with some mods; - Guessing for default brake disks type adjusted to include more ceramic brakes;
- Crashes when editing car configs with dynamic textures fixed;
- New
-
Tracks:
- New
[SURFACE_WAV_OVERRIDE_…] KEY=… WAV=…allowing to override track surface audio with a CSP track config; [GRASS_FX_ADJUSTMENT_…]failing to loadTEXTUREfixed, newASYNC=1option for loading texture only when needed;- New
DYNAMIC_CABLES_WIND_MULTto set wind intensity on cables;
- New
Lua & Python
Section titled “Lua & Python”-
Common API:
ac.loadSoundbank()can loadGUIDs.txtfrom a string;- New
ac.getCarExtraSwitchState(); - New
ac.getCarPhysics().wheels[].driveTorquefield storing torque post-drivetrain; - New
require('shared/sim/cars').getTyreType()to get the type of a tyres set; - New function
require('shared/utils/oswindow').monitors()returning list of available monitors; - Some setup-related functions, such as
ac.getSetupSpinners()are available to all types of scripts now; - Issues with
web.API failing to handle redirects fixed (recent regression); ac.CarAudioTweak.setVolume()/.setPitch()/.setDistanceMin()/.setDistanceMax()/.setTransform()now blocks values set via car config;ac.storagenow can handle binary data (strings with zeroes) as well;shared/utils/playing: new functions to control playback in detail, such as.seek()or.setShuffle()(require that new experiment with direct media control);ac.mediaPlayPause()and other two use direct media control if available (also with that new option);- New
.surfaceOriginIndexfield in wheels ofac.getCar(),require('shared/sim/surfaces').raycastDetailed()got asurface.originFilenamefield (I realized section name of a surface definition is not unique);
-
UI:
- New
ui.html()function for rendering some basic HTML (doesn’t support most of the features, uses optimized version of litehtml library); - New
ui.markdown()function for rendering Markdown text; - Calling
ui.addSettings()from car scripts of secondary car won’t have an effect anymore; - UI API, DWrite fonts: measuring no longer ignores trailing spaces;
- Layout with
ui.setNextItemIcon(ui.Icons.File)used in front of items without a label fixed; - New
flagsparameter forui.addSettings(); - Methods
:memoryFootprint()for extra canvas and geometry shot; - Library
shared/ui/virtualizing: scroll snapping no longer overrides mouse wheel;
- New
-
Scene API:
- New
ac.SceneReference:assignMaterialFrom()method for copying existing materials; - New
ac.GeometryShot:overrideReflectionCubemap()method for recreating the style of car previews in the main menu; ac.SceneReference:raycast(): UV and normal compute for non-default culling fixed;:loadKN5()(with other three) andphysics.RigidBodycan load binary KN5 data instead of KN5 filename;- Generally, things should be a bit more stable if scripts are creating and deleting geometry;
:resetSkin()called for scene references of parent nodes rather than individual meshes fixed;- Conflict between emissives and applying live shader replacements fixed;
- New
render.AntialiasingMode.SimplifiedYEBISusing the same pass as virtual mirror;
- New
-
I/O:
- New
os.hostNamedPipe()for creating a named pipe as an alternative method of IPC; - New
os.openSerialPort()andos.listSerialPortsAsync()to talk to Arduinos and other COM-connected devices;
- New
-
Gameplay API:
- Freer Camera settings can be adjusted live with
ac.applyLiveConfigEdit(); - Behavior of
ac.grabCamera()improved, now it can be used to get a camera to follow a car; :setRedirectLayer(): arguments for clipping the region or using MIPs;
- Freer Camera settings can be adjusted live with
-
Physics API:
physics.raycastTrack(),physics.forceUser…and overriding steering functions are available to background and physics workers, new parameters, updated docs;physics.addTrackSurface(): rendering of debug outline fixed;- Physics workers spawned by online scripts can use physics API;
-
Car physics scripts:
- New
ac.loadRenderThreadModule()for car physics scripts allowing to load a render car script from car data (unlike other scripts, it can create new setup tabs and set setup items); - New
.pressureDynamic,.pressureStatic,.surfaceGrip,.surfacePitlaneand.surfaceValidTrackfields for wheels ofac.accessCarPhysics(); - New values to override live:
ac.CarPhysicsValueID.BrakeTorque;ac.CarPhysicsValueID.HandbrakeTorque;ac.CarPhysicsValueID.BrakeFrontBias;ac.CarPhysicsValueID.SteerRatio;ac.CarPhysicsValueID.LinearSteerRodRatio;ac.CarPhysicsValueID.EngineLimiterCycles;ac.CarPhysicsValueID.BlockOriginalTC;ac.CarPhysicsValueID.TyresVirtualKm;ac.CarPhysicsValueID.TyresDirtLevel;ac.CarPhysicsValueID.TyresSlipRatio;
ac.CarPhysicsValueID.TCThrottleOverridefixed, now actually enables TC if 1;- New
ac.computeEngineStep()computing engine torque for given inputs; CUSTOM_SCRIPT_ITEM: useDEFAULT = ini_file_name.ini/SECTION/VALUE[/DEFAULT]to refer to a value from a different INI file instead of hardcoding a default value, orDEFAULT = SETUP_INI_SECTION[/DEFAULT]to borrow a default value from a different section ofsetup.ini;ac.accessCarPhysics().brakereporting 0 in pits fixed;- New
gasForAudiokey forac.overrideCarState(); - New functions
ac.configureSetupItems()andac.configureSetupTabs()for car physics and data render scripts;
- New
-
Scriptable post-processing filters:
- Custom pixel density works with upscaling disabled;
- New
ac.getSubpixelOffset()returning subpixel offset from TAA or advanced upscalers; - New
dynamic::efx::normals,dynamic::efx::motionanddynamic::efx::stencil;
-
Weather FX:
- New
ac.doYEBISPostProcessing()for running YEBIS inac.onPostProcessing(), allowing to do extra postprocessing at LDR stage (for now, without VR support); - Third argument for
ac.setHDRToLDRConversionHints()guiding simplified post-processing step (used for virtual mirrors, for example);
- New
-
Miscellaneous:
- New
ac.getDesiredLookDirection()for chase camera scripts; ac.loadCarState()should be available to online scripts;- Regular car scripts are loading in background to prevent freezes;
- A flag
DISALLOW_AI_FLOODfor New Modes; - New
[CORE] PRELOAD_SQLITE=1flag for Lua apps for preloading SQLite module early; - Lua Debug app: button to copy last error, better support for binary data;
shared/sim/altonline: a couple of fixes for documentation;
- New