shadertown 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -0
- package/README.md +20 -0
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +59 -7
- package/dist/export.js.map +1 -1
- package/dist/generated/sources.d.ts +49 -0
- package/dist/generated/sources.d.ts.map +1 -1
- package/dist/generated/sources.js +49 -0
- package/dist/generated/sources.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts +8 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +23 -1
- package/dist/react.js.map +1 -1
- package/dist/registry.d.ts +1479 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +878 -0
- package/dist/registry.js.map +1 -1
- package/dist/renderer.d.ts +15 -1
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +127 -0
- package/dist/renderer.js.map +1 -1
- package/dist/source.d.ts +56 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +191 -0
- package/dist/source.js.map +1 -0
- package/dist/stage.d.ts +13 -1
- package/dist/stage.d.ts.map +1 -1
- package/dist/stage.js +5 -1
- package/dist/stage.js.map +1 -1
- package/dist/types.d.ts +21 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Notable changes to the `shadertown` package. The site is versioned by its
|
|
4
|
+
deploys, not by this file.
|
|
5
|
+
|
|
6
|
+
This project follows [semantic versioning](https://semver.org). Before 1.0 the
|
|
7
|
+
minor number carries breaking changes, so pin it if that matters to you.
|
|
8
|
+
|
|
9
|
+
## 0.3.0 — 2026-08-29
|
|
10
|
+
|
|
11
|
+
Four shaders that light a scene instead of colouring one, taken from four
|
|
12
|
+
[vgpu](https://vgpu.sh) examples: two of them trace light through geometry, one
|
|
13
|
+
mounts it on an edge, and one bends it through glass.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **`radiance`.** Two-dimensional global illumination in a single fragment.
|
|
18
|
+
Every pixel fans rays into an analytic room of lamps and turning bars and
|
|
19
|
+
marches each one back to its source, so the shadows are cast rather than
|
|
20
|
+
drawn. The pointer is the brightest lamp in it. Free tier.
|
|
21
|
+
- **`lumen`.** A lattice of dots where each dot emits and occludes. Every dot
|
|
22
|
+
is the same size, so the nearest one to any point is the nearest lattice
|
|
23
|
+
node and the distance to the whole field is exact — which is what makes a
|
|
24
|
+
ray affordable enough to cross a dozen cells.
|
|
25
|
+
- **`beacon`.** A triangle of LEDs over a reflecting floor. The glow is
|
|
26
|
+
analytic off each edge and each emitter, so it holds its shape at any zoom,
|
|
27
|
+
and the floor is the same field read at the mirrored point.
|
|
28
|
+
- **`orb`.** A liquid blob in a sphere of glass. The sphere is solved rather
|
|
29
|
+
than marched; the blob is lobes joined by a smooth minimum, refined onto its
|
|
30
|
+
own surface before it is shaded, and antialiased off the settled distance.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- **`reveal` is now free**, alongside `radiance`. Five of the thirty-two
|
|
35
|
+
shaders hand over their source to anyone.
|
|
36
|
+
|
|
37
|
+
### Compatibility
|
|
38
|
+
|
|
39
|
+
The `Params` block at `@group(0) @binding(0)` is unchanged, byte for byte. All
|
|
40
|
+
four are generative, so they declare no bindings beyond it and a shader
|
|
41
|
+
vendored under 0.1.0 or 0.2.0 runs here unmodified.
|
|
42
|
+
|
|
43
|
+
## 0.2.0 — 2026-08-29
|
|
44
|
+
|
|
45
|
+
Ten shaders that read a layer instead of inventing one, filling the four
|
|
46
|
+
categories the catalogue could not reach: glass, distortion, image effects and
|
|
47
|
+
transitions.
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- **Source shaders.** `glass`, `lens`, `bloom`, `shockwave`, `swirl`, `flow`,
|
|
52
|
+
`duotone`, `edges`, `mosaic`, `reveal`. Twenty-eight shaders in total.
|
|
53
|
+
- **`source`** on `<ShaderCanvas>` and `createShaderRenderer`. Takes a URL, an
|
|
54
|
+
`ImageBitmap`, an `<img>`, a `<canvas>`, an `OffscreenCanvas`, a `<video>`
|
|
55
|
+
(re-uploaded only while it plays), or `{ shader, params }` to stack one
|
|
56
|
+
shadertown shader on another. Handing a source to a generative shader is
|
|
57
|
+
ignored rather than an error, so swapping the shader behind one canvas keeps
|
|
58
|
+
working.
|
|
59
|
+
- **`ShaderRenderer.setSource()`**, which swaps the layer without rebuilding
|
|
60
|
+
the pipeline.
|
|
61
|
+
- **`shaderKind(name)`**, **`isSourceShader(name)`** and
|
|
62
|
+
**`defaultSourceOf(name)`**. Kind comes from the folder the WGSL lives in, so
|
|
63
|
+
it cannot disagree with the bindings the shader declares.
|
|
64
|
+
- Four families: `optical`, `distortion`, `image`, `transition`.
|
|
65
|
+
- Types: `ShaderKind`, `ShaderSourceInput`, `ShaderSourceImage`,
|
|
66
|
+
`ShaderSourceLayer`.
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
|
|
70
|
+
- Exported snippets and the generated per-shader README now describe the source
|
|
71
|
+
bindings. A vendored `edges.wgsl` does nothing without something to read, and
|
|
72
|
+
the files that ship with it say so.
|
|
73
|
+
|
|
74
|
+
### Compatibility
|
|
75
|
+
|
|
76
|
+
The `Params` block at `@group(0) @binding(0)` is unchanged, byte for byte. A
|
|
77
|
+
source shader adds a texture, a sampler and a `Source` uniform at bindings 1 to
|
|
78
|
+
3; a generative shader declares none of them and keeps the layout it has always
|
|
79
|
+
had. `Source` is its own uniform block rather than four more fields on `Params`
|
|
80
|
+
for exactly this reason — a shader vendored under 0.1.0 runs unmodified here.
|
|
81
|
+
|
|
82
|
+
The reverse does not hold. A source shader vendored from 0.2.0 needs a runtime
|
|
83
|
+
that can bind a texture for it, so it faults on 0.1.0 with an incomplete bind
|
|
84
|
+
group. Upgrade the package before running one.
|
|
85
|
+
|
|
86
|
+
## 0.1.0 — 2026-08-29
|
|
87
|
+
|
|
88
|
+
First release. Eighteen fullscreen WebGPU shaders drawn by
|
|
89
|
+
[vgpu](https://vgpu.sh), sharing one uniform block so the runtime can swap a
|
|
90
|
+
shader without touching a binding.
|
|
91
|
+
|
|
92
|
+
- `<ShaderCanvas>` and `useShaderRenderer` for React, `createShaderRenderer`
|
|
93
|
+
for everything else.
|
|
94
|
+
- `defineShader` presets, typed against each shader's own controls.
|
|
95
|
+
- A shared post chain — vibrancy, grain, vignette — that behaves identically
|
|
96
|
+
across the catalogue.
|
|
97
|
+
- `shadertown add <slug>`, which vendors the WGSL, a typed preset, an example
|
|
98
|
+
and a licence into your repo.
|
package/README.md
CHANGED
|
@@ -17,4 +17,24 @@ No WGSL loader, no bundler plugin: shader sources ship as strings. Every
|
|
|
17
17
|
renderer on a page shares one GPU context and one frame loop, and the loop stops
|
|
18
18
|
when nothing is animating.
|
|
19
19
|
|
|
20
|
+
## Vendor the source
|
|
21
|
+
|
|
22
|
+
The `shadertown` CLI ships inside this package, so `npx shadertown` needs no
|
|
23
|
+
second install. It writes a shader's WGSL and your tuned preset into your own
|
|
24
|
+
repository, as files you own:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx shadertown add aurora
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Licensing
|
|
31
|
+
|
|
32
|
+
This package is MIT, and it draws all 32 shaders. What a licence buys is the
|
|
33
|
+
readable source: 3 shaders hand theirs to anyone, the other 15 need
|
|
34
|
+
[Professional](https://www.shadertown.com/pricing). Source you have already
|
|
35
|
+
vendored keeps working either way.
|
|
36
|
+
|
|
37
|
+
Needs WebGPU — `ShaderCanvas` reports an `unsupported` status so you can render
|
|
38
|
+
a fallback.
|
|
39
|
+
|
|
20
40
|
Full documentation: https://www.shadertown.com/docs
|
package/dist/export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAevB;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,EAC7C,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAQjC;AAgBD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAW7F;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAoB5F;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAuB9F;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAEtE;AAOD,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAwB9F;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAiIvF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAE,aAAkB,GAAG,MAAM,CA0B3F"}
|
package/dist/export.js
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { shaderSources } from "./generated/sources.js";
|
|
2
2
|
import { defaultParams } from "./params.js";
|
|
3
|
-
import { shaderRegistry } from "./registry.js";
|
|
3
|
+
import { defaultSourceOf, shaderKind, shaderRegistry, } from "./registry.js";
|
|
4
|
+
/**
|
|
5
|
+
* The `source` line an exported snippet needs, or nothing.
|
|
6
|
+
*
|
|
7
|
+
* A source shader that arrives without this looks like it is broken: it draws
|
|
8
|
+
* whatever the registry names as a fallback, and nothing in the file says the
|
|
9
|
+
* shader was ever meant to read the reader's own picture.
|
|
10
|
+
*/
|
|
11
|
+
function sourceProp(name, indent) {
|
|
12
|
+
if (shaderKind(name) !== "source")
|
|
13
|
+
return "";
|
|
14
|
+
const fallback = defaultSourceOf(name);
|
|
15
|
+
return `\n${indent}// An image, a URL, a <video>, or { shader: "…" } for another\n${indent}// shadertown shader. Omit it and it falls back to ${JSON.stringify(fallback ?? "a shader")}.\n${indent}source="/your-image.jpg"`;
|
|
16
|
+
}
|
|
4
17
|
/**
|
|
5
18
|
* Only the values that differ from the registry defaults. Exported snippets
|
|
6
19
|
* stay short, and a shader's defaults can improve later without silently
|
|
@@ -52,7 +65,7 @@ export function toReactSource(name, params) {
|
|
|
52
65
|
export function Background() {
|
|
53
66
|
return (
|
|
54
67
|
<ShaderCanvas
|
|
55
|
-
shader="${name}"${paramsProp}
|
|
68
|
+
shader="${name}"${paramsProp}${sourceProp(name, " ")}
|
|
56
69
|
play="visible"
|
|
57
70
|
style={{ position: "absolute", inset: 0 }}
|
|
58
71
|
/>
|
|
@@ -65,12 +78,15 @@ export function toVanillaSource(name, params) {
|
|
|
65
78
|
const diff = diffParams(name, params);
|
|
66
79
|
const entries = Object.entries(diff).map(([key, value]) => ` ${key}: ${literal(value)},`);
|
|
67
80
|
const paramsArg = entries.length > 0 ? `\n params: {\n${entries.join("\n")}\n },` : "";
|
|
81
|
+
const sourceArg = shaderKind(name) === "source"
|
|
82
|
+
? `\n // An image, a URL, a <video>, or { shader: "…" } for another shadertown\n // shader. Omit it and it falls back to ${JSON.stringify(defaultSourceOf(name) ?? "a shader")}.\n source: "/your-image.jpg",`
|
|
83
|
+
: "";
|
|
68
84
|
return `import { createShaderRenderer } from "shadertown";
|
|
69
85
|
|
|
70
86
|
const canvas = document.querySelector("canvas")!;
|
|
71
87
|
|
|
72
88
|
const renderer = createShaderRenderer(canvas, {
|
|
73
|
-
shader: ${JSON.stringify(name)},${paramsArg}
|
|
89
|
+
shader: ${JSON.stringify(name)},${paramsArg}${sourceArg}
|
|
74
90
|
dpr: [1, 2],
|
|
75
91
|
});
|
|
76
92
|
|
|
@@ -105,7 +121,7 @@ export function Background() {
|
|
|
105
121
|
return (
|
|
106
122
|
<div style={{ position: "relative", minHeight: "70vh" }}>
|
|
107
123
|
<ShaderCanvas
|
|
108
|
-
preset={${identifier}}
|
|
124
|
+
preset={${identifier}}${sourceProp(name, " ")}
|
|
109
125
|
quality={{ dpr: ${dpr} }}
|
|
110
126
|
style={{ position: "absolute", inset: 0 }}
|
|
111
127
|
/>
|
|
@@ -140,6 +156,40 @@ export function toReadme(name, params) {
|
|
|
140
156
|
.map(([key, value]) => `- \`${key}\`: ${typeof value === "number" ? value : JSON.stringify(value)}`)
|
|
141
157
|
.join("\n")
|
|
142
158
|
: "_None — this preset uses the catalogue defaults._";
|
|
159
|
+
// A source shader's whole point is the layer it reads, so the README has to
|
|
160
|
+
// say what that is and how to supply one. Skipped entirely for the shaders
|
|
161
|
+
// that invent their own picture.
|
|
162
|
+
const sourceSection = shaderKind(name) === "source"
|
|
163
|
+
? `## What it reads
|
|
164
|
+
|
|
165
|
+
${definition.name} does not invent its picture — it reads one. On top of the
|
|
166
|
+
shared \`Params\` block it declares three more bindings:
|
|
167
|
+
|
|
168
|
+
| Binding | Type | What it is |
|
|
169
|
+
| --- | --- | --- |
|
|
170
|
+
| \`@group(0) @binding(1)\` | \`texture_2d<f32>\` | The layer being read. |
|
|
171
|
+
| \`@group(0) @binding(2)\` | \`sampler\` | Linear, clamped to the edge. |
|
|
172
|
+
| \`@group(0) @binding(3)\` | \`Source\` uniform | Its pixel size, and whether to cover the canvas or stretch to it. |
|
|
173
|
+
|
|
174
|
+
Through shadertown, that is the \`source\` prop:
|
|
175
|
+
|
|
176
|
+
\`\`\`tsx
|
|
177
|
+
<ShaderCanvas shader="${name}" source="/hero.jpg" />
|
|
178
|
+
<ShaderCanvas shader="${name}" source={videoElement} />
|
|
179
|
+
<ShaderCanvas shader="${name}" source={{ shader: "${defaultSourceOf(name) ?? "aurora"}" }} />
|
|
180
|
+
\`\`\`
|
|
181
|
+
|
|
182
|
+
Leave it out and it falls back to the \`${defaultSourceOf(name) ?? "aurora"}\` shader, so a
|
|
183
|
+
preview is never a blank canvas.
|
|
184
|
+
|
|
185
|
+
Wiring the WGSL into your own renderer instead: bind a sampleable texture at
|
|
186
|
+
binding 1, a filtering sampler at binding 2, and write the source's pixel size
|
|
187
|
+
and fit mode at binding 3. The bindings are additive — a shader that invents
|
|
188
|
+
its own picture declares none of them, and the \`Params\` layout is identical
|
|
189
|
+
across the whole catalogue either way.
|
|
190
|
+
|
|
191
|
+
`
|
|
192
|
+
: "";
|
|
143
193
|
const costNote = {
|
|
144
194
|
light: "Light. A few samples per pixel — fine fullscreen at full pixel ratio, including on integrated graphics.",
|
|
145
195
|
medium: "Medium. A few dozen samples per pixel — comfortable fullscreen on a discrete GPU, but cap the pixel ratio for a retina hero.",
|
|
@@ -171,7 +221,7 @@ import { ${identifier} } from "./${name}";
|
|
|
171
221
|
|
|
172
222
|
The canvas fills its parent, so give the parent a size.
|
|
173
223
|
|
|
174
|
-
## This preset
|
|
224
|
+
${sourceSection}## This preset
|
|
175
225
|
|
|
176
226
|
${tuned}
|
|
177
227
|
|
|
@@ -222,8 +272,10 @@ projects, including projects you deliver to clients. No attribution is required.
|
|
|
222
272
|
You may not resell or redistribute the shader source itself, or include it in a
|
|
223
273
|
product whose main purpose is to distribute shaders, assets or templates.
|
|
224
274
|
|
|
225
|
-
This licence does not expire.
|
|
226
|
-
|
|
275
|
+
This licence does not expire. It covers this shader, in this file, for good —
|
|
276
|
+
whether it was taken on a monthly plan or a one-time purchase. If a monthly plan
|
|
277
|
+
lapses you keep every shader you have already downloaded; you simply stop
|
|
278
|
+
receiving new ones and updates.
|
|
227
279
|
|
|
228
280
|
The shader is provided as is, without warranty of any kind. The authors are not
|
|
229
281
|
liable for any claim or damage arising from its use.
|
package/dist/export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
|