Overview
Efficient Texture Workflow for High Texel Density & Low VRAM Use
This workflow focuses on maximizing texel density while minimizing VRAM usage by combining unique maps, tiled textures, and sticker/alpha cards.
Recent testing shows that we can use all material layers with no additional or little performance cost.
Why This Workflow?
- Higher texel density without increasing texture memory
- Better VRAM efficiency by relying on reusable tiled textures
- No extra performance cost from material layers, meaning we can use them freely
- Only 4 layers available (unless you add another material, then you get 4 more layers, but at the cost of a draw call), so we must prioritize which materials are tiled vs unique
Texture Methods
1. Unique Texture Sheet
Pros
- Great for adding one-off details:
- Edge wear
- Dirt and grime
- Unique metal variation
- Perfect for tiled texture breakup and storytelling.
Cons
- Objects with large surfaces will suffer from low texel density
- Higher VRAM cost
Use When:
You need variation or hero details that a tile texture cannot give you.
2. Tiled Textures
Pros
- Very high texel density for extremely low VRAM usage
- Perfect for materials with repeated pattern (leather, fabric, metal, plastic, wood)
Cons
- Repetition can feel obvious without breakup (use roughness map to break it up)
- Not ideal for unique wear, decals, or storytelling
Use When:
You need crisp detail and they can be repeating like a leather or cloth texture.
3. Stickers / Alpha Cards
(decals, badges, screws, stitches, emblems, text, etc.)
Pros
- Adds unique, high-resolution detail exactly where needed
- Very VRAM-efficient—only small textures used
- Great for micro-details without increasing base texture resolutions
Cons
- Requires additional geometry (usually fine, but takes time)
- Needs care to avoid clipping; matching the underlying mesh solves 95% of issues
Use When:
You need local detail without raising UV density for the entire asset.
Layer Order Materials
(recommended, not mandatory, workflow)
1. Base Layer (Unique Map)
Either car paint or unique textures that don’t need to be tiled
- To set car paint
- For objects that would take many layers to do tiled
- For Radio Units
- Very unique textures
2. Middle Layers (Tiled Textures)
Use tiled materials on one or more layers for materials like:
- Leather grain
- Carpet
- Textured plastics, etc.
These give you high texel density and keep VRAM costs extremely low.
3. Last Layer Break Up Textures (Unique Map)
Use a unique map to add details such as:
- Dirt / grime / oil stains
- Edge wear and global roughness variation
- Break up tiled materials, etc.
This layer provides global storytelling and hides tiling by adding variation.
Mesh Stickers
Sticker / Decal
Add alpha-based detail meshes where needed:
- Text and labels
- Bolts / screws
- Seams and stitching
- Emblems / badges
- Unique worn patches or stamps
These add crisp local detail without needing a higher-res texture sheet.
Pro Tips
Running Out of Material Layers
Reuse Textures for Free
Using the same texture in multiple material slots, even across different materials costs zero extra VRAM.
Interior example
We’ll be using the Ardente interior shown above as an example of the new material setup (the name template should be carname_interior_main).
Layer 1
This layer contains the base material for the entire interior exported from Substance, using the 4k normal map mostly for bevels.
Layer 2
This layer contains the leather detail material, using a mask to select all the parts that uses it.
- BaseColor Map: Color value
- BaseColor Detail Map: Scale (how much the detail map is tiled)
- Normal Map: Base bevels normal map
- Normal Detail Map: Small (256x256px) tileable leather texture normal map
- Opacity Map: Mask to determine which parts of the meshes uses the detail map
- Roughness & AO Map: Same as Layer 1
Layer 3
This layer contains the headliner detail material, using a mask to select all the parts that uses it.
- BaseColor Map: Color value
- BaseColor Detail Map: Scale (how much the detail map is tiled)
- Normal Map: Base bevels normal map
- Normal Detail Map: Small (256x256px) tileable leather texture normal map
- Opacity Map: Mask to determine which parts of the meshes uses the detail map
- Roughness & AO Map: Same as Layer 1
Layer 4
This layer contains the carpet detail material, using a mask to select all the parts that uses it.
- BaseColor Map: Color value
- BaseColor Detail Map: Scale (how much the detail map is tiled)
- Normal Map: Base bevels normal map
- Normal Detail Map: Small (256x256px) tileable leather texture normal map
- Opacity Map: Mask to determine which parts of the meshes uses the detail map
- Roughness & AO Map: Same as Layer 1
Considerations
Another thing to consider is that if we want to add more detail textures for different materials, we need to create a new material.
In the case of seats, I added a new one called ardente_seats (ideally carname_interior_seats), so I could use the 3 extra layers for added details as seen in this picture:
- Layer 1 is the same base as main interior material
- Layer 2 has the seats leather detail material
- Layer 3 has the fabric detail material
Stitches are being handled differently, since they are floating geometry mapped to a tiled texture, and they need to be their own material because of the alpha transparency mode.
- They use a
BaseColor Palette Map with a red texture so they can match body paint color
- Also set
Alpha Blend Mode to None using Alpha Clip instead for transparency
- Threshold setting should be set according to what works best in each particular case
Car Paint Example
Layer 1 - Paint layer
- Normal map
- Detail normal on skin uv1 can be used for orange peel effect
- AO map
- BaseColor Palette Map
- Clearcoat Map
Layer 1:
Paint layer, speaks for itself, unmasked, so it’s used as a base for the others that go on top.
As a Palette Map, any of the null R G B maps in the common folder can be used, unless vehicle needs specific two tone (or three) paint:
Layer 2 - Details layer
- BaseColor Map
- Metallic Map
- Normal Map
- Roughness Map
- Opacity Map
- AO Map
Layer 2:
Details layer, masked with opacity map, all non-painted parts with fixed roughness and metalness go here.
Layer 3 and 4
Can be used for additional tiled texture details using detail maps (Carbon Fiber for example).
The goal is to avoid masking the paint layer (Layer 1), so only the layers above it will use an opacity mask instead, and this kind of edge bleeding won’t happen.
ETK-I Example
- Layer 1 - only paint:
- Layer 2 on top with non-painted details: