DreamShaderLang 的 VSCode 扩展位于:
I:/UnrealProject_Moon/VSCodeExt/dreamshader-language-support
它服务于 .dsm / .dsh 文件开发,目标是让 DreamShaderLang 工作流尽量接近常见代码语言服务体验。
ShaderFunctionNamespaceimportShaderFunctionVirtualFunction- HLSL 风格基础类型与 GLSL 风格别名
- 常见流程关键字
- 顶层 block 关键字
- section 名称
Function/Namespace::Function名称UE.*builtin- 类型名
- 设置项
- 材质输出名
Path(...)helperRoot="Plugin."/Path(Plugins.)后的项目内容插件名ShaderFunction/VirtualFunctionGraph 调用名DShader/Packagespackage import 路径
当前扩展已经做了基础作用域隔离:
- 在
Function体里,只补当前函数参数和局部变量 - 在
Shader的Graph里,只补当前 block 可见的Properties/Outputs/ 局部变量 - 不会再把
Shader的Properties乱补到无关的Function体里
import跳转到.dshFunction/Namespace::Function跳转到定义- 项目头文件和 Package 头文件都会参与解析
- 输入
Texture::Sample2DRGB(会提示参数签名 - 鼠标悬停
Function、Property、Output、UE.TexCoord、局部变量会显示类型或来源 Find References可查找Function/Namespace::Function在工作区中的引用
- 文档级格式化
本地诊断会直接在编辑时标记:
- 花括号不匹配
import无法解析Function参数声明错误Function重复定义.dsm/.dsh顶层结构错误Graph中的非法语句- 未知变量 / 未知函数
Function调用参数数量不匹配out参数不是合法变量名- 纹理默认值
Path(...)语法错误 VirtualFunction缺少Options.Asset或Outputs
另外还会读取 Unreal 桥接诊断:
Saved/DreamShader/Bridge/diagnostics.json
命令面板中可用:
DreamShaderLang: Recompile Current SourceDreamShaderLang: Recompile All DSMDreamShaderLang: Install Package from GitHubDreamShaderLang: Browse Package Store:打开 VSCode 风格 Webview 商店面板DreamShaderLang: Update Installed PackagesDreamShaderLang: Remove Installed PackageDreamShaderLang: Open Packages FolderDreamShaderLang: Add Package Store Index SourceDreamShaderLang: Remove Package Store Index SourceDreamShaderLang: Create Package Step by StepDreamShaderLang: Create DreamShader MaterialDreamShaderLang: Create DreamShader HeaderDreamShaderLang: Create DreamShader Texture SampleDreamShaderLang: Create DreamShader Noise Material
说明:
- 对
.dsh执行当前文件重编时,会自动扩展成相关.dsm刷新 - Unreal 侧的错误会尽量回灌到 VSCode
- Package 命令会把 GitHub 仓库安装到
DShader/Packages,并维护DShader/dreamshader.lock.json
cd [PATH]\dreamshader-language-support
npm install
npm run package生成的扩展包:
dreamshaderlang-language-support-x.x.x.vsix
安装方式:
code --install-extension .\dreamshaderlang-language-support-x.x.x.vsix或在 VSCode 中通过 Install from VSIX... 安装。
如果 VSCode 打开的不是 Unreal 项目根目录,可以在设置里指定:
"dreamshader.projectRoot": "I:/UnrealProject_Moon/Moon_Dev"Package store 配置:
"dreamshader.packageStoreIndexUrls": [
"https://raw.githubusercontent.com/TypeDreamMoon/dreamshader-package-index/main/packages.json"
],
"dreamshader.enableGitHubPackageSearch": truedreamshader.packageStoreIndexUrl 旧单源配置仍兼容,但推荐使用 dreamshader.packageStoreIndexUrls 列表。
- 本地诊断已经够开发使用,但还不是 clangd 级别的完整编译器
- Unreal Parser 错误会尽量通过 source map 精确到真实
.dsm/.dsh文件行列;材质编译器内部错误仍可能只有 Unreal 原始信息 Graph语言服务主要面向图 DSL,不等同于完整 HLSL 语言服务器
.dsm里写主逻辑.dsh里写共用Function或Namespace- 第三方 package 可直接
import "@scope/package/Library/File.dsh"; - 尽量让
Function名、参数名、输出名清晰稳定 - 写
Texture2D默认值时直接用Path(...),这样扩展和 Unreal 两侧都能识别