Skip to content

Chapter 3 of 6

Visual Assets: 3D Models, Textures, and Shaders

Creating a car or track asset for Assetto Corsa begins in a 3D modeling package such as Blender or 3ds Max, where the artist models the geometry, unwraps UVs, and exports the result as an FBX. That FBX is then opened in ksEditor, where the modder assigns materials and shaders before exporting the final .kn5 file the engine consumes. A kn5 is essentially a custom container that bundles together the meshes, their material assignments, and references to the texture files in dds format. Blender users commonly rely on the AC Tools add-on or custom Python scripts to streamline this pipeline, while 3ds Max users have historically relied on the AC_EXPORT script. Inside the 3D scene, Empty objects (called Nulls in 3ds Max or Dummies in older documentation) mark important coordinates such as spawn points, light positions, camera anchors, or driver seats without contributing any renderable geometry themselves.

Textures are stored as .dds files using DirectDraw Surface compression. DXT1 is appropriate for textures with no alpha or only a 1-bit alpha, while DXT5 (BC3) or the higher-quality BC7 is used when a full alpha channel is required for complex transparency. A common naming convention reserves the _NM suffix for normal maps and the _MAP suffix for the reflection, specularity, and roughness map; metal_detail.dds is a separate small noise texture used to add microscopic flake detail to car paint. Ambient Occlusion (AO) is typically baked directly into the diffuse texture to add soft shadowing in crevices and corners, giving the impression of depth without requiring a real-time AO pass. For high-quality car liveries, the standard resolution is 2048x2048 or 4096x4096.

Assetto Corsa ships with a curated set of shaders that determine how surfaces interact with light. ksPerPixelMultiMap is the most common shader for car body paint; its txMaps slot combines three channels into one texture where Red controls reflectivity, Green controls specularity, and Blue controls roughness or gloss. The simpler ksPerPixelNM shader uses just a diffuse and normal map, while ksDiffuse is a basic diffuse-only shader affected by light without normal or specular contributions, and ksAmbient is a flat ambient-lit shader often used for internal parts. ksAlphaRef adds an alpha-test cutoff threshold for cutout transparency. For tracks, ksMultilayer blends four detail textures together using a mask image whose Red, Green, Blue, and Alpha channels each select a different surface (such as grass, dirt, sand, and tarmac), and ksGrass is used with procedural grass generation to render 3D foliage on marked surfaces. Specialized shaders include ksWindscreen for glass with internal reflections and rain effects, ksPerPixelReflection or ksMirror for mirrors, ksSkinnedMesh for bones-based meshes such as the driver model, and ksTree for foliage. Fresnel properties such as fresnelC (center reflectivity) and fresnelEXP (falloff rate) let shaders simulate the way reflectivity increases at glancing angles.

Performance is managed through Level of Detail (LOD) models and swap meshes. The lods.ini file specifies at what camera distance each lower-detail .kn5 should replace the previous one, with file suffixes such as _B and _C denoting lower LODs (for example, car_B.kn5 and car_C.kn5). The models.ini file lists the main kn5 and references separate files for colliders and LODs. For wheels, blurred_objects.ini defines a static rim mesh that is visible at low speeds and a blurred rim mesh that swaps in at a configurable SPEED_THRESHOLD (or MIN_SPEED) so that fast-spinning wheels do not produce jagged strobing. The transparency setting in ksEditor determines whether a material is opaque, alpha-tested (cutout), or alpha-blended (glass), and MIP levels plus DXT compression control how aggressively textures are downsampled at distance.

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).