DreamShaderLang
Getting Started

Installation

Add the DreamShader plugin to an Unreal project, find its settings, and confirm the compile chain works.

DreamShaderLang is compiled by the DreamShader Unreal plugin. Everything on this page happens once per project.

RepositoryTypeDreamMoon/DreamShader
Plugin version1.5.0
EnginesUnreal Engine 5.35.8, Win64 verified
Expected path<Project>/Plugins/DreamShader
Plugin dependenciesWebSocketNetworking, SQLiteCore — both engine plugins, both enabled automatically

Install

Copy the plugin into the project

MyProject/
└─ Plugins/
   └─ DreamShader/
      └─ DreamShader.uplugin

Keep the directory named DreamShader; the module names, the log category and every path in this documentation assume it.

Enable it and restart

Enable DreamShader in Edit ▸ Plugins, then restart the editor. The plugin descriptor enables WebSocketNetworking and SQLiteCore for you — the first is the live-preview WebSocket server, the second backs the editor bridge's bridge.db. Both are used only by the editor module.

Three modules load at the Default phase: DreamShader and DreamShaderCompiler (Runtime), and DreamShaderEditor (Editor). Only the editor module generates assets.

Confirm the settings page

Open Project Settings and find:

Project Settings ▸ DreamPlugin ▸ Dream Shader

The settings live under the DreamPlugin category, not under Plugins. If the page is not there, the plugin did not load — check the Output Log for LogDreamShader.

Let the plugin create its directories

On the first editor launch the runtime module creates all three working directories, whether or not you have authored anything:

<Project>/DShader/                                        source root
<Project>/DShader/Packages/                               installed shared libraries
<Project>/Intermediate/DreamShader/GeneratedShaders/      generated .ush includes

DShader is the Source Directory setting; Packages is always the literal Packages subdirectory of it and is not separately configurable.

Write a source file and save it

// <Project>/DShader/Materials/M_InstallCheck.dsm
Shader(Name="DreamMaterials/M_InstallCheck")
{
    Settings = {
        Domain = "UI";
        ShadingModel = "Unlit";
    }

    Outputs = {
        vec3 Color;
        Base.EmissiveColor = Color;
    }

    Graph = {
        Color = vec3(0.2, 0.6, 1.0);
    }
}

With Auto Compile On Save on (the default), the file watcher notices the save, waits out the debounce, and generates the material. The Output Log reports:

Generated DreamShader thin-custom material /Game/DreamMaterials/M_InstallCheck from .../M_InstallCheck.dsm.

Verify the installation

CheckExpected result
Plugin loadedProject Settings ▸ DreamPlugin ▸ Dream Shader exists
Directories createdDShader/ and DShader/Packages/ exist in the project root
A .dsm compilesthe Output Log reports Generated DreamShader thin-custom material …
The material existsTools ▸ DreamShader ▸ Material Content Browser, Dream Shader Gen page, status ● up to date
Editor extension wired upSaved/DreamShader/Bridge/ contains diagnostics.json, material-expressions.json, settings.json, substrate-builtins.json

Do not expect the new material in the Content Browser. Under the default backend it is generated in memory and hides itself from the Content Browser, asset pickers and save pickers. See Your First Material.

The settings you will touch first

The full panel has thirteen properties; these are the ones that matter on day one. Note that the config identifiers keep the b prefix Unreal drops from the display name.

UI nameConfig propertyDefaultEffect
Source DirectorySourceDirectoryDShaderRoot scanned for .dsm / .dsf / .dsh. A relative path resolves against the project directory.
Generated Shader DirectoryGeneratedShaderDirectoryIntermediate/DreamShader/GeneratedShadersWhere the generated .ush include is written.
Default Compiler BackendDefaultBackendThinCustomBackend for a file that does not set Settings = { Backend = … }.
Show In-Memory Materials In Content BrowserbShowInMemoryMaterialsInContentBrowserfalseMakes memory-only materials visible like unsaved assets.
Auto Compile On SavebAutoCompileOnSavetrueWhen off, the source-directory watcher ignores file changes entirely.
Save Debounce SecondsSaveDebounceSeconds0.25Quiet period after a change before compiling. Clamped to [0.05, 10.0].

Values are written to the project's Config/DefaultEngine.ini, section [/Script/DreamShader.DreamShaderSettings], so they are shared by everyone who checks the project out. All thirteen are documented on Project Settings.

GeneratedShaderDirectory is only consulted while the /DreamShaderGenerated virtual shader mount is unregistered. Changing it mid-session does not move the output — restart the editor.

Where the asset lands

Shader(Name="DreamMaterials/M_Minimal") resolves to /Game/DreamMaterials/M_Minimal. Name is a package path relative to the root and must not carry a /Game prefix itself. Root is optional and defaults to Game:

Shader(Name="DreamMaterials/M_Minimal", Root="Plugin.MyPlugin")

That writes /MyPlugin/DreamMaterials/M_Minimal, on disk at <Project>/Plugins/MyPlugin/Content/DreamMaterials/M_Minimal.uasset. Only project plugins under <Project>/Plugins are accepted; engine and marketplace plugins are rejected. Root may also append folders — Game/Generated, Plugin.MyPlugin/Generated. The complete dispatch table is on Asset Paths.

Engine compatibility

DreamShader 1.5.0 is developed against Unreal Engine 5.8 and verified on Win64 with single-plugin RunUAT BuildPlugin builds:

Unreal EngineStatus
5.8Verified
5.7Verified
5.6Verified
5.5Verified
5.4Verified
5.3Verified

To validate the plugin against an engine without building a full project target:

& "<EngineDir>\Engine\Build\BatchFiles\RunUAT.bat" BuildPlugin `
  -Plugin="<ProjectDir>\Plugins\DreamShader\DreamShader.uplugin" `
  -Package="<OutputDir>\DreamShader" `
  -TargetPlatforms=Win64 `
  -Rocket

-Package must point outside the source tree — UAT stages a clean copy there.

On Windows, UE 5.3 and 5.4 may require the MSVC 14.38 toolchain. Newer toolchains can fail while compiling older engine headers, before any plugin code is reached — the failure is not in Source/DreamShader*. Install 14.38 from the Visual Studio Installer and select it in BuildConfiguration.xml before concluding the plugin is broken on those engines.

Feature availability differs by engine version: Substrate.*, ShadingModel = "Substrate" and Base.FrontMaterial need since UE 5.4, and a few transform bases and arguments need 5.5 or 5.6. The gate is compile-time, so moving a project to a newer engine means rebuilding the plugin.

Editor extensions

The language service is not part of the plugin. Install one of the two extensions for highlighting, completion, diagnostics and preview:

Tools ▸ DreamShader ▸ Open Dream Shader Workspace (VSCode) writes DShader/DreamShader.code-workspace, refreshes the three bridge manifests, and launches VSCode on it. See VSCode and Rider.

Next

On this page