Skip to main content
  • Version ID: 3045
  • Size: ??.?? MB
  • Published: 2024-05-14

Changelog

New features, options and improvements

  • WeatherFX: option to increase conditions limits allowing for controllers to set temperatures and wind speed outside of safe ranges;
  • New experimental option in General/Development (at the bottom) enabling instant replays online;
  • New apps switcher appearing with Ctrl+Tab (Tab button no longer shows leaderboard if any modifier is pressed);
  • New taskbar: desktop icons are replaced with previews (use settings to select icons instead if needed);
  • Default WeatherFX style:
    • New upper clouds layers;
    • Falling stars at night (pretty small chance to see them though)
    • Auroras look slightly improved;
    • All extra effects are now optional;
  • Physics experiments:
    • Early collider activation is enabled by default again, this time much safer and uses number of wheels touching ground instead;
    • New experiment for tweaking car collider meshes: makes sure early collider activation won’t have any problems like before;
    • New experiment for expanding collider boxes vertically: decreases changes of a box phasing through the ground and, as a result, whole car passing through if falling flat;
    • New experiment for smooth transition to 0° steering angle when AC is paused (to make sure nothing would break because of sudden change like that);
  • Radio update (in case you were missing music in AC, thanks to badradio.nz for the idea):
    • List of stations and the actual playback are now handled on CSP side, while Lua scripts can connect to it and control things;
    • Default list of stations updated, including more up-to-date ones;
    • CSP uses advanced API provided by radio.co and laut.fm to collect extra information about currently playing music;
    • Android Auto: playback moved to CSP side, support for new features such as album covers and track info (if available);
    • New Internet Radio app on App Shelf: automatically resumes playback on launches (optional, enabled by default), convenient UI to manage list of stations;
  • Photo mode app:
    • Use mouse wheel for zooming when viewing a complete screenshot;
    • Screenshots with resolution multiplier use FSR for downsampling (unless zoomed in);
    • Hotkey for preview shot is working again, now switched to Alt+F8 (apparently Ctrl+F8 toggles mouse);
  • Smart Shadows:
    • Option to compute splits automatically based on distance for simpler adjustments and better splits arrangement;
    • Option to draw shadows around camera instead of drawing them in front;
    • Shadows stabilization is greatly improved;
  • New AI Spline Editor app: load an AI spline and tweak its trajectory and sides by dragging them around;
  • New CPU optimization preventing loading of certain audio samples for other cars (might help a bit with 30+ car servers);
  • New option in Small Tweaks to increase GPU priority of web browser backend processes (enabled by default, should prevent issues with HAGS in Windows 11);
  • GUI: option to draw AC apps together with IMGUI UI for better interoperability and similar blurred backgrounds;
  • ExtraFX: options to only use effects in replays;
  • CSP Debug app: option to render car colliders;
  • New pause: admins can restart or skip sessions from there directly;
  • Traffic planner: copy a lane with an offset, specify vertical offset when exporting splines.

Extended physics

  • SurfacesFX fixed and adjusted, new TYPE_HINT = GRAVEL for tyres and more gravel-related options;
  • Differential bug (211 only) fixed;
  • TORQUE_MODE_EX now disabled entirely for axle suspension types (prevents any potential issues that may arise from it);
  • Some gyro FFB stuff with cosmic fixed.

Fixes

  • Textures deduplication no longer freezes AC if one texture has failed to load;
  • Cosmic suspension no longer crashes with AIs and custom track physics active;
  • 30 FPS background limit should work now;
  • Linear color space:
    • Heating materials glow properly;
    • Distant headlights glare is no longer affected by brightness multiplier;
    • Brake disk lights intensity adjusted;
    • Bounced light for headlights and brakes (non-ExtraFX one) works properly;
    • License plate lights are a bit dimmer, fallback emissive fixed;
    • nePBR shaders should look closer to how they looked before LCS;
    • Disabled LCS no longer should draw debug lines overly bright;
    • Issue with rendering breaking on some reloads with LCS enabled (and things turning blue) fixed;
    • Skidmarks with SkidmarksFX disabled should look a bit better;
  • Default WeatherFX style:
    • Enabled LCS no longer affects lights range;
    • Tunnels brightness fixed, shouldn’t jump around anymore;
    • Fog above (hiding upper parts of tall buildings on some tracks) fixed;
  • RainFX:
    • Drop hits no longer disappear for a frame from time to time, intensity is now adjustable;
    • Rain AI splines no longer created on tracks with splines longer than 50 km or with more than 100k points;
    • AIs can handle cars with street and semislick tyres, no longer spam logs if a Lua app stops AIs from visiting pits to change tyres;
    • AIs no longer change rain tyres on the last laps;
    • Issue with RainFX misbehaving if other cars are driven in areas unvisited by player before causing all sorts of problems fixed;
    • Fallback data in areas with no puddles computed has also been fixed (was using water instead of wetness often resulting in increased slipperiness);
  • ExtraFX works again with MSAA disabled;
  • SSLR should work better, especially with LCS active;
  • [PITS_SPEED_LIMITER] SPEED_KMH=… no longer breaks ERS and such;
  • Extra G/J in replays fixed;
  • Look of Earth from space fixed, free camera no longer jumps around in space on smaller tracks;
  • GPU constant buffers data is now 64-bytes aligned to work a tiny bit faster;
  • Raycasting static meshes checks AABB as well for a slight speedup;
  • Win keys stop Ctrl-based AC shortcuts as well;
  • AI-activating shortcut working without Ctrl held down fixed;
  • Hood/bumper cameras shaking adjusted;
  • Advanced chunks optimization leading for tyre grooves to turn black on some tracks fixed;
  • Fixing tyre grooves option that was causing them to turn black on some tracks fixed;
  • Missing material variable warnings in log.txt should be muted now (pretty pointless warning anyway);
  • Fix for a handshake for custom online servers;
  • Cars should no longer spawn on roofs with aligned teleportation of custom tracks physics;
  • Shadows not working properly on a distant square when sun is low fixed;
  • Removed broken Python shared library option (it wasn’t of much use);
  • SkidmarksFX: fading on loading fixed (config wasn’t respected), fading values are now printed in CSP log with Skidmarks fading prefix;
  • Spotify music detection removed (wasn’t that reliable or informative, and everybody has moved to Windows 10 with much better music status system);
  • Logic for disallowing overlapping of AC forms updated, now shouldn’t cause apps to jump around too much; overlapping highlight is fixed too;
  • Users with non-latin usernames can be tagged by typing first latin symbol or digit instead and pressing Tab;
  • CSP should be able to handle files in UTF-16/32 BE/LE with/without BOM encodings (might lead to change in behavior if you’d be using a car with some config incorrectly saved in UTF-16 and failing to be parsed before);
  • App Shelf: main lua file is extracted last and renamed after extracting, should ensure there’ll be no failed installations;
  • As seemingly proven to not cause issues, AABB for reflections option is hidden and enabled by default;
  • GrassFX transitions are smoother;
  • Collapsed apps with automatic sizing load their previous sizes properly;
  • Mouse steering should work properly with pause menu;
  • VAO-only and normals views are working with linear color space now (by switching to old shaders sets);
  • New driver tags no longer stop working with paused race or replay;
  • IMGUI glow in transparent areas fixed;
  • GPU priority increased by default;
  • Smoke interaction with fast driving cars adjusted;
  • Skidmarks, grass and fake shadows should be better clipped for interior cameras;
  • AC should no longer crash when a mesh selected in Objects Inspector has been removed;
  • Other smaller fixes.

Configs and tools

  • Distant lights can pair with associated meshes with a new [LIGHTS_DISTANT_LAYER_…] meshes list and DISTANT_LAYER lights option stopping them from contributing to overall lights limit (docs are coming soon);
  • Lights with large radius or fade-out distance now will end up in a separate 4 km chunks thing (previously it was only 800 m chunks, and fade-out distance wasn’t taken into account at all);
  • Lights with fade-out or range larger than 4 km will count as dynamic and remain outside of chunks;
  • New online option: CUSTOM_MOTION = 1, RESET resetting interpolation when car teleports (once tested and verified, will be enabled by default for all servers);
  • Tracks: add alternative splines named ext_alt_fast_lane_?.ai to ai folder and CSP would use those for random cars for something like alternative paths NFS5 Porsche style (not used by track day car respawning for now);
  • Use MATERIAL_FLAG_1 = 1 on MultiMap_emissive shaders to switch to UV2 for txEmissive;
  • Use MATERIAL_FLAG_2 = 1 on MultiMap_NMDetail shaders to use alpha of txDetail as a multiplier for reflectivity as well;
  • UV2 patches no longer load if generated from non-triangulated meshes (CM update filtering things on its side is coming soon);
  • emSkipDiffuseMap for emissive shaders now takes values in-between of 0 and 1, allowing to limit txDiffuse contribution;
  • Set emSkipDiffuseMap to -1 (or use CustomEmissive_UseDetailInsteadOfDiffuse mixin) to switch emissive shaders to use txDetail as a multiplier to txEmissive (instead of txDiffuse);
  • Add a second argument 1 to CLUSTER_THRESHOLD for lights and such in track configs to switch to clustering in 3D (slightly slower);
  • New [BASIC] INTERIOR_CLIPPING = … option for cars specifying if grass, skidmarks and fake shadows should be clipped for interior views (by default enabled for non-open wheelers);
  • New FORCE_MINUS_TWO_LOD_BIAS thing for shader replacements (please don’t use unless really have to);
  • New trees: AO baking now can be adjusted;
  • Hidden experimental option general.ini/DEV/NANORT_SCENE_RAYCAST to build accelerating structures for faster mesh raycasting (might increase memory consumption and make first raycasts slow);
  • Hidden experimental option general.ini/DEV/VIRTUAL_REPLAYS_ALLOCATION to use a magical VirtualAlloc function for replays instead of allocating small bits of memory and increasing them as more frames are being recorded;
  • Trees Inspector now shows more details about selected tree;
  • Volume peak: devices are filtered based on regexps in small_tweaks.ini.

Lua

  • Common API:
    • New string.pack(), string.packsize() and string.unpack() compatible with Lua 5.3 behavior;
    • New string.urlCheck(), string.urlNext() and os.parseDate() functions;
    • New ac.StructItem.explicit() modifier for preserving order of items passed into structure constructors;
    • New ac.onTrackPointCrossed() for measuring custom sectors;
    • Functions to work with view and projection matrices, including getting matrices from ac.GeometryShot;
    • ac.OnlineEvent() got an option to receive messages that could have been sent before app has loaded (also, issue with messed up data when receiving two messages at once fixed);
    • Time spend on executing Lua callbacks callbacks time set by functions such as render.on() is measured;
    • Calling ac.store('key', false) clears out a value to fix compatibility with some cars (please keep it mind it’s only meant to store strings or numbers though);
  • WeatherFX:
    • ac.setWeatherLightsRangeFactor(): override default range multiplier based on lights intensity multiplier;
    • ac.useMinDepthResolution(): change the way depth buffer MSAA is resolved depending on what you want to use it for;
  • State API:
    • Cars timing and sectors related info in car states online fixed;
    • ac.getSim().currentSessionTime and ac.getSession().hasAdditionalLap fixed in online races;
    • New ac.getCarPhysics().wheels[].discCoreTemperature for custom physics brakes;
    • New ac.getSim().isLinearColorSpaceActive for active linear color space fix;
    • New ac.getSim().currentVAOMode for current VAO debugging state;
    • New ac.getSim().cameraJumped will be set to true for a first frame after camera has been teleported;
    • New ac.getSim().isMakingScreenshot will be set to true if currently accumulating frames for a screenshot;
  • New shared libraries (to avoid standard library to grow too massive and slow down scripts loading, extra functions are being added like this instead):
    • shared/sim/ghost: create new ghosts, reload them live and more;
    • shared/utils/chat: share setups in chat, change car color;
    • shared/utils/steam: access some of Steam API functions;
    • shared/utils/appshelf: any script can use it to ask user to install a trusted app;
    • shared/utils/binary: effortless and fast reading and writing binary data;
    • shared/utils/playing: override info about currently playing music, for example, if your app is playing something;
  • Lua apps:
    • New ac.setWindowBackground() for changing background color and optionally painting titles black;
    • New DARK_HEADER flag for windows if background used is white (title text and icons will be black);
    • New itemValues: number[] field for ac.getSetupSpinners() for CSP entries using LUTs;
  • UI & scene API:
    • ac.SceneReference:ensureMaterialsUnique() shouldn’t leak or cause crashes anymore;
    • ui.renderShader() respects IMGUI clip area;
    • ui.addSettings() uses name if ID is not set, for more reliable state saving;
    • New ui.onChat() allowing to replace entire chat app;
    • ui.onExclusiveHUD() can return 'apps' to let CSP know it can draw IMGUI apps;
    • Experimental functions ui.pushAlignment() and ui.popAlignment() for aligning UI without usual complications;
    • Dumped shader replacements, or replacements collected from a KN5 file, no longer affect CSP functional shaders (such as wipers) by adding a new LEAVE_FUNCTIONAL_SHADERS=1 parameter to config entries;
    • ui.MediaPlayer: FMOD integration improved (but the option is still hidden), unloading media works better;
    • New render.BlendMode.OpaqueForced (overriding disabled opaque blending for transparent passes) and render.DepthMode.WriteOnly values;
  • Physics AI API: assign a new spline for a certain AI car (experimental);
  • FFB post-processing scripts: new ac.disableLowSpeedFFBReduction(), just in case;
  • ac.ControlButton:setDisabled(): AC hotkeys can be disabled as well (at least some of them);
  • car::kn5::… textures should work fine with encrypted cars now;
  • Encoded Lua canvases should be readable by ImageMagick;
  • Small chance of a fatal crash on Lua script unload (if it was using logging or something like that in any disposing functions) fixed;
  • Car physics scripts are better compatible with AC locking car controls.