It is a clean, minimal, purple-themed graphic social media banner, serving as the official header for the "Metruvia Knowledge Base" (Metruvia and Metruvia Knowledge Base) Transport Fever mod brand on Mod.io. The banner is set against a solid, deep-violet-purple background with a rich saturation. In the upper-center, a white, simplified, and symmetrical game controller icon is positioned. Directly below this icon, in prominent, white, bold, sans-serif text, is the text "Metruvia Knowledge Base". Below that, in smaller, regular white text, is the tagline "Built by Players. Powered by Knowledge." Symmetrically framing the central text and icon, on the far left and far right sides, are two large, detailed, white game controllers, depicted from a top-down aerial perspective with colorful button inputs (yellow, blue, pink, and green) and analog sticks. Scattered across the remaining purple space are small, white line-art icons that reinforce the gaming and puzzle themes: several puzzle piece outlines, small pixel-art heart outlines, simple bullseye targets, and a single solid white circle (a "knowledge" point). The layout is balanced, professional, and easily recognizable as part of a gaming community and documentation resource. The art style is flat vector graphic. A small, stylized white compass needle icon, derived from the Metruvia brand mark, is visible over the left analog stick of the controller on the right, providing a cohesive brand identity. The text is sharp and legible.

Metruvia Content Creator Series: DDS and PBR Textures

·

·

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 TypeRequired BC FormatCompression RatioBits Per Pixel
Albedo (Opaque)BC1 (DXT1)8:14 bpp
Albedo (Transparent)BC3 (DXT5)4:18 bpp
MGA MapBC1 (DXT1)8:14 bpp
Normal MapBC5 (ATI2)4:18 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

Your email address will not be published. Required fields are marked *