DSH8xxx --- Asset generation and saving
DSH8xxx --- Asset generation and saving
DSH8xxx --- Asset generation and saving
The block between the generated markers is written by
.skill/gen-diagnostics.ps1. Everything below a marker is written by hand and survives a regeneration.
DSH8088
Severity error
Message
%s contains an invalid folder segment.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:42
Cause. The asset name a source declares contains a folder segment that cannot be part of a
package path: empty (A//B), . or .., or a character the engine refuses in a path.
Fix. Write the name as plain folders and an asset name: Characters/Hero/M_Hero.
DSH8089
Severity error
Message
DreamShader Root '%s' references project plugin '%s', but no enabled plugin with that name was found.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:59
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). This root names a plugin no enabled plugin of the project answers to.
Fix. Check the plugin's name (the .uplugin file name, not its friendly name) and that it is
enabled for this project.
DSH8090
Severity error
Message
DreamShader Root '%s' must reference a project plugin under '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:65
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). This root names a plugin that is not one of the project's own (an engine or
marketplace plugin). DreamShader only writes assets into plugins under the project's Plugins
folder.
Fix. Target a project plugin, or Game.
A cook does not abort over such a source: the assets it describes are the plugin's own, and no host
project can generate into that mount or even edit the file. The failure is logged as
[Cook] Not this project's to build (plugin '<Name>') and the cook goes on — the plugin ships those
assets, and they are what gets packaged. See
Cook behaviour.
DSH8091
Severity error
Message
DreamShader Root '%s' references project plugin '%s', but the plugin is not enabled.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:70
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). The plugin exists and is disabled, so its content path is not mounted.
Fix. Enable the plugin in the .uproject or the Plugins window.
DSH8092
Severity error
Message
DreamShader Root '%s' references project plugin '%s', but the plugin cannot contain content.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:75
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). The plugin is enabled and its descriptor says CanContainContent: false.
Fix. Set "CanContainContent": true in the .uplugin.
DSH8093
Severity error
Message
DreamShader Root '%s' references project plugin '%s', but its Content directory does not exist: '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:81
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). The plugin can hold content, and its Content directory is not on disk.
Fix. Create the folder the message names.
DSH8094
Severity error
Message
DreamShader Root '%s' references project plugin '%s', but the plugin content is not mounted.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:87
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). The plugin's content directory exists and the engine has not mounted it -- typically a
plugin that was enabled or created while the editor was running.
Fix. Restart the editor (or the commandlet run) so the mount point is registered.
DSH8095
Severity error
Message
DreamShader Root '%s' has an invalid plugin name.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:164
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). The plugin part of this root is empty or not a name (Plugin. with nothing after it).
Fix. Write Plugin.MyPlugin.
DSH8096
Severity error
Message
DreamShader Root '%s' has an invalid plugin name.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:178
Cause. Same as DSH8095, for the Plugins.<Name> spelling of the root.
Fix. Write Plugins.MyPlugin.
DSH8097
Severity error
Message
DreamShader Root '%s' has an invalid package root.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:191
Cause. A source says where its asset goes with a root: Game, Engine, or Plugin.<Name> (in
1.x Root = "..." on the block; in 2.0 the source root the file lies under, or /// @name with an
object path). This root is none of those, or resolves to a package root the engine does not know.
Fix. Use Game, Engine or Plugin.<Name>.
DSH8098
Severity error
Message
DreamShader asset name must resolve to a non-empty asset path.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:324
Cause. The declared asset name is empty once trimmed.
Fix. Give the block a Name, or the export a name.
DSH8099
Severity error
Message
DreamShader asset name must resolve to a non-empty asset path.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:331
Cause. The declared asset name consists of separators only (/), so no asset name is left.
Fix. End the path in an asset name: Folder/M_Example.
DSH8100
Severity error
Message
DreamShader asset name '%s' produced an invalid asset name.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:337
Cause. The last segment of the declared asset name is not a valid object name (it contains a
character such as ., : or a space the engine refuses).
Fix. Rename the asset using letters, digits and _.
DSH8101
Severity error
Message
Asset '%s' is open in an asset editor, so it was NOT rebuilt. An open editor works on its own copy of the asset and writes that copy back when you press Apply or Save, Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:422
Cause. The asset is open in an asset editor. An open editor works on a copy of the asset and writes it back on Apply or Save, which would undo the rebuild; a material editor with unsaved changes may also have diverged from the source.
Fix. Close that asset's editor tab and compile again.
DSH8102
Severity error
Message
Asset '%s' already exists and is not a Material.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:516
Cause. A package already sits where the material would go, and the object in it is not a UMaterial.
Fix. Rename the source's product, or move the existing asset.
DSH8103
Severity error
Message
Asset '%s' already exists and was not generated by DreamShader. Rename your shader or move/delete the existing asset before regenerating.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:525
Cause. A material already sits at the target path and carries no DreamShader provenance, so it was made by hand. DreamShader never overwrites an asset it did not generate.
Fix. Rename the product, move or delete the hand-made asset, or decompile it into a source first.
DSH8104
Severity error
Message
Failed to create package '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:534
Cause. CreatePackage failed for the material's package -- an invalid long package name, or the
engine refusing the mount point.
Fix. Check the root and folder of the product; the log line above it has the engine's reason.
DSH8105
Severity error
Message
Failed to create material '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:550
Cause. The UMaterial object could not be created in its package.
Fix. Look for an engine error right above it in the log (a name clash with a redirector is the usual cause); fix up redirectors in that folder.
DSH8106
Severity error
Message
Asset '%s' already exists and is not a DreamShader instance material. Delete it (or remove Backend="Instance") before switching backends.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:578
Cause. Backend = ThinCustom builds a DreamShader instance material, and the asset at that path
is of another class (a plain material from an earlier Graph build, usually).
Fix. Delete the old asset, or keep the backend it was built with.
DSH8107
Severity error
Message
Asset '%s' already exists and was not generated by DreamShader. Rename your shader or move/delete the existing asset before regenerating.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:588
Cause. Same as DSH8103, for a ThinCustom instance: the existing asset was not generated by DreamShader.
Fix. Rename the product, or move or delete the existing asset.
DSH8108
Severity error
Message
Failed to create package '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:598
Cause. CreatePackage failed for a ThinCustom instance's package.
Fix. Check the product's root and folder.
DSH8109
Severity error
Message
Failed to create instance material '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:610
Cause. The ThinCustom instance material object could not be created.
Fix. Look for the engine's error above it in the log.
DSH8110
Severity error
Message
Asset '%s' already exists as '%s', but %s generation requires '%s'. Delete or move the existing asset and regenerate it.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:649
Cause. A function asset exists at the target path with another class than the source builds: a plain MaterialFunction where the source is a layer, a layer where it is a blend. The three are distinct engine classes and an asset cannot change class in place.
Fix. Delete or move the existing asset and compile again; references to it have to be re-made, so prefer a new name when the old asset is in use.
DSH8111
Severity error
Message
Asset '%s' already exists and is not a MaterialFunction asset.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:655
Cause. A package already sits where the function would go, and the object in it is no material function at all.
Fix. Rename the product, or move the existing asset.
DSH8112
Severity error
Message
Asset '%s' already exists and was not generated by DreamShader. Rename your function or move/delete the existing asset before regenerating.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:662
Cause. A material function already sits at the target path and was not generated by DreamShader.
Fix. Rename the function, move or delete the existing asset, or decompile it into a source first.
DSH8113
Severity error
Message
Failed to create package '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:671
Cause. CreatePackage failed for a function's package.
Fix. Check the product's root and folder.
DSH8114
Severity error
Message
Failed to create material function '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetFactory.cpp:684
Cause. The material function object could not be created.
Fix. Look for the engine's error above it in the log.
DSH8115
Severity error
Message
Asset '%s' was edited by hand since DreamShader generated it from '%s', so it was NOT rebuilt (rebuilding would destroy those edits). %sRaised by Source/DreamShaderCompiler/Private/Assets/DreamShaderGeneratedAssetMetadata.cpp:412
Cause. the asset no longer matches the output digest stamped at its last generation -- somebody edited it by hand, and a rebuild would destroy that work
Fix. answer the notification, or right-click the asset > DreamShader: Revert to Source (the source was right), Adopt Into Source (the asset was right), Detach From DreamShader (neither, stop managing it). -Force does not get past this
See Divergence
DSH8116
Severity error
Message
Generated DreamShader asset '%s' could not be saved.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderGeneratedAssetMetadata.cpp:494
Cause. A generated asset could not be written to disk: the .uasset is read-only or checked in,
another process holds it, or the disk is full.
Fix. Check the file out / clear the read-only flag and compile again. Until then the asset exists in memory only.
DSH8117
Severity error
Message
Generated DreamShader asset packages could not be saved.%sRaised by Source/DreamShaderCompiler/Private/Assets/DreamShaderGeneratedAssetMetadata.cpp:527
Cause. Saving the batch of generated packages failed; the list after the message names each package and why.
Fix. Fix the first cause listed (usually a read-only file) and compile again.
DSH8118
Severity error
Message
Asset Path root '%s' references plugin '%s', but no enabled plugin with that name was found.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:123
Cause. Path(Root, "Folder/Asset") resolves its first argument to a mount point: Game,
Engine, or Plugin.<Name> / Plugins.<Name>. This one names a plugin that no enabled plugin
answers to.
Fix. Check the plugin's name and that it is enabled.
DSH8119
Severity error
Message
Asset Path root '%s' references plugin '%s', but the plugin is not enabled.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:128
Cause. Path(Root, "Folder/Asset") resolves its first argument to a mount point: Game,
Engine, or Plugin.<Name> / Plugins.<Name>. The plugin exists and is disabled.
Fix. Enable it.
DSH8120
Severity error
Message
Asset Path root '%s' references plugin '%s', but the plugin cannot contain content.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:133
Cause. Path(Root, "Folder/Asset") resolves its first argument to a mount point: Game,
Engine, or Plugin.<Name> / Plugins.<Name>. The plugin cannot contain content
(CanContainContent: false).
Fix. Point the reference at a plugin that holds the asset, or enable content in the .uplugin.
DSH8121
Severity error
Message
Asset Path root '%s' references plugin '%s', but its Content directory does not exist: '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:139
Cause. Path(Root, "Folder/Asset") resolves its first argument to a mount point: Game,
Engine, or Plugin.<Name> / Plugins.<Name>. The plugin's Content directory is missing on
disk.
Fix. Check the path the message prints.
DSH8122
Severity error
Message
Asset Path root '%s' references plugin '%s', but the plugin content is not mounted.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:145
Cause. Path(Root, "Folder/Asset") resolves its first argument to a mount point: Game,
Engine, or Plugin.<Name> / Plugins.<Name>. The plugin's content is not mounted in this
session.
Fix. Restart the editor so the plugin's mount point is registered.
DSH8123
Severity error
Message
Relative asset Path(...) references require a root such as Game, Engine, or Plugin.PluginName.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:190
Cause. Path("Folder/Asset") with one argument has to be an absolute object path (/Game/...).
A relative path needs the root as its first argument.
Fix. Write Path(Game, "Folder/Asset").
DSH8124
Severity error
Message
Asset Path root '%s' has an invalid plugin name.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:210
Cause. The plugin part of a Plugin.<Name> or Plugins.<Name> root is empty or not a name.
Fix. Write Path(Plugin.MyPlugin, "Folder/Asset").
DSH8125
Severity error
Message
Asset Path root '%s' has an invalid plugin name.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:223
Cause. Same as DSH8124, for the slash spellings Plugin/<Name> and Plugins/<Name>.
Fix. Write Path(Plugin.MyPlugin, "Folder/Asset").
DSH8126
Severity error
Message
Unsupported asset Path root '%s'. Use Game, Engine, or Plugin.PluginName.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:233
Cause. The first argument of Path(...) is none of the roots DreamShader knows.
Fix. Use Game, Engine, or Plugin.<Name>.
DSH8127
Severity error
Message
Asset reference cannot be empty.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:318
Cause. An asset reference is empty: Path(), an empty string, or a default left blank.
Fix. Name the asset, or remove the reference.
DSH8128
Severity error
Message
Asset Path(...) reference is missing a closing ')'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:327
Cause. Path( is never closed.
Fix. Add the ).
DSH8129
Severity error
Message
Asset Path(...) contains an unterminated string literal.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:334
Cause. A string inside Path(...) has no closing quote.
Fix. Close the string.
DSH8130
Severity error
Message
Asset Path(...) expects either 1 argument (/Game/... path) or 2 arguments (Game|Engine|Plugin.PluginName, asset path).Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:348
Cause. Path(...) has no argument or more than two.
Fix. Write Path("/Game/Folder/Asset") or Path(Game, "Folder/Asset").
DSH8131
Severity error
Message
Asset reference requires a non-empty path.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:378
Cause. The path part of an asset reference is empty (Path(Game, "")).
Fix. Write the asset's folder and name.
DSH8132
Severity error
Message
Invalid asset path '%s'.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderAssetReferenceResolution.cpp:402
Cause. What the reference resolves to is not a valid object path: it has a character the engine
refuses, a doubled /, or no asset name.
Fix. Copy the reference from the Content Browser (Copy Reference).
DSH8133
Severity error
Message
DSH8133: '{0}' is built from '{1}', a file of an installed package, which the package's installer replaces on every update; anything adopted into it would be lost then. Use Revert to Source to undo the edit, or Detach to keep the asset as it is.Raised by Source/DreamShaderEditor/Private/Provenance/DreamShaderProvenanceActions.cpp:444
Cause. Adopt Into Source (or Adopt Tweaks Into Source) was asked of an asset a package builds. The package's files belong to its installer, which replaces them on every update, so whatever Adopt wrote into them would be lost with the next one -- and with it the edit it was meant to keep. Nothing was written.
Fix. Use Revert to Source to throw the hand edit away, or Detach to keep the asset as it is and stop generating it. To change what the package builds, change the package (upstream, or a copy of it outside Packages).
DSH8149
Severity error
Message
DSH8149: '{0}' uses conditional compilation, and '{1}' holds only the branch that was taken -- adopting it would write that one branch back over the file and delete the rest. Move the change into the matching branch of the source by hand, or use DreamShader > Detach first if this asset should stop being generated from it.Raised by Source/DreamShaderEditor/Private/Provenance/DreamShaderProvenanceActions.cpp:1166, Source/DreamShaderEditor/Private/Provenance/DreamShaderProvenanceActions.cpp:527, Source/DreamShaderEditor/Private/Provenance/DreamShaderProvenanceActions.cpp:726, Source/DreamShaderEditor/Private/Provenance/DreamShaderProvenanceActions.cpp:905
Cause. Adopt Into Source was asked to rewrite a source that uses conditional compilation (#if / #ifdef / #ifndef). Adopt rebuilds the source text from the asset, and the asset only ever holds the branch that was taken -- so adopting would write that one branch back over the file and silently delete every other branch
Fix. move the change into the matching branch of the source by hand (the decompiler's output for the asset is a good starting point), or use Detach From DreamShader first if this asset should stop being generated from that source. Revert and Detach are unaffected, since neither writes the source
See Preprocessor, Divergence
DSH8155
Severity warning
Message
rebuilding '%s' from '%s' dropped %d parameter override(s) the rebuilt material no longer declares: %s.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderThinCustomParameterOverrides.cpp:287
Cause. a rebuild of a ThinCustom material captured the parameter overrides set on the generated instance and put them back afterwards, but one or more of them named a parameter the rebuilt material no longer declares -- the source renamed it, removed it, or changed its kind -- so those values had nowhere to go and were dropped. Restoration matches by name and kind, because a name is the only thing that survives a graph the generator tears down and rebuilds. The same line reports an override of a parameter kind this build cannot re-apply (a texture collection, for instance)
Fix. nothing is broken and the rebuild succeeded; set the value again on the instance under its new name, or move it into the source as a Properties default so no override is needed. If the parameter was renamed and you want the value carried across, rename it back, rebuild, then rename once more in the same edit as the override
See Divergence
DSH8200
Severity error
Message
'{0}' does not resolve to a valid asset path. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1287, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:1336
Cause. The product's asset name, or the /// @name /Game/... path override, does not resolve
to a package path Unreal will accept. The quoted 1.x message says which rule broke: an empty leaf
after sanitising, a folder segment that sanitises to nothing, a Root naming a plugin that is not
enabled or cannot host content, or a path Unreal itself rejects.
Fix. Read the quoted message first — it names the offending segment. A @name that is a bare
leaf replaces only the asset name and keeps the root rules; a @name starting with / is a full
path whose last segment is the asset and whose leading segments are the root, so /Game/X/M_Y
puts M_Y under /Game/X. A file under a plugin source root defaults to that plugin's content
mount, so it needs no /Game prefix at all.
DSH8201
Severity error
Message
The material for '{0}' could not be created or reused. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:528
Cause. The destination for a material product exists and is not a UMaterial, or it exists on
disk without DreamShader's source metadata, or the package could not be created. The last case is
rare and usually means the path is not writable.
Fix. For "already exists and was not generated by DreamShader": that guard is the reason a hand-authored material at the same path is never cleared and overwritten. Rename the shader, or move or delete the existing asset, then compile again.
DSH8202
Severity error
Message
The material function for '{0}' could not be created or reused. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:749
Cause. As DSH8201, for a material function product — with one extra way to fail: the asset at
that path exists as the wrong function class. A @layer needs a UMaterialFunctionMaterialLayer,
a @layerblend needs a UMaterialFunctionMaterialLayerBlend, and a plain export needs a
UMaterialFunction. Changing the kind of an exported function changes the class it must become.
Fix. Delete or move the existing asset and regenerate it. The class cannot be changed in place: every material that calls the function holds a typed reference to it.
DSH8203
Severity error
Message
The ThinCustom instance for '{0}' could not be created or reused. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:604
Cause. As DSH8201, for the UDreamShaderMaterialInstance a ThinCustom material becomes.
Fix. Same as DSH8201. If the asset exists as a plain UMaterial, the file used to compile with
Backend = "Graph" and now asks for ThinCustom (or the project default changed); delete the old
material or pin the backend back with #pragma material(Backend = "Graph").
DSH8204
Severity error
Message
The emitter needs the builtin catalog the front end was bound against, but the emit context carries none.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1273
Cause. EmitDreamShaderIRProduct was called with no FIREmitContext::Catalog, or with an
empty one. The catalog is how the emitter turns an attribute name into an EMaterialProperty and
how it resolves a reflected class precisely, so it cannot proceed without it.
Fix. Internal: the pipeline builds the catalog once per run and must pass the SAME one the
binder used. If this reaches a user, the catalog manifest failed to load or reflection produced
nothing; the reflection filler only logs that case (BuildBuiltinCatalogFromReflection runs
before any compile and has no sink to raise into, so it has no code).
DSH8205
Severity error
Message
Product index {0} does not exist in this module, which has {1}.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1262, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:253
Cause. An internal inconsistency: the product index is out of range for the module, or the graph's topological order names a node the graph does not have.
Fix. Not an authoring error. Report it with the source file; dsc dump-ir on the same file
shows the graph the emitter was handed.
DSH8206
Severity error
Message
'{0}' is open in an asset editor, so it was not rebuilt. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:390
Cause. The asset is open in an asset editor. An open editor does not edit the asset itself: it duplicates it and copies the duplicate back on Apply or Save, so an editor open across a rebuild holds a pre-rebuild copy and the next Apply silently reverts everything the rebuild did.
Fix. Close the asset editor and compile again. Refusing is the only safe answer available: whether that copy has unsaved edits is private to the MaterialEditor module, and closing it blindly would pop a save prompt in the middle of a compile-on-save.
DSH8207
Severity error
Message
'{0}' no longer holds what DreamShader generated into it, so it was not rebuilt. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:400
Cause. The asset no longer holds what DreamShader last generated into it — somebody edited the graph by hand. The output digest stamped at the end of the last successful generation no longer matches the asset's contents.
Fix. The quoted message names the three ways out: Revert (throw the hand edits away and rebuild from source), Adopt (decompile the current asset back into the source file), or Detach (drop DreamShader's stamps so the asset stops being generated at all). Tuning parameter overrides on a generated ThinCustom instance is NOT divergence and never raises this — that is what the instance is for.
DSH8208
Severity warning
Message
'{0}' could not be snapshotted before rebuilding it, so a failed rebuild will not be rolled back.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:444, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:799
Cause. The atomic rollback could not take a snapshot of the asset before the rebuild started, so a rebuild that fails partway will leave the asset emptied rather than restoring it. The compile continues; this is a warning about what happens IF something later fails.
Fix. Usually a sign the asset is in an unusual state (no editor-only data). If the compile then succeeds, nothing was lost. If it fails, regenerate with the source fixed — the asset will rebuild from scratch.
DSH8209
Severity info
Message
'{0}' was left alone: another editor owns writing this project's generated assets to disk.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:365
Cause. Another editor holds this project's DreamShader bridge ownership lock, and only that process writes generated assets to disk. Two editors saving the same package is not a merge; it is a corrupted package or a dead editor.
Fix. Nothing to fix. Compile from the editor that owns the lock, or close the other one. This is reported as a skip, not a failure.
DSH8210
Severity warning
Message
'{0}' has no property named '{1}', so that value was not written.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1795, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:324, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:361
Cause. A /// @key value on a uniform, or a Group / Desc / SortPriority / slider, named
something the expression class does not reflect. The value was not written; everything else on the
parameter was.
Fix. Check the spelling against the node's Details panel — the key is the reflected property
name. Some parameter classes genuinely do not carry the organisation fields (Group,
SortPriority, Desc) because they are not UMaterialExpressionParameter subclasses; for those
this warning is expected and harmless. A key meant for a newer engine version is also fine to
leave: it starts working when the property appears.
DSH8211
Severity error
Message
'{0}' is not a material expression class this engine has.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:510, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:666
Cause. A UE.X(...) or UE.Expression(Class = "X") names a material expression class this
engine build does not have. The binder resolved it against the catalog, so this usually means the
catalog and the running engine disagree — a stale exported catalog, or a class behind a build flag.
Fix. Re-export the catalog (dsc export-catalog) and compile again. If the class is genuinely
absent (a Substrate node on an engine without Substrate, a plugin class that is not loaded), use a
different node or guard the code with #if.
DSH8212
Severity error
Message
MakeMaterialAttributes has no pin for the attribute '{0}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:124, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:156, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:220, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1774
Cause. A value has no pin to go to on the node that was made. For a reflected node, the named
input matches no FExpressionInput on its expression class and no name the live node shows on a
pin; as with DSH8211 this normally means the catalog is stale, because the binder checked the pin
name against it. For the attribute nodes: MakeMaterialAttributes has a fixed list of pins, and
what it has none for (FrontMaterial, SurfaceThickness) is set by a SetMaterialAttributes on
top of it -- the code is raised when that Set could not take the attribute either, when the
attribute is the whole-material pseudo-attribute, which a set of attributes cannot hold, or when a
SetMaterialAttributes of its own could not take a value.
Fix. Re-export the catalog. If the pin was renamed between engine versions, use the new name.
For MakeMaterialAttributes, the eight customized UVs are one array pin, written CustomizedUVs0
through CustomizedUVs7.
DSH8213
Severity error
Message
'{0}' has no property named '{1}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1802, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1815, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:315, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:372
Cause. A reflected property refused the value: the wrong literal shape for its type. The quoted message from the literal writer says which — not a number, not a valid enumerator, an object path that does not load or loads to the wrong class.
Fix. For an enum, write the enumerator without its prefix (Normal, not SAMPLERTYPE_Normal;
either is accepted, the short form is the canonical one). For an asset, write a full object path
starting with /. For a number, remove any unit suffix.
DSH8214
Severity error
Message
Failed to create a FunctionInput node.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:123, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:152, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:281, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:40, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:142, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:173, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:239, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:339, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:75, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1019, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1137, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1170, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1209, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1244, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1276, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1313, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1365, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1769, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:360, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:371, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:383, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:398, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:518, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:675, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:743, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:777, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:797, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:818, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:839, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:874, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:896, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:915, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:940, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:971, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:136, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:150, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:170, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:208
Cause. UMaterialEditingLibrary refused to create an expression of that class in this asset.
The common real cause is a class that is not allowed in the asset kind — several expressions are
material-only and cannot go in a material function, and vice versa.
Fix. Check whether the node is legal in a material function. If the graph needs it, put it in the material that calls the function and pass the value in as a function input.
DSH8215
Severity error
Message
A material setting on '{0}' was refused. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:460
Cause. A #pragma material(...) key is not a settable property path on UMaterial, or its
value is not valid for that property. The quoted 1.x message says which of the two.
Fix. The keys are UMaterial property names, plus the four friendly aliases BlendMode /
RenderType, ShadingModel, MaterialDomain / Domain. An array property needs an explicit
[index]. Backend is not applied here — it selects the backend and is consumed by the binder.
DSH8216
Severity error
Message
BreakMaterialAttributes does not publish the attribute '{0}', so it cannot be read from a material that came through a pin.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1602, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1845
Cause. One of two things. A material attribute name (m.SomeThing, a MakeMaterialAttributes
input) is not in this engine's attribute table. Or an attribute was READ from a material that came
through a pin -- a LayerBlend input, a reflected node's material output, a function call's material
result -- and the BreakMaterialAttributes node that read becomes has no pin for it:
MaterialAttributes itself, FrontMaterial, SurfaceThickness. The second form is raised at the
read, never on the node: the node carries a slot for every attribute, and a slot nobody reads is not
an error.
Fix. For the second form, read the attribute where the material is still being built, before it
crosses the pin, or pass the value alongside the material. For the first, check the spelling. The accepted aliases are Attributes for MaterialAttributes,
Emissive for EmissiveColor, AO for AmbientOcclusion, WPO for WorldPositionOffset, PDO for
PixelDepthOffset, ClearCoat / ClearCoatRoughness for CustomData0 / CustomData1, and
CustomizedUV0..7 for CustomizedUVs0..7.
DSH8217
Severity error
Message
This material has no input for the attribute '{0}'; check the material domain and shading model the file asks for.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:387
Cause. The attribute exists, but this material has no input pin for it. A material's available outputs depend on its domain, blend mode and shading model: a Post Process material has no Roughness, an Opaque material has no Opacity.
Fix. Set the domain / blend mode / shading model the attribute needs in
#pragma material(...), or stop writing that attribute.
DSH8218
Severity error
Message
The default texture for parameter '{0}' could not be loaded from '{1}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:236
Cause. A texture uniform's default asset path does not load.
Fix. Check the path — it must be a full object path (/Game/Textures/T_X.T_X, or
/Game/Textures/T_X). A texture that was moved or renamed needs the source updated; a redirector
is followed, a deleted asset is not.
DSH8219
Severity error
Message
This function call names no material function asset.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:247, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:272, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:288
Cause. A FunctionCall node's material function asset could not be loaded, or the engine
refused to assign it to the call node. The refusal case is a cycle: a material function cannot call
itself, directly or through another function.
Fix. For a load failure, check the @asset path on the extern declaration. For a refusal,
break the cycle — two functions that call each other need the shared part factored into a third.
DSH8220
Severity error
Message
'{0}' has no input named '{1}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:331
Cause. A call names an input the function asset does not have. Either the function was rebuilt
with a different parameter list, or the extern prototype in the source does not match the asset.
Fix. Make the extern prototype match the asset's actual inputs. dsc index lists them; so
does the function's own Details panel.
DSH8221
Severity error
Message
'{0}' has no output named '{1}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:385
Cause. As DSH8220, for an output. A function's single unnamed return is called Result.
Fix. Match the extern prototype to the asset's outputs.
DSH8222
Severity error
Message
This call targets product {0} of the same file, but that product has not been emitted yet; the pipeline must compile products in dependency order.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:229
Cause. A call to another exported function of the SAME file ran before that function's asset had been emitted, so its path is not yet known. Internal: the pipeline compiles a file's products in dependency order precisely so this cannot happen.
Fix. Not an authoring error unless the file has a call cycle between its exports, which the binder should have refused first. Report it with the source file.
DSH8223
Severity error
Message
The emitter has no rule for the IR operation '{0}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1062, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:335
Cause. The IR carries an operation the emitter has no rule for: a core op whose table entry names no engine expression class and that has no hand-written lowering.
Fix. Not an authoring error — a gap between the core-op table and the emitter. Report the operation named in the message.
DSH8224
Severity error
Message
A SetMaterialAttributes node has no MaterialAttributes input; there is nothing for it to modify.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:181, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:245, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1155, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1183, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1225, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1260, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1299, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1660, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:347, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:695
Cause. A node's operand or input count does not match its operation — a Select with two
operands, an Append with three, a SetMaterialAttributes with no base input. The IR validator
should have caught it.
Fix. Not an authoring error. dsc dump-ir on the file shows the malformed node.
DSH8225
Severity error
Message
This node reads node {0}, which has not been emitted; the graph's topological order is inconsistent.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1587
Cause. A node reads a value from a node that has not been emitted yet, which means the graph's topological order does not actually put operands before their users.
Fix. Not an authoring error. Report it with the source file; a cycle in the IR is the usual
cause and dsc dump-ir shows it.
DSH8226
Severity error
Message
A Swizzle node carries no Mask property.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1091, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1100
Cause. A Swizzle node's Mask property is missing, empty, longer than four components, or
contains something other than x, y, z, w. The canonical mask is lower-case xyzw in order;
rgba is rewritten to it at bind time.
Fix. Not an authoring error at this stage — a mask a user wrote wrongly is refused earlier, with a message that quotes it. Report it with the source file.
DSH8227
Severity error
Message
'{0}' is not a Custom node output type; expected Float1 through Float4 or MaterialAttributes.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1403, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1436, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:1444
Cause. A @custom function's return type, or one of its out parameters, does not map to a
Custom node output type. The engine has exactly five: Float1, Float2, Float3, Float4 and
MaterialAttributes.
Fix. Change the type. A matrix has no Custom node output type at all — compute it inside the
body and return a vector. Note that a material may be an OUTPUT of a custom node but never an
input.
DSH8228
Severity error
Message
'{0}' is not a material function input type; write one of Scalar, Vector2, Vector3, Vector4, Texture2D, TextureCube, Texture2DArray, VolumeTexture, StaticBool, Bool, MaterialAttributes or Substrate.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:55
Cause. A material function input's type does not map to an EFunctionInputType.
Fix. The engine's list is Scalar, Vector2, Vector3, Vector4, Texture2D, TextureCube, Texture2DArray, VolumeTexture, TextureExternal, StaticBool, Bool, MaterialAttributes and Substrate. A matrix or a user struct cannot be a function input; pass its components separately.
DSH8229
Severity error
Message
'{0}' was built but could not be saved. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1219, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:571, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:720, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:875
Cause. The asset was built successfully but its package could not be written to disk — read-only file, source control, or a path that no longer exists.
Fix. Check out the asset, or make the file writable, and compile again. The failed save invalidates
the source-hash skip, so the next compile rebuilds and retries saving without -Force. Hand edits made
after the failure still trigger the usual divergence protection.
DSH8230
Severity error
Message
Cannot create a ThinCustom base material without an instance.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:305, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:326, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:352, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:643
Cause. The hidden base UMaterial a ThinCustom instance parents to could not be created as a
subobject of the instance.
Fix. Not usually an authoring error. If it persists, delete the instance asset and regenerate it — an instance from an older build that parents to a separate sibling material is not reused, and a fresh pair is created.
DSH8232
Severity error
Message
'{0}' has a product kind the emitter does not know how to materialize.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1316
Cause. The product kind has no asset shape the emitter knows how to build. Internal.
Fix. Report it with the source file.
DSH8233
Severity error
Message
This graph carries a MaterialSink, which only a material product has; a material function drives FunctionOutput nodes instead.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterMaterial.cpp:372
Cause. A graph carries a MaterialSink but is being emitted into a material function. Only a
material product has output pins of its own; a function drives FunctionOutput nodes.
Fix. Not an authoring error. The binder decides the product kind from the function's signature
(void (inout material) is the entry); report it with the source file.
DSH8234
Severity error
Message
Function output '{0}' has {1} operands; it needs exactly the one value it returns.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:179
Cause. A FunctionOutput node has no operand, so the output pin would drive nothing.
Fix. Not an authoring error — an exported function whose output is never assigned is refused earlier, by name. Report it with the source file.
DSH8235
Severity error
Message
'{0}' is not a sampler type; write one of the EMaterialSamplerType names, such as Color, Normal or LinearColor.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:278
Cause. A texture uniform's @sampler names something that is not an EMaterialSamplerType.
Fix. Write one of the engine's sampler type names without its prefix: Color, Grayscale,
Alpha, Normal, Masks, DistanceFieldFont, LinearColor, LinearGrayscale, Data,
External, VirtualColor and the rest of the SAMPLERTYPE_* list. Color is the default.
DSH8237
Severity info
Message
'{0}' was left alone: its source hash is unchanged since it was last built.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:377
Cause. The asset this product compiles to already carries the source hash of this build: the
preprocessed text of the file and of every header it includes, plus the defines it read. The compile
was not forced, so nothing was rebuilt. The compile result says
Skipped <asset> from <source>; source hash is unchanged (build key <hash>)., the line the 1.x
generator writes for the same skip, and it does not list the asset as generated.
Fix. Nothing to fix; it is a skip, not a failure. Compile with -Force (or Recompile) to rebuild
anyway. The skip leaves an asset edited by hand untouched. Once the source changes, the next compile
reaches the divergence gate instead (DSH8207).
DSH8240
Severity error
Message
The material instance for '{0}' could not be created or reused. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1030
Cause. The instance asset of a .dsi could not be created or reused; the sentence after it is
the reason (DSH8241, DSH8242 or DSH8253 in words).
Fix. Act on that reason.
DSH8241
Severity error
Message
Asset '%s' already exists as a '%s'; a .dsi builds a plain MaterialInstanceConstant. Rename the instance file or move the existing asset.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:260
Cause. An asset of another class already sits where the .dsi would build its instance -- a
material, or a ThinCustom instance of a .dss with the same name.
Fix. Rename the .dsi (its file name is the asset's name) or move the existing asset.
DSH8242
Severity error
Message
Asset '%s' already exists and was not generated by DreamShader. Rename the instance file or move/delete the existing asset before building it.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:269
Cause. A material instance already sits at the target path and was not generated by DreamShader.
Fix. Rename the .dsi, or adopt the existing instance into a source with DreamShader > Adopt
Into Source / dsc decompile.
DSH8243
Severity error
Message
The parent '{0}' of '{1}' does not load; compile the source that builds it, or correct the Parent key.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1057, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1082
Cause. The parent named by Parent = ... could not be loaded, or it exists only in memory -- a
product of this same run -- and could not be saved before the instance that needs it on disk. A bare
name is looked up among the products of the sources under the same root; an object path is loaded as
written.
Fix. Compile the source that builds the parent, or correct the key. For the in-memory case the message carries the save error: free the package file it names.
DSH8244
Severity info
Message
'{0}' was memory-only, so it was saved to disk first: '{1}' parents to it.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1090
Cause. The parent was built into memory only (an Ephemeral build) and an instance on disk cannot point at an object that is not. The parent was saved first.
Fix. Nothing to fix.
DSH8245
Severity error
Message
'{0}' cannot parent to '{1}': that parent already descends from this instance.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1101
Cause. Parent names an instance that itself descends from this one, so the parent chain would
be a loop.
Fix. Point Parent at a material or at an instance further up.
DSH8246
Severity error
Message
The parent asset '{0}' has no parameter {1} of the kind this instance overrides; the asset is older than its source. Compile the parent source first.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1123
Cause. The parent asset on disk lacks a parameter the instance overrides, although the parent's source declares it: the parent asset is older than its source.
Fix. Compile the parent's source, then the instance.
DSH8247
Severity error
Message
The engine dropped '{0}' as the parent of '{1}' while applying the static overrides; that parent does not allow them.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1196
Cause. Applying the static switch overrides made the engine clear the instance's parent. It does that when the parent may not get new shader permutations: a cooked material (content shipped without its editor data), for which the engine refuses to compile a permutation of the instance's own.
Fix. Parent to an uncooked material, or drop the /// @static overrides so the instance shares
its parent's shaders.
DSH8248
Severity error
Message
The parent '{0}' exists only in memory and no DreamShader source builds it, so '{1}' cannot be saved against it; save the parent first.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1070
Cause. The parent exists only in memory and no DreamShader source builds it (a material created in the editor and never saved), so the instance has nothing on disk to reference.
Fix. Save the parent asset first.
DSH8249
Severity error
Message
'{0}' is not an instance key; a key is a material property an instance can override, such as BlendMode, TwoSided, OpacityMaskClipValue or PhysMaterial.Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderInstanceSettings.cpp:365
Cause. A key of #pragma instance(...) is not something a material instance can override. The
keys are the fields of the engine's base property overrides (BlendMode, TwoSided,
ShadingModel, OpacityMaskClipValue, DitheredLODTransition, ...) and a fixed table of instance
properties (PhysMaterial, SubsurfaceProfile, ...).
Fix. Check the spelling, or set the property on the parent material, which is where everything else lives.
DSH8250
Severity error
Message
'{0}' is not a valid value for the instance key '{1}'. {2}Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderInstanceSettings.cpp:374
Cause. The value of an instance key does not fit its property; the sentence after it says what was expected.
Fix. Enum values go without their prefix (Translucent), bools as true / false, assets as
object paths or None.
DSH8251
Severity error
Message
'{0}' cannot be set from an instance file: {1}Raised by Source/DreamShaderCompiler/Private/Assets/DreamShaderInstanceSettings.cpp:341
Cause. The key names something an instance file does not set that way; the sentence after it
says which: Backend (an instance has none), UsageFlags (a bitmask the engine merges with the
parent's), the BasePropertyOverrides struct as a whole or one of its bOverride... flags (a flag
follows from the key that sets its value), or a ...ParameterValues array (parameters are uniform
overrides).
Fix. Write the single key (BlendMode = Translucent) or the uniform override the message
points to.
DSH8252
Severity error
Message
The override of '{0}' could not be applied: {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:1141
Cause. One override could not be written into the instance; the reason follows. Usually the asset a texture-like override names does not load or is of the wrong class.
Fix. Fix the /// @default path of that override.
DSH8253
Severity error
Message
Failed to create package '%s'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:281, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIRAssets.cpp:288
Cause. The instance's package, or the UMaterialInstanceConstant in it, could not be created:
CreatePackage or NewObject failed for the path the message names.
Fix. Check where the .dsi lies: its folder under the source root becomes the package path, and
the file's name the asset's.
DSH8254
Severity error
Message
The material parameter collection '{0}' has no parameter called '{1}'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterNodes.cpp:579
Cause. A CollectionParameter node names a parameter its material parameter collection does not
have. The engine stores the parameter by id and reads the name back from it, so a name without an id
would silently become None.
Fix. Use a parameter name the collection asset has (scalar or vector), or add it to the collection.
DSH8260
Severity error
Message
The parent source '{0}' failed to compile, so this instance has no parent to build against. {1}Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:1126, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:534, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:561, Source/DreamShaderCompiler/Private/Sources/DreamShaderProductIndex.cpp:591, Source/DreamShaderCompiler/Private/Sources/DreamShaderProductIndex.cpp:620
Cause. The parent of a .dsi cannot be used. It is built by a DreamShader source that does not
compile, so there is no parameter list to check the overrides against and no asset to build against;
or Parent does not resolve to an asset path; or it names nothing: no asset exists there, and no
source under the source roots builds it.
Fix. Compile the parent's source and fix what it reports, or correct Parent.
DSH8261
Severity error
Message
No material or instance named '{0}' is built by a source under '{1}'; write the parent's asset path, or check the name.Raised by Source/DreamShaderCompiler/Private/Sources/DreamShaderProductIndex.cpp:656
Cause. Parent is a bare name, and no source under this file's source root builds a material or
instance of that name.
Fix. Check the name, or write the parent's object path (/Game/...).
DSH8262
Severity error
Message
'{0}' names more than one product under '{1}' ({2}); write the parent's asset path instead.Raised by Source/DreamShaderCompiler/Private/Sources/DreamShaderProductIndex.cpp:670
Cause. Parent is a bare name that more than one source under the root builds.
Fix. Write the parent's object path instead.
DSH8263
Severity error
Message
'{0}' is its own ancestor: following Parent from it comes back to it ({1}).Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:486, Source/DreamShaderCompiler/Private/Sources/DreamShaderProductIndex.cpp:602, Source/DreamShaderCompiler/Private/Sources/DreamShaderProductIndex.cpp:650
Cause. An instance is its own ancestor: Parent names the instance itself, by path or by name,
or following Parent from it leads back to it (the message lists the chain).
Fix. Break the cycle: point Parent at the material the chain should end in.
DSH8264
Severity info
Message
'{0}' was missing or older than its source, so '{1}' was compiled first.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:596
Cause. The parent's asset was missing or older than its source when the instance was compiled, so the parent was compiled first.
Fix. Nothing to fix.
DSH8265
Severity error
Message
The Parent chain above '{0}' is more than {1} instances deep; a chain that long is almost always a mistake in a Parent key.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:494
Cause. The chain of Parent keys above this instance is deeper than the compiler follows. Real
instance chains are a handful deep.
Fix. Look for a Parent that points the wrong way.
DSH8270
Severity error
Message
The function reference '{0}' does not resolve to an asset path. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterFunctions.cpp:259
Cause. The /// @asset of an extern function (or the Asset of a 1.x VirtualFunction) does
not resolve to an object path; the reason follows (one of DSH8118-DSH8132 in words).
Fix. Fix the reference; Copy Reference in the Content Browser gives a path that always resolves.
DSH8271
Severity error
Message
The default texture reference '{0}' of parameter '{1}' does not resolve to an asset path. {2}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterParameters.cpp:221
Cause. The /// @default texture of a parameter does not resolve to an object path; the reason
follows.
Fix. Fix the reference.
DSH8273
Severity error
Message
'{0}' holds a placeholder other than '`{Name`}', the only one a generate template has.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPackageAssets.cpp:160
Cause. The Functions template of a #pragma generate(...) still holds a {...} after {Name} was replaced with the function's name. {Name} is the only placeholder.
Fix. Write {Name} exactly (it is case-sensitive), or write each name out with /// @generate on the function.
DSH8274
Severity error
Message
'{0}' cannot be generated as the material function '{1}': {2}.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPackageAssets.cpp:172
Cause. A package header asks for a material function from a function that cannot be one: an export function, which builds an asset of its own; an extern prototype, which names an asset that exists and has no body; a function without a body; or one with an array parameter, which no material function pin can take.
Fix. Generate from a helper function with a body and no array parameter -- wrap the function in one if needed -- or take the annotation off. A #pragma generate template skips exports and prototypes by itself; this is raised for an explicit @generate on one.
DSH8275
Severity error
Message
'{0}' is generated a second time here; the line {1} already generates it from another function.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPackageAssets.cpp:201
Cause. Two functions of one package header ask for the same material function: the same @generate name, or a template that maps two functions onto one name. The first is generated; the second is not.
Fix. Give one of them another name, with its own /// @generate (or Generate = in 1.x).
DSH8276
Severity warning
Message
'{0}' is not a key of '#pragma generate', and was ignored; it takes Functions, Library and Desc.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPackageAssets.cpp:112
Cause. A #pragma generate(...) names a key other than Functions, Library, Desc and Description. It is ignored.
Fix. Spell the key as one of these, or remove it.
DSH8277
Severity info
Message
'{0}' was left alone: '{1}' marks it NoGeneration, and only a compile that names the file builds it.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:1186
Cause. Not a problem: a compile that did not name the source left a NoGeneration asset as it is on disk, even if the source has changed since it was built. Its result line says Skipped.
Fix. Nothing to fix. To rebuild the asset, compile the source by name: Compile in the Material Content Browser, or compile -Source.
DSH8278
Severity warning
Message
'{0}' has never been built: '{1}' marks it NoGeneration, so only a compile that names the file builds it, and none has. Compile '{1}' by name once: Compile in the Material Content Browser, or `compile -Source`.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:1194
Cause. A NoGeneration asset has never been built: only a compile that names its source builds it, and none has. Nothing was written for it; whatever uses it fails until it exists (DSH8279).
Fix. Compile the source by name once: Compile in the Material Content Browser, or compile -Source. For a file that is never meant to be built automatically, #pragma disable_warning(DSH8278) silences this.
DSH8279
Severity error
Message
The parent '{0}' comes from '{1}', which marks it NoGeneration, and it has never been built, so there is nothing to build this instance against. Compile '{1}' by name once: Compile in the Material Content Browser, or `compile -Source`.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:1216, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:575, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:473
Cause. Something needs an asset a NoGeneration source builds, and the asset does not exist: an export of the same file calls it, a .dsi names it as its Parent, a .dsp pass names it as its Material, or a .dss reads the buffers of the pipeline. A NoGeneration source is never compiled first on anyone's behalf.
Fix. Compile the source that builds it by name once: Compile in the Material Content Browser, or compile -Source. Its users then build against what that compile wrote. Or take the NoGeneration mark off.
DSH8290
Severity error
Message
'{0}' could not be read.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:702
Cause. The compiler could not open the .dss it was asked to compile. The path was normalised
first, so the message shows the absolute path it actually tried. Usual causes: the file was deleted
or renamed between the watcher noticing it and the compile starting, a -Source= that named a file
that does not exist (the commandlet resolves a relative path against DShader/ and then against the
project directory, and falls back to the literal text when neither exists), or a file locked by
another process.
Fix. Check the path in the message. If it looks right, check that the file is there and readable; on Windows a text editor holding an exclusive lock is enough to cause this.
DSH8291
Severity error
Message
'{0}' failed conditional compilation: {1}: {2}Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:758, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilerIncludes.cpp:228, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPackageAssets.cpp:315
Cause. The conditional-compilation preprocessor refused the file. The message carries the
preprocessor's own DSH103x code and its message, because those say what was actually wrong — an
unbalanced #if, an #elif after #else, an expression it cannot evaluate, a #define of a
reserved DS_ name. This code adds the one thing the preprocessor could not know: which file of the
compile it was, which matters because a header is preprocessed on its own and its failure is
reported against the .dss that included it.
Fix. Read the inner code, not this one: Docs/diagnostics/DSH1xxx.md has the rule each one
enforces. Remember that #define is file-local in DreamShader — a name defined in a .dsh is not
visible to the .dss that includes it, so a condition that depends on one has to define it in the
file that tests it, or the define belongs in the project settings table.
DSH8292
Severity error
Message
'{0}', included from '{1}', could not be resolved: {2}.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilerIncludes.cpp:174
Cause. An #include (or import) named a file that no source root contains. The resolution
rules, in order: an absolute path that exists is itself; a specifier starting with / is
root-anchored and is tried against the including file's own root first and then every other root,
DShader/ before DShader/Packages/; anything else goes through the 1.x import rules — the root
qualifier (Plugin.MoonToon:Shared/Common.dsh), then the including file's own directory, then its
root, then its Packages tree. A specifier with no extension gains .dsh.
An unqualified include never leaves the including file's root. That is deliberate: two plugins that ship the same relative path cannot shadow one another, and enabling or disabling a plugin cannot silently change what another root's include means.
Fix. Check the spelling and the extension. To reach another root, qualify it —
#include "Plugin.MoonToon:Shared/Common.dsh". To anchor at the root rather than beside the
including file, start the path with /.
DSH8293
Severity error
Message
'{0}', included from '{1}', resolved but could not be read.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilerIncludes.cpp:209
Cause. The include resolved to a real path, and opening it failed. Unlike DSH8292 the file was found, so this is a permissions or locking problem rather than a spelling one.
Fix. Check that the file is readable. A .dsh under a plugin's DShader/ that was shipped
read-only is still readable; a file open exclusively in another tool is not.
DSH8294
Severity error
Message
'{0}', included from '{1}', could not be parsed; its own errors are above.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilerIncludes.cpp:258
Cause. An included header did not parse. Its own parse errors were reported first, against the header's own file and line; this code is the "and therefore" line that names which include failed and which file pulled it in, so the failure is attributable when a header is included from twenty places.
Fix. Fix the header's own errors — they are the ones directly above this in the log, and they carry the header's line numbers. A header is reported once per compile however many files include it.
DSH8295
Severity error
Message
'{0}' is not a DreamShader header; an include names a '.dsh' (or a '.dss'), not a '{1}' file.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilerIncludes.cpp:198
Cause. An include resolved to a file that is not a DreamShader header. Only .dsh (and, for a
deliberate cross-compilation-unit include, .dss) can be included; a .dsm or .dsf is 1.x source
with a different grammar, and an include of one would be parsed as 2.0 text and fail line by line.
Fix. Include the .dsh the declarations live in. A 1.x .dsm/.dsf cannot be shared with a
2.0 source; move the shared declarations into a .dsh, which both front ends read.
DSH8296
Severity error
Message
'{0}' is not a source the compiler builds on its own; it builds '.dss', '.dsi', '.dsp', '.dsm' and '.dsf' files, and a '.dsh' header only through the source that includes it, unless it is a package's asset header.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:645
Cause. The pipeline was handed a file it does not build on its own: a .dsh header, or a file
whose extension is none of .dss, .dsi, .dsp, .dsm and .dsf. A header produces no asset and is
compiled only as part of the source that includes or imports it, so compiling one directly could only
ever produce nothing.
Fix. Compile the source that includes the header. Every other kind — .dsm and .dsf included,
through the legacy front end — is built by the same pipeline.
DSH8297
Severity error
Message
The builtin expression catalog came back empty, so nothing that names a 'UE.*' node can be bound. Reflection found no UMaterialExpression classes, which normally means the Engine module is not loaded.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:875
Cause. The builtin expression catalog — every UE.* node, its pins, its properties and the
material attribute table, taken from UE reflection — came back with no entries. Nothing that names a
builtin can be bound against an empty catalog, so the compile stops rather than reporting every
UE.* in the file as an unknown name.
In practice this means reflection found no UMaterialExpression subclass at all, which happens only
when the Engine module is not loaded — a commandlet started without the editor modules, or a very
early call during module startup.
Fix. Not a source problem. Run the compile from the editor or from -run=DreamShader, both of
which have the Engine module. If it happens inside an editor, run dsc export-catalog and look at
what the manifest holds — an empty manifest confirms the reflection pass, a full one points at the
cached copy and InvalidateDreamShaderBuiltinCatalog.
DSH8298
Severity error
Message
Building '{0}' was cancelled; the asset is as it was before this compile.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitter.cpp:316, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:1183, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:684
Cause. The user pressed Cancel on the compile's progress dialog. Nothing was written: the emit is the last stage of the run, and a cancel is checked before every stage and before every product.
Fix. Nothing. Recompile when you want the result. A compile that takes long enough to be worth cancelling is usually one whose shader compilation has started behind it; that half continues in the engine's own queue and is not cancelled by this.
DSH8299
Severity error
Message
The exported functions {0} call one another in a cycle, so there is no order in which they can be built; an exported function may call another only in one direction.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderCompilePipeline.cpp:1146
Cause. Two or more exported functions of one file call one another, directly or through others. Each exported function becomes its own material function asset, and a call to one binds against the LIVE asset — the emitter reads the callee's pins off the object, not off the source — so there has to be an order in which every callee is built before its callers. A cycle has no such order.
The message names every product in the cycle.
Fix. Break the cycle. Usually one of the two functions does not need to be exported: a Helper
(no export) is inlined at its call site and takes part in no dependency at all, so making the
inner one a helper removes the edge. If both really must be assets, factor the shared part into a
third function that neither calls back into.
DSH8300
Severity error
Message
'{0}' is a Custom Pass pipeline, which needs Unreal Engine 5.8 or later; this engine has the DreamShaderPass asset types but no runtime to run them, so nothing was built.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:1017
Cause. A .dsp was compiled on an engine older than Unreal Engine 5.8. The DreamShaderPass module
builds there with its asset types only (DREAMSHADER_WITH_CUSTOM_PASS is 0): no runtime runs a
pipeline and no global shader holds an HLSL pass, so the emitter stops before it creates or touches
anything. The front half still runs — the file parses, formats and binds, with the checks that need the
runtime skipped (DSH7360) — so check passes where compile cannot.
Fix. Build the pipeline on Unreal Engine 5.8 or later. Nothing needs undoing on the older engine: no pipeline, render target, slot or snapshot was written.
DSH8301
Severity error
Message
Failed to create package '%s'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:1027, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:1057, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:341, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:346
Cause. The pipeline asset could not be made at the path its .dsp resolves to. The message
The pass pipeline for '…' could not be created or reused. is followed by the reason with its own code:
DSH8301 again, Failed to create package '…' or Failed to create the pass pipeline '…', when
CreatePackage or NewObject refused the path, which is rare; or DSH8302 / DSH8303 when something
already sits there. A third form, '…' does not resolve to a valid asset path, is the destination
check, which a compile makes first and reports as DSH8200.
Fix. Act on the inner reason. For a package that cannot be created, check where the .dsp lies: a
.dsp has no /// @name, so its folder under the source root gives the package path and its file name
the asset's.
DSH8302
Severity error
Message
Asset '%s' already exists as a '%s'; a .dsp builds a DreamPassPipeline. Rename the .dsp or move the existing asset.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:324
Cause. An asset of another class already sits where the .dsp would build its pipeline — a
material of the same name in the same folder, for instance. A .dsp names its pipeline after its file.
Quoted inside DSH8301's message.
Fix. Rename the .dsp (its file name is the pipeline's name) or move the existing asset.
DSH8303
Severity error
Message
Asset '%s' already exists and was not generated by DreamShader. Rename the .dsp or move/delete the existing asset before building it.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:331
Cause. A UDreamPassPipeline is saved at the pipeline's path without DreamShader's source stamp: one
made by hand, or one detached from DreamShader. The ownership guard never takes over an asset it did not
generate. Quoted inside DSH8301's message.
Fix. Rename the .dsp, or move or delete the existing pipeline, and compile again. To carry a
hand-made pipeline's settings into the .dsp first, decompile it (./dsc.ps1 decompile <asset path>)
and copy what you need.
DSH8304
Severity error
Message
'{1}' is not a {0} the Custom Pass runtime knows; the pipeline was not built. This is a compiler gap: the binder should have refused it.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:599
Cause. A value of the pipeline reached the emitter in a spelling the DreamShaderPass runtime has no enumerator for; the message names the kind of value (an injection point, a view kind, a buffer format, a pass kind, a mesh pass's mode, depth, cull, blend, usage or Nanite policy, a param's source or constant type) and the spelling. The binder checks every one of these first, so the two disagree and the file is not at fault. Nothing was built.
Fix. Report it with the .dsp. Until it is fixed, write the value as
Custom Pass pipelines spells it.
DSH8305
Severity error
Message
The material '{0}' of pass '{1}' does not load; compile the source that builds it, or correct the Material key.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:778
Cause. When the pipeline was put together, the material a fullscreen or mesh pass names did not load
from the object path its Material resolved to. The checks before the build found it, and a compile
builds a material that is missing or older than its source first (DSH8332), so the asset went missing in
between: deleted, renamed without a redirector, or a package that no longer loads.
Fix. Compile the source that builds the material, or correct the Material key (a bare name, or the
material's object path), then compile the .dsp again.
DSH8306
Severity error
Message
The default of '{0}' could not be applied: {1}.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:660
Cause. The /// @default of a Texture2D uniform could not be written into the pipeline: the
reference does not resolve to an asset path (the reason follows, one of DSH8118-DSH8132 in words), or no
texture loads from the path it resolves to. The binder takes the default as written, so this is the
first time it is loaded.
Fix. Correct the path — Copy Reference in the Content Browser gives one that always resolves — or
write /// @default None (or no @default) for a parameter without a texture.
DSH8307
Severity error
Message
Pass '{0}' selects the layer '{1}', which is not one of the project's pass layers (Project Settings > DreamPlugin > DreamShader Custom Pass > Layer Names).Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:854
Cause. A mesh pass's Filter = Layer(...) names a layer that has no bit when the pipeline is built.
The binder accepts any name the project's layer table lists (an unlisted one is DSH4412), but only the
first 32 entries of the table have a bit, so a name listed after the 32nd is refused here. Nothing was
built.
Fix. Move the layer into the first 32 entries of Project Settings ▸ DreamPlugin ▸ DreamShader Custom Pass ▸ Layer Names, or select one that is. Moving a layer re-targets every compiled pipeline that names it until that pipeline is compiled again.
DSH8308
Severity error
Message
Buffer '{0}' is {1} and cannot be exported: materials, Blueprints and UMG read an exported buffer as a float texture, which an integer or a depth buffer cannot be. Export a float or normalized buffer, or drop Export.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:705
Cause. A buffer declared Export = true has an integer or depth format (R32U, RG32U, Depth32).
An exported buffer becomes a render target that materials, Blueprints and UMG sample as a float texture,
which neither can be. The binder refuses the same declaration first (DSH7355); this is the emitter's own
check as it maps the format onto a render target format.
Fix. Export a float or normalized buffer, or drop Export. An id fits R32F exactly up to
16777216.
DSH8309
Severity error
Message
The render target of the exported buffer '{0}' could not be created or reused. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:1162
Cause. The render target of an exported buffer — <Pipeline>_<Buffer>, in the pipeline's folder —
could not be created or taken over; the sentence after it is the reason, with its code (DSH8313 or
DSH8314). Render targets are found or made before anything is written, so the pipeline, the slot
registry and the snapshots are as they were.
Fix. Act on that reason.
DSH8310
Severity warning
Message
'{0}' was left in place although its buffer is no longer exported: {1}. Delete it by hand once nothing reads it.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:577
Cause. A buffer the pipeline used to export is no longer exported — its Export dropped, the buffer
renamed or removed — so its render target was to be deleted once the pipeline was saved without it. It
was kept: something else still references it (the message lists the packages, typically a material
whose UE.DreamPassBuffer reads that buffer), or, with nobody listed, the delete was refused in this
process. The pipeline itself built and saved.
Fix. Point whatever reads the buffer at one the pipeline still exports and rebuild it, then delete
the render target in the Content Browser. If the export was dropped by mistake, put Export = true back:
the next compile takes the same render target over again, and its readers stay valid.
DSH8311
Severity error
Message
'{0}' was built but could not be saved with its render targets; its slots are already in the registry. Make the packages writable and compile the source again to retry saving. {1}Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:1271
Cause. The pipeline was built and its render targets configured, and saving the packages failed — a file that is read-only because it is not checked out, or a path that no longer exists; the asset layer's reason follows. Everything before the save stands: the slot registry and the snapshots are written, and in the editor the slot shaders were recompiled and the pipeline in memory already runs the new version.
Fix. Make the packages writable and compile the .dsp again. The failed save invalidates the
in-memory source-hash skip, so an ordinary compile retries the pipeline and its unsaved render targets.
After a partial save and editor restart, a render target whose saved configuration does not match the
pipeline also prevents a skip. -Force is not required.
DSH8312
Severity info
Message
'{0}' was deleted: its buffer is no longer exported.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:565
Cause. Informational. A buffer the pipeline used to export is no longer exported, and nothing but the pipeline referenced its render target, so the render target was deleted once the pipeline was saved without it.
Fix. Nothing. If you commit generated assets, commit the deletion with the pipeline.
DSH8313
Severity error
Message
Asset '%s' already exists as a '%s'; an exported buffer needs a TextureRenderTarget2D there. Move the existing asset or rename the buffer.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:372, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:379
Cause. Something other than this pipeline's render target sits where an exported buffer's render
target goes (<Pipeline>_<Buffer>, next to the pipeline): an asset of another class, or a
TextureRenderTarget2D without DreamShader's source stamp — one made by hand, which is never taken over.
Quoted inside DSH8309's message.
Fix. Move or rename the existing asset, or rename the buffer.
DSH8314
Severity error
Message
Failed to create package '%s'.Raised by Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:389, Source/DreamShaderCompiler/Private/Emitter/DreamShaderIREmitterPassPipeline.cpp:394
Cause. The package of an exported buffer's render target, or the TextureRenderTarget2D in it, could
not be created: CreatePackage or NewObject failed for the path the message names. Rare; quoted
inside DSH8309's message.
Fix. Check that path — the pipeline's folder and <Pipeline>_<Buffer> — for something the engine
refuses in a package name.
DSH8315
Severity error
Message
The Custom Pass slot registry cannot be read: {0}. Nothing was written, because writing over it would lose every slot it records; fix the file, or run 'dsc pass-registry -Rebuild'.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:897
Cause. Every .dsp compile reads the project's slot registry, <DShader>/.dreampass/Registry.json —
to give its HLSL passes their slots and to free the slots of passes it dropped — and the file exists but
cannot be used: it cannot be opened, it is not valid JSON (a merge conflict left in it is the usual
reason), or an entry has no slot number, pipeline or pass. Writing over it would lose every slot it
records, so nothing was written.
Fix. Take either side of the conflict and compile the .dsp files again — never merge the JSON by
hand — or run ./dsc.ps1 pass-registry -Rebuild, which moves the file aside and gives every HLSL pass a
slot again (pass-registry).
DSH8316
Severity error
Message
Pass '{0}' needs a {1} slot and all {2} are taken. Merge passes, run 'dsc pass-registry -Gc' to free the slots of pipelines whose source is gone, or raise {3} in the project's Target.cs.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:980
Cause. A new HLSL pass needs a slot — a compute pass one of the compute table, a fullscreen pass
with Shader = one of the pixel table — and every slot of that table is taken in the project's registry
(32 compute and 16 pixel by default). A pass a pipeline drops frees its slot when that pipeline compiles
again; the slots of a .dsp that was deleted or renamed stay taken until they are collected.
Fix. ./dsc.ps1 pass-registry lists the slots and counts the garbage; ./dsc.ps1 pass-registry -Gc
frees it. Otherwise merge passes, or raise DREAMSHADER_PASS_COMPUTE_SLOTS /
DREAMSHADER_PASS_PIXEL_SLOTS with GlobalDefinitions in the project's Target.cs files, editor and
game alike, and rebuild: every slot is compiled for every platform, used or not.
DSH8317
Severity error
Message
Pass '{0}' cannot be mapped onto its HLSL slot: {1}Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1060
Cause. The pass's bindings cannot be written as its slot's section — the #defines that map them
onto the slot's fixed parameters; the reason follows. A name that is not an identifier or starts with
DP_; a name defined twice (a read also defines <Name>Size and <Name>UVRect, a write
<Name>Size, and the Entry — and View at BeginView — are names in the slot too); more than 8
reads or 4 writes; params that do not fit the slot's 16 float4, or a texture among them. The binder
refuses each of these first (DSH7319, DSH7347), so the two disagree.
Fix. Rename or reduce the bindings as the reason says, and report it with the .dsp: the binder
should have refused the pass.
DSH8318
Severity error
Message
[{0}] pass '{1}' runs at BeginView, where the view uniform buffer does not exist yet, and its slot uses 'View' all the same: a function of the file's 'hlsl' block that the pass calls reads it. Give that function what it needs as a parameter, or move the pass to a later injection point.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1310
Cause. A pass at BeginView whose HLSL is in the .dsp compiled, and its slot uses the view uniform buffer,
which does not exist yet at BeginView. The pass's own code is guarded -- a View there is a compile error at its
line -- so the use comes from a function of the file's hlsl block the pass calls.
Fix. Give that function what it needs from the view as a parameter and pass a value the pass has at
BeginView (DP_Time for the time), or move the pass to a later injection point.
DSH8319
Severity error
Message
The HLSL that pass '{0}' has in its '.dsp' could not be put together for its slot (its entry is not in the file's 'hlsl' block); there is nothing to snapshot.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1005, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1014
Cause. The .usf a pass names in Shader = could not be read when its snapshot was built. The
binder found the file (a missing one is DSH4408), so it went missing or became unreadable in between:
deleted or moved, locked by another program, or not readable by this process. For a pass whose HLSL is in the
.dsp, the root of its snapshot could not be put together from the .dsp's text: its entry is not in the file's
hlsl block, which the binder reports first (DSH4410).
Fix. Check that the file is where the reference says — relative to the .dsp's folder, or a virtual
path — and readable, then compile the .dsp again.
DSH8320
Severity error
Message
'{0}' is included by a relative path and names no file, so the snapshot of pass '{1}' cannot be built.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1040
Cause. The pass's .usf, or a file it includes, has an #include "<relative path>" that names no
file relative to the file that holds it. A slot's snapshot copies every file included by a relative
path, so each has to exist. The scan is textual and does not evaluate #if: an include inside a branch
that is never compiled counts too. Reported at the line of the include.
Fix. Correct the path, create the file, or remove the include. A // comment takes it out of the
scan; an #if 0 around it does not.
DSH8321
Severity warning
Message
'{0}' is included by a virtual path outside /Engine/, /Plugin/ and /ThirdParty/, so the snapshot of pass '{1}' keeps including the live file: an edit of it later reaches the global shaders without a pre-check. Include it by a relative path to have it copied into the snapshot.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1050
Cause. The pass's .usf, or a file it includes, includes a file by a virtual path outside
/Engine/, /Plugin/ and /ThirdParty/ — a project shader directory such as /Project/.... A
snapshot copies only what is included by a relative path, so this include keeps pointing at the live
file. Its text is part of the slot's hash, and the pipeline's next compile pre-checks an edit of it; an
editor start or a cook before that compiles the global shaders with the file as it is then, unchecked —
and a global shader that fails to compile is fatal.
Fix. Include the file by a path relative to the file that includes it, so that it is copied into the
snapshot. Keep virtual paths for shader code under /Engine/, /Plugin/ and /ThirdParty/.
DSH8322
Severity error
Message
[{0}] pass '{1}' does not compile in its HLSL slot: {2}Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1338, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1346, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1372
Cause. The pre-check compiled the pass in its slot for the shader format in brackets, and the shader
compiler refused it; the rest of the message is the compiler's own. An error in the .usf, or in a file
of its snapshot, is reported at that file's line and column; one in HLSL written in the .dsp, at its line of the
.dsp. An error in the shared code of the file's hlsl block fails every pass that calls it the same way, and is
reported once, naming the passes it failed. Code no entry reaches is not compiled: the engine drops it from a slot
before the shader compiler reads it (r.Shaders.RemoveDeadCode), so a helper no pass calls yet is not checked, in a
.dsp as in a .usf. One elsewhere — the slot's section, the
slot shader, an engine header (whose path the message then keeps) — is reported at the pass, with the
note that a binding name may clash: each binding is a #define made before the file is included.
Nothing was written: the asset, the registry and the snapshots are as they were, and the previous
version of the pass keeps running.
One false refusal is known: a uniform buffer no slot shader referenced before is declared for the real compile but not for the pre-check, which then reports it as undeclared.
Fix. Fix the line the error points at and save; the editor recompiles the pipelines that use the
file, and ./dsc.ps1 check <file>.dsp -Shaders pre-checks every HLSL pass again. For an error at the
pass, rename the binding that collides (InMask, not Texture). Report the uniform-buffer case: it is a
limit of the pre-check, not a mistake in the file.
DSH8323
Severity error
Message
The {0} slot shader cannot be pre-checked: the global shader type {1} is not registered, or its source no longer includes '{2}'. The DreamShaderPass module is out of step with this compiler; nothing was written.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1263, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1382
Cause. The pre-check needs the slot shaders as the DreamShaderPass module registers them — the global
shader types FDreamPassCS / FDreamPassPS, whose DreamPassCompute.usf / DreamPassPixel.usf
include the registry — and the type is not registered in this process, or its source cannot be read or
no longer includes the registry file. The DreamShaderPass module did not load, or it and the compiler
come from different builds of the plugin. Nothing was written. Below Unreal Engine 5.8 the same code
says that HLSL slots need 5.8; a compile and check -Shaders stop at DSH8300 before that.
Fix. Rebuild or reinstall the plugin whole, so that the DreamShaderPass module, its Shaders folder
and the compiler match, and restart the editor.
DSH8324
Severity warning
Message
The project targets the shader format {0}, which this machine has no shader compiler for, so the HLSL slots were not pre-checked for it; a cook for that platform compiles them unchecked.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1201, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1223
Cause. A pre-check compiles a changed slot for every format the project renders and cooks with — those of the active feature levels, and every format the active target platforms target — and this machine has no shader compiler for this one (its platform's SDK or shader format is not installed). The slots were checked for the others; a cook for that platform compiles them unchecked, and a global shader that fails to compile there fails the cook.
check -Shaders -Platform <format> raises it too, for a format it was asked for that this machine has no
compiler for (The shader format <format> was asked for, ...). The slots are not checked for that
format, and when no other format was asked for, they are not checked at all: the warning keeps a check
that never ran from reading as one that passed.
Fix. Pre-check on a machine that has the compiler — ./dsc.ps1 check <file>.dsp -Shaders -Platform <format> — or install it here. ./dsc.ps1 pass-registry lists, per slot, the formats its snapshot
passed.
DSH8325
Severity error
Message
There is no shader format to pre-check the HLSL slots with: no active feature level and no target platform has a shader compiler on this machine. Nothing was written, because a slot that never compiled must not reach the global shaders.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1207
Cause. A slot had to be pre-checked and no shader format was there to compile it with: the process
renders nothing — -nullrhi, which dsc.ps1 passes to every verb but check -Shaders — so no feature
level gives one, and none of the active target platforms has a format this machine can compile. A slot
that never compiled must not reach the global shaders, so nothing was written.
Fix. Compile the .dsp in the editor, or with ./dsc.ps1 check <file>.dsp -Shaders, which runs
without -nullrhi and builds the pipeline as compile does.
DSH8326
Severity error
Message
'{0}' cannot be written or deleted, so nothing of the slot registry was changed: no snapshot written, no slot deleted, no registry file rewritten. The registry and its snapshots are committed files; a file that is read-only because it is not checked out is the usual reason. Check out the whole .dreampass folder and try again.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1454, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1473, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1652
Cause. A file of the slot registry cannot be written or deleted — a snapshot file under Slots/,
Registry.json, RegistryCompute.ush or RegistryPixel.ush — by a .dsp compile or by
pass-registry -Gc / -Rebuild. They are committed files; one that is read-only because it is not
checked out is the usual reason. A compile, -Gc and each step of -Rebuild check every file they
would write or delete before they touch any, so the message above means nothing was changed: no
snapshot written, no slot deleted, no registry file rewritten. The shorter message, '<file>' could not be written. ..., is a write that
failed after that check passed — the file was locked or changed in between — and can leave the step
half done: a compile writes its changed snapshots before the registry files, and -Gc deletes the
snapshots of the slots it frees before them.
Fix. Make the whole .dreampass/ folder writable (check it out) and repeat the step: compile the
.dsp again, or run the pass-registry verb again. After the shorter message, do it before the editor
restarts or a cook runs. When that write was RegistryCompute.ush or RegistryPixel.ush, after
Registry.json was written, compiling the .dsp again repairs it too: a compile compares both registry
files with Registry.json and rewrites one that differs, whatever else it changes.
DSH8327
Severity info
Message
{0} slot {1} of pass '{2}' was freed: the pipeline no longer runs that pass in HLSL there.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassSlotRegistry.cpp:1530
Cause. Informational. A .dsp compile freed a slot its pipeline held: the pass was removed or
renamed, moved to the other table (a compute pass made a fullscreen one, or the reverse), or no
longer runs HLSL (it draws a Material now). Its entry and its section are gone, and so is its snapshot
unless a pass of the same compile took the slot again.
Fix. Nothing. Commit the changed .dreampass/ folder with the .dsp.
DSH8330
Severity error
Message
'{0}' names more than one material under this source root ({1}); write the material's asset path instead.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:591
Cause. A pass's Material = "<Name>" is a bare name, and more than one source under the .dsp's
source root builds a material or material instance of that name — a .dss and a .dsi, or two .dss
in different folders; the message lists them.
Fix. Write the material's object path instead (/Game/FX/PP_Outline); Copy Reference in the
Content Browser gives one.
DSH8331
Severity error
Message
The material '{0}' comes from '{1}', which failed to compile, so this pipeline has no material to check its pass against. {2}Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:504, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:651
Cause. A material a pass names is built by a .dss (or a .dsi) under the source roots, and that
source does not compile. Two messages, one per kind of run:
- a run that builds assets found the material's asset missing or older than its source, compiled that
source first (DSH8332), and the compile failed (
... which failed to compile ...); - a run that builds nothing — a
check— found no material asset and read the material's facts from its source, which does not compile (... which does not compile ...). It is said as that, rather than as a material nobody builds (DSH4406).
The pipeline has no material to check the pass against and is not built; the message ends with the source's first error. When that error is DSH5325, the material reads this pipeline's exported buffer: the two need each other (DSH8333).
Fix. Compile the material's source on its own (./dsc.ps1 compile <file>.dss) and fix what it
reports, then compile the .dsp. For DSH5325, change the read as DSH8333 says.
DSH8332
Severity info
Message
'{0}' was missing or older than its source, so '{1}' was compiled first.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:483
Cause. Informational. A material a pass names was missing or older than the source that builds it,
so that source was compiled before the pipeline — the rule a .dsi applies to its parent (DSH8264).
Only a run that builds assets does this; check reads the material's facts from its source instead.
Fix. Nothing to fix. When that compile fails, DSH8331 follows.
DSH8333
Severity error
Message
'{0}' is built by '{1}', which reads this pipeline's exported buffer through UE.DreamPassBuffer (directly, or through a pipeline that needs this one), and a pipeline and its pass material that need each other can be built in no order. Inside its own pipeline a pass binds the buffer with 'read' -- a fullscreen material reads it as a UserSceneTexture input -- rather than the exported copy; a mesh pass's material cannot read its own pipeline's buffers.Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:614
Cause. A pass of this pipeline draws a material that reads the pipeline's exported buffer through
UE.DreamPassBuffer — directly, or through another pipeline that needs this one. The pipeline cannot
be built without its material, and the material cannot be built without the pipeline's asset, so the
two can be built in no order and never bootstrap; the .dsp does not compile. It is raised when this
.dsp is compiled or read from inside that material's compile, which builds a missing or stale
pipeline first (DSH5320); the material then reports the pipeline as failing (DSH5319). Met from the
pipeline's side, the same cycle is the material's DSH5325, which the pipeline reports as DSH8331.
Fix. Inside its own pipeline, read the buffer itself rather than its exported copy: bind it with
read in the pass that draws the material, and in the material sample it as a UE.UserSceneTexture
input of that name in place of the UE.DreamPassBuffer call — read Blurred; in the pass,
UE.UserSceneTexture(UserSceneTexture = "Blurred", Coordinates = UV) in the material. A mesh pass's
material cannot read its own pipeline's buffers at all: the usual loop is a mesh pass whose override
material samples the same pipeline's exported buffer, and sampling it in a fullscreen pass of the
pipeline, or in a material the pipeline does not draw, avoids it.
DSH8334
Severity error
Message
The material '{0}' does not resolve to an asset path. {1}Raised by Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:584, Source/DreamShaderCompiler/Private/Pipeline/DreamShaderPipelineReferences.cpp:631
Cause. A pass's Material cannot be used as written. Either it is spelled as a path (/…,
Path(...) or Class'…') that does not resolve to an asset path — the reason follows, with its code —
or it resolves to an asset that is not a material or a material instance; the message then names its
class.
Fix. Write the material's object path, or the bare name of a material a .dss under the same source
root builds. Copy Reference in the Content Browser gives a path that always resolves.
DSH8335
Severity error
Message
The Custom Pass slot registry cannot be read: {0}. Nothing was changed; 'dsc pass-registry -Rebuild' replaces a registry that does not parse.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:355, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:448
Cause. pass-registry -Gc, or the last two steps of -Rebuild (collecting the garbage, rewriting
the registry files), could not read Registry.json: it cannot be opened, it is not valid JSON — a merge
conflict left in it is the usual reason — or an entry has no slot number, pipeline or pass. Nothing was
changed. -Rebuild replaces an unreadable file before it compiles anything, so from -Rebuild this
means another process changed or locked the file while it ran.
Fix. Run ./dsc.ps1 pass-registry -Rebuild. If it came from -Rebuild, close whatever else holds
or writes the file — an editor compiling a .dsp — and run it again.
DSH8336
Severity error
Message
The Custom Pass slot registry cannot be read ({0}) and could not be moved aside to '{1}', so nothing was reset. Another process holding one of the two files open is the usual reason; a read-only one is reported before this.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:425
Cause. pass-registry -Rebuild found Registry.json unreadable (the message says why) and could not
move it aside to Registry.json.unreadable, so it reset nothing and stopped. A read-only Registry.json
or Registry.json.unreadable is reported before the move, as DSH8326; what is left is a
move that fails for another reason, most often another process holding one of the two files open.
Fix. Close what holds the file — an editor, a diff tool, a sync in progress — and run
./dsc.ps1 pass-registry -Rebuild again.
DSH8337
Severity warning
Message
{0} slot {1} ({2}, pass '{3}') names snapshot files that are not on disk, so it is now reserved and compiles to the empty stub: a registry that includes a missing file fails the global shader compile. Compile '{4}' to give the pass its snapshot back, and commit the Slots folder with the registry.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:462
Cause. At the end of pass-registry -Rebuild, Registry.json still records a snapshot for this slot
and its files are not under Slots/: the .dsp that owns the slot did not compile in this rebuild
(DSH9204), so nothing wrote them. A registry file that includes a missing file fails the global shader
compile, so the slot was made a reserved one — it compiles to the empty stub, and its pass does nothing.
Fix. Fix the .dsp the message names and compile it: that writes the snapshot and gives the slot
its section back. Commit the Slots folder with the registry.
DSH8338
Severity error
Message
HLSL slots need Unreal Engine 5.8 or later; this engine has no Custom Pass runtime to pre-check them for.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:502, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:514, Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:533
Cause. check -Shaders on a .dsp could not get as far as pre-checking its HLSL passes; the message
says which of three things stopped it. The engine is older than Unreal Engine 5.8 and has no slots to
check against — though the build that check -Shaders runs first stops at DSH8300 there. Or the file,
read again for the check after it built, did not reach its pipeline and said nothing about why. Or the
pipeline's asset path does not resolve (the reason is in the parentheses).
Fix. For the first, check on Unreal Engine 5.8 or later. The other two need the file to fail the second reading after it passed the first: run the check again, and report it with the file if it repeats.
DSH8339
Severity info
Message
'{0}' has no HLSL pass, so there is no slot to pre-check; its materials are checked by the sources that build them.Raised by Source/DreamShaderCompiler/Private/Pass/DreamShaderPassPipelines.cpp:559
Cause. Informational. check -Shaders ran on a .dsp with no HLSL pass — no compute pass and no
fullscreen pass with Shader = — so there is no slot to pre-check. Its passes draw materials, whose
shaders belong to the sources that build them.
Fix. Nothing. To check those shaders, run ./dsc.ps1 check <file>.dss -Shaders on the materials'
sources.