Materials and textures¶
This chapter covers texture format requirements, the EDM shader node system, the full material input/output reference, two-layer decals, light maps, UV animation, and the specialised Deck and Glass materials.
Source attribution: Derived from Eagle Dynamics' Blender Exporter Part 3 video and supplemented with community knowledge.
Texture format requirements¶
To optimise game-engine performance, all textures must be converted to DDS format before export. The Photoshop DDS plugin is the reference tool, though any DDS-capable converter works.
| Format | Usage | Description |
|---|---|---|
| BC1 | Albedo without alpha, light maps | Compressed format for textures with no alpha channel |
| BC3 | Albedo with alpha, RMC (roughness/metallic packed) | Compressed format for textures that need an alpha channel — albedo with opacity, packed RM channels |
| BC5 | Normal maps | Non-compressed format used for normal mapping |
Non-Color mode rule¶
Set all non-colour textures to Non-Color mode in Blender for correct viewport display. This applies to:
- Roughness / Metallic / RMC textures
- Normal maps
- Light maps
- Damage textures (DM_normal, DM_map)
- Any other non-albedo, non-emissive texture
The colour space setting only affects Blender's viewport. It does not influence export. The exporter reads from the texture file directly.
Material workflow¶
Material work happens in two places:
- Materials tab in the Properties editor — add slots, create or switch materials.
- Shader Editor — the node graph for textures, UVs, and animation.
Reminder: ensure the Node Wrangler add-on is enabled. See Installation — Node Wrangler.
Basic material creation¶
- Select the geometry.
- Create a material in either the Materials tab or Shader Editor and give it a clear, model-specific name (see Naming conventions).
- In the Shader Editor, delete the default Principled BSDF node.
- Press
Shift + Aand open the EDM Materials submenu. Choose the required material group. - Connect the EDM node to the Material Output node's Surface channel. With Node Wrangler enabled,
Ctrl + Shift + LMBon the EDM node performs this connection automatically. - Position the node, then drag-and-drop the required texture files into the editor.
- Inputs and outputs are labelled — connect each texture to its matching input.
Multi-slot materials¶
When an object uses several materials:
- In the Materials tab, create multiple slots.
- Assign a material to each slot.
- In Edit Mode, select the geometry that should carry a given material and click Assign.
Viewport preview¶
- Enable Material Preview mode to preview textures in the 3D viewport.
- For correct transparency preview, switch the render engine to EEVEE and set the material's Blend Mode (in the Material Settings tab) from
Opaqueto Alpha Clip or Alpha Blend.
Important: the Blender Blend Mode is for viewport preview only. Export transparency is configured in the EDM material's Transparency menu, not via Blender's blend mode. The Transparency menu also exposes shadow caster settings.
EDM material inputs reference¶
The default EDM material exposes a comprehensive set of inputs. Items marked as preview-only affect Blender's viewport but are not written to the exported model.
| Input | Purpose |
|---|---|
| Base Color | The base texture (albedo). If no texture is connected, the value sets the object's flat colour |
| Base Alpha | Transparency display in Blender's viewport only. Does not affect export |
| Decal Color | Second colour texture layer — adds dirt, leaks, or extra detail on top of the base |
| Decal Alpha | Decal transparency for viewport only. Does not affect export |
| Roughness Metallic (AO/RMC) | Packed roughness/metallic/AO texture. The AO Value slider visually overlays AO on the colour texture for preview only |
| Light Map | A separate texture baked with lighting or AO on a different UV map. The Light Map Value slider is viewport-only |
| Normal Map | Normal texture. The Normal Encoding slider switches between DirectX and OpenGL conventions — viewport only |
| Emissive | Emission texture. Includes Emissive Mask (defines glowing area) and Emissive Value (intensity) |
| FLIR | Texture showing how the object appears in infrared |
| Damage Textures | DM_base, DM_normal, and DM_map inputs. See Lighting & Damage |
| Decal ID | Fixes draw order issues. Higher numbers render later |
| Opacity Value | Multiplier for transparency level. Animating it produces fade in/out effects |
| Material Version | Version number of the material. Update via the Update EDM Materials button in the EDM Export tab if export errors mention version mismatch |
For the consolidated reference also used by the Deck and Glass materials, see EDM material inputs reference.
Outputs¶
- BSDF (main): connects to the Material Output node's Surface channel. Required for correct viewport display.
- Per-channel preview outputs: allow individual channels (AO, roughness, metallic, etc.) to be previewed in isolation while debugging materials.
Updating material versions¶
As the exporter evolves, EDM materials get new versions. If an export error mentions material version, click Update EDM Materials in the EDM Export tab. The version number of each material is shown at the bottom of the material in the Shader Editor.
Decals (two-layer materials)¶
A decal is a second colour texture layer overlaid on the base material via an alpha channel — used for dirt, streaks, leaks, surface details.
Setup¶
- In the Object Data Properties (Data tab), create a second UV map for the object and give it a clear name.
- Edit the UV in the UV editor. The texture's alpha channel can be previewed there.
- In the Shader Editor, assign the decal texture to the Decal Color input.
- Add a UV Map node and assign the second UV map to it. Wire the UV Map node into the decal texture node.
Default behaviour: if a texture node has no UV Map node attached, the first UV channel is used by default.
Important limitations¶
- Color only: the second layer can only carry a colour texture. Roughness/metallic and normal maps are not yet supported on the decal layer.
- UV mismatch error: if a material references a UV map that the object using it does not have, the exporter throws an error. Always verify the second UV map exists on every object using a decal material.
Light maps¶
Light maps are baked lighting (or AO) stored on a separate UV map. They are mainly used for large objects or geometry with many duplicates.
Setup¶
- Create a new UV map for the object.
- Bake lighting or ambient occlusion onto it. Multiple objects may share one large texture atlas.
- Connect the baked texture to the Light Map input and assign the new UV via a UV Map node.
- To overlay the light map on the object's colour in Blender's viewport, max out the AO Value and Light Map Value sliders.
Resolution recommendation¶
Approximately 64 pixels per metre of model surface area.
In-game blending¶
In game, the light map blends with ambient occlusion from the roughness/metallic texture using a darken method — the darkest pixel between the two sources wins.
See Blender's baking documentation for the bake workflow itself.
UV animation¶
UV movement and offset can be animated for effects like scrolling textures or rotating instrument needles.
Setup¶
- Select the texture node and press
Ctrl + T(Node Wrangler) to add a Mapping node and a Texture Coordinate node, both pre-wired. - Add a UV Map node to define the coordinate source.
- Press
Iwith the mouse over the Mapping node's Offset or Rotation values to insert keyframes. - Open the N-panel (
N), go to the Node tab, and enter the argument index number in the Label field. The Mapping node's name will change to that number. - Export and test.
Two-sided rendering¶
The Two-Sided function in the EDM Export panel forces the object to render from both sides — useful for thin geometry such as flags, sails, or single-plane decals.
Deck material¶
A complex shader for ship and carrier decks, using two main layers.
Layer composition¶
- First layer (tiled): base colour, roughness/metallic, and normal — typically a trim texture tiled horizontally for repeating planks or grating.
- Second layer (unique): a decal containing dirt, streaks, tyre marks, etc. Includes base colour, roughness/metallic, damage textures, and a wet map. Uses the second UV map.
Build sequence¶
- Connect the first layer's textures to base colour, roughness/metallic, and normal inputs.
- Connect the second layer's textures to base colour, roughness/metallic, and wet map inputs.
- Arrange the texture nodes in two columns — one per layer — for clarity.
- Assign the second UV map to all second-layer textures using UV Map nodes.
- If damage textures are used, set them up in the same pattern. See Lighting & Damage — Texture damage.
- Always verify each second-layer texture has its UV Map node connected.
- Use the Damage Visibility slider to preview damage in the viewport.
Glass material¶
A PBR material optimised for glass surfaces — cockpit canopies, instrument glass, vehicle windows.
Setup¶
- Create the EDM Glass material group via
Shift + A→ EDM Materials. - Set Shadow Caster and Transparency parameters as in the default material.
- Choose Glass Type:
Cockpitfor cockpit glassInstrumentalfor everything else (instrument faces, smaller glass elements)
Glass material inputs¶
| Input | Purpose |
|---|---|
| Glass Color / Color Filter | The albedo of the glass itself — the colour of the glass, not dirt or leaks |
| Diffuse Color / Dirt | Colour of dirt, leaks, and surface contamination. Connect the alpha channel as well |
| Roughness Metallic | Standard packed RM input, used as in the default material |
| Normal / Scratches | Mainly used to render scratches. Scratches work in-game but do not display in Blender's viewer |
| FLIR | Same as default material |
| Damage Textures | Same as default material |
Resources¶
- Blender color management
- Blender Mapping node
- Blender baking
- Blender Node Wrangler
- EDM material inputs reference
- Hotkey reference
Next: Lighting and damage