DreamShaderLang
Settings

Enum Values

Every accepted ShadingModel, BlendMode and Domain spelling, how a value is matched, and how project mappings extend or shadow the built-in tables.

Material enums

DreamShader » Settings » Material enums

The complete set of value spellings accepted by the ShadingModel, BlendMode / RenderType and MaterialDomain / Domain keys of a Shader Settings block.

Declared in.dsm — as the value of a Shader Settings key
Kindvalue catalogue
GeneratesUMaterial::BlendMode, the material's shading model, UMaterial::MaterialDomain

Synopsis

Settings [=] {
    [ShadingModel   = <shading-model>;]
    [{ BlendMode | RenderType }     = <blend-mode>;]
    [{ MaterialDomain | Domain }    = <domain>;]
}

How a value is matched

  1. The value is normalized: trimmed, lowercased, then every space, _ and - is deleted.
  2. The project's mapping map for that key is scanned first. The first normalized-key match wins and returns immediately — a project entry shadows the built-in spelling and there is no fall-through.
  3. Only if no project entry matched is the built-in table built and scanned the same way.
  4. A match whose value is the enum's _MAX sentinel counts as failure, so a project entry pointing at MSM_MAX / BLEND_MAX / MD_MAX makes that spelling stop resolving.

Because of step 1, "Default Lit", "DefaultLit", "default_lit" and "DEFAULT-LIT" are the same alias. The tables below list the raw spellings the plugin registers; every separator variant of each is equally valid.

The built-in tables are built in two phases: a reflected phase that walks the engine enum and strips the enumerator prefix, then an explicit phase that adds hand-written spellings. The explicit phase never overwrites a reflected entry with the identical key, so a few explicit rows are no-ops kept for clarity.

ShadingModel

Reflected from EMaterialShadingModel, prefix MSM_ stripped.

AliasSourceEngine enumerator
UnlitreflectedMSM_Unlit
DefaultLitreflectedMSM_DefaultLit
SubsurfacereflectedMSM_Subsurface
PreintegratedSkinreflectedMSM_PreintegratedSkin
ClearCoatreflectedMSM_ClearCoat
SubsurfaceProfilereflectedMSM_SubsurfaceProfile
TwoSidedFoliagereflectedMSM_TwoSidedFoliage
HairreflectedMSM_Hair
ClothreflectedMSM_Cloth
EyereflectedMSM_Eye
SingleLayerWaterreflectedMSM_SingleLayerWater
ThinTranslucentreflectedMSM_ThinTranslucent
Stratareflected (since UE 5.4)MSM_Strata
Default Litexplicit aliasMSM_DefaultLit
Litexplicit aliasMSM_DefaultLit
Preintegrated Skinexplicit aliasMSM_PreintegratedSkin
Clear Coatexplicit aliasMSM_ClearCoat
Subsurface Profileexplicit aliasMSM_SubsurfaceProfile
Two Sided Foliageexplicit aliasMSM_TwoSidedFoliage
Single Layer Waterexplicit aliasMSM_SingleLayerWater
Thin Translucentexplicit aliasMSM_ThinTranslucent
Substrateexplicit alias (since UE 5.4)MSM_Strata
Strataexplicit alias (since UE 5.4) — no-op, the reflected phase already registered this keyMSM_Strata

15 distinct normalized aliases on UE 5.4 – 5.8; 13 on UE 5.3, which has neither strata nor substrate.

Excluded: MSM_NUM, MSM_MAX and — deliberately — MSM_FromMaterialExpression. Writing ShadingModel = "FromMaterialExpression"; is an error (DSH7129), not a way to drive the shading model from the graph.

On UE 5.3, ShadingModel = "Substrate"; and ShadingModel = "Strata"; are rejected with a code of their own (DSH7128) rather than the generic "unsupported" one. See Diagnostics and Substrate builtins.

BlendMode

Reflected from EBlendMode, prefix BLEND_ stripped. The key may also be spelled RenderType.

AliasSourceEngine enumerator
OpaquereflectedBLEND_Opaque
MaskedreflectedBLEND_Masked
TranslucentreflectedBLEND_Translucent
AdditivereflectedBLEND_Additive
ModulatereflectedBLEND_Modulate
AlphaCompositereflectedBLEND_AlphaComposite
AlphaHoldoutreflectedBLEND_AlphaHoldout
TranslucentColoredTransmittancereflectedBLEND_TranslucentColoredTransmittance
Cutoutexplicit aliasBLEND_Masked
Transparentexplicit aliasBLEND_Translucent
PremultipliedAlphaexplicit aliasBLEND_AlphaComposite
Premultipliedexplicit aliasBLEND_AlphaComposite

12 distinct normalized aliases on a stock UE 5.4 – 5.8 build. TranslucentColoredTransmittance is a Substrate-only enumerator, so the count is engine-version dependent.

Excluded: BLEND_MAX, and the two engine enumerators marked hidden — BLEND_TranslucentGreyTransmittance and BLEND_ColoredTransmittanceOnly. Both are aliases of values already in the table, so nothing is unreachable.

[!NOTE] TranslucentColoredTransmittance does not survive a decompile. The decompiler writes BLEND_TranslucentColoredTransmittance back out as "Translucent", so a UMaterial → .dsm → UMaterial round trip downgrades the blend mode. Re-add the setting by hand after decompiling such a material.

Domain

Reflected from EMaterialDomain, prefix MD_ stripped. The key may also be spelled MaterialDomain, which wins if both are present.

AliasSourceEngine enumerator
SurfacereflectedMD_Surface
DeferredDecalreflectedMD_DeferredDecal
LightFunctionreflectedMD_LightFunction
VolumereflectedMD_Volume
PostProcessreflectedMD_PostProcess
UIreflectedMD_UI
RuntimeVirtualTexturereflected — hidden in the engine, kept on purposeMD_RuntimeVirtualTexture
DeferredDecalexplicit alias — no-op, the reflected phase already registered this keyMD_DeferredDecal
Decalexplicit aliasMD_DeferredDecal
Light Functionexplicit aliasMD_LightFunction
Post Processexplicit aliasMD_PostProcess
UserInterfaceexplicit aliasMD_UI
User Interfaceexplicit aliasMD_UI
Runtime Virtual Textureexplicit aliasMD_RuntimeVirtualTexture
VirtualTextureexplicit aliasMD_RuntimeVirtualTexture
Virtual Textureexplicit aliasMD_RuntimeVirtualTexture

10 distinct normalized aliases, stable across UE 5.3 – 5.8.

Excluded: MD_MAX. Every other hidden enumerator is skipped, with MD_RuntimeVirtualTexture as the single deliberate exception — the engine marks it hidden, the plugin keeps it.

Adding project-specific spellings

Three TMap<FString, …> properties on the project settings extend the tables:

SettingValue typeExtends
ShadingModelMappingsEMaterialShadingModelShadingModel
BlendModeMappingsEBlendModeBlendMode / RenderType
MaterialDomainMappingsEMaterialDomainMaterialDomain / Domain

They live under Project Settings ▸ DreamPlugin ▸ Dream Shader ▸ Mappings and are empty by default — the built-in tables above are never materialized into them. See Project settings.

EntryEffect
A key that normalizes to an existing built-in aliasshadows the built-in; the project value is used
A brand-new keyadds an accepted spelling
Any key mapped to MSM_MAX / BLEND_MAX / MD_MAXmakes that spelling fail to resolve; it does not fall through to the built-in table

Keys are compared after normalization, so casing, spaces, underscores and hyphens in the entry do not matter.

[!WARNING] Two project entries whose keys normalize to the same string are scanned in unspecified hash-map order — which one wins is undefined. Do not add both My Model and my_model.

Notes

  • The reflected phase walks whatever the compiled engine's enum contains. A modified engine build contributes its own values automatically: an engine that adds MSM_Toon makes ShadingModel = "Toon"; work with no plugin change and no project mapping. The tables above describe a stock UE 5.3 – 5.8 build.
  • Enumerator membership comes from the compiled engine, so it is engine-version dependent. The values the plugin itself gates are Strata / Substrate, which it registers only on UE 5.4 and newer.
  • Values carrying Hidden metadata are filtered out only in builds that keep editor-only data. Material generation is editor-only, so this is the configuration that applies in practice.
  • Saved/DreamShader/Bridge/settings.json exports these tables for editor completion. It de-duplicates by normalized alias, so it shows "Default Lit" but not "DefaultLit". Both still compile — the manifest is a completion surface, not the acceptance set. See Workspace and Bridge.
  • Omitting a key does not leave the previous value in place: a regenerated material is reset to Opaque / DefaultLit / Surface first. See Shader settings.

Diagnostics

CodeRaised when
DSH7129the ShadingModel value matched no project mapping and no built-in alias, or matched an entry mapped to MSM_MAX
DSH7128the ShadingModel value trims and case-folds to Substrate or Strata on UE 5.3
DSH7127no match for the BlendMode / RenderType value
DSH7130no match for the MaterialDomain / Domain value

All four are raised while the settings are validated, before any of them is applied, and reach you inside DSH8215, which names the material; the rebuild is rolled back.

Example

Shader(Name="Docs/M_EnumSpellings")
{
    Properties { vec3 Tint = vec3(0.9, 0.2, 0.1); }

    Settings {
        Domain       = "User Interface";   // -> MD_UI
        ShadingModel = "Lit";              // -> MSM_DefaultLit
        RenderType   = "Premultiplied";    // -> BLEND_AlphaComposite
    }

    Outputs {
        vec3  Color;
        float Alpha;
        Base.EmissiveColor = Color;
        Base.Opacity       = Alpha;
    }

    Graph {
        Color = Tint;
        Alpha = 0.75;
    }
}

Resulting material state:

MaterialDomain = MD_UI
ShadingModel   = MSM_DefaultLit
BlendMode      = BLEND_AlphaComposite

See also

On this page