语言参考
Package 参考
DreamShaderLang 共享库分发格式、manifest、安装位置和 import 规则。
DreamShader Package 是 DreamShaderLang 的共享库格式。它的目标类似轻量 npm:把可复用 .dsh 函数库、示例 .dsm、README 和 License 放在一个 GitHub 仓库里,通过 VSCode 扩展安装到项目。
推荐结构
dream-noise/
├─ dreamshader.package.json
├─ README.md
├─ LICENSE
├─ Library/
│ ├─ Noise.dsh
│ ├─ FBM.dsh
│ └─ Voronoi.dsh
└─ Examples/
└─ M_NoisePreview.dsmManifest
每个包根目录必须包含 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/name。 |
version | 推荐 | 推荐 SemVer。 |
displayName | 推荐 | 商店展示名。 |
description | 推荐 | 简短说明。 |
repository | 推荐 | GitHub 仓库,用于安装和更新。 |
dreamshader.language | 推荐 | 固定为 DreamShaderLang。 |
dreamshader.version | 推荐 | 兼容的 DreamShaderLang 版本范围。 |
dreamshader.entry | 推荐 | 文档和商店展示入口。 |
keywords | 推荐 | 搜索标签。 |
安装位置
VSCode 扩展会把包安装到:
DShader/Packages/<package-name>/例如:
DShader/Packages/@typedreammoon/dream-noise/安装时会生成或更新锁文件:
DShader/dreamshader.lock.json锁文件记录 package 名称、版本、仓库、commit 和安装路径,方便团队确认依赖来源。
Import
安装后可以直接使用包名导入:
import "@typedreammoon/dream-noise/Library/Noise.dsh";也可以省略 .dsh:
import "@typedreammoon/dream-noise/Library/Noise";解析顺序:
- 当前文件相对路径。
- 项目
DShader。 - 项目
DShader/Packages。
VSCode 命令
命令面板中可用:
DreamShaderLang: Install Package from GitHub
DreamShaderLang: Browse Package Store
DreamShaderLang: Update Installed Packages
DreamShaderLang: Remove Installed Package
DreamShaderLang: Open Packages Folder
DreamShaderLang: Add Package Store Index Source
DreamShaderLang: Remove Package Store Index Source
DreamShaderLang: Create Package Step by Step安装支持:
TypeDreamMoon/dream-noise
https://github.com/TypeDreamMoon/dream-noise本机需要可用 git 命令。
Package Store
商店由两部分组成:
Package Store Index 仓库:
https://github.com/TypeDreamMoon/dreamshader-package-index
| 来源 | 说明 |
|---|---|
dreamshader.packageStoreIndexUrls | 一个或多个 JSON index。 |
| GitHub topic | 搜索 dreamshader-package。 |
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.jsonVSCode 设置示例:
{
"dreamshader.packageStoreIndexUrls": [
"https://raw.githubusercontent.com/TypeDreamMoon/dreamshader-package-index/main/packages.json"
],
"dreamshader.enableGitHubPackageSearch": true
}作者建议
| 建议 | 原因 |
|---|---|
公共函数放 Library/**/*.dsh | 让 import 路径稳定。 |
使用 Namespace(Name="...") | 避免函数名冲突。 |
示例放 Examples/**/*.dsm | 安装后不会被自动全量编译,用户可按需复制。 |
| README 写清 import 路径 | 降低使用成本。 |
添加 GitHub topic dreamshader-package | 方便商店发现。 |