Common Detail Maps


Common detail maps are reusable tiled textures used to add small-scale surface detail to materials without baking that detail into large unique texture maps. They are especially useful on vehicles, where many materials need repeated fine patterns such as leather grain, carpet fibers, headliner fabric, carbon fiber, orange peel paint, or plastic texture.

For general vehicle material setup and examples, see Vehicle Material Examples .

Instead of creating a unique high-resolution normal map for every surface, a material can use a shared detail texture from paths such as:

/vehicles/common/generic_mat_tex/
/vehicles/common/

This keeps materials consistent, saves texture memory, and makes it easier to reuse high-quality surface detail across vehicles.


What detail maps are used for

Detail maps are usually used for high-frequency surface detail, such as:

  • Leather grain
  • Fabric weave
  • Carpet fibers
  • Headliner texture
  • Carbon fiber pattern
  • Paint orange peel
  • Small plastic roughness or bump detail
  • Grille or trim micro-normal detail

They work together with the main material textures. The main textures define the large-scale look of the object, while detail maps add fine repeating surface information.

For example, the Ardente interior uses unique baked textures for the interior layout, AO, roughness, metallic, and main normal information, but uses common detail normal maps for the material surface finish.

Why use common detail maps

Common detail maps are useful because they:

  • Reduce duplicated texture work
  • Save VRAM compared to baking every small detail into large unique maps
  • Improve close-up material quality
  • Keep material appearance consistent between vehicles
  • Allow skins to change colors while preserving the same material texture detail
  • Make it easier to adjust tiling and strength per material

A small tiled detail normal can often provide better close-up results than increasing the resolution of a unique normal map.

Detail maps are not a replacement for proper main textures. They are intended to add repeated small-scale detail on top of the main material.

Important fields

Common fields used by detail maps:

Field Description
detailMap Tiled detail base color texture. Adds small-scale color variation on top of the base color.
detailNormalMap Tiled detail normal texture. Adds repeated fine surface relief such as leather grain, fabric, carpet, carbon fiber, or paint orange peel.
detailMetallicMap Tiled detail metallic texture. Adds small-scale metallic variation.
detailRoughnessMap Tiled detail roughness texture. Adds small-scale variation to reflection sharpness and specular highlights.
detailOpacityMap Tiled detail opacity texture. Adds small-scale opacity or mask variation.
detailAmbientOcclusionMap Tiled detail ambient occlusion texture. Adds small-scale occlusion detail.
detailScale Controls how often detail maps repeat. Higher values make the pattern smaller and more frequent.
detailMapUseUV Selects which UV layer is used by detail color maps.
normalDetailMapUseUV Selects which UV layer is used by detail normal maps.
metallicDetailMapUseUV Selects which UV layer is used by detail metallic maps.
roughnessDetailMapUseUV Selects which UV layer is used by detail roughness maps.
opacityDetailMapUseUV Selects which UV layer is used by detail opacity maps.
detailNormalMapStrength Controls how strongly the detail normal affects the final surface normal.
detailMetallicMapStrength Controls the influence of the detail metallic map.
detailRoughnessMapStrength Controls the influence of the detail roughness map.
detailOpacityMapStrength Controls the influence of the detail opacity map.
detailAmbientOcclusionMapStrength Controls the influence of the detail ambient occlusion map.
opacityMap Used on layered materials to mask where a layer appears. White shows the layer; black hides it.

Detail scale

detailScale controls the tiling of the detail texture.

Example:

"detailScale": [45, 45]

This means the detail texture repeats many times across the selected UV space. A higher value creates smaller, denser detail. A lower value creates larger, more visible patterns.

Use scale carefully:

  • Too low: pattern may look oversized
  • Too high: pattern may shimmer or become noisy
  • Incorrect UVs: detail may stretch or appear inconsistent

UV selection

Detail maps can use either the main UV set or a secondary UV set, depending on the material setup.

Example from Ardente paint:

"detailNormalMap": "/vehicles/common/orange_peel_n.normal.png",
"detailScale": [128, 64],
"normalDetailMapUseUV": 1

Using a dedicated UV layer can help keep detail scale consistent across body panels, decals, skins, or other layered materials.

The mesh must contain the required UV layer. If a material is set to use UV1 but the mesh does not provide it, the detail map may appear incorrect.

Ardente example: interior materials

The Ardente interior is a good example of common detail maps used in a layered material.

The material uses several layers:

  • Layer 0: base interior material using unique Ardente textures
  • Layer 1: leather areas
  • Layer 2: headliner areas
  • Layer 3: carpet areas

Simplified example:

"ardente_interior": {
  "activeLayers": 4,
  "Stages": [
    {
      "baseColorMap": "/vehicles/vivace/ardente/ardente_interior_b.color.png",
      "normalMap": "/vehicles/vivace/ardente/ardente_interior_nm.normal.png",
      "roughnessMap": "/vehicles/vivace/ardente/ardente_interior_r.data.png",
      "metallicMap": "/vehicles/vivace/ardente/ardente_interior_m.data.png",
      "ambientOcclusionMap": "/vehicles/vivace/ardente/ardente_interior_ao.data.png"
    },
    {
      "baseColorFactor": [0.140854001, 0.140854001, 0.140854001, 1],
      "detailNormalMap": "/vehicles/common/generic_mat_tex/detail_leather_grain_nm.normal.png",
      "detailScale": [45, 45],
      "opacityMap": "/vehicles/vivace/ardente/ardente_interior_leather_o.data.png",
      "roughnessFactor": 0.934000015
    },
    {
      "baseColorFactor": [0.696434975, 0.647749007, 0.568789005, 1],
      "detailNormalMap": "/vehicles/common/generic_mat_tex/detail_headliner_nm.normal.png",
      "detailNormalMapStrength": 1.55999994,
      "detailScale": [35, 35],
      "opacityMap": "/vehicles/vivace/ardente/ardente_interior_headliner_o.data.png"
    },
    {
      "baseColorFactor": [0.123671003, 0.123671003, 0.123671003, 1],
      "detailNormalMap": "/vehicles/common/generic_mat_tex/detail_carpet_nm.normal.png",
      "detailNormalMapStrength": 1.5,
      "detailScale": [30, 30],
      "opacityMap": "/vehicles/vivace/ardente/ardente_interior_carpet_o.data.png",
      "roughnessFactor": 0.907000005
    }
  ]
}

In this setup:

  • The unique Ardente maps provide the main material layout.
  • Opacity maps define where leather, headliner, and carpet layers appear.
  • Common detail normal maps provide repeated fine surface texture.
  • Each material type can have its own detail scale and normal strength.

Ardente example: leather

Leather areas use:

"detailNormalMap": "/vehicles/common/generic_mat_tex/detail_leather_grain_nm.normal.png",
"detailScale": [45, 45],
"opacityMap": "/vehicles/vivace/ardente/ardente_interior_leather_o.data.png"

The opacity map selects leather regions, while the shared leather grain normal provides fine surface detail. This allows the same leather texture to be reused across different vehicles and skins.

Skins can then change leather color without needing a new leather normal map.

Example from an interior skin:

"baseColorFactor": [0.392870009, 0, 0, 1],
"detailNormalMap": "/vehicles/common/generic_mat_tex/detail_leather_nm.normal.png",
"detailScale": [50, 50]

This changes the leather to red, while keeping the same common leather detail.

Ardente example: headliner

Headliner areas use a different common detail normal:

"detailNormalMap": "/vehicles/common/generic_mat_tex/detail_headliner_nm.normal.png",
"detailNormalMapStrength": 1.55999994,
"detailScale": [35, 35]

The stronger detail normal helps the fabric texture remain visible on a soft, rough material.

Headliner Detail Normal Texture Headliner Detail Normal Texture

Ardente example: carpet

Carpet uses:

"detailNormalMap": "/vehicles/common/generic_mat_tex/detail_carpet_nm.normal.png",
"detailNormalMapStrength": 1.5,
"detailScale": [30, 30],
"roughnessFactor": 0.907000005

Carpet is usually very rough, so a high roughness value and stronger normal detail help create a soft, fibrous look.

Carpet Detail Normal Texture Carpet Detail Normal Texture

Ardente example: vehicle paint orange peel

The Ardente main paint material uses a shared orange peel normal map:

"detailNormalMap": "/vehicles/common/orange_peel_n.normal.png",
"detailNormalMapStrength": 0.3,
"detailScale": [128, 64],
"normalDetailMapUseUV": 1

This adds subtle paint surface imperfection without modifying the main body normal map.

For car paint, detail normal strength should usually be low. The effect should be visible in reflections and highlights, but not look like heavy surface damage.

Orange Peel example Orange Peel example

Ardente example: carbon fiber

The Ardente carbon material uses both a detail color map and a detail normal map:

"detailMap": "/vehicles/common/carbonfiber_d.color.png",
"detailNormalMap": "/vehicles/common/carbonfiber_n.normal.png",
"detailNormalMapStrength": 0.769999981,
"detailScale": [80, 80],
"detailMapUseUV": 1,
"normalDetailMapUseUV": 1

This is useful for carbon fiber because the repeating weave pattern affects both color and surface normal.

Carbon fiber example Carbon fiber example

Ardente example: grille detail

Some materials use detail maps only for normal detail.

Example:

"ardente_grille_detail": {
  "Stages": [
    {
      "detailNormalMap": "/vehicles/vivace/ardente/ardente_grille_detail_nm.normal.png",
      "detailScale": [37, 37],
      "roughnessFactor": 0.177000001
    }
  ]
}

This adds fine grille texture without requiring a large unique normal map for every repeated detail.

Detail maps and skins

Skins can override colors, roughness, metallic values, opacity maps, or layer setup while keeping the same common detail maps.

This is useful because:

  • A black interior and red interior can share the same leather grain.
  • A tan seat and red seat can share the same fabric/leather detail.
  • Vehicle skins can reuse orange peel paint detail.
  • Special liveries can reuse common paint or surface detail maps.

Example:

"ardente_seats.skin_interior_ardente.interior_red": {
  "Stages": [
    {},
    {
      "baseColorFactor": [0.392870009, 0, 0, 1],
      "detailNormalMap": "/vehicles/common/generic_mat_tex/detail_leather_nm.normal.png",
      "detailScale": [50, 50]
    }
  ]
}

Only the color changes. The detail normal remains shared.

Standalone common detail materials

Some common textures are also used as standalone material assets, not only as detailNormalMap.

For example, Ardente stitches use common stitch textures:

"ardente_stitches": {
  "Stages": [
    {
      "ambientOcclusionMap": "/vehicles/common/generic_mat_tex/detail_stitches_ao.data.png",
      "normalMap": "/vehicles/common/generic_mat_tex/detail_stitches_nm.normal.png",
      "opacityMap": "/vehicles/common/generic_mat_tex/detail_stitches_o.data.png",
      "normalMapStrength": 6
    }
  ],
  "alphaTest": true
}

In this case, the stitches are their own material with opacity and normal maps, rather than a detail layer on another material.

Best practices

  • Use common detail maps for repeated small-scale material texture.
  • Keep main textures for large-scale material layout and baked information.
  • Use detailScale to match real material scale.
  • Avoid very high detail strength unless the material needs strong relief.
  • Use UV1 when consistent tiling is needed across complex geometry.
  • Reuse common textures instead of creating duplicate copies per vehicle.
  • Test detail maps in motion to avoid shimmer or moiré.
  • Check materials at multiple distances and texture quality settings.
  • Use DDS/cooked textures for common maps so they include mipmaps and compress correctly.
Overly strong or overly dense detail maps can create noisy highlights, shimmering, or unrealistic material response. Detail maps should support the material, not overpower it.

Common issues

Detail pattern looks too large

Increase detailScale.

Detail pattern is too small or noisy

Lower detailScale or reduce detailNormalMapStrength.

Detail appears stretched

Check UVs and whether the material is using the correct UV layer.

Detail is missing

Check that:

  • The texture path is correct.
  • The material uses the correct stage.
  • activeLayers includes the layer.
  • The opacity map is not masking the layer out.
  • The mesh contains the selected UV layer.

Skin color changes but material detail does not

This is expected. Detail maps are usually shared and remain the same across skins. Only the material color, masks, or factors may change.

Summary

Common detail maps provide reusable, tiled fine detail for vehicle materials. In the Ardente, they are used for leather, fabric, carpet, headliner, carbon fiber, grille detail, paint orange peel, and stitches.

They allow materials and skins to share high-quality surface detail while keeping unique textures smaller, cleaner, and easier to maintain.

Last modified: July 23, 2026

Any further questions?

Join our discord
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.