Why Modded Textures Shimmer and Moire in Motion
When custom 4K or 2K textures are exported into game engines without pre-calculated mipmap pyramids, modern rasterizers sample full-resolution texels into sub-pixel screen space at distance. This undersampling induces high-frequency moire patterns, aggressive temporal shimmering during camera rotation, and significant GPU texture cache thrashing.
| Texture Parameter | Without Mipmaps (Bugged) | With Pre-Calculated Mipmaps | Visual & Performance Impact |
|---|---|---|---|
| Texture Footprint | Single 4096x4096 layer | Pyramidal chain down to 1x1 | Memory footprint increases by exactly 33% |
| Distant Sampling | 1 texel picked from huge stride | Pre-filtered blended texels | Shimmering eliminated; smooth grazing angles |
| VRAM Cache Hit Rate | Drops below 40% in landscape views | Exceeds 85% cache locality | Reduces memory bandwidth saturation |
| Anisotropic Filtering | Cannot blend between mip levels | 16x AF calculates true surface slant | Sharp details without noise artifacts |
Step 1: Identifying Missing Mipmaps via Texconv and NVTT
Inspect suspicious loose texture files (.dds) using Microsoft DirectX Texture Tool or Nvidia Texture Tools (NVTT) command-line utilities.
texdiag.exe info "Data\Textures\architecture\stonewall_d.dds"
If the output reports mip levels: 1 on high-resolution diffuse, normal, or roughness maps, the author exported raw flat bitmaps. Every camera movement across cobblestone, fences, foliage, or tiled roofs will produce aggressive visual noise.
Step 2: Batch Generating Mipmaps with DirectDraw Surface Formats
To repair uncompressed or missing-mip textures without introducing generational degradation, use texconv.exe from the DirectXTex library.
Processing Diffuse / Albedo Maps (sRGB Color Space)
texconv.exe -f BC7_UNORM_SRGB -m 0 -srgb -y -o "FixedTextures" "stonewall_d.dds"
Processing Normal Maps (Linear Vector Data)
Normal maps must NEVER be processed with sRGB curves or box-filter blurring that shifts tangent vectors:
texconv.exe -f BC5_UNORM -m 0 -y -o "FixedTextures" "stonewall_n.dds"
Parameter Breakdown
-f BC7_UNORM_SRGB: Modern high-fidelity block compression for color channels.-f BC5_UNORM: Two-channel compression dedicating 8 bits each to X and Y normal vectors.-m 0: Automatically computes the full mipmap pyramid until 1x1 pixel.-srgb: Enforces gamma-correct downsampling to prevent texture darkening in distant LODs.
Step 3: Managing Transparency and Cutout Alpha Fringing
For chainlink fences, leaves, and grass blades, downsampling alpha channels often causes foliage to appear thinned out or completely vanish in distance.
- In Photoshop / GIMP / NVTT export dialogs, enable Alpha Mipmap Coverage Preservation.
- Set Alpha Test Threshold reference value (commonly 0.5 or 128).
- If using
texconv, apply alpha threshold preservation flags:
texconv.exe -f BC7_UNORM_SRGB -m 0 -at 0.5 -o "FoliageFixed" "tree_leaves.dds"
- Re-pack into your mod manager staging folder and verify in-game camera motion against high-frequency scene geometry.