Patreon Update
Version: 0.3.0-preview322
Version ID: 3859
Release Date: 3/16/26

Few quick fixes
- Glass normals fixed
- Traffic online don't show up on the map or driver tags anymore
- CSP functioning on Linux again
- Smart Shadows fixed

Change Log: https://gist.github.com/gro-ove/8a2c853e836929ba5ec34244198af01a

Post Link: https://www.patreon.com/posts/few-quick-fixes-153131527

---

Full Change Log:

- AI & New Behavior:
  - A general issue with AI that has been around for a while affecting things has been fixed;
  - Straighten AIs 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 shouldnt 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 its never negative, so even wildly misconfigured materials wont 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 arent 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 didnt anticipate at all);
- CSP loads GUIDs.txt even if its a read-only file;
- A few small fixes for render stats app.