shadertown 0.8.0 → 0.9.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 +84 -0
- package/README.md +2 -2
- package/cli/mcp.mjs +1 -1
- package/dist/export.d.ts.map +1 -1
- package/dist/export.js +31 -8
- package/dist/export.js.map +1 -1
- package/dist/generated/sources.d.ts +89 -5
- package/dist/generated/sources.d.ts.map +1 -1
- package/dist/generated/sources.js +88 -5
- package/dist/generated/sources.js.map +1 -1
- package/dist/graph.d.ts +17 -12
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +439 -209
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +2 -0
- package/dist/react.js.map +1 -1
- package/dist/registry.d.ts +216 -74
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +131 -49
- package/dist/registry.js.map +1 -1
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +8 -3
- package/dist/renderer.js.map +1 -1
- package/dist/source.d.ts +29 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +102 -9
- package/dist/source.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,90 @@ deploys, not by this file.
|
|
|
6
6
|
This project follows [semantic versioning](https://semver.org). Before 1.0 the
|
|
7
7
|
minor number carries breaking changes, so pin it if that matters to you.
|
|
8
8
|
|
|
9
|
+
## 0.9.0 — 2026-09-02
|
|
10
|
+
|
|
11
|
+
A shader that draws your logo up as a technical plate, an `{ svg }` source to
|
|
12
|
+
feed it, and a second flavour of render graph to draw it through.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`blueprint`.** The layer measured and drawn up the way a draughtsman would:
|
|
17
|
+
the ink outlined at a set weight, hatched inside at forty-five degrees, and
|
|
18
|
+
dimensioned below and beside with ticks, extension lines and its size in
|
|
19
|
+
pixels, lettered in the browser's monospace face from a glyph atlas the
|
|
20
|
+
runtime draws once. Behind it a grained mat under a grid ruled heavier every
|
|
21
|
+
fourth line, with construction lines meeting at the pointer. The
|
|
22
|
+
measuring happens on the GPU every frame — a bounds reduction boxes the ink,
|
|
23
|
+
a jump flood turns the box into a distance field — so the plate follows
|
|
24
|
+
whatever the layer becomes. Sixty-six shaders in total, and a new `drafting`
|
|
25
|
+
family.
|
|
26
|
+
- **The `{ svg }` source.** `source={{ svg: "/logo.svg" }}` (a URL or the
|
|
27
|
+
markup itself) rasterises the drawing through an `<img>` at the `width` you
|
|
28
|
+
choose, so the layer is as sharp as the canvas rather than as sharp as the
|
|
29
|
+
file declares, and works in browsers that will not decode an SVG into a
|
|
30
|
+
bitmap directly. Every opaque pixel is filled with `color` (white by
|
|
31
|
+
default) over `background` (black), so a coloured logo arrives as the same
|
|
32
|
+
silhouette a text source produces; `color: null` keeps its own colours.
|
|
33
|
+
- **Graph flavours.** A graph shader's folder now names its flavour:
|
|
34
|
+
`graph/particles/` for the five particle fields, `graph/drafting/` for the
|
|
35
|
+
plate. The shared prelude (`vs_fullscreen`, the bloom chain, `fs_main`) is
|
|
36
|
+
one file, each flavour's passes are another, and a flavour prelude that opens
|
|
37
|
+
with `// @reads-source` binds a layer. `shaderReadsSource` and
|
|
38
|
+
`shaderGraphs` join the generated module, and `ShaderGraph.bindSource` is
|
|
39
|
+
how the renderer hands a layer to the passes inside a graph that read it.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- **`isSourceShader` answers the question it is named for.** It is true for
|
|
44
|
+
every shader that wants a `source` — the fourteen source-kind shaders and
|
|
45
|
+
now `blueprint` — where before it was a synonym for `shaderKind() ===
|
|
46
|
+
"source"`. Ask it before handing over a layer; ask `shaderKind` how the
|
|
47
|
+
shader is driven.
|
|
48
|
+
- **The shared graph bindings moved to 20 and up.** `blurU`, `bloomU`, the
|
|
49
|
+
scene, blur and bloom textures and `linearSampler` sat at 2 to 14 in every
|
|
50
|
+
particle field's WGSL; they now sit at 20 to 30 so a flavour has room below
|
|
51
|
+
them for a source layer. Nothing changes through `ShaderCanvas` or the
|
|
52
|
+
runtime. A vendored copy of a particle field keeps working as vendored; a
|
|
53
|
+
fresh `shadertown add` writes the new numbers.
|
|
54
|
+
## 0.8.2 — 2026-09-02
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **The five graph shaders keep one picture at every canvas size.** Their point
|
|
59
|
+
size was in device pixels and their grid is a fixed 256 by 256, so a point
|
|
60
|
+
covered a smaller share of a bigger canvas: `dunes`, `ferro`, `chladni`,
|
|
61
|
+
`maelstrom` and `pulsar` read as a dense field on a small card and thinned
|
|
62
|
+
out to specks on a fullscreen hero — and, at twice the pixels, to half the
|
|
63
|
+
light. The point now grows with the canvas above 240 device pixels of
|
|
64
|
+
height, which is what a catalogue card draws at, and never shrinks below the
|
|
65
|
+
two pixels it already was. A card is untouched; everything larger now shows
|
|
66
|
+
the same picture it does. Measured on the site's own stills, `dunes` at
|
|
67
|
+
1000 by 625 went from 3% of full brightness to 15%, and `ferro` from 3% to
|
|
68
|
+
12% — the difference between a black rectangle and a picture.
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
|
|
72
|
+
- **`ferro` shows its crown before the pointer has moved.** A pointer that has
|
|
73
|
+
never moved reports the exact centre of the frame, and this camera
|
|
74
|
+
unprojects the centre to the horizon, so the crown of spikes the shader is
|
|
75
|
+
named for rose two hundred world units away and read as a smudge of light. It
|
|
76
|
+
now rests low in the frame, near enough to the camera to see. Any pointer a
|
|
77
|
+
reader actually moves is honoured exactly as before.
|
|
78
|
+
|
|
79
|
+
## 0.8.1 — 2026-09-01
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
|
|
83
|
+
- **`pulsar` opens on a picture instead of a white blob.** Its exposure was
|
|
84
|
+
set as if the globe were a thin field of points, but sixty-five thousand
|
|
85
|
+
additive splats share a small circle of screen there, so the core burned out
|
|
86
|
+
and took the whole sphere with it — a saturated white ball on grey, with none
|
|
87
|
+
of the surface visible. Intensity drops from 2.29 to 0.7 and saturation comes
|
|
88
|
+
back up from 0.06 to 1.1, so the dotted surface, the green rim and the pulled
|
|
89
|
+
side all read. The vignette deepens to settle it into the dark. The Bands
|
|
90
|
+
well also sat at 0, which meant the sweeping light the shader is named for
|
|
91
|
+
never appeared until you moved a slider; it now opens at 0.45.
|
|
92
|
+
|
|
9
93
|
## 0.8.0 — 2026-09-01
|
|
10
94
|
|
|
11
95
|
Five shaders that are render graphs rather than a single pass, a mesh gradient
|
package/README.md
CHANGED
|
@@ -40,8 +40,8 @@ npx add-mcp "npx -y shadertown@latest mcp" -n shadertown
|
|
|
40
40
|
|
|
41
41
|
## Licensing
|
|
42
42
|
|
|
43
|
-
This package is MIT, and it draws all
|
|
44
|
-
readable source: 16 shaders hand theirs to anyone, the other
|
|
43
|
+
This package is MIT, and it draws all 66 shaders. What a licence buys is the
|
|
44
|
+
readable source: 16 shaders hand theirs to anyone, the other 50 need
|
|
45
45
|
[Professional](https://www.shadertown.com/pricing). Source you have already
|
|
46
46
|
vendored keeps working either way.
|
|
47
47
|
|
package/cli/mcp.mjs
CHANGED
|
@@ -277,7 +277,7 @@ async function getShader({ slug }) {
|
|
|
277
277
|
: kind === "compute"
|
|
278
278
|
? "Kind: compute — a GPU simulation that carries state between frames."
|
|
279
279
|
: kind === "graph"
|
|
280
|
-
? "Kind: graph — a multi-pass render graph:
|
|
280
|
+
? "Kind: graph — a multi-pass render graph in one module: a particle field, or a drafting plate drawn over the source layer you give it, with bloom and present."
|
|
281
281
|
: "Kind: generative — it draws its picture from the params alone.";
|
|
282
282
|
|
|
283
283
|
const tierNote =
|
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,EAKL,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,CAqMvF;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,6 @@
|
|
|
1
|
-
import { shaderSources } from "./generated/sources.js";
|
|
1
|
+
import { shaderGraphs, shaderSources } from "./generated/sources.js";
|
|
2
2
|
import { defaultParams } from "./params.js";
|
|
3
|
-
import { defaultSourceOf, shaderKind, shaderRegistry, } from "./registry.js";
|
|
3
|
+
import { defaultSourceOf, isSourceShader, shaderKind, shaderRegistry, } from "./registry.js";
|
|
4
4
|
/**
|
|
5
5
|
* The `source` line an exported snippet needs, or nothing.
|
|
6
6
|
*
|
|
@@ -9,7 +9,7 @@ import { defaultSourceOf, shaderKind, shaderRegistry, } from "./registry.js";
|
|
|
9
9
|
* shader was ever meant to read the reader's own picture.
|
|
10
10
|
*/
|
|
11
11
|
function sourceProp(name, indent) {
|
|
12
|
-
if (
|
|
12
|
+
if (!isSourceShader(name))
|
|
13
13
|
return "";
|
|
14
14
|
const fallback = defaultSourceOf(name);
|
|
15
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"`;
|
|
@@ -78,7 +78,7 @@ export function toVanillaSource(name, params) {
|
|
|
78
78
|
const diff = diffParams(name, params);
|
|
79
79
|
const entries = Object.entries(diff).map(([key, value]) => ` ${key}: ${literal(value)},`);
|
|
80
80
|
const paramsArg = entries.length > 0 ? `\n params: {\n${entries.join("\n")}\n },` : "";
|
|
81
|
-
const sourceArg =
|
|
81
|
+
const sourceArg = isSourceShader(name)
|
|
82
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
83
|
: "";
|
|
84
84
|
return `import { createShaderRenderer } from "shadertown";
|
|
@@ -159,7 +159,7 @@ export function toReadme(name, params) {
|
|
|
159
159
|
// A source shader's whole point is the layer it reads, so the README has to
|
|
160
160
|
// say what that is and how to supply one. Skipped entirely for the shaders
|
|
161
161
|
// that invent their own picture.
|
|
162
|
-
const sourceSection =
|
|
162
|
+
const sourceSection = isSourceShader(name)
|
|
163
163
|
? `## What it reads
|
|
164
164
|
|
|
165
165
|
${definition.name} does not invent its picture — it reads one. On top of the
|
|
@@ -210,8 +210,10 @@ dispatch must land on the queue before the frame that draws.
|
|
|
210
210
|
`
|
|
211
211
|
: "";
|
|
212
212
|
// A graph shader also vendors one WGSL file, but the file is a whole render
|
|
213
|
-
// graph: several entry points, driven as separate passes every frame.
|
|
214
|
-
|
|
213
|
+
// graph: several entry points, driven as separate passes every frame. Which
|
|
214
|
+
// passes depends on the flavour, so the README names the right ones.
|
|
215
|
+
const flavour = shaderGraphs[name];
|
|
216
|
+
const graphSection = flavour === "particles"
|
|
215
217
|
? `## What it renders
|
|
216
218
|
|
|
217
219
|
${definition.name} is not one pass but a render graph in a single module: a
|
|
@@ -230,7 +232,28 @@ particles additively — the bindings each stage reads are all declared in the
|
|
|
230
232
|
file.
|
|
231
233
|
|
|
232
234
|
`
|
|
233
|
-
: ""
|
|
235
|
+
: flavour === "drafting"
|
|
236
|
+
? `## What it renders
|
|
237
|
+
|
|
238
|
+
${definition.name} is not one pass but a render graph in a single module, and
|
|
239
|
+
it measures the layer before it draws it. A bounds pass samples the source
|
|
240
|
+
through a 256² grid and three reductions box its ink into a 1×1 texture; a
|
|
241
|
+
seed pass and ten jump-flood steps turn that box into a 512² distance field;
|
|
242
|
+
the plate pass draws the picture from the distances into an HDR scene; a
|
|
243
|
+
five-level bloom chain and the present pass finish it. Every stage is its own
|
|
244
|
+
entry point. Through \`ShaderCanvas\` or \`createShaderRenderer\` none of that
|
|
245
|
+
is your problem: the same one-liner that runs a gradient runs this.
|
|
246
|
+
|
|
247
|
+
Wiring the WGSL into your own renderer instead means reproducing that graph:
|
|
248
|
+
pick each stage by its entry point name (\`fs_bounds\`, \`fs_reduce\` three
|
|
249
|
+
times, \`fs_seed\`, \`fs_jfa\` with a halving step from 256 to 1 and once more
|
|
250
|
+
at 1, \`fs_distance\`, \`fs_plate\`, \`fs_brightPlate\`, \`fs_blur\`,
|
|
251
|
+
\`fs_composite\`, then \`fs_main\` to present), give each pass its target, and
|
|
252
|
+
bind the layer to the passes that read it — the bindings each stage reads are
|
|
253
|
+
all declared in the file.
|
|
254
|
+
|
|
255
|
+
`
|
|
256
|
+
: "";
|
|
234
257
|
const costNote = {
|
|
235
258
|
light: "Light. A few samples per pixel — fine fullscreen at full pixel ratio, including on integrated graphics.",
|
|
236
259
|
medium: "Medium. A few dozen samples per pixel — comfortable fullscreen on a discrete GPU, but cap the pixel ratio for a retina hero.",
|
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;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"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"}
|