Skip to content

Chapter 5 of 6

Custom Shaders Patch (CSP) and Extensions

The Custom Shaders Patch is a community extension that dramatically expands what Assetto Corsa can do. It adds dynamic emissive lighting, advanced weather, physics extensions, performance optimizations, and an entirely new scripting layer. Mods opt into CSP by placing an ext_config.ini file inside an extension folder (sometimes called extension/) within the car or track directory, and CSP then reads sections from that file to override or extend base-game behavior. The [MATERIAL_ADJUSTMENT] section is commonly used to tweak roughness, reflection, or other shader properties on existing meshes without having to rebuild their materials. [INCLUDE] and [INCLUDE_EXTENDED] directives allow a complex mod to split its configuration across multiple files; INCLUDE replaces sections, while INCLUDE_EXTENDED merges them.

CSP introduces many feature modules that modders can enable. [LIGHT_...] sections define realistic emissive lights with falloff and color behavior, used for headlights, taillights, brake lights, turn signals, and underglow. [ANIMATION_...] sections drive mesh animations tied to game state or player input, allowing doors, hoods, and windows to open or close. [WIPERS] (or [WINDSCREEN_WIPER]) sections, combined with RainFX, give cars working windshield wipers that respond to driver input and rainfall. [BRAKEDISC_FX] creates glowing brake discs that brighten with temperature, [TYRES_FX] adds visual deformation, dirt accumulation, and improved smoke to tires, and [SHAKING_EXHAUST_PIPE] applies vibration to the exhaust based on engine RPM. [MESH_ADJUSTMENT_...] sections hide, show, or swap meshes conditionally so that, for example, different body kits or wing configurations can appear based on setup choices. [PARTICLE_FX] creates sparks, debris, and exhaust smoke, while [SMOKE_FX] provides enhanced tire smoke with more realistic physics. [AUDIO_...] sections let mods inject custom sound triggers or modify existing FMOD events, [DAMAGE_...] extends visual damage beyond the base game's damage.ini capabilities, and [DYNAMIC_OBJ_...] creates physics-enabled objects that respond to collisions.

CSP's higher-level feature modules include LightingFX for realistic emissive lights, Reflections FX for interior windshield reflections and improved environmental reflections, GrassFX for procedurally generated 3D grass on surfaces marked as grass in surfaces.ini, RainFX for rain physics, wet surfaces, and wiper support, and WeatherFX which serves as the bridge that allows Sol and Pure (advanced third-party weather and lighting engines) to operate on top of CSP. PBR (Physically Based Rendering) is enabled via CSP for realistic materials, and Refraction is a CSP shader effect used for glass and lenses that distorts light passing through them. For logic that goes beyond simple INI configurations, CSP Lua Scripting allows modders to write complex dynamic behaviors such as sophisticated turn signal controllers or animated active displays that respond to vehicle state in real time. Older versions of Assetto Corsa used a content/weather folder for cloud and weather modding, but modern setups almost universally route through Sol or Pure working on top of CSP.

All chapters
  1. 1Modding Foundations: Formats, Tools, and Folder Structure
  2. 2Car Physics Configuration Files
  3. 3Visual Assets: 3D Models, Textures, and Shaders
  4. 4Track Modding Essentials
  5. 5Custom Shaders Patch (CSP) and Extensions
  6. 6UI, Skins, Sound, and Scripting

Drill it

Reading is not remembering. These come from the Assetto Corsa Modding Cards deck:

Q

What is the primary 3D model format used in Assetto Corsa?

.kn5

Q

Which file format is standard for textures in Assetto Corsa to ensure optimal performance?

.dds (DirectDraw Surface)

Q

What text-based file format is used for almost all configuration in Assetto Corsa modding?

.ini

Q

What is the purpose of the data.acd file?

It is an encrypted archive of the car's physics and configuration data (the data folder).