Welcome to the Metruvia Content Creator Series DDS and PBR Textures Guide. In the realm of 3D modeling, geometry defines the silhouette, but textures define the reality. A 5,000-polygon locomotive with masterful texturing will always look vastly superior to a 50,000-polygon locomotive with flat, unoptimized color maps.
When deploying mods across the Mod.io cross-platform network, texturing ceases to be purely an artistic endeavor; it becomes a strict exercise in data engineering. PlayStation 5 and Xbox Series X|S rely on Unified Memory Architectures (UMA). If you upload uncompressed .png or .tga files, your mod will devour the shared memory pool, causing massive framerate drops and triggering an immediate rejection from Urban Games QA.
This masterclass will deconstruct the Transport Fever 2 Physically Based Rendering (PBR) pipeline. We will explore the mathematical realities of block compression algorithms, master the MGA channel-packing workflow, understand the color-space math that dictates reflections, and establish the strict hygiene required for console-certified .dds files.
1. The PBR Pipeline and the MGA Paradigm
Transport Fever 2 utilizes a highly optimized PBR material system. To save rendering time and memory bandwidth, the engine does not load five separate grayscale maps for material properties. Instead, it relies on “Channel Packing”—compressing three distinct data maps into the Red, Green, and Blue channels of a single image file known as the MGA map.
A standard opaque vehicle material (PHYSICAL_NRML_MAP) requires exactly three texture files:
Albedo Map: The base color and painted livery.
Normal Map: The baked bump and depth data (panel lines, rivets).
MGA Map: The physical surface properties (Metalness, Gloss, Ambient Occlusion).
1.1 Dissecting the MGA Channels
When setting up your export preset in software like Substance Painter, you must route your texture data into the following specific channels:
Red Channel (Metalness): This is a binary mask. A pixel value of 255 (pure white) tells the engine the surface is raw metal. A pixel value of 0 (pure black) tells the engine the surface is a dielectric (painted metal, wood, rubber, glass). There are virtually no grayscale “in-between” values in reality.
Green Channel (Glossiness): Transport Fever 2 uses Glossiness, which is the exact mathematical inverse of Roughness. A value of 255 (white) creates a perfectly smooth, mirror-like surface (wet paint, polished chrome). A value of 0 (black) creates a completely dull surface that scatters light perfectly (dry dirt, soot).
Blue Channel (Ambient Occlusion): Baked shadow data. This defines the crevices where ambient light cannot reach, giving deep shadows to panel gaps and bogeys without costing actual polygons.
2. The Mathematics of DDS Block Compression
Uploading raw images is forbidden for console distribution. You must use the DirectDraw Surface (.dds) format. DDS is not merely an image format; it is a hardware-level wrapper. The console’s GPU can read DDS block compression directly from the memory pool without forcing the CPU to decompress it first.
2.1 The Compression Ratio
Standard uncompressed RGBA textures use 32 bits per pixel (4 bytes). By utilizing Block Compression (BC), we drastically reduce this footprint.
| Map Type | Required BC Format | Compression Ratio | Bits Per Pixel |
| Albedo (Opaque) | BC1 (DXT1) | 8:1 | 4 bpp |
| Albedo (Transparent) | BC3 (DXT5) | 4:1 | 8 bpp |
| MGA Map | BC1 (DXT1) | 8:1 | 4 bpp |
| Normal Map | BC5 (ATI2) | 4:1 | 8 bpp |
2.2 Why Normal Maps Require BC5
A normal map uses the Red and Green channels to calculate the X and Y vectors of light bouncing off a surface. If you compress a Normal map using BC1, the aggressive 8:1 compression creates “blocky” artifacts. When the game engine’s lighting hits these artifacts, your smooth metallic curves will look like pixelated staircases.
BC5 (also known as ATI2 or 3Dc) isolates the Red and Green channels and compresses them independently at a higher bit rate, preserving perfect mathematical curves for the lighting engine.
3. Color Space: The Gamma Correction Trap
The most common visual error amateur modders make is exporting their MGA and Normal maps in the wrong color space.
3.1 sRGB vs. Linear Data
Albedo Maps (sRGB): Your base color map represents what the human eye sees. It must be exported in the sRGB color space, which applies a gamma curve so that monitors display the colors naturally.
MGA and Normal Maps (Linear / RAW): These maps are not pictures; they are pure mathematical data used by the shader engine. They must be exported in Linear color space (gamma 1.0).
The Fatal Error: If you accidentally save your MGA map in sRGB, the engine will apply gamma correction to your metalness and gloss data. The mathematical values will shift. Your beautifully weathered, realistic steel train will suddenly render in-game looking like it is made of cheap, matte plastic. Always verify your export profile explicitly states Linear for non-color data.
4. Emissive Textures and the Alpha Channel
If your train needs working headlights, glowing dashboard dials, or lit passenger windows, you do not need to create a separate “glow” texture. You handle this using the Alpha channel of your Albedo map.
4.1 The EMISSIVE Material Type
In your .mtl material file, change the type from standard physical to emissive:
type = “PHYSICAL_NRML_MAP_EMISSIVE”
Once declared, the engine reads the Alpha channel of the Albedo map as an illumination mask.
Where the Alpha channel is pure white, the Albedo colors underneath will glow at maximum intensity, completely ignoring the game’s day/night lighting cycle.
Where the Alpha channel is pure black, the surface reacts to sunlight normally.
Optimization Note: Because you are using an Alpha channel, your Albedo map must now be saved as BC3 (DXT5) to support the extra 8-bit alpha data layer.
5. Texel Density and the VRAM Budget
A 4K texture is a luxury; on consoles, it is usually a liability. You must allocate texture resolution based on mathematical necessity, not artistic pride.
5.1 Calculating Texel Density
Texel density dictates how many texture pixels (texels) cover one meter of 3D geometry. For a unified, professional look across all your mods, establish a consistent baseline.
$$TexelDensity = \frac{TextureResolution}{MeshDimensions (meters)}$$
If a train car is 20 meters long, and you use a 2048 pixel map for the length, your density is roughly 100 texels per meter. This is the optimal standard for Transport Fever 2 vehicles.
Do not use a 4096 map on a 10-meter-long tram. The density becomes unnecessarily high, the player will never see the microscopic details unless they clip the camera inside the model, and the VRAM cost quadruples.
5.2 The Mipmap Mandate
Mipmaps are pre-calculated, scaled-down versions of your texture bundled inside the .dds file.
When the camera is 500 meters away from your train, the GPU does not load the 2048×2048 texture; it seamlessly loads the 256×256 mipmap layer.
The Mandate: If you fail to check the “Generate Mipmaps” box when exporting your .dds files, the console GPU will be forced to render full-resolution textures at immense distances. This causes severe shimmering (aliasing) and crashes the VRAM budget.
Mod.io automated systems will instantly reject any .dds file lacking a mipmap chain.
6. Summary: The Pre-Publish Texture Audit
Before you package your visual assets for the Mod.io API, run your res/textures/ folder through this strict engineering checklist:
Format Verification: Are absolutely all image files in .dds format? (Remove any source .png, .tga, or .psd files).
Compression Audit: Is the Albedo BC1 (or BC3 if it has glass/emissives)? Is the MGA BC1? Is the Normal map strictly BC5?
Color Space Check: Were the MGA and Normal maps exported in Linear/RAW format without gamma correction?
Channel Packing: Is the Green channel of the MGA map correctly set to Glossiness (white = smooth), rather than Roughness?
Mipmap Presence: Does every single .dds file contain a full mipmap chain?
By mastering channel packing and treating DDS compression as a strict engineering requirement, you ensure your creations achieve hyper-realistic visual fidelity while leaving a microscopic memory footprint—guaranteeing smooth performance on any console generation.

Leave a Reply