DreamShaderLang
Plugin reference

Tools

Tools

Tools

DreamShader » Tools

The editor-side surface of DreamShader: the menus, the docked browser tab, the preview renderer, the decompiler, the VirtualFunction actions, the asset-rename sync, the on-disk bridge, and the headless commandlet.

Implemented inthe DreamShaderEditor module (type Editor, loading phase Default)
NamespaceUE::DreamShader::Editor::Private — there is no public editor header
Plugin dependenciesWebSocketNetworking (preview streaming), SQLiteCore (bridge database)
Disabled bythe -NoDreamShaderEditorBridge command-line switch, and by any commandlet run

Everything on this page runs inside UnrealEditor.exe. None of it is present in a packaged game: the module is editor-only, and the runtime DreamShader module carries no UI.

Pages

PageCovers
Editor integrationevery menu entry, toolbar button, context-menu action and tab spawner, with labels, tooltips, icons and effects; the details panel of a Custom Pass pipeline (2.1.0)
Material Content Browserthe docked browser tab: sources and assets side by side with status, diagnostics, provenance, dependencies and inheritance; live preview; the instance factory and Materialize; .dsp pipelines and their New templates (2.1.0)
Previewthe thumbnail renderer, the streaming WebSocket preview, the mesh set and the limits
Decompilerexporting an existing material, function, layer, blend or instance back to source: .dss / .dsi (2.0, the default) or .dsm / .dsf; a Custom Pass pipeline to .dsp (2.1.0)
Migratedsc migrate: 1.x sources rewritten as .dss, each rewrite proved before it is written (2.0)
VirtualFunction toolsthe conditional VirtualFunction context menu and the startup sync service
Asset rename syncfollowing a renamed or moved asset into the .dsm / .dsf / .dsh files that reference it (since 1.9.0)
Workspacethe generated DreamShader.code-workspace, VSCode discovery and launch, the exported manifests — pass-keys.json among them (2.1.0)
PackagesDShader/Packages: what the plugin implements and what it does not
Commandlet-run=DreamShader — headless compile, decompile, migrate, check and the IR tools; the Custom Pass slot registry, pass-registry (2.1.0)
Bridgerequest files, the diagnostics sinks, bridge.db, the WebSocket protocol; the watches on Custom Pass shader files (2.1.0)

Which side implements what

DreamShader ships as two independent products that talk through files in <Project>/Saved/DreamShader/Bridge/ and one loopback WebSocket. This manual documents the Unreal plugin. Editor-extension behaviour is named only where the plugin's contract depends on it, and is labelled as such.

SurfaceImplemented byNotes
Menus, toolbar, context menus, tabUnreal pluginEditor integration
Auto-compile-on-save, diagnostics storeUnreal pluginwrites three diagnostic sinks; see Bridge
Preview rendering (PNG frames)Unreal pluginthe renderer, the mesh set and the clamps are plugin-side — Preview
Preview camera control, pitch clamping, frame acknowledgementeditor extensionthe plugin applies no pitch clamp of its own
DecompilerUnreal pluginDecompiler
.dss / .dsi / .dsm / .dsh / .dsf syntax highlighting, completion, hoverseditor extensionfed by the manifests the plugin exports — Workspace
.dsp highlighting and completioneditor extensionthe plugin exports pass-keys.json and the symbol index for it — Workspace (2.1.0)
DreamShader.code-workspace fileUnreal pluginrewritten on every Open Dream Shader Workspace
Package manifest (dreamshader.package.json), lock file, install/update commandseditor extensionno plugin C++ reads either file — Packages
DShader/Packages directory creation, import resolution, auto-compile exclusionUnreal pluginPackages

The editor extension is published separately as TypeDreamMoon/dreamshader-language-support; its settings, commands and package store are outside the scope of this manual.

Startup order

The bridge and the browser tab are registered from StartupModule. Skipping any of it also skips everything below it.

#StepSkipped when
1If running a commandlet: install the cook hook when -run= contains Cook and -cookworker is absent, then stop—
1aRegister the pass pipeline details panel (since 2.1.0)a commandlet (step 1 stopped)
2Bail out entirely-NoDreamShaderEditorBridge is on the command line
3Create and start the editor bridgeas above
4Register the Material Content Browser nomad tab and its menu entriesas above
5Subscribe the asset rename sync service to OnAssetRenamed (since 1.9.0)as above, and when the asset registry is unavailable

The bridge's own startup then resets bridge.db, exports the manifests (pass-keys.json with settings.json (since 2.1.0)), runs the VirtualFunction sync service, queues a full scan, opens the preview WebSocket server on port 17864, registers the source-directory watcher, and installs the menus.

Notes

  • Menu registration is idempotent and bails during editor shutdown. Bridge menus are owned by the ToolMenu owner DreamShaderEditor; the browser tab's own entries use DreamShaderMaterialBrowser.
  • Every editor log line goes to the LogDreamShader category.
  • Toasts raised by the bridge expire after 4 seconds; toasts raised by the Material Content Browser's own actions (compile, materialize) expire after 3.5 seconds.
  • The editor keeps a ThinCustom material Ephemeral — no .uasset — until it is materialized; a Graph material and a material function are saved by every successful compile (since 2.0.0). See Ephemeral materials.

See also

On this page