A text material language for Unreal Engine
DreamShaderLang
Write Unreal materials as text: a 2.0 .dss is HLSL with /// annotations and #pragma lines, and 1.x .dsm / .dsf files keep working. The DreamShader plugin compiles them inside the editor into standard UMaterial, UMaterialFunction, material layer and material instance assets. The source is the authoring surface; the asset is build output, and can always be thrown away and regenerated.

DreamShader · Text to UE Materials
What it looks like
One .dss file is one material
A whole material from the manual: #pragma sets the material's settings, uniform declares its parameters, /// annotations group and describe them, plain HLSL functions hold the helper logic, and the exported function is the material itself. Saved, it compiles into a standard material graph.
// M_TeleportGlow.dss#pragma material(ShadingModel = Unlit, BlendMode = Additive)/// @group Glow|Look @desc Multiplied on top of the particle colouruniform float4 Tint = float4(1, 1, 1, 1);/// @group Glow|Look @desc Overall emissive gainuniform float Intensity = 0.7;float GlowMask(float2 UV){ float2 P = UV * 2.0 - 1.0; return pow(saturate(1.0 - dot(P, P)), 2.4);}export void M_TeleportGlow(inout material m){ float2 UV = UE.TexCoord(Index = 0); m.EmissiveColor = Tint.rgb * GlowMask(UV) * Intensity;}compiles into the material M_TeleportGlow — Unlit, Additive, with Tint and Intensity parameters
dsc compile M_TeleportGlow.dss
Workflow
From source file to material asset
The source says what you want; the plugin turns it into assets and keeps the two in step. Saving compiles, and generation is idempotent.
Author
Write materials and material functions in .dss (2.0) or .dsm / .dsf (1.x), #include shared headers, and pull in other people's libraries as packages; the VS Code extension handles completion, hover and diagnostics.
Compile
Saving compiles: parse, bind, lower to an intermediate representation, then build material expressions. Every diagnostic carries a DSHnnnn code and points at the line you actually wrote.
Asset
The generator writes UMaterial, UMaterialFunction, material layers and blends, material instances (.dsi), and on UE 5.8 Custom Pass pipelines (.dsp).
Rebuild
Every asset records what it was built from: a changed source, plugin version or setting rebuilds it, and an asset edited by hand is recognized — revert it to its source, or adopt the edit into the source.
Tooling
Plugin, editor extensions, package distribution
Four pieces share one grammar and one diagnostics channel: Unreal compiles and generates, the editor extensions handle completion and navigation, and packages ship reusable libraries.
DreamShader plugin
Compiles sources and generates assets; the material browser, the decompiler, the dsc command line and generation at cook time live in the plugin.
VSCode extension
Highlighting, completion, hover, go to definition, signature help and diagnostics for .dss / .dsm / .dsf / .dsh / .dsp, plus material preview and package commands.
Rider plugin
JetBrains file type, PSI parser, highlighting, completion, navigation, diagnostics and inlay hints.
Packages
Ship reusable header libraries through the @scope/name directory convention; a package can also build its own material functions in the project that installs it.
Documentation
Enter the docs from here
The homepage is for orientation; the docs hold the full reference. Pick the entry that matches the task you are doing now.
Getting started
Install the plugin, write a first material, and learn the save-and-compile loop.
DreamShaderLang 2.0
Declarations in .dss, /// annotations, #pragma, @custom bodies, and how far the pipeline goes today.
1.x language reference
File model, lexical rules, top-level blocks, sections, types, functions and imports.
Diagnostics
Every error and warning, with cause and fix, plus the current limitations.
Examples
Common patterns, and complete sources you can copy as they are.
Changelog
Release notes for the plugin, the VSCode extension and this site.