DreamShaderLang
Settings

Project Settings

All 13 properties under Project Settings ▸ DreamPlugin ▸ Dream Shader, their real config identifiers, defaults and effects.

DreamShader's project-wide configuration is a UDeveloperSettings object with 13 properties.

The panel is at Project Settings ▸ DreamPlugin ▸ Dream Shadernot under Plugins. Older documentation pointed at the wrong place and listed fewer properties under names that do not exist.

AspectValue
ClassUDreamShaderSettings, in the DreamShader runtime module
ContainerProject
CategoryDreamPlugin
SectionDreamShader, titled Dream Shader
Config file<Project>/Config/DefaultEngine.ini, section [/Script/DreamShader.DreamShaderSettings]

The class is Config=Engine, DefaultConfig, so values live in the project's DefaultEngine.ini, not in a per-user file. They are shared by everyone who checks the project out.

The 13 settings

CategoryUI nameConfig propertyTypeDefaultEffect
MappingsShading Model MappingsShadingModelMappingsTMap<FString, EMaterialShadingModel>emptyExtra or overriding spellings for the ShadingModel value. Scanned before the built-in table.
MappingsBlend Mode MappingsBlendModeMappingsTMap<FString, EBlendMode>emptyExtra or overriding spellings for BlendMode / RenderType.
MappingsMaterial Domain MappingsMaterialDomainMappingsTMap<FString, EMaterialDomain>emptyExtra or overriding spellings for MaterialDomain / Domain.
PathsSource DirectorySourceDirectoryFDirectoryPathDShaderRoot scanned for .dsm / .dsf / .dsh sources. Empty falls back to DShader; a relative path resolves against the project directory. <Source>/Packages is derived from it.
PathsGenerated Shader DirectoryGeneratedShaderDirectoryFDirectoryPathIntermediate/DreamShader/GeneratedShadersWhere the generated .ush include is written and the virtual shader directory is mapped. Empty falls back to the default.
CompilerDefault Compiler BackendDefaultBackendEDreamShaderDefaultBackendThinCustomBackend for a source file that does not set Settings = { Backend = … }. Changing it regenerates every source file in memory.
CompilerShow In-Memory Materials In Content BrowserbShowInMemoryMaterialsInContentBrowserboolfalseWhen off, memory-only DreamShader instances report themselves as non-assets and disappear from the Content Browser, asset-registry enumeration and save pickers. Read live, on every query.
CompilerAuto Compile On SavebAutoCompileOnSavebooltrueWhen off, the source-directory watcher ignores file changes entirely.
CompilerSave Debounce SecondsSaveDebounceSecondsfloat0.25Quiet period after a file change before compiling. Clamped to [0.05, 10.0]; the slider stops at 2.0. Falls back to 0.25 when the settings object is unavailable.
CompilerVerbose LogsbVerboseLogsboolfalseAdds Display-level logging of the dependent-file compile queue.
DecompilerExport Decompiled LayoutbExportDecompiledLayoutbooltrueWhen on, a decompiled .dsm carries a Layout = { … } section reproducing node positions.
EditorOpen In New WindowbOpenInNewWindowbooltrueWhen off, the VSCode launch command gets --reuse-window.
EditorMaterial Instance SubfolderInstanceSubfolderFStringInstancesSubfolder, relative to the parent material's folder, where the Material Content Browser creates new instances. Empty creates them alongside the parent. The asset is named MI_<ParentName>, uniquified.

Rows in bold carry an explicit DisplayName; the others show the name Unreal derives from the property identifier, which drops a leading b from booleans. The ini keys are the raw C++ identifiers, b prefix included — bAutoCompileOnSave, not AutoCompileOnSave.

EDreamShaderDefaultBackend

EnumeratorMeaning
GraphBuild a visible UMaterial node graph per material.
InstanceDeprecated alias for ThinCustom since 1.5.0
ThinCustomBuild the graph on a hidden per-material base and emit a lightweight material instance of it. The default.

How a per-file Backend setting overrides this is on Backend.

The mapping maps

The three Mappings entries extend the value spellings accepted by the three enum settings. They are empty by default: the built-in alias tables are rebuilt on demand during resolution and are never materialized into these maps, so an empty panel does not mean "no aliases".

BehaviourDetail
Precedencethe project map is scanned first; the first normalized-key match returns immediately
Shadowingan entry whose key normalizes to a built-in alias replaces it
Disablingan entry mapped to MSM_MAX / BLEND_MAX / MD_MAX makes that spelling fail to resolve, and does not fall through to the built-in
Key matchingtrimmed, lower-cased, and stripped of spaces, _ and -
Ambiguitytwo entries whose keys normalize identically are resolved in unspecified order

The complete built-in tables are on Enum Values.

Panel tooltips

The editor's own wording, verbatim.

Default Compiler Backend:

How DreamShader materializes a source file that does not specify Settings = { Backend = "..." }. ThinCustom (the default) builds the material graph on a hidden per-material base and emits a lightweight, memory-only material instance of it -- full feature surface, no visible per-material asset. Graph builds a visible UMaterial node graph. Instance is a deprecated alias for ThinCustom.

Show In-Memory Materials In Content Browser:

When enabled, the memory-only DreamShader materials appear in the Content Browser like unsaved assets. Disabled by default: the source files are the intended authoring surface, and hiding the materials also prevents accidental Save actions from materializing them to disk.

Material Instance Subfolder:

Subfolder, relative to the parent material's folder, where the Material Content Browser creates new material instances. Leave empty to create them alongside the parent.

Where else these are surfaced

SettingAlso reachable from
bShowInMemoryMaterialsInContentBrowserTools ▸ DreamShader ▸ Show In-Memory Materials, and the Project page of the Material Content Browser. Both write the ini and re-broadcast asset creation/removal for every memory-only instance.
DefaultBackendChanging it in the panel triggers an immediate in-memory regeneration of every source file, plus a notification when persisted generated assets shadow the result.
SourceDirectory, GeneratedShaderDirectoryConsumed by the module's directory helpers — see Project Layout and Packages.

Notes

  • There is no in-memory on/off toggle. The editor always generates in memory — source files are the authoring surface — and materialization to disk happens at cook, through the commandlet, or through an explicit action. Default Compiler Backend replaced the old In-Memory toggle in since 1.5.0.
  • GeneratedShaderDirectory is only consulted while the virtual shader directory is unmapped. If a mapping already exists for this project, the existing mapping wins over the setting until the editor restarts.
  • The built-in shader library path setting was removed in 1.3.8; no replacement exists.

Example

<Project>/Config/DefaultEngine.ini, showing every scalar property at its default value:

[/Script/DreamShader.DreamShaderSettings]
SourceDirectory=(Path="DShader")
GeneratedShaderDirectory=(Path="Intermediate/DreamShader/GeneratedShaders")
DefaultBackend=ThinCustom
bShowInMemoryMaterialsInContentBrowser=False
bAutoCompileOnSave=True
SaveDebounceSeconds=0.250000
bVerboseLogs=False
bExportDecompiledLayout=True
bOpenInNewWindow=True
InstanceSubfolder=Instances

The three mapping maps are container properties; edit them in the Project Settings panel and let the editor write them back.

Next

  • Backend — how Default Compiler Backend is overridden per file
  • Enum Values — the built-in tables the mapping maps extend
  • In-memory Materials — what "memory-only" means in practice
  • Editor Tools — the Tools menu entries and the Material Content Browser

On this page