DreamShaderLang
设置

项目设置

Project Settings ▸ DreamPlugin ▸ Dream Shader 下的全部 15 个属性、它们真实的配置标识符、默认值与作用。

DreamShader 的项目级配置是一个 UDeveloperSettings 对象,共 15 个属性。

面板位于 Project Settings ▸ DreamPlugin ▸ Dream Shader —— 不在 Plugins 下面。 旧文档指错了位置,列出的属性也更少,而且用的名字并不存在。

方面值
类UDreamShaderSettings,位于 DreamShader 运行时模块
ContainerProject
CategoryDreamPlugin
SectionDreamShader,标题为 Dream Shader
配置文件<Project>/Config/DefaultEngine.ini,节 [/Script/DreamShader.DreamShaderSettings]

该类是 Config=Engine, DefaultConfig,因此值保存在项目的 DefaultEngine.ini 里,而不是 每用户文件里。签出这个项目的所有人共享同一份配置。

15 个设置

分类面板名配置属性类型默认值作用
MappingsShading Model MappingsShadingModelMappingsTMap<FString, EMaterialShadingModel>空为 ShadingModel 取值增加或覆盖拼写。先于内置表扫描。
MappingsBlend Mode MappingsBlendModeMappingsTMap<FString, EBlendMode>空为 BlendMode / RenderType 增加或覆盖拼写。
MappingsMaterial Domain MappingsMaterialDomainMappingsTMap<FString, EMaterialDomain>空为 MaterialDomain / Domain 增加或覆盖拼写。
PathsSource DirectorySourceDirectoryFDirectoryPathDShader扫描 .dsm / .dsf / .dsh 源文件的根目录。为空时回退到 DShader;相对路径相对项目目录解析。<Source>/Packages 由它推导。
PathsGenerated Shader DirectoryGeneratedShaderDirectoryFDirectoryPathIntermediate/DreamShader/GeneratedShaders生成的 .ush include 写到哪里,以及虚拟着色器目录映射到哪里。为空时回退到默认值。
PathsScan Plugin Source Directories since 1.6.0bScanPluginSourceDirectoriesbooltrue开启时,每个带 DShader 目录的已启用插件都贡献一个自己的源码根。关闭后,项目的 Source Directory 是唯一的根。见工程结构。
CompilerDefault Compiler BackendDefaultBackendEDreamShaderDefaultBackendThinCustom源文件未写 Settings = { Backend = … } 时使用的后端。修改它会在内存中重新生成所有源文件。
CompilerShow In-Memory Materials In Content BrowserbShowInMemoryMaterialsInContentBrowserboolfalse关闭时,纯内存的 DreamShader 实例把自己报告为非资产,从内容浏览器、资产注册表枚举和保存选择器中消失。每次查询都实时读取。
CompilerLay Out In-Memory Graphs since 1.6.0bLayoutInMemoryGraphsbooltrue开启时,交互式编译产出的纯内存材质也跑自动布局,于是保存后看到的图和生成资产一致。关闭后,这些图保留构建坐标 —— 一根高柱子。达到大图阈值的图两种情况下都跳过布局。
CompilerAuto Compile On SavebAutoCompileOnSavebooltrue关闭时,源目录监视器完全忽略文件变化。
CompilerSave Debounce SecondsSaveDebounceSecondsfloat0.25文件变化后等待多久再编译。钳制在 [0.05, 10.0],滑条上限是 2.0。设置对象不可用时回退到 0.25。
CompilerVerbose LogsbVerboseLogsboolfalse为依赖文件编译队列增加 Display 级日志。
DecompilerExport Decompiled LayoutbExportDecompiledLayoutbooltrue开启时,反编译出的 .dsm 会带上还原节点位置的 Layout = { … } 段。
EditorOpen In New WindowbOpenInNewWindowbooltrue关闭时,VSCode 启动命令会加上 --reuse-window。
EditorMaterial Instance SubfolderInstanceSubfolderFStringInstances相对父材质所在文件夹的子目录,材质内容浏览器在这里创建新实例。留空则与父材质同级创建。资产名为 MI_<ParentName>,并做唯一化处理。

加粗的行带有显式 DisplayName;其余显示的是 Unreal 从属性标识符推导出的名字,布尔属性会去掉开头的 b。而 ini 里的键是原始 C++ 标识符,b 前缀照写 —— 是 bAutoCompileOnSave,不是 AutoCompileOnSave。

EDreamShaderDefaultBackend

枚举项含义
Graph每个材质构建一份可见的 UMaterial 节点图。
InstanceThinCustom 的弃用别名 since 1.5.0
ThinCustom把图建在每材质一份的隐藏基础材质上,并产出它的轻量材质实例。默认值。

按文件写的 Backend 如何覆盖它,见 Backend。

三张映射表

Mappings 下的三个条目用来扩展三个枚举设置可接受的取值拼写。它们默认为空:内置别名表是在解析时 按需重建的,从不写进这三个 map,所以面板是空的并不代表“没有别名”。

行为细节
优先级先扫描项目 map;第一个规范化键命中即立刻返回
覆盖键规范化后与某个内置别名相同的条目会替换它
禁用映射到 MSM_MAX / BLEND_MAX / MD_MAX 的条目会让该拼写解析失败,且不会回落到内置表
键匹配trim、小写,并删除空格、_ 和 -
歧义两个规范化后相同的条目,解析顺序未定义

完整的内置表见枚举取值。

面板提示文本

编辑器面板自身的原文,逐字照录。

Scan Plugin Source Directories:

When enabled, every enabled plugin that ships a DShader folder contributes its own source root, so a plugin can carry the .dsm/.dsf/.dsh files that build its materials. Plugin roots are discovered and compiled but never rewritten by the editor -- only the project's own source directory is writable. Imports never cross roots: a file resolves its imports against its own root and that root's Packages folder.

Default Compiler Backend:

How DreamShader materializes a source file that does not specify Settings = { Backend = "..." }. ThinCustom (the default) builds the material graph on a hidden per-material base and emits a lightweight, memory-only material instance of it -- full feature surface, no visible per-material asset. Graph builds a visible UMaterial node graph. Instance is a deprecated alias for ThinCustom.

Show In-Memory Materials In Content Browser:

When enabled, the memory-only DreamShader materials appear in the Content Browser like unsaved assets. Disabled by default: the source files are the intended authoring surface, and hiding the materials also prevents accidental Save actions from materializing them to disk.

Material Instance Subfolder:

Subfolder, relative to the parent material's folder, where the Material Content Browser creates new material instances. Leave empty to create them alongside the parent.

还能在哪里改到这些设置

设置其他入口
bShowInMemoryMaterialsInContentBrowserTools ▸ DreamShader ▸ Show In-Memory Materials,以及材质内容浏览器的 Project 页。两者都会写入 ini,并为每个纯内存实例重新广播资产的创建/移除。
DefaultBackend在面板里修改会立即触发所有源文件的内存重新生成;如果持久化的生成资产遮蔽了结果,还会弹出通知。
SourceDirectory、GeneratedShaderDirectory由模块的目录辅助函数消费 —— 见项目结构和 Package。
bScanPluginSourceDirectories根列表是缓存的,只在 Source Directory 或这个开关变化、或按下 DreamShader Gen ▸ Refresh 时重建。watcher 只在启动时注册一次,所以会话中途才出现的根,它的 Auto Compile On Save 要到下次启动才生效。

备注

  • 没有内存模式的开关。 编辑器始终在内存中生成 —— 源文件才是创作面 —— 落盘发生在 cook 时、通过 命令行,或通过显式操作。Default Compiler Backend 在 since 1.5.0 取代了旧的 In-Memory 开关。
  • GeneratedShaderDirectory 只在虚拟着色器目录尚未映射时才被读取。如果本项目已经存在映射, 已有映射优先于该设置,直到编辑器重启。
  • 内置着色器库路径设置已在 1.3.8 移除,没有替代项。

示例

<Project>/Config/DefaultEngine.ini,列出所有标量属性的默认值:

[/Script/DreamShader.DreamShaderSettings]
SourceDirectory=(Path="DShader")
GeneratedShaderDirectory=(Path="Intermediate/DreamShader/GeneratedShaders")
DefaultBackend=ThinCustom
bScanPluginSourceDirectories=True
bShowInMemoryMaterialsInContentBrowser=False
bLayoutInMemoryGraphs=True
bAutoCompileOnSave=True
SaveDebounceSeconds=0.250000
bVerboseLogs=False
bExportDecompiledLayout=True
bOpenInNewWindow=True
InstanceSubfolder=Instances

三张映射表是容器属性;请在 Project Settings 面板里编辑,让编辑器写回 ini。

下一步

  • Backend —— 按文件如何覆盖 Default Compiler Backend
  • 枚举取值 —— 映射表所扩展的内置表
  • 内存材质 —— “纯内存”在实践中意味着什么
  • 编辑器工具 —— Tools 菜单项与材质内容浏览器

本页目录