- AI & New Behavior:
- A general issue with AI that has been around for a while affecting things has been fixed;
- “Straighten AI’s trajectory when starting” reworked properly;
- “Prevent AIs from redlining before the start” improved as well;
- “Adjust shifting for slow sectors” should be working now;
-
physics.setAISplineAbsoluteOffset() should work a bit better;
- Cooldown lap shouldn’t cause cars to keep teleporting around in the end;
- AI in headless mode going backwards fixed;
- Glass materials losing normal maps are fixed;
- Bots online mistakenly shown on the map are fixed (recent regression), hidden cars no longer show up in overlay leaderboard or in the new menu;
- The issue with CSP not launching on Linux fixed;
- Simulation occasionally getting deadlocked with car teleports fixed;
- Smart Shadows:
- Adaptive first split rewritten, no longer applies to drivable and cockpit cameras;
- Option for adaptive first split is visible again;
- Distant cascade updated to respect tree textures again;
- Surface noise upgrade fixed, scale adjusted (even previous Perlin was a bit too high, and newly added simplex was really wild);
- New KN5 loader sharing materials across cars fixed (previously, the case of basic-and-then-skin-overriden material would misbehave);
- Shaders clamp output color to make sure it’s never negative, so even wildly misconfigured materials won’t break rendering too much;
- “nePBR” shaders can handle clear coat F0 above 100% a bit better (F0 should never exceed 100%);
- Shaders better handle “extColoredReflection” above 100%;
- A few improvements to the shape and shading of fallback LOD;
- Default Weather FX: some small adjustments for grass shading and fog hues, new “Volumetric fog” effect (experimental, disabled by default);
- CSP Debug:
- Positioning of teleport preview improved;
- Holding Ctrl to teleport a car no longer creates a force if the click was on the car;
- Toggle extra car animations;
- Shortcuts for extra “observe” commands;
- A helper to quickly switch between car LODs;
- “Increase conditions limits” tweak is enabled by default, allowing setting road temperature above 36° C;
- Incorrect (zeroed) normals in KN5 are corrected during loading, fixing some visual artifacts (in particular, with Windscreen FX reflections);
- Neck FX: “Maximum offset” now allows to configure values per-axis;
- Piece particles:
- Motion parameters updated to increase visual variety;
- Particles aren’t sliding around on a flat surface anymore;
- Largeness of rare lucky particles reduced;
- Rain drops flying off wheels and arches improved a bit;
- Photo app: layout of lens tab is a bit tidier;
- Splitscreen:
- Stability control and other AI tweaks no longer apply to the second car;
- System shortcuts changing ABS, TC and such apply to both cars at once;
- Input smoothing for second car is disabled;
- Grass FX is properly shown in the second view;
- Second view also got its own reflection cubemap;
- Discrepancy in headlights intensity fixed;
- OBS views:
- New “Higher quality” option with dedicated grass spawn and shadows set;
ac.GeometryShot:update() got an overload accepting actual view and projection matrices, as well as options for dedicated grass spawn and shadow maps;
- Geometry shots: grass is drawn before particles;
- If HDR is enabled, but not available, config loaded with
ac.INIConfig.cspModule(ac.CSPModuleID.DXGITweaks) will have that option disabled;
- Crashes name format updated to be a bit shorter, but include CSP version as well;
- Ash motion fixed;
- In-game license plate generator updated to better handle a case with textures taking a while to load;
- INIpp:
- Use
@DISCARD=1 in both templates/mixins/generators or regular sections to discard them entirely (better alternative to
ACTIVE=0);
- Add
@PARENT=SECTION_NAME to copy values not present in this section from
SECTION_NAME, list several to keep copying missing values;
- Use
discard() in
@OUTPUT to discard the final section (useful for templates doing nothing but spawning generators);
- A couple of smaller fixes and optimizations (the parser is about 60% faster);
- Detection range for
ac.getCarBlindSpot() and BLIND_SPOT input increased from 20 to 200 m;
ac.getSetupValue() returns actual nil if value is missing, caches results across the calls, docs got a hint on how to deal with GEAR_SET;
- New
ac.forceDetailedCarLOD() for Gameplay API, some of default OBS views use it to force detailed LOD;
ui.progressBar() fixed;
- New fields for
ac.CarPhysicsValueID for altering parameters of automatic shifter live;
- New
ac.getSceneShadow() for Weather FX styles sampling shadow map in camera position (using fourth cascade);
- New
getApproximateSceneShadow(position) for scene shaders (uses fourth cascade as well);
- Use
[HEADER] PARSER=INIPP in car data to use INIpp features, including includes, or read('data/car.ini/SECTION/KEY', 0) to access other files;
- Car non-physics scripts (but not scriptable displays) load in headless mode (apparently, there are some cool mods out there that use those for physics-related stuff, which is something I didn’t anticipate at all);
- CSP loads “GUIDs.txt” even if it’s a read-only file;
- A few small fixes for render stats app.