Skip to content

0.3.0-preview440

  • Version ID: 3973
  • Size: 137.55 MB
  • Published: 2026-06-04
  • 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;
  • Revenant mode (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 rewind after 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;
  • 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 sectors tweak 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 devices allowing 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_ALT fixed, new __EXT_LOOK_AXIS for looking around (CM support is coming soon);
    • New LUT_LINEAR flag for axes in controls.ini switching LUTs to linear interpolation mode (good for setting up deadzones);
    • Mobile script of Gamepad FX fixed;
  • Experiments:

    • New non-physics experiment: adaptive smoothing for remote cars, alters remote factor live to adapt to packets rate;
    • New Direct media access non-physics experiment accessing currenly playing audio from CSP directly, faster and with more details;
    • New Custom FFB initialization non-physics experiment (disabled by default);
    • Clamp car mesh colliders experiment is enabled by default;
    • Repair wheel joints has 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=1 to race.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;
  • CSP Debug:

    • Sliders to adjust temperature (.debugAware() from shared/sim/weather has been updated as well);
    • App no longer unloads automatically when closed;
    • Wind speed slider got a label;
  • 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 checks option 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 FMOD is 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 low depth) 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 pits no 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_RESOURCES option fixed, previously would only work on CSP version change (or with cfg/extension/state/version.ini removed);
    • 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);
  • Cars:

    • New [BASIC] REMOVE_STATIC_STEER_ANIMATION_SETS=1 stopping AC from shifting static nodes with steer.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=1 for [RENDERING_CAMERA_…] for drawing the scene in LDR color space, allowing to bind results to a texture or drawing via Lua directly;
    • GENERATE_MIPS of [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_…]: new LOOK_AT_NORMALS mode (the same parameters as LOOK_AT);
    • Nodes from [REFLECTIONS_FX] INTERIOR_NODES are included into interior masking;
    • Default value for lights’ DISTANT_GLARE is 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;
  • Tracks:

    • New [SURFACE_WAV_OVERRIDE_…] KEY=… WAV=… allowing to override track surface audio with a CSP track config;
    • [GRASS_FX_ADJUSTMENT_…] failing to load TEXTURE fixed, new ASYNC=1 option for loading texture only when needed;
    • New DYNAMIC_CABLES_WIND_MULT to set wind intensity on cables;
  • Common API:

    • ac.loadSoundbank() can load GUIDs.txt from a string;
    • New ac.getCarExtraSwitchState();
    • New ac.getCarPhysics().wheels[].driveTorque field 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.storage now 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 .surfaceOriginIndex field in wheels of ac.getCar(), require('shared/sim/surfaces').raycastDetailed() got a surface.originFilename field (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 flags parameter for ui.addSettings();
    • Methods :memoryFootprint() for extra canvas and geometry shot;
    • Library shared/ui/virtualizing: scroll snapping no longer overrides mouse wheel;
  • 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) and physics.RigidBody can 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.SimplifiedYEBIS using the same pass as virtual mirror;
  • I/O:

    • New os.hostNamedPipe() for creating a named pipe as an alternative method of IPC;
    • New os.openSerialPort() and os.listSerialPortsAsync() to talk to Arduinos and other COM-connected devices;
  • 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;
  • 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, .surfacePitlane and .surfaceValidTrack fields for wheels of ac.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.TCThrottleOverride fixed, now actually enables TC if 1;
    • New ac.computeEngineStep() computing engine torque for given inputs;
    • CUSTOM_SCRIPT_ITEM: use DEFAULT = ini_file_name.ini/SECTION/VALUE[/DEFAULT] to refer to a value from a different INI file instead of hardcoding a default value, or DEFAULT = SETUP_INI_SECTION[/DEFAULT] to borrow a default value from a different section of setup.ini;
    • ac.accessCarPhysics().brake reporting 0 in pits fixed;
    • New gasForAudio key for ac.overrideCarState();
    • New functions ac.configureSetupItems() and ac.configureSetupTabs() for car physics and data render scripts;
  • 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::motion and dynamic::efx::stencil;
  • Weather FX:

    • New ac.doYEBISPostProcessing() for running YEBIS in ac.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);
  • 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_FLOOD for New Modes;
    • New [CORE] PRELOAD_SQLITE=1 flag 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;