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.

Three Settings keys take an engine enum: ShadingModel, BlendMode (also spelled RenderType) and MaterialDomain (also spelled Domain). They do not use the generic reflected enum matcher — they have their own alias tables, listed in full here.

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

How a value is matched

  1. The value is normalized: trimmed, lower-cased, 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, with 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 an 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.4MSM_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.4MSM_Strata
Strataexplicit alias since UE 5.4 — no-op, already registered by the reflected phaseMSM_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, not a way to drive the shading model from the graph.

Substrate / Strata require since UE 5.4. On UE 5.3 they are rejected with a dedicated message, ShadingModel="Substrate" requires Unreal Engine 5.4 or newer., rather than the generic "unsupported" one.

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, plus the two engine enumerators marked hidden — BLEND_TranslucentGreyTransmittance and BLEND_ColoredTransmittanceOnly. Both are aliases of values already in the table, so nothing is unreachable.

TranslucentColoredTransmittance does not survive a decompile. The decompiler writes BLEND_TranslucentColoredTransmittance back out as "Translucent", so a UMaterial.dsmUMaterial 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, already registered by the reflected phaseMD_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 properties on the project settings extend these tables. They live under Project Settings ▸ DreamPlugin ▸ Dream Shader ▸ Mappings and are empty by default — the built-in tables above are never materialized into them, so an empty panel does not mean "no aliases".

SettingValue typeExtends
ShadingModelMappingsEMaterialShadingModelShadingModel
BlendModeMappingsEBlendModeBlendMode / RenderType
MaterialDomainMappingsEMaterialDomainMaterialDomain / Domain
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.

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.
  • The only values the plugin itself gates are Strata / Substrate, registered 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 that is the configuration which 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.
  • Omitting a key does not leave the previous value in place: a regenerated material is reset to Opaque / DefaultLit / Surface first. See Material Settings.

Diagnostics

MessageCause
Unsupported ShadingModel '{Value}'.The value matched no project mapping and no built-in alias, or matched an entry mapped to MSM_MAX.
ShadingModel="Substrate" requires Unreal Engine 5.4 or newer.The value trims and case-folds to Substrate or Strata on UE 5.3.
Unsupported BlendMode/RenderType '{Value}'.No match for the BlendMode / RenderType value.
Unsupported MaterialDomain '{Value}'.No match for the MaterialDomain / Domain value.

All four are raised during validation, before anything is written to the material.

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

Next

On this page