DreamShaderLang
语言参考

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.dsm

Manifest

每个包根目录必须包含 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";

解析顺序:

  1. 当前文件相对路径。
  2. 项目 DShader
  3. 项目 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.json

VSCode 设置示例:

{
  "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方便商店发现。

On this page