Materials and textures

Updated October 2026 · Project admins and artists

Describes how to create a material catalog in Unreal, report it to your Dousen project, and assign catalog materials and textures to source assets in a DCC.

  1. 01 · UnrealUnreal Data AssetMaster materials, their parameters, and texture settings.
  2. 02 · PortalProject’s Materials tabA read-only copy that Unreal reports to the studio server.
  3. 03 · DCCDCC material pickerAssign materials to mesh slots or texture sets, then validate and publish.
You edit the catalog only in the Unreal Data Asset. The portal’s Materials tab is read-only.

Before you start

Material integration is a preview feature. Before you roll it out, run the test below with your studio’s engine and DCC versions.

Create the catalog in Unreal

The examples use a sample material, M_PaintedMetal, with texture parameters BaseColor, Normal and ORM and a scalar parameter RoughnessMult. Replace them with the parameter names your own materials expose.

  1. Prepare a master material.

    On a working master material, expose the parameters that artists can override. Keep the existing parameter names. Compile and save the material.

  2. Create a Data Asset in project content.

    In the Unreal Content Browser, create a Data Asset and select Dousen Material Catalog (UDousenMaterialCatalog) as its class. Save it in your project’s content, because the DousenUE plugin doesn’t contain content assets. For example, save it as DA_MaterialCatalog in /Game/Dousen/.

  3. Add a Materials entry.

    Open the Data Asset and add an entry to Materials. Set Material to your master material. Give the entry a unique Id in lowercase with underscores, such as painted_metal, and a Display Name, such as Painted Metal. Set Allow Nanite for that material. It is on by default.

  4. Populate the parameters.

    Click AutoPopulateFromMaterials. For each entry that has a Material, it fills in an empty Id and Display Name and adds a declaration for every texture, scalar and vector parameter the material exposes. It guesses each texture’s Content, SRGB, Compression and Match Keywords from the parameter name. It keeps values you filled in and never removes declarations.

  5. Review and save.

    Check every guess, each scalar default and range, and each vector default (see the next section). Remove declarations you don’t need, then save the catalog and the master material. Don’t change an Id after artists have saved assignments that use it.

The Dousen Material Catalog Data Asset in Unreal's Details panel, with the AutoPopulateFromMaterials button above a Materials entry. The entry has Id coated_metal, Display Name Harbor Coated Metal, Material M_CoatedMetal and Allow Nanite checked, followed by Texture Slots, Scalar Params and Vector Params arrays.
The Dousen Material Catalog editor in Unreal. Screenshots on this page use a sample project. This entry uses a second example material, M_CoatedMetal, whose parameters are named differently from M_PaintedMetal.

Set up texture channels and parameters

Each entry in Texture Slots maps one shader parameter to a texture channel:

The Content and Compression dropdowns list fixed choices from the plugin. Parameter names, labels and keywords come from your project. Review what AutoPopulateFromMaterials guessed, and correct Content where it’s wrong.

A texture slot in Unreal with Param Name ColorTexture, Content Albedo, SRGB checked, Compression Default, and Match Keywords basecolor, albedo and _color.
ColorTexture is a custom parameter name. Its Content is Albedo, and its keywords match filenames that contain basecolor, albedo or _color.
Example declarations for M_PaintedMetal
Parameter name Content SRGB Compression
BaseColorAlbedoEnabledDefault
NormalNormalDisabledNormalMap
ORMORMDisabledMasks

In this example, use the keywords basecolor and albedo for BaseColor, normal for Normal, and orm for ORM. The channel order of a packed map must match the shader graph, because Dousen doesn’t repack image channels based on a filename. Auto-population can classify several packed-map names the same way, so check its result against how your textures are packed.

Other texture content types

The Content list also includes Roughness, Metallic, ARM, AO, Emissive, Opacity, Height, Mask and Custom. The Compression choices are Default, NormalMap, Masks, Grayscale and HDR. Data maps normally use linear sampling, so turn SRGB off for them and choose the compression that fits the data. Set Custom slots yourself, because Dousen can’t guess their settings from a name.

Configure scalar and vector controls

Expand Scalar Params and add an entry for each scalar parameter that artists may override. Set Name to the exact shader parameter name. Set Default, Min and Max to values that suit the graph, and enter a Label for the control that artists see. The label can differ from the parameter name and doesn’t rename the shader parameter. If you leave Label empty, artists see the parameter name.

A scalar parameter in Unreal with Name RoughnessStrength, Default 0.6, Min 0.0, Max 1.0 and Label Surface roughness.
The shader parameter is RoughnessStrength, and artists see the label Surface roughness. The 0 to 1 range suits this example’s shader.

Vector Params work the same way: set the exact parameter Name, a Default linear color, and an optional Label. Save the catalog, then test an override on one imported Material Instance from the DCC picker.

Connect the catalog to the project

  1. Check out Config/DefaultDousenUE.ini in the Unreal project if it’s read-only, or create it if it doesn’t exist. Keep the settings that are already in it.
  2. Under [/Script/DousenUE.DousenProjectSettings], add MaterialCatalog with the Data Asset’s full object path, including the asset name after the dot.
  3. Check ServerScheme, ServerHost and ProjectId. An editor launched from DousenDesktop takes the server, project ID and bridge port from Desktop instead, so select the same project in Desktop.
  4. Restart the editor from Desktop while you’re signed in as an Admin, then save the catalog to trigger a report.
INI[/Script/DousenUE.DousenProjectSettings]
ServerScheme=https
ServerHost=core.example.com
ProjectId=YOUR_PROJECT_UUID
MaterialCatalog=/Game/Dousen/DA_MaterialCatalog.DA_MaterialCatalog

Set ServerHost to your studio’s DousenCore host and ProjectId to your project’s UUID. Don’t point ServerHost at the marketing website or the cloud control plane. Don’t put access tokens in project INI files, because Desktop supplies the current sign-in credentials. For the other keys and the HTTPS rule, see Configure the plugin.

Verify the report and distribute it

  1. In the web portal, click Projects, select your project, and click Materials. Check that each material’s ID, display name, path, texture declarations and parameters match the Data Asset.
  2. If the page says "No material catalog has been reported for this project yet," see Troubleshoot catalog and assignment problems.
  3. Submit the catalog .uasset, the master material and its dependencies, and Config/DefaultDousenUE.ini to source control. Other workstations need these files, even though the picker gets the catalog from Core.
  4. On a test artist workstation, sync those files, launch the project, and check that the expected material appears in the DCC picker.

Unreal reports the catalog to Core when the editor starts, when you save the catalog, when the catalog file changes on disk (for example after a Perforce sync), and every five minutes. It skips a report if nothing changed. Core rejects a report that is older than the catalog it already has as stale.

DCCs cache the catalog for five minutes, so Load Materials can return an older copy.

The Materials tab for a sample project, listing the Painted Metal material with a Nanite OK badge, its texture slots BaseColor, Normal and ORM, and a scalar parameter RoughnessMult.
The Materials tab shows what Unreal reported. To change the catalog, edit the Data Asset in Unreal.

Assign a material in the DCC

  1. Open the source.

    Check the project and task in Desktop, then open the saved source file. Note the mesh’s material-slot names (or the Substance Painter texture-set names), which receive the assignments. They are different from shader parameter names such as BaseColor.

  2. Load the catalog and choose a material.

    In the Qt picker, click Load Materials, then choose a material for each slot in Slot Materials. The slot’s texture and parameter fields appear under Material Details. In Substance Painter, the list is Texture Set Materials on the EXPORT tab. Blender uses native controls (see the Blender workflow), and Houdini uses its material setup tools.

  3. Bind textures and set overrides.

    Under Material Details, click Browse… next to each texture parameter and choose its source image, for example the base color, normal and packed ORM images. After an export, Dousen can fill in unset texture paths by matching filenames to the Match Keywords, so check them. Enter only the scalar and vector overrides you want.

  4. Save, validate and publish.

    Save the source, which saves the assignments with it. Collect the instance again, check its type and destination, and click Validate. In Substance Painter, if the mesh didn’t come from a Dousen export with its sidecar, open the EXPORT tab, enter the Unreal object path in Target Unreal mesh (for example /Game/Props/S_Crate.S_Crate), and click Use target mesh before you publish texture sets. Publish the checked instances.

  5. Check the result in Unreal.

    Wait for Desktop to confirm that Unreal imported and saved the asset. Open the imported mesh and its Material Instance, and check the parent material, slot binding, texture parameter values, SRGB and compression settings, and overrides for each slot.

The material picker with Load Materials at the top. Slot Materials lists CrateBody and MetalBands, both set to Painted Metal. Material Details for CrateBody shows Browse… buttons for the BaseColor, Normal and ORM textures and a Roughness Multiplier of 0.6.
Both crate slots use Painted Metal. The crate body’s textures are bound under Material Details, and its Roughness Multiplier is set to 0.6.

If you choose a different material for a slot, the Qt picker clears that slot’s texture bindings and overrides, so bind them again before you publish. Each DCC saves assignments with the source file in its own way.

Test one asset before rollout

How the import sets Nanite

When Unreal imports a static mesh that has a material assignment, it turns Nanite on if every assigned catalog material has Allow Nanite on, and off if any has it off, with these exceptions:

The DCC uses the same material lookup to choose between the Nanite and NonNanite validators. See The Nanite / NonNanite gate.

Update an existing catalog

  1. Sync the latest catalog and check it out before you edit it. Coordinate your edits with the other project admins.
  2. Keep existing Ids when you change display names or add parameters. If you move a master material, update the reference and check that it resolves on a second workstation.
  3. After you change a shader’s interface, click AutoPopulateFromMaterials and review the declarations. Remove renamed or deleted parameters yourself, and set the range and content type for new ones.
  4. Save the catalog, check the new values in the portal, and submit the content and config changes. Artists can refresh or relaunch their DCC once the catalog cache expires.
  5. A catalog update doesn’t rewrite existing Material Instances, so review the existing source assignments and republish a test instance.

Troubleshoot catalog and assignment problems

The Data Asset class is missing
Check that DousenUE is enabled in this project and restart the editor. Fix any plugin build or load errors first.
The Materials tab says "No material catalog has been reported for this project yet"
Look for LogDousenUE messages in Unreal’s Output Log. Check the configured object path, the project UUID, the selected project and the server connection, then save the Data Asset while signed in as an Admin. An HTTP 401 means the editor has no valid sign-in credentials, and an HTTP 403 means the signed-in user isn’t an Admin. Fix that in Desktop, then restart the editor or save the catalog again.
The portal is current but the picker shows an older catalog
Check that the DCC was launched for the same project. Wait for the five-minute cache to expire and load again, or restart the DCC. In Blender, you can click Refresh Material Catalog instead. If a fetch fails, the DCC keeps showing the last catalog it loaded.
The report is rejected as stale
Core already has a newer saved catalog. Sync the Data Asset and merge in the other admin’s changes before you change it again.
Unsaved edits block an update from a sync
If the catalog file changes on disk while the loaded package has unsaved edits, the editor skips the report. Save your edits or reload the version you want, then check the portal again.
Textures are missing or assigned to the wrong channel
Check the source paths, shader parameter names, mesh-slot names, filename keyword matches and packed-map order. Rebind the incorrect fields, validate, and publish a test instance.
The material parent is missing in Unreal
Sync the referenced material and its dependencies into the target project. The catalog stores only the material’s path, so it doesn’t copy the asset to other machines.

For more, see Publishing assets, DCC addons and Unreal Engine.