DreamShader Package 是 DreamShaderLang 的共享库分发格式。它的目标类似轻量 npm:把可复用 .dsh 函数库、示例 .dsm、README 和 License 放在一个 GitHub 仓库里,用户可以通过 VSCode 扩展安装到项目的 DShader/Packages。
推荐结构:
dream-noise/
├─ dreamshader.package.json
├─ README.md
├─ LICENSE
├─ Library/
│ ├─ Noise.dsh
│ ├─ FBM.dsh
│ └─ Voronoi.dsh
└─ Examples/
└─ M_NoisePreview.dsm
每个包根目录必须包含 dreamshader.package.json:
{
"name": "@typedreammoon/dream-noise",
"version": "1.0.0",
"displayName": "Dream Noise",
"description": "Reusable noise functions for DreamShaderLang.",
"author": "TypeDreamMoon",
"repository": "https://github.com/TypeDreamMoon/dream-noise",
"license": "MIT",
"dreamshader": {
"language": "DreamShaderLang",
"version": ">=1.0.0",
"entry": "Library/Noise.dsh"
},
"keywords": ["noise", "fbm", "voronoi"]
}规则:
name必填,支持name或@scope/nameversion推荐使用 SemVerrepository用于更新 packagedreamshader.entry是推荐入口头文件,供文档和商店展示使用- 仓库建议添加 GitHub topic:
dreamshader-package
VSCode 扩展会把包安装到:
DShader/Packages/<package name>/
例如:
DShader/Packages/@typedreammoon/dream-noise/
安装时会生成或更新锁文件:
DShader/dreamshader.lock.json
锁文件记录 package 名称、版本、仓库、commit 和安装路径,方便团队协作时确认依赖来源。
Examples/**/*.dsm 可以放示例材质,但安装 package 后不会被自动全量编译。需要使用示例时,建议复制到项目自己的 DShader/Materials 或其他非 DShader/Packages 目录。
安装后可以直接用 package 名称导入:
import "@typedreammoon/dream-noise/Library/Noise.dsh";也可以省略 .dsh:
import "@typedreammoon/dream-noise/Library/Noise";解析顺序:
- 当前文件相对路径
- 项目
DShader/ - 项目
DShader/Packages/
命令面板中可用:
DreamShaderLang: Install Package from GitHubDreamShaderLang: Browse Package StoreDreamShaderLang: Update Installed PackagesDreamShaderLang: Remove Installed PackageDreamShaderLang: Open Packages FolderDreamShaderLang: Add Package Store Index SourceDreamShaderLang: Remove Package Store Index SourceDreamShaderLang: Create Package Step by Step
安装支持两种输入:
TypeDreamMoon/dream-noise
https://github.com/TypeDreamMoon/dream-noise
安装、更新需要本机可用 git 命令。
Create Package Step by Step 会按步骤询问 package 名称、显示名、描述、namespace、作者、仓库地址、目标目录和是否生成示例材质,然后创建标准 package 骨架。
当前商店是轻量实现,由两部分组成:
- 配置项
dreamshader.packageStoreIndexUrls指向一个或多个 JSON index - GitHub topic 搜索
dreamshader-package - VSCode 命令
DreamShaderLang: Browse Package Store会打开一个 Webview 商店面板,可搜索、安装、打开仓库、添加或移除 index 源
index 可以是数组:
[
{
"name": "@typedreammoon/dream-noise",
"displayName": "Dream Noise",
"description": "Noise, FBM and Voronoi helpers.",
"repository": "https://github.com/TypeDreamMoon/dream-noise",
"path": "../dreamshader-packages/dream-noise",
"tags": ["noise", "procedural"]
}
]也可以是:
{
"packages": []
}默认 index 地址:
https://raw.githubusercontent.com/TypeDreamMoon/dreamshader-package-index/main/packages.json
VSCode 设置示例:
"dreamshader.packageStoreIndexUrls": [
"https://raw.githubusercontent.com/TypeDreamMoon/dreamshader-package-index/main/packages.json",
"I:/UnrealProject_Moon/VSCodeExt/dreamshader-package-index/packages.json"
]dreamshader.packageStoreIndexUrl 旧单源配置仍兼容,但推荐使用 dreamshader.packageStoreIndexUrls 列表。
path 是可选字段,主要给本地开发 index 使用。VSCode 从本地 packages.json 加载 index 时,会把相对 path 按 index 文件所在目录解析;如果本地路径不存在,会回退使用 repository。
- 所有公共函数建议放在
Library/**/*.dsh - 使用
Namespace(Name="...")避免函数名冲突 - 示例材质放在
Examples/**/*.dsm - README 写清楚 import 路径和示例调用
- 给 GitHub 仓库添加
dreamshader-packagetopic,方便商店发现