ChangeLog
VSCode Extension
Release notes for the DreamShaderLang VSCode extension, taken from the extension repository.
The main changes in the dreamshader-language-support extension, compiled from the extension
repository's commit history and its own CHANGELOG.md.
Extension repository:
https://github.com/TypeDreamMoon/dreamshader-language-support
The extension ships on its own cadence and its version numbers are unrelated to the plugin's. For the Unreal plugin see DreamShader Plugin.
2.2.0 - 2026-10-14
For DreamShader after 2.1.2; everything from 2.1.0 keeps working with older plugins.
#includeandBL::complete in a file that has never been compiled. A.dsswas answered only from the symbol index the plugin writes after a compile. Now#include "offers the headers the include resolver finds,BL::the functions of that namespace, and a bare word the namespaces and plain functions of the include closure; hover, Go to Definition and signature help answer for them too. The headers are read as text, 1.x and 2.0 alike; where the index answers, it still comes first.BL::in a 1.x source offers that namespace's functions only, instead of every intrinsic andUE.node in reach. A 1.x source that includes a header written in 2.0 sees its functions as well.- A
.dshwritten in 2.0 opens as DreamShader 2.0. A header with 2.0 declarations and no 1.x block switches language when it opens; a mixed one stays 1.x. - The plugin's new file-level forms.
#pragma generate(...),#pragma nogeneration,#pragma disable_warning(...)and#pragma disable_error(...)complete, hover and are coloured, as are/// @generate,/// @nogenerationand// disable_warning DSHnnnn; a disable list completes the codes the file reports now, and the diagnostics the extension finds on its own honour it. In 1.x the three pragmas are accepted at the top level, andFunction(Generate = ...),NoGeneration,LibraryandDescriptioncomplete in their headers.
2.1.0 - 2026-10-04
Custom Pass pipelines: .dsp
- A
.dspopens as DreamShader Pipeline, under the language iddreamshader-dsp(the plugin's generated workspace associates.dspwith it from 2.1.0;dreamshaderlanganddreamshader-dssare unchanged), with a grammar for#pragma pipeline,uniform,static const,buffer,passand a pass's keys andread/write/parambindings, and snippets for the pipeline, every pass kind and the three ways to write a pass's HLSL. - HLSL inside, coloured as HLSL. A
.dsp'shlsl { }blocks — the file's and a pass's — and the body of a/// @customfunction in a.dssembed VS Code's HLSL grammar, so comment toggling, bracket matching and snippets in them follow HLSL too. A block ends at the}that matches its{; a brace inside a comment, a string or a#line does not count — the capture the compiler makes. AUE.call in a@custombody keeps its DreamShader colours, since the compiler lifts it into the graph. - Completion, hover, definition and the outline for
.dsp, from the compiler. Keys and their values — injection points, formats, pass kinds, modes, the project's pass layers — and their descriptions come from thepass-keys.jsonthe plugin exports; a project whose editor has never written it gets the vocabulary bundled with the extension, and is told so. Buffers, parameters, constants and passes are looked up in the symbol index's newpipelinesection. Inside anhlslblock a pass's binding names (Source,SourceSize,SourceUVRect, …), the names the compiler writes around an entry's statements (Id,UV, …) and theDP_*parameters andDreamPass*helpers complete, hover and are coloured as what they are, and a binding name goes to itsread/write/param;Entry =offers the functions of the file's block. - The bridge features take a
.dsp: Recompile Current Source, Clean Generated Shaders and the bridge panel work on a pipeline, and a bridge diagnostic carrying aDSHnnnncode links to its page of the plugin's documentation.pass-keys.jsonand the pipeline index need DreamShader 2.1.0; without them the grammar, the snippets and the text-based answers still work.
2.0.0 - 2026-09-21
DreamShader 2.0: .dss and .dsi
- Both file kinds open as DreamShader 2.0, with a grammar of their own (doc directives, the four
#pragmaforms, theUE.andSubstrate.namespaces, swizzles), snippets, folding on#pragma regionand#if, and///that continues on Enter. - Go to Definition, Find References, Hover, the Outline, Signature Help and Rename read the symbol index
the plugin writes after every compile; completion of
UE./Substrate.— node names, pins, properties, the Substrate sugar arguments — reads the builtin catalog the plugin exports. A position the text no longer matches is dropped, and a rename refuses and asks for a compile. - New command Reveal in Material Editor: from a line of a
.dssto the node it became. - Recompile, the diagnostics panel, the live preview and graph breakpoints work on a
.dssas they do on a.dsm.
1.6.0 – 1.10.0
Recorded in the extension repository's CHANGELOG.md and not repeated here.
1.5.3 - 2026-06-06
Material Preview
- Added the
DreamShaderLang: Show Material Previewcommand, active only for a.dsmmaterial file. - Added a VSCode Webview preview panel with
sphere,planeandcubemesh selection. - Sends
previewMaterialrequests to Unreal over the local WebSocket on127.0.0.1:17864by default, and receives preview results and continuous frames. - Falls back to the file bridge when the WebSocket is unavailable: it writes the request JSON and
reads
Saved/DreamShader/Bridge/preview.jsonplusPreview/*.png. - Added the
dreamshader.previewWebSocketPort,dreamshader.previewAutoRefreshDelayMs,dreamshader.previewTransportanddreamshader.previewLiveFrameRatesettings.
1.5.2 - 2026-06-06
Callable Hover
- Hover on DreamShader functions, UE builtins and Substrate helpers shows return-value and output-pin metadata.
- Added output-pin hover for helpers such as
Substrate.ThinFilm, keeping a fallback for older bridge manifests.
1.5.1 - 2026-06-06
Bridge, Packages and Templates
- Added parsing, completion, formatting, semantic tokens and syntax highlighting for the
Templateblock. - Added DreamShader bridge commands, status bar and diagnostics panel integration.
- Added package install, browse, update, remove and scaffold commands.
- Added command-palette authoring templates: material, function file, header file, texture sampling and noise material.
- Restored CodeLens and Inlay Hint registration after the extension activation modules were split.
- Bridge diagnostics refresh when Unreal updates
Saved/DreamShader/Bridge/diagnostics.json.
1.4.9 - 2026-05-29
Function Builtins
- Added unified Function builtin metadata covering HLSL intrinsics, GLSL-style aliases and Unreal texture-sampling helpers.
- Completion, hover, signature help, inlay hints, semantic highlighting and the local diagnostic allowlist share one builtin list.
- The README and the Chinese README list the supported Function builtins.
1.4.8 - 2026-05-29
Layout and Region
- Added language support for the
Layout = { Node(...); Comment(...); }section. - Added parsing, diagnostics, folding, snippets and highlighting for Graph
#Region/#EndRegion. - Snippets, templates, README, formatter, document symbols and semantic tokens all understand the layout metadata.
1.4.6 - 2026-05-22
Volume Texture
- Added
VolumeTexture/Texture3Dlanguage support, highlighting, completion, snippets and diagnostic coverage.
1.4.5 - 2026-05-18
MaterialExpression Fallback
- Built-in MaterialExpression completions are loaded from the language core as a strong fallback, so
UE.suggestions includematerial-expressions.jsonentries even when the VSCode adapter services provide no project manifest.
1.4.4 - 2026-05-18
Reflected Expressions
- Reflected
UE.MaterialExpression completion inserts aUE.Expression(Class="...", ...)snippet while keeping short labels such asAbsandTextureSampleParameter2D.
1.4.3 - 2026-05-18
Manifest Configuration
- The extension bundles a fallback
material-expressions.jsonmanifest, so reflectedUE.Expression(Class="...")completion works even when no Unreal project is detected automatically. - Added
dreamshader.materialExpressionManifestPath, pointing explicitly at a generatedSaved/DreamShader/Bridge/material-expressions.json. - Added a language smoke test for manifest-backed reflected MaterialExpression class completion.
1.4.2 - 2026-05-10
MaterialExpression Metadata
- Language metadata synchronized with the reflected MaterialExpression support in the current DreamShader release.
- Added completion, hover, formatting and diagnostics for reflected texture sampler metadata such as
SAMPLERTYPE_*,SSM_*,TMVM_*andTGM_*. - Added
UE.StaticComponentMaskParameter(...),UE.CurveAtlasRowParameter(...)and reflected TextureSample helper snippets. - Fixed the inlay hint signature lookup for the document-specific reflected UE expression manifest.
1.4.1 - 2026-05-10
Dream Shader Function Files
- Added
.dsffile association, command-palette template creation, import completion, clickable imports and workspace indexing. .dsfdiagnostics allowShaderFunction,Function,GraphFunction,NamespaceandVirtualFunction, and reject material and layer asset blocks.- Added local diagnostics for statement-style multi-output
ShaderFunction/VirtualFunctioncalls. - Explicit import extensions are preserved:
import "Functions/F_Tint.dsf";resolves as a function file and is not rewritten to.dsh.
1.4.0 - 2026-05-10
Parser-based Language Service
- Extension version updated to
1.4.0. - Rewrote the DreamShaderLang language service core around scanner, parser, context, symbol, completion, diagnostic and provider modules.
- Completion, diagnostics, semantic tokens, folding and document symbols all route through the new language core.
- Fixed broad completion-scope leakage between the
Inputs,Graph,Function,Settings,Outputsand metadata contexts. - Fixed
Base.output completion so applyingBaseColorno longer insertsBase.BaseColor. - Added parser-based formatting, cross-file import indexing and function cycle detection.
- Restored deeper local diagnostics covering ShaderLayer / ShaderLayerBlend shape, VirtualFunction options, Graph callable argument counts, Graph out variables and MaterialAttributes member writes.
- Added Substrate / Strata types, syntax, completion and diagnostic hints.
- Added language smoke tests for section-aware completion and diagnostics.
- The README became the English primary document, with a new
README.zh-CN.md.
1.3.4 - 2026-05-10
Templates and Material Layer Keywords
- Updated the built-in templates and snippets to produce more usable project-level DreamShader skeletons.
- Material Layer language support and templates moved to the recommended
ShaderLayer/ShaderLayerBlendkeywords. - Removed
MaterialLayer/MaterialLayerBlendfrom the active keyword, syntax, completion, diagnostic and CodeLens paths.
1.3.1 - 1.3.2 - 2026-05-09
GraphFunction
- Added
GraphFunctionlanguage support for reusable graph-node helpers that callUE.*nodes and expand at the call site. - Single-output
FunctionandGraphFunctioncalls participate in local diagnostics as Graph value expressions. - Multi-output
FunctionandGraphFunctioncalls still use the explicit out-variable syntax. - Top-level block templates moved into
templates.js; keyword completion inserts only the keyword, while entries such asShaderFunctionTemplateandGraphFunctionTemplateexpand the full template. - Added GraphFunction snippets, completion, hover, signature help, symbols, folding and local diagnostics.
- Added a local diagnostic suggesting
GraphFunctionwhen a plain HLSLFunctionblock calls aUE.*graph node.
1.3.0 - 2026-05-08
Material Layer
- Added
MaterialLayerandMaterialLayerBlendlanguage support, snippets, semantic tokens, folding, symbols, CodeLens, completion, hover, signature help and local diagnostics. - Added Material Layer output-shape and Material Layer Blend
MaterialAttributesinput validation. .dsm/.dshdiagnostics recognize generated Material Layer assets.- Material Layer snippets use explicit
.rgbaccess, so alpha stays readable through.a.
1.2.27 - 2026-05-08
Dynamic MaterialExpression Metadata
- Added dynamic
MaterialExpressioncompletion, hover and signature metadata sourced fromSaved/DreamShader/Bridge/material-expressions.json. - Added
Class="..."value completion for the genericUE.Expression(...), and shader outputExpression(...).Pin[n]binding completion. - Hand-written UE builtin metadata is kept as a stable overlay and merged with the Unreal reflected expression metadata.
1.2.26 - 2026-05-04
Output Diagnostics Sync
- Extension version updated to
1.2.26. - Local material output diagnostics synchronized with the
Base.*outputs the plugin currently supports, coveringBase.CustomizedUV0..7,Base.CustomizedUVs0..7, Custom Data, the legacy Color outputs,Displacement,SurfaceThicknessand, on Moon Engine build targets,MooaEncodedAttribute0..4. - Expression diagnostics accept the
Path(...)helper insideUE.CollectionParam(Collection=Path(...), ...)instead of reporting it as an unknown function.
1.2.25 - 2026-04-30
ShaderFunction Properties
- Added completion, diagnostics, symbol listing and visible-variable collection for the
ShaderFunction.Propertiessection. - Added hover, completion and the
constpropsnippet for theconstproperty keyword. - The ShaderFunction snippet now uses the
Propertiesplusopt Texture2D Input = PreviewTexpreview-default form.
1.2.24 - 2026-04-30
MaterialAttributes
- Added
MaterialAttributesgraph type completion, hover and snippets. - Material Attributes members such as
Attrs.BaseColorandAttrs.Roughnessare completed. - Local diagnostics treat
Attrs.Member = ...as a member write rather than a new variable name. - Added
Base.MaterialAttributesoutput binding support inOutputs.
1.2.23 - 2026-04-30
Reflection Property Blocks
- Declaration metadata parsing and snippets moved to the semicolon-separated
[...]reflection property block. - Added a
TextureSampleParameter2Dreflection property snippet covering the common sampler, mip, coordinate and view mip bias fields. - Local symbol extraction accepts both the historical comma metadata and the new property block.
1.2.22 - 2026-04-30
Parameters and Default Arguments
- Completion, hover, signature help and snippets cover explicit parameter nodes,
StaticSwitchParameter, declaration metadata and optional function inputs. - Added language service support for
UE.CollectionParam(...)andUE.StaticSwitchParameter(...). - Local diagnostics understand
optinputs onShaderFunction/VirtualFunctionand the call-sidedefaultargument. - Inlay hints show more argument and metadata information, making complex node calls easier to read.
1.2.21 - 2026-04-29
Swizzle
- Supported swizzle diagnostics after a chained call, such as
DebugFunction(...).rg. - Swizzle completion and hover cover 1 to 4 channel combinations, including repeats such as
.rrr,.ggg,.aaa,.rgaaand.rgbb.
1.2.20 - 2026-04-29
Language Service
- Added semantic tokens, giving types, variables, parameters, material outputs and UE builtin calls more stable semantic highlighting.
- Added parameter inlay hints for DreamShader
Function,ShaderFunction,VirtualFunctionandUE.*calls. - Import paths carry clickable document links; top-level blocks and sections support folding ranges.
- The outline view shows finer top-level declaration and section structure.
- Cleaned up duplicate command aliases and historical VSIX build artifacts.
1.2.19 - 2026-04-29
Quick Actions
- Editor title bar, view title bar and context menu commands use VSCode codicon glyphs.
- CodeLens actions moved from long text to compact icon entries.
1.2.18 - 2026-04-28
VirtualFunction
- Added syntax highlighting, completion, hover, snippets, signature help and local diagnostics for
the top-level
VirtualFunctiondeclaration. GraphtreatsVirtualFunctionas a callable material function signature, supportingOutput/OutputName/OutputIndex.Options.Assetoffers aPath(Plugins.PluginName, "...")template.Path(Plugin.)/Path(Plugins.)complete the names of plugins with aContentdirectory under the current Unreal project'sPluginsfolder.
1.2.17 - 2026-04-28
Root Completion
Root="Plugins."is supported as a compatibility spelling for project content plugin name completion.Plugin.MoonToonandPlugins.MoonToonresolve to the same project plugin content root.
1.2.16 - 2026-04-28
Root Completion
- After
Root="Plugin.", completes the names of plugins with aContentdirectory under the current Unreal project'sPluginsfolder. - Completion prefers
dreamshader.projectRootfrom the extension settings, otherwise it detects the project root from the current.dsm/.dshfile and the workspace.
1.2.15 - 2026-04-28
Root Documentation
- Clarified that
Root="Plugin.PluginName"points at the project plugin content directory[Project]/Plugins/PluginName/Content. - Documented that
Shader(Name="Mat/Test", Root="Plugin.MoonToon")generates/MoonToon/Mat/Test.Test.
1.2.14 - 2026-04-28
Root Support
- Added completion, hover, snippets and syntax highlighting for the
Roottop-level attribute onShader/ShaderFunction. - Top-level block recognition accepts
Nameappearing afterRoot.
1.2.13 - 2026-04-26
Automatic Publishing
- Added an automatic GitHub Actions release workflow.
- On a push to
main, the workflow reads the version frompackage.jsonand runsnpm ci,node --check extension.jsandnpm run package. - The workflow creates or reuses the
vX.Y.Ztag and uploads the resultingdreamshaderlang-language-support-X.Y.Z.vsixto the matching GitHub Release. - Manual workflow dispatch is supported, for regenerating a release package for a given version.
1.2.12 - 2026-04-26
Widgets and the Bridge Panel
DreamShader Bridgemoved from the Explorer sidebar to the VSCode bottom panel, so it behaves like the Problems and Output windows.- Added the
Show Bridge Panelcommand; clicking the status bar item opens the Bridge panel. - CodeLens gained a Bridge shortcut, opening the diagnostics window straight from the top of a source file.
- Bridge tree nodes gained clearer status icons and a context-menu open action.
- Reorganized the Package Store Webview widgets with statistics, card hover, focus states and more consistent button styling.
1.2.11 - 2026-04-26
Graph Experience
- The language service for the
Shader/ShaderFunctiongraph-building block moved fromCode = { ... }toGraph = { ... }. Graphsupports local parsing, diagnostics and statement splitting for basicif/else.- Declarations inside
Graphbranches andFunctionouttargets participate in visible-symbol collection, so completion matches how the code is actually written. - Snippets, built-in templates, hover, syntax highlighting and diagnostic wording all use
Graph.
1.2.10 - 2026-04-22
- Updated support for modern DreamShaderLang
Functionsignatures, strengthening completion and diagnostics around thein/outparameter model. - Improved language service behavior for function definitions, calls and example templates.
1.2.9 - 2026-04-22
- Added the Explorer sidebar
DreamShader Bridgeview, presenting Unreal bridge diagnostics by project, source file and individual problem. - Bridge diagnostics show more material compile context: stage, asset path, shader platform, quality level and raw detail.
- Added the
Refresh Bridge Diagnosticscommand and Bridge view title-bar actions.
1.2.8 - 2026-04-22
- Added the
Clean Generated Shaderscommand, asking Unreal to cleanIntermediate/DreamShader/GeneratedShadersand trigger a full recompile. - Added generated-shader cleanup entries to the command palette, the editor title bar and the context menu.
1.2.7 - 2026-04-22
- Added local cycle diagnostics for the Function call graph, including recursive calls reachable
through
SelfContainedimports. - Added a status bar project indicator, a CodeLens recompile entry, and editor title-bar and context menu shortcuts.
- Added the
dreamshader.showStatusBaranddreamshader.enableCodeLenssettings.
1.2.6 - 2026-04-22
- Supported
Function SelfContained Name(...) { ... }andFunction Inline Name(...) { ... }. - Updated completion, hover, snippets and syntax highlighting for self-contained functions.
1.2.5 - 2026-04-22
- Widened
Settingscompletion coverage to material categories including PostProcess, Refraction, WorldPositionOffset, Mobile, Nanite, Usage, Lightmass, Substrate, VirtualTexture and PixelDepthOffset. - Extended the
Path(...)help text to Settings object references such as physical material and override assets.
1.2.4 - 2026-04-22
- Added
TranslucencyLightingMode/LightingModesettings completion. - Material settings accept Unreal enum display names such as
Surface ForwardShading, as well as the raw enum names.
1.2.3 - 2026-04-22
- Fixed package uninstall to use the install path recorded in the lock file.
- Added the
dreamshader.packageUninstallcompatibility command. - Fixed Unreal bridge diagnostic discovery and watching when only the
ProjectName/DShaderworkspace is open. - Bridge diagnostics infer the Unreal project root from open documents, the active editor and the workspace.
1.2.2 - 2026-04-22
- Supported comma declarations such as
float i, d, s, t = UE.Time(), f = t + 1.0;. - Local diagnostics and visible-symbol tracking allow later variables in one declaration statement to reference earlier ones.
- Kept
Expression(...).Pin[n]output binding support and improved graph code parsing.
1.2.1 - 2026-04-21
- Added local validation for the
Expression(...).Pin[n] = ...auxiliary material output binding. - Added completion, snippets and syntax highlighting for output nodes such as
ThinTranslucentMaterialOutputandTangentOutput. - Built-in templates and snippets standardized on
Base.*output bindings.
1.2.0 - 2026-04-21
- Reworked the
UE.*builtin node metadata so completion, hover and signature help share one definition set. - Added snippets for nodes such as
TexCoord,Time,Panner,TransformVector,TransformPositionandExpression. Outputscompletion coversBase.*material attributes and theExpression(...).Pin[n]auxiliary output nodes.
1.1.0 - 2026-04-21
- Added DreamShader package management commands and Package Store Index support.
- Improved local diagnostics, Function go-to-definition, find references and formatting.
- Extended the language metadata and the VSIX packaging configuration.
1.0.0 - 2026-04-21
- The initial DreamShaderLang VSCode extension.
- Registers the
.dsmmaterial and.dshheader file languages. - Supports
Function,Namespace,Namespace::Functionandimport. - Provides syntax highlighting, completion, hover, signature help, go to definition, find references, formatting and local diagnostics.
- Integrates the Unreal bridge recompile command and basic diagnostic feedback.