Layout and logic are similar to original menu to keep things familiar;
Access to settings allowing to style in-game UI or, for example, reset do not show again checkboxes;
A couple of tabs are still missing and will be added later;
Reset car setup to default on per-tab basis;
Press Ctrl+1/2/3 to quickly select a tab;
Click on a car preview in setup for a small jump (in offline sessions only);
New non-physical experiments (available online; once tested enough, won’t be optional anymore):
Improved modifiers keys processing (releasing a modifier before the main button no longer triggers a binding with that button without a modifier);
High beams activating without low beams when switch is held, or for AC lights flash button for cars without flashing lights;
Alt+Enter with DXGI flip model disabled restores old window position and style (disabled by default);
Ghost:
Support for A/B tracks;
Look improved, especially look with LCS;
Refraction limit increased to 200%;
Web-browser engine updated to v132:
Scripts with I/O access can allow websites to access webcams, microphones, etc (permissions API);
Geo__cpLocation data can be spoofed;
New more efficient CEF backend loop implementation, unnecessary options are hidden, software rendering option is fully functional and can help for browsers to work in edge cases;
New adblock logic with support for hosts lists and more, should be a bit more decent at blocking ads on YouTube for a test;
WebBrowser app updated (should still be compatible with old CSP);
Android Auto:
YouTube app updated, from now on should be fixable without updating entire CSP;
Browser spoofs GPS (for coordinates to be aligned, new app from App Shelf can help to configure coordinates, heading angle and timezone with ≈1 m precision);
Default Weather FX style:
Blue nights option replaced with Mood boost option (try Colorful for vibrant sunsets);
Grass look changes with humidity;
Overcast weather fixed;
Scene brightness and adaptation rewritten to be smoother and more consistent;
Rain audio updated, works better for open wheelers or overly intense rain;
YEBIS replacement: sun rays updated, bloom no longer skips last steps with lower-than-the-best quality (looked horrible and wasn’t saving much time at all);
Few fixes for sun rays with LCS to make sun glare a bit more intense;
LCS is no longer available without enabled post-processing;
New trees:
Billboards generation reworked;
Diffuse textures get their MIPs recreated to be more A2C-friendly;
Edges dithering is disabled unless A2C option in track adjustments is active;
New option to disable crossfade dithering when switching between LODs;
Track adjustments:
Option to hide pit crews entirely;
Option to hide pit crews for AIs;
Option to add variance to lollipop guys of pit crews, to break the sameness up a little;
CSP Debug app:
Dragging, teleporting and such are applied to the selected car instead of the first one;
A line showing if FFB Tweaks module is altering FFB at all or not;
Option to show outlines for Cosmic suspension bodies;
Option to show wheel dimensions;
VR Tweaks:
Option to keep start camera in VR (works a bit differently, 1.65 m off the ground (can be adjusted), ignores custom camera trajectories);
Option to use horizon lock for exterior cameras;
Audio:
Option to use the actual throttle value for audio is enabled by default;
On servers requiring this update or newer, gas cutoff (used by Use actual throttle option) is synced as well;
Handbrake audio (applies to very few cars by default, can be controlled with car config);
Turn signals audio (applies to cars with turn signals only by default);
New super experimental audio tweak adding spacial reverb (based on depth of reflections cubemap), disabled by default;
New (temporary) option in general.ini force-disabling any CSP interaction with second reverb channel at the core level (just in case, to track down some strange audio issues);
Another option fully disabling original AC reverb;
Render stats app measures time updating cars audio takes (per-car);
OpenRGB integration (experimental, might not work);
New bindings:
10 more car switches;
Cancel out turn signals;
Engine cutoff (for something like those buttons on sequential shifters, requires a car supporting manual cutoff);
Voting;
Voting state shows up in the new chat, option to hide messages on top;
A new menu item in drivers’ context menus in online races to start a vote to kick them out;
Alternate FFB script is fixed, with a new parameter to adjust behavior on wheels with gears if needed;
DXGI flip model is enabled by default, allow tearing option renamed and is enabled by default, but no longer available with vertical syncronization in AC video settings enabled;
If HDR is not available, CSP won’t try to use it, but will show a warning (can be disabled in DXGI Tweaks);
Freer camera: option to disable DOF for free camera unless photo app is opened (enabled by default);
Neck FX show helmet option: configs are moved to a separate file, a bunch more models are added (thanks to Alessandro from ASR Formula);
Physics API is accessible in offline sessions with AIs as well (excluding special sessions and new modes);
Grass FX: shading updated, backlit and saturation are adjustable by Weather FX style;
Sharp interior shadows are a slider, not a checkbox, so a middle ground can be chosen;
OBS integration: a view for every F3 camera set;
Physics experiment EXTRA_CONTACT_POINTS adding extra lateral contant rays temporary removed because it was breaking some cars, causing them to wobble side-to-side;
The physics experiment fixing surface types have been tested enough, so it has been promoted to always active;
It’s no longer possible to disable Fake Shadows FX or Reflections FX (fixes issues with Extra FX, rain, PBR, etc.);
New option in Graphics Adjustments disabling per-frame cars limit;
Driver tooltips: ballast and restrictor, server entry slot index, mark if car is in pits, in pitlane, or finished the race;
Use interior audio everywhere option takes priority over exterior audio;
Generic flag is used if nationality flag is missing;
When storing changed AC window position and size, CSP also stores window’s maximized state;
Ghost shadows are optional and disabled by default;
If car moves too far from pits with main menu open, it’ll be teleported back, just in case;
Added cphys ABS (similar to cphys TC in features but more complex and flexible, docs are coming soon);
CSP Logger:
Added gear ratio channel;
Brake torque and pressure channels now include ABS intervention;
Added brake line pressures pre-ABS (front and rear);
Added ERS and KERS state of charge (SoC) channels;
Added electric torque (per wheel) channels;
Added lap progression channel (shows percentage of the way through lap based on AI line);
Added ABS Setting channel;
Added many ABS debug channels (cphys ABS only);
Slip Ratio channels are clamped to −1000–1000 range to avoid data precision losses when values approach infinity after dividing by zero velocity;
Removed test channels left over from initial development;
Axle torque channels have correct indices and also more appropriately show axle torque vs. previously showing something more along the lines of feedback torque;
First lap in hotlap mode logs correctly;
Fixed units of rev limiter channel;
G-force channels all clamped to avoid bit precision issues with teleports or huge crashes;
Added brake balance bar position channel for cars using MCs;
Tightened up channels displayed for encrypted cars;
Added damper lengths (kinematic, don’t include installation stiffness effects);
Reduced default log rates and added another log rate category to help with file size;
Added brake master cylinder pressure computation and setup options (evolution of realfeel implementation);
Rewrote automatic cutoff logic for shifting (no longer cuts via gas, is a full electronic cut instead);
Cphys turbo added functionality, allows for exhaust flow to be present (to maintain boost pressure) even if throttle is being cut by TC, shift cut, or limiter (very different from vanilla, now can use more realistic lag times);
Rewrote TORQUE_MODE_EX=2 to be more accurate under combined engine and brake torque cases (includes ABS effect as well, so may be more noticeable via the FFB with how violently vanilla ABS responds);
Cosmic suspension: CARPOS works for ball joints, distance joints, steer joint, and hinges;
New physics experiment awakening car in pits for easier setup (with alternative option for disabling tyre grip entirely and instead holding the car in place using a specialized prismatic+universal joint);
Disable autobraking experiment replaced with a new one (compatible with old one), with more modes;
Wheels repair thing updated to be more conservative (and can be disabled in car data);
A couple of small bugs in original AWD1 code are fixed if custom physics is enabled (axle torques should no longer oscillate when differential is locking, while average torque should remain the same);
New [_EXTENSION] SUPPORTS_MANUAL_CUTOFF=1 for drivetrain.ini;
Add [_EXTENSION] REPAIR_WHEELS=0 to suspensions.ini to stop CSP from fixing flipped suspensions entirely;
New [_EXTENSION] MESH_OFFSET=X, Y, Z in colliders.ini for cars with extended physics just in case;
New [_EXTENSION] RIM_SPRING_RATE=8000000 RIM_DAMPING_RATE=80000 in tyres.ini to configure rim-ground collisions;
Add [_EXTENSION] DISALLOW_SURFACESFX=1 to tyres.ini to disable Surfaces FX for the car entirely (not recommended);
CSP can recognize None as an empty setup hint item value as well;
If disable autobraking is disabled, cars will wait for 250 frames to fall asleep instead of 50 frames in original AC (750 ms instead of 150 ms).
Extra FX emissives: fix for LCS, support for UV flow shader, support for semi-transparent materials;
Third shadows cascade updates from time to time in exterior views, fixing issue with shadows from animated objects;
Interior reflections masking: few fixes to better account for extra VAO samples and dark envinroments;
Real Mirrors: dashboard camera no longer takes camera position into account, so reflections are usable;
Forces from cars acting on smoke altered, spawning smoke from a car should work better;
Sparks on collisions no longer spawn for stationary cars;
Sparks no longer phase through the windshield;
nePBR… shaders no longer use VAO for dynamic lights, shading of dynamic lights with LCS fixed;
Bounced light from car headlights (old one, before Extra FX) doesn’t change intensity with low beams (low beams light is a bit more intense up close anyway);
Neck FX helmet: extra VAO samples are taken into account, shadows fixed;
Track culling of scaled dynamic geometry fixed;
New skidmarks take local heightmap into account only if it’s within ±10 cm, skip heightmap if it’s too tilted;
New spectators fixed (there was some weird doubling for the ones nearby);
Parallelized contacts search rewritten, now stable and actually does search in background;
Contacts search improved, rim collisions fixed;
Collision audio samples keep playing for a bit instead of instantly resetting for subsequent collisions (regression in 0.2.7), pitch alters slightly to make things a tiny bit less boring until better samples are found;
Proview option is fixed, no longer hides geometry for extra or OBS views, no longer affects mirrors or shadows;
Guessing for track heighmap fixed, especially for the case with ? for bounced light surfaces filter, fixes skidmarks and particles on tracks such as Ascari;
General UI:
Car shots within UI (new main menu, car color change online) should look better with LCS;
IMGUI glow no longer gets stops with any popup;
Toasts (those popup messages in the bottom left corner) closing (by dragging them aside) improved;
In VR, toasts are shown it the bottom middle of the screen rather than in the bottom left corner;
Dragging damage indicators and quick pits menu with a mouse improved;
F5 camera no longer rotates if mouse is hovering a non-pinned AC/Python app;
Disabled IMGUI controls no longer get mouse moved with D-pad snapping on them;
Tasks viewer (Ctrl+Tab) wraps at a better point;
Chat:
AC no longer crashes when more than 256 characters are entered;
Overly long words are broken up, doing some wrapping;
Button send no longer flickers;
Unread notification includes welcome message when app is closed, not only when it gets opened;
Tags in chat work better for reconnected drivers;
Mentioning drivers by clicking their tags is fixed (sometimes it wasn’t working correctly);
Setups sharing: layout updated, scanning is more stable and faster, track IDs are used instead of names (can be changed in the new main menu);
Loading screen:
Occasionally messed up track logos fixed;
Unpleasant rendering glitch happening when resizing AC during loading fixed;
A rare crash with scripted loading screen fixed;
Mouse steering:
Temporary deactivated with popup dialogs or in replays;
Cursor should always show up when mouse steering is paused;
Photo app:
Motion mode outline works after taking a screenshot;
Damage override fixed (10 km/h for medium, 100 km/h for maximum damage);
Car color change online: restore button fixed, layout improved;
Option hiding wheels for interior cameras no longer affects additional shots (such as car preview when changing colors), wheels no longer skip a frame when switching, for example, from F1 to F5 camera;
Generating previews for encrypted cars with uppercase letters in folder names no longer fails;
Activating AI driver disengages reverse gear;
Speed factor for slipstream set in extended server config properly works online;
Mumble client: fix for crashes on PCs with some special regions;
Occasional crash related to custom Yebis post-processing fixed;
CSP animated wipers: the same mesh can no longer be used twice by different animation configs (fixes some rare crashes);
Skipping LOD A for non-player cars is compatible with encrypted LOD B and digital instruments;
Showroom mode reads Weather FX controller from [LIGHTING] __SHOWROOM_WEATHER_CONTROLLER of race.ini (CM update is coming soon);
CSP fuel evaluator registers speeds above 50 km/h only (before, the threshold was 5 km/h);
New driver name tags in mirrors should work better if semi-transparent or transparent;
Cursor movement with D-pad won’t move cursor outside of AC window;
D-pad bindings stop when D-pads are moving mouse;
Setup hints from extended setup items trim quotes and spaces;
CSP can read battery state of a DualSense and DualShock gamepads properly (also, there should be a warning icon if it’s close to losing its charge);
Warnings about missing KN5 track models are removed;
KN5s with meshes with huge names no longer crash AC;
Track parameters data_track_params.ini now take priority over track CSP configs and moved inside dwrite.dll to secure regular online servers (if you’re working on a new track, please store them in surfaces.ini instead, it doesn’t require extended track physics and ensures syncronization online);
CSP teleports online no longer block destinations with other cars nearby if those are in pitlane and pitlane collisions are disabled;
Snowflakes no longer phase through roofs (such as roofs on Skidpad) if seen from below;
Geo coordinates, heading andle and timezones for Kunos tracks fixed (biggest errors were around ±1…2° in heading angles, but still);
An old issue with INI parser causing Radar app to look a bit old fixed;f
Referencing meshes in components such as custom emissives keeps them from being disposed, preventing some crashes;
Access to currently playing album cover from Lua is fixed;
Car emissives with constant intensity are compatible with refracting headlights;
A bug causing CSP to fail to parse some driver tag colors from CM fixed.
New [EXTRA_DATA] CAMBER_TOE_STATE=2 value to sync offsets as well (helps with wheels positioning for adjustable Cosmic suspensions);
Use [PHYSICS_EXPERIMENTS] AWAKE_IN_PITS=1/2 in server config to enable pits awakening experiment;
[EXTRA_RULES] DISABLE_AUTOBRAKING supports new options, mirroring updated offline experiment;
Cars CSP configs:
10 more car switches (K…T), syncing online if server requires this build or newer;
New DSP format for car configs allowing to set several DSPs at once;
New [BASIC] DISABLE_NEW_FLAMES_ENTIRELY=1 for cars that don’t want to see new flames at all;
Default value of [BASIC] ENGINE_STALLED_RPM_THRESHOLD in car configs changed from 1 to 50 (configures when CSP considers car engine to be stalled);
New [AUDIO] DISABLE_FALLBACK_HANDBRAKE=0/1 to specify if default handbrake should be used at all or not;
New [AUDIO] DISABLE_FALLBACK_TURN_SIGNAL=0/1 to specify if default turn signal audio should be used at all or not (also, CSP sets state when playing specialized turn sign audio from car soundbank, 0.1 for switching on, 0.6 for switching off);
A second value to BIND_TO_HEADLIGHTS to explicitly specify if light should be active or not if it’s headlights flashing without low beams: BIND_TO_HEADLIGHTS=1, INCLUDING_HIGHBEAMS_FLASH or EXCLUDING_HIGHBEAMS_FLASH;
New [ANIMATION] EXTERIOR_AUDIO_MIX=… for animations to mix in some exterior audio;
New CHANCE_MULT for extra heat shimmer entries in cars configs;
New __EXT_CLIP_NEAR property for cameras.ini;
Tracks:
New CAMERAS_SET=… for track displays using F3 cameras;
New option for track animations (windmills, clock and weathervanes): set CONSIDER_ORIGINAL_TRANSFORM=1 to preserve rotation from [MODEL_REPLACEMENT_…];
AC:
LUT options for axis inputs in controls.ini;
New [DEV] SHADERS_DIR= parameter for custom shader compilations;
[SHADER_REPLACEMENT_…] from car and track configs reloaded live no longer affects geometry created with Lua;
Custom AI: apply time multiplier to the entire simulation to speed things up;
[SHADER_REPLACEMENT_…] is no longer allowed to change dynamic car textures (such as navigator or odometer);
Support for updated v7 KN5 encryption (pretty much the same, but no longer compresses textures to speed up loading);
New ac.getCar().highBeams field (only true with headlights with high beams, or with high beams without headlights);
New ac.getCar().isDriftCar field;
ac.onSetupsListRefresh() is available to all scripts, just in case;
New function ac.onSetupFile() to listen to setup files loading and saving, as well as to load the INI file (see ac.INIConfig.currentSetup()), allowing to add extra payload to car setups and such;
New ac.getSim().hideSteeringWheel and ac.getSim().hideArmsInCockpit fields;
ac.getTrackCoordinatesDeg() takes an optional argument for in-game world coordinates;
display.mirror() fixed (there were some issues with alpha-channel causing strange outlines for trees and more);
Library shared/utils/binary, as well as OpenSSL libraries, are available to all scripts;
Issue with ac.INIConfig.load() occasionally crashing AC fixed;
New ac.onCarCollision() function to monitor car contacts;
New ray:carCollider() function for quickly raycasting car colliders;
New ac.areTyresLegal() function;
New ac.getCarSetupState() returning setup state and reason;
ac.getCar().isRaceFinished no longer mark cars as finished in non-race sessions;
ac.isVisibleInMainCamera() fixed, new parameters for both it and render.isVisible(), docs updated;
UI API:
New icons: ui.Icons.Dice, ui.Icons.Pitlane;
New ui.windowTitle() function;
ui.addSettings(): new parameters parent, tags;
ui.mouseCursor() returns .None when cursor is hidden;
ui.mouseBusy() ignores pinned AC/Python apps;
ac.getUI().wantsCaptureMouse takes AC/Python apps into account (now the same as ui.mouseBusy());
New ui.StyleVar.SliderTextAlign style adjustment;
New ui.forceSimplifiedComposition() for Lua apps to disable complex UI blending (including that frosting effect);
New WebBrowser:control() method to easily draw an interactive browser control;
ui.invisibleButton(): optional argument for button flags (such as .Repeat);
New ui.passthroughIMGUI() function;
Scene and Audio API:
New methods: :isActive(), :isTransparent(), :isVisible() and more to get mesh and material properties;
Dumping shader replacements returns LODs distances if they’re not zeroes
Alter vertices of encrypted meshes if their names are starting with _luaallow_ or ending with _luaallow_ (previously, it was only starting variant);
New :setVirtualCarFlag(true) method allowing nodes added to carsRoot:yes to be treated more like extra cars (with it, CSP traffic gets recognized by BLIND_SPOT input);
Created meshes have their VAO values reset to 100%;
Created meshes no longer run through mesh optimization step, allowing to easily re-apply the same vertices with slight changes later for dynamic geometry;
Calls to :applyShaderReplacements() force custom emissives to reapply their values next frame;
New KN5 loader should be better compatible with loading extra KN5s via Scene API (fixing issue with textures);
Including sky in car shots no longer includes trees or fireworks, those are included with particles;
New AudioEvent({ event = '', dsp = {} }) contructor for creating audio events from soundbanks and adding extras DSPs (in most cases though, please consider adding DSPs in FMOD Studio instead);
ac.AudioEvent():setVolumeChannel(ac.AudioChannel.Main) no longer would lead to master volume being applied twice;
ac.AudioEvent():linkTo() links to nodes, not to scene references, fixing many crashes;
Pass car index to ac.AudioEvent():linkTo() to link audio to a car directly;
Scene API and audio are moved to a separate sub-library to improve performance and memory usage of scripts that don’t use it (usage is still the same, library is loaded automatically when required);
Weather FX style:
ac.setReflectionsSaturation() and other reflection tweaks are working again;
New ac.setReflectedSkyTweaks() altering sky in reflections;
Car physics scripts:
ac.reportIncompatibleSetup() fixed, reason is used by new main menu;
ac.overrideCarState(): override loaded radius, live radius and Tyres FX flex values;
New .engineAirConditionMultiplier field;
New ac.drawDebugCross(), ac.drawDebugText() functions;
New ac.getSuspensionJointPointTo();
Car physics scripts can create ac.ReplayStream() for render car scripts to access, so that data transferred from physics to rendering is automatically stored in replays, car ID and index will be added to the key automatically;
Hub index argument for ac.addTorque();
Car physics scripts: use ac.overrideSpecificValue(ac.CarPhysicsValueID.ForcelessTyres, true, …) to stop any forces from a tyre;
Gameplay API:
New ac.applyContentConfig() for reloading cars and track config live even if live reloads are disabled;
New ac.highlightCar() function adding extra glow to a car model;
Lua apps:
Use ac.applyLiveConfigEdit('general.ini', '[DEV] NANORT_SCENE_RAYCAST=1') to spend a bunch of RAM, but increase scene raycasting speed a lot (first raycast might be slow due to building of accelerating structures);
New parameter for ac.setTrackCoordinatesDeg() allowing to override heading angle as well;
ac.setPhysicsDebugLines(): a flag for cosmic bodies;
ac.ReplayStream():
Fix for special types such as half and unorm8;
If several scripts use the same ac.ReplaySteam(), it’ll act as ac.connect() (sharing frame directly);
Optional argument for reduced record rate;
New [CORE] LIVE_RELOAD to specify mask for files which trigger app reload (for example, LIVE_RELOAD='{ ( ?.lua|?.fx|?.hlsl|?manifest.ini ) & ! plugins/? }' will exlude plugins folder from reloading the app);
New SETUP_INLINE flag windows allowing them to integrate into the new main menu;
New functions for dealing with voting: ac.castVote(), ac.canCastVote(), ac.getCurrentVoteDetails(), ac.timeToNextVote();
New ac.ScriptResumeCondition.Collision for car scripts (both physics and regular);
physics.disableCarCollisions() got an argument to alter collisions of remote cars online;
New physics.setTyresCompound() for some very special cases;
Lua apps: editing repair pits settings has been fixed;
Changing nothing but mirror position or direction using ac.setRealMirrorParams() should work now;
New parameter for ac.setRealMirrorParams() allowing for car scripts to stop apps such as Mirror Configurator and fully override mirror params (use it if you want your monitor rear view mirror to change FOV, position or direction);
Changing monitor brightness using ac.setRealMirrorParams() should work;
Real mirrors functions, as well as a few other car-controlling functions, can function during replays;
A rare issue with Lua event listeners getting cancelled a couple of seconds after a script reload fixed;
ac.flashLight() fixed;
Issue with car scripts failing to reload if script.update() is not present fixed;
A small tweak to get IMGUI to use main font (with CJK characters) as a fallbac if selected font doesn’t have a required glyph (not that nice, but better than nothing);
Removing windscreen meshes using Lua Scene API shouldn’t crash AC anymore;
Lua Debug app: used memory is measured for all apps, main tab layout updated;