Skip to content

Instantly share code, notes, and snippets.

@gro-ove
Created October 20, 2021 16:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gro-ove/7328d0f73c73c6732352b507c98aded8 to your computer and use it in GitHub Desktop.
Save gro-ove/7328d0f73c73c6732352b507c98aded8 to your computer and use it in GitHub Desktop.
- Dynamic weather conditions online with either a server plugin (documentation is coming soon) or custom acServer implementation;
- New WeatherFX controller that uses OpenWeatherAPI to sync conditions with real weather dynamically;
- State of wings used to hide and show additional car geometry is syncing online now;
- FSR:
- Whole thing reworked with officially released SDK:
- Quality presets are different now;
- Recommended level of sharpening is used now;
- Option for adjusting MIP bias according to recommendations;
- Old implementation is still present in case you wouldn’t like the look of the new one;
- Option to set lower quality setting for left and right sides in triple screen mode;
- Optional debug mode: hold Space to quickly switch to simple linear upscaling to compare;
- Smoke fully reworked (apart from tyres heating and spawning logic):
- New improved shading;
- Improved smoke-cars collisions;
- Better support for open-wheelers;
- Tyre smoke spawns below car with extreme drifting angles;
- Dust and splashes spawns around car, not just from wheels;
- Dust flies off dusty wheels;
- A bit of dust appears for some F1 cars with wooden skidpads when those touch the ground (and can be configured on per-collider basis, similar to sparks);
- Clouds of dust spawn on collisions;
- Smaller particles for bits of dirt and smaller splashes spawn in contact points;
- Long-lasting smoke and dust (lasts for several minutes);
- When on grass, instead of dust clouds, more subtle soil particles are used (color is set in track config);
- New look for smoke from exhaust, heated brakes and damaged engine;
- Smoke won’t show up inside a cockpit;
- Colored smoke and dust lose saturation with expansion, with new config parameters to adjust the rate;
- Smoke culling improved for further optimization and smoother transitions;
- New options to adjust density and on-screen size, to balance between visuals and performance;
- With ExtraFX, option to get smoke clipped by windows or, instead, rendered behind them;
- Extra effect with smoke covering whole screen, to get effect of camera stuck in smoke much cheaper;
- Pieces particles update:
- Adjusted types chances, size and shading;
- Collision detection now uses car heightmaps instead of depth buffer for more accurate results;
- Size of sparks particles fixed, sparks no longer spawn with head-on collisions;
- TyresFX:
- Grass and dirt on tyres reworked, textures and rendering both;
- Soil color is taken into account;
- GrassFX:
- Active ExtraFX pass option now properly supports fake car shadows reprojection;
- Grass deformation updated, now takes into account grass height;
- If you’re using original AC motion blur, it would affect grass as well now;
- Smart Shadows:
- Smooth transition between cascades reworked and is configurable now;
- Disk shadows filtering removed, PCF is back until I figure out how to do it properly;
- Nice Screenshots:
- Old HDR fix thing is now replaced with brightness-based weighted average; much easier to deal with, and it produces better results;
- Accumulation DOF: options to customize shape and samples distribution for bokeh;
- New rendering modes: 360°, fisheye, split screen (new Content Manager supports custom modes for AC video settings);
- Specify joypad index for joypads input mode;
- Support for VAO patches v5 with spatial AO samples for dynamic objects;
- New sky mesh with more evenly distributed triangles for better reflections and mirrors;
- Option to hide console;
- Option to create portals to other servers online for freeroam servers;
- Scene tweaks from new photo mode app remain active with app hidden, or without replay (in a single-player race);
- If VR failed to initialize, there’ll be a warning on loading screen (especially helpful if you accidentally chose wrong render mode);
- Similar warning would be shown if ExtraFX would fail to initialize because of AC motion blur;
- Chat shortcuts reworked: new UI system, now don’t trigger change in turbo, different approach for alternative set of messages;
- Option to unbind digit buttons from changing turbo level;
- Triple screen tweaks: option to always show driver name tags (with original system);
- Semi-transparent shadows from smoke, flames, semi-transparent objects and such improved with Bayer dithering;
- Button for manual control of speed limiter;
- Online servers can alter speed limiter parameters, disable forced limiter (with configurable penalties), re-enable collisions in pits;
- Walking out module: settings, improved transition, few fixes, selected car is the controlled one, tool for positioning cars a bit more easily;
- Custom glare for distant headlights (experimental, disabled by default for now);
- VR mirroring: option to fill the screen, new modes for anaglyph mode, additional settings;
- Support for custom track tyres raycasting with a CSP plugin;
- Option to fix audio alignment (seems like sometimes some AC cameras could break it);
- Option to hide CPU occupancy warning;
- Option to add border to AC window just in case;
- PP-filters now can access additional auto-exposure options, for example, changing how fast AE changes (filters editor got new options in a sub-section of the AE section);
- Support for secondary clutch axis (CM support is coming soon);
- Option to hide driver name tags and driver points on track map for certain cars online via server config or extended server API;
- New driver tags: option to control rendering distance;
- Small tweaks: option to alter change AC audio volume during the race with buttons;
- Option to remove 1 GB size cap for replays;
- Double precision physics engine now enabled by default;
- Freer camera: use pedals to smoothly control camera speed.
Fixes:
- FSR:
- Oculus Rift integration fixed;
- Virtual mirror incorrectly positioned in triple screen fixed;
- Shader `ksPerPixelMultiMap_AT_NMDetail` is finally fixed (has been broken from pretty much first builds of CSP);
- Pieces particles occasionally breaking motion blur fixed;
- New photo mode app: setting DOF or changing camera FOV doesn’t reset to free camera anymore;
- Additional caching during loading no more messes up setup menu (there was a problem trying to load a newly made setup);
- Mumble voice chat audio orientation fixed;
- Origin shift compatibility:
- AI recording tool fixed (didn’t render spline correctly);
- Driver eyes positioning tool fixed (similar issue);
- ExtraFX bounced light clip plane fixed;
- WeatherFX clouds and flickering cloud shadows fixed;
- Case of VR with post-processing disabled fixed;
- Custom triple splits: misplaced driver names fixed;
- Shadows from dynamic lights fixed;
- Fixed interior reflections masking flickering in free camera with AMD GPUs;
- Interior reflections masking no longer darkens rough reflections that much;
- AC crashing when CSP is trying to fix certain wiper animations fixed;
- Accumulation DOF works better with real mirrors;
- AC shutting down when making screenshots and such with certain mods fixed;
- Accumulation DOF no longer breaks with ExtraFX motion blur (without accumulation motion blur);
- Memory leak with SMAA fixed;
- Possible performance issues with some PP AA modes fixed;
- AC stuck in setup check with cars with extended physics fixed;
- Monitor mirrors showing headlights as red and blue fixed;
- Problems occuring when trying to save and load selected PP-filter are fixed;
- Option to draw track AO samples removed to stop people from activating it accidentally;
- VAO patches for cars no longer affect windscreen brightness;
- Switching VAO sets (with driver/without driver) fixed;
- Fur material changing scale randomly fixed;
- Disabling windscreen dirt not always working fixed;
- FidelityFX CAS now works with FXAA and FXAA 3.11 (fixed) as well as with SMAA;
- Half-resolution smoke now works with triple screen mode;
- Shader `stPerPixelNM_UVflow` with alpha-test now casts shadows properly;
- Low beams not working properly in replays fixed;
- Windscreen meshes drawn over driver’s visor (with something like F6 camera) fixed;
- Shaking chase cameras fixed;
- Tessellation shaders (flags, bending pieces): fog, shadows and ExtraFX effects are fixed;
- Randomized wind component getting too large fixed;
- Crash with downshift protection on older mods without audio event fixed;
- Shadowed wheels and VAO fade out when car tilts too much;
- Collision depth is stored in replays now, for deforming walls to work correctly;
- Fake Shadows generation for cars like McLaren-Mercedes MP4/13 fixed (now ignores seatbelts);
- Cached car data growing too large with repeated entries fixed;
- Car heightmap not working correctly with some cars (and resulting in, for example, sparks flying inside) fixed;
- WeatherFX:
- PP-filter adjustments are reset when current filter is changed;
- Default WeatherFX implementation updated and fixed (improved clouds, definitions for cold and hot weather types were missing);
- Per-pixel fog used in some shaders fixed;
- Replay clips saving is more stable now;
- FPS limiter deactivation in new performance stats app fixed;
- Loading of extra CSP data for older replay versions fixed;
- Pieces of grass and dirt not really working with car driving backwards fixed;
- Broken shading (especially shadows) of some skinned meshes fixed;
- Fake shadows from front wheels sometimes being rendered above everything else in first persion view fixed;
- Default button (numpad’s plus) for Extra D is fixed;
- Loading car names from JSON is fixed;
- GrassFX culled too early in right eye in VR fixed;
- Incorrect configuration for rotating car objects (in extra_animations.ini) would no longer crash the game;
- Car wheels jittering back and forth in rare cases when moving slowly fixed;
- Replays now can record more frames with extra CSP data;
- Bluish reflections with SSLR fixed (it still needs a lot more fixing though);
- Cars custom emissives sometimes failing to sync with light sources fixed;
- Additional replay data breaking when replays run into size limit fixed;
- Extra-long speculars of SSLR are fixed;
- Few fixes for headlights range switching with different camera modes;
- ExtraFX TAA messing up LEDs fixed (with auto-fix active);
- Python app names in Python profiler tool (and possibly more) getting messed up fixed;
- Custom raycasting (in general settings) occasionally breaking simulation into brown screen fixed;
- Extended raycasting (in custom physics) fixed once more;
- AC crashing in track day mode on some tracks because of tyres issue fixed;
- Also, AC would no longer crash if there would be meshes and nodes mentioned in camera_facing.ini and sharing the same name;
- Fixed first shadows split breaking in VR in some cases;
- Photo mode app: making a motion mode shot no longer freezes AC for a few seconds fixed at the start;
- Real Mirror no longer breaks after switching driver on and off a few times;
- Default car setup “_ext_default” fixed, now loads all the parameters (also now race.ini can define a custom setup to load, optionally fixed);
- New driver tags: distortion in VR fixed;
- Advanced culling causing initial skidmarks to appear with a delay fixed;
- Smaller fixes and stability improvements.
For new content and configs:
- Override car data files related to visuals, such as “lods.ini” or “lights.ini”, by creating new files in “extension/data_override” folder;
- Colorful shadowing: overall look improved, new parameters;
- Masking pass shading improved, doesn’t look as messy with darker textures, new parameters;
- Custom car physics:
- Create hidden car setup items linked to some AC physics controller (for example, to create a suspension with ride height adapting to car speed);
- Link clutch damage to exceedingly high torque;
- Create extra links for any suspension, linking together hubs or attaching hubs to body with distance or fixed joints;
- New inputs for dynamic physics controllers: `DAMAGE_ENGINE`, `DAMAGE_GEARBOX` (0 for original, 1 for fully damaged);
- Custom track physics:
- Soft walls fixed, with new `MAX_DEPTH` option to limit softness for collisions that are too deep (docs are coming);
- Cars spawned aligned to track surface (optional, controlled by track’s physics config surfaces.ini, enabled by default with custom track physics);
- Deformable track walls for deep collisions (with soft colliders), for tyre walls and such;
- TyresFX:
- New `DIRT_OFFSET_K` parameter, similar to `DAMAGE_OFFSET_K`;
- Option to set custom meshes for different tyres;
- `[MESH_SPLIT_...]`:
- Set split name or material directly, or use existing material;
- New mode `COPY_FLIPPED` to fix missing interior windows;
- New `INSERT_TO` option to specify new parent for new meshes;
- Parameter `[BOUNCED_LIGHT] AMBIENT_MULT=0.2` for reducing ambient effect on bounced light now that new VAO patches for tracks have light bounces;
- Parameter `[REFLECTIONS_FX] INTERIOR_NODES=…` for cars without properly set `COCKPIT_HR` now works better, affecting more CSP features;
- New car instrument inputs for KERS;
- Extra car switches (those extra A/B/C/D functions):
- New extra E and extra F switches are added;
- Switches now can have a name set in config to show in car description during loading;
- Optionally, switch can operate in hold mode (active while button is pressed);
- Optionally, switch can require stationary car to activate (like a speed key for Bugatty Veyron, for example), or neutral gear, or pressed brake pedal;
- CSP configs can add extra comments about car features on loading screen;
- Adjustable wings now can affect several nodes at once (easier to get LODs to work);
- New `ColoredBlackSpecular` parameter for car paint shader improving look of multi-colored skins, enables automatically with fourth version;
- Set soil color for tracks along with dirt and grass color;
- Option to set soil, dirt and grass colors for different types of surfaces;
- New track inputs:
- `CAR_DAMAGE_N` for amount of damage of Nth car;
- `CAR_DAMAGE` for maximum amount of damage of all cars (could be tied to roof lights of ambulances?);
- `ONLINE_RACE` switching to 1 for online races;
- `TIME_SMOOTH`: time of day in seconds without rounding;
- In condition expressions, writing “condition:” prefix when referencing a different condition is no longer needed;
- In places where previously track parameters could either be a number or reference a condition, now expressions are fully supported as well;
- `CONDITION` for track lights and material adjustments now can use expressions too (although, without color support for now);
- Issue with parameters `MOVE_MESH_BEHIND` and `MOVE_MESH_IN_FRONT_OF` unable to reorder elements within same parent is fixed;
- Track configs now can set flame emitters;
- New `common/particles_track.ini` with some presets for track particles (bonfire, stove, flare);
- New `common/displays.ini` helping to easily create new quads for digital displays in cars;
- Macro `CustomEmissive_UseDiffuseAlpha` fixed, now can use alpha from txDiffuse;
- If you’re using wing animations to show and hide extra bits, now you can configure it so “hidden” geometry would actually be hidden, saving draw calls:
- Car lights now can be bound to wing states, referencing wing ID and using LUT for brightness multiplier;
- For simple cases with two states where hidden bit is either scaled down or moved far away, CSP should be able to guess things automatically;
- Tool to quickly generate such animations with corresponding config is available on CSP wiki;
- When copying coordinates from Objects Inspector, hold Shift for additional precision;
- Brakes input for cars fixed, now uses `[BASIC] BRAKES_THRESHOLD` as default threshold;
- Car config parameter `[DATA] DISABLE_DIGITALINSTRUMENTSINI=1` to disable original digital instruments;
- Track config parameter `[DYNAMIC_OBJECTS] DISABLE_ONLINE_SYNC=1` to disable syncing of dynamic objects online and get them to start from initial position for each new connected client;
- Tracks now can use custom model for static reflections or set shader replacements to act upon a default one (good for hiding trees on tracks like Monaco);
- Problem with changes to semi-transparent shadows not applying live is fixed.
For new apps and scripts:
- Python apps:
- Live reload for Python apps with Python apps profiler, including fully automated option;
- New functions for time control: `ac.ext_getWeatherTimeMult()`, `ac.ext_setWeatherTimeMult(value)`;
- New functions for advanced rendering: render to texture, use custom pixel shaders, access virtual mirror texture for custom virtual mirrors;
- Function to check if VR is active or not;
- Result of `ac.newTexture()` is cached now, feel free to re-create those textures each frame (although it would still be faster to save value locally);
- Lua apps: IMGUI for UI, extra APIs, live icons, fullscreen drawing callback for optional fullscreen HUDs with custom virtual mirror, damage and fuel warning indicators (all optional);
- WeatherFX:
- API to create and manipulate dynamic lights for more advanced visual effects;
- New `ac.setSkyV2SunSaturation(number)` to adjust sun saturation;
- New `ac.setTrackConditionInput(key, value)` function which also allows to override `AMBIENT` input;
- Functions to adjust VAO and extra AO samples parameters;
- New sky-covering clouds using panorama textures as an alternative way to render clouds;
- Option to load textures asynchonously, new function to unload textures;
- New cloud material parameter `normalFacingExponent` for adjusting normal calculation (default value is 0.5);
- New cloud parameter `normalYExponent` for shifting whole cloud shape, to get it to look more as if camera is below;
- New cloud parameter `topFogBoost` for boosting fog at the top of the cloud;
- Implementation and controller scripts now can do some work in parallel, reducing load on main core;
- Controller scripts got new API for making HTTP(S) requests;
- Lua scripts:
- New module to create Objects Inspector tools using Lua, with extended API for creating various UI controls;
- Helper functions: `try(block, catch, finally)`, `class()` for creating classes easily (uses middleclass);
- New table functions `table.filter()`, `table.map()`, etc.
- New timer functions `setTimeout`, `setInterval` and `clear…` counterparts (similar to JavaScript);
- New I/O functions `io.exists()`, `io.load()` and `io.save()` (only for scripts that would have access to I/O);
- Load and store typed values with `ac.storage` (could be used to access string values based on keys or, for faster access, create localized holders);
- `ac.load(key)` returns nil if no value with such key was stored before;
- More functions to access more details about simulation state like type names, driver names and nationalities, etc.;
- Lua scripts being unable to find referenced files nearby fixed;
- Scriptable displays:
- Script could be in a separate file (`SCRIPT=script.lua`, same as LUTs);
- Access mirror texture to create displays with rear view camera and overlays;
- Define new cameras (similar to rear view mirror) with optional post-processing and access them in script, for this like parking camera activating with reverse gear;
- React to clicks on other meshes (optionally limiting area to certain UV coordinates), so they could act like buttons;
- Change car state: switch headlights, high beams and extra toggles;
- Control some of car inputs: alter ABS, TC, brake bias, turbo wastegate, engine brake, etc. (could be used to create a dashboard similar to one of BMWs with extra car settings);
- New `display.horizontalBar()` function for simple drawing of a progress bar made out of segments;
- API to create dynamic lights and custom audio events (including an option to load a custom soundbank);
- API to access nodes and meshes and move them around, hide/show or change their material properties;
- Scriptable displays for tracks (similar to cars scriptable displays with access to track conditions and ability to set custom condition inputs);
- New values for car state for Lua scripts: KERS state, number of gears, number of turbos, H-shifter state and more for user controls and for specific cars.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment