Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
92c8c04
docs: establish V3 roadmap and integration workflow
git-chad Sep 17, 2026
66eb930
test: establish V3 composition and alpha compatibility baselines
git-chad Sep 17, 2026
6915fac
test: surface GPU and resource failures in composition checks
git-chad Sep 17, 2026
5aebd21
test: select software WebGPU adapter explicitly
git-chad Sep 17, 2026
fa9be06
test: cover actual editor hydration and project resaving
git-chad Sep 17, 2026
e3a9f7d
ci: run composition GPU regressions on macOS
git-chad Sep 17, 2026
bdab0b7
test: verify hydration replaces stale state and prunes tracks
git-chad Sep 17, 2026
c69bafd
fix: reveal lower content around newly contained media
git-chad Sep 17, 2026
94c7312
fix: preserve alpha through source and effect composition
git-chad Sep 17, 2026
322980b
Add isolated group rendering to editor and runtime pipelines
git-chad Sep 17, 2026
e7a5f6c
Address Greptile review: guard stale media callbacks, dedupe strict g…
git-chad Oct 1, 2026
53340e0
feat: add editor groups with persistence, history, and runtime export
git-chad Sep 17, 2026
8f540ba
Address Greptile review: prune hidden group subtrees when publishing
git-chad Oct 1, 2026
c358bb5
feat: insert text over transparent backgrounds and revise V3 priorities
git-chad Sep 17, 2026
72ee931
Add displaced rings with grouped photographic cutouts
git-chad Sep 17, 2026
033eb38
Fix group-aware layer dragging and drop feedback
git-chad Sep 17, 2026
75968e3
Add photographic cell cutouts and curated ring defaults
git-chad Sep 17, 2026
bfc0cce
Fix cell outline coverage and preserve V3 visual direction
git-chad Sep 17, 2026
b995773
Detail photographic regions, outlines, and paint mode plan
git-chad Sep 17, 2026
cbb925c
Add connected photographic regions and perimeter outlines
git-chad Sep 17, 2026
ea836cd
Record visual acceptance and dynamic scene performance requirements
git-chad Sep 17, 2026
55f46d5
Address Greptile review: bound perimeter outline neighbor search
git-chad Oct 1, 2026
897c1c0
Add painted reveals to Photographic Cells
git-chad Sep 17, 2026
7bfd86b
Enter Paint editing automatically and update V3 follow-ups
git-chad Sep 17, 2026
73107b7
Address Greptile review: clear paint mode when unpaintable, keep Spac…
git-chad Oct 1, 2026
76efc85
Add customizable dark and light colors to Threshold
git-chad Sep 17, 2026
6968b06
Add bounded Cells edge scatter and editable editorial studies
git-chad Sep 17, 2026
760f611
Record a future guides page in the V3 roadmap
git-chad Sep 17, 2026
ff27e31
Update V3 roadmap with approved designer feedback and custom patterns
git-chad Sep 17, 2026
b3f0c7e
Address Greptile review: make editorial UI test portable
git-chad Oct 1, 2026
2150493
Start projects neutral and disclose global color adjustments
git-chad Sep 17, 2026
89426f2
Balance the blank canvas hint text
git-chad Sep 21, 2026
9ba9c63
Address Greptile review: clear remix state when importing a .lab file
git-chad Oct 1, 2026
8dc3c4d
Add reusable layer masks with gradient, shape and brush tools
git-chad Sep 21, 2026
1af6b0d
Explain and gate Cut content masks to effects inside groups
git-chad Sep 21, 2026
8a5a31f
Flatten the mask scope caption for lint
git-chad Sep 21, 2026
3573157
Address Greptile review: composition-framed mask space and undo-safe …
git-chad Oct 1, 2026
af60e65
Add a Gradient Map effect layer with an editable ramp
git-chad Sep 21, 2026
60d45d6
Keep ramp stop order while dragging and undo a drag as one step
git-chad Sep 21, 2026
ec5cae6
Add a stable artboard with fixed document sizes and adaptive screen mode
git-chad Sep 21, 2026
9058815
Address Greptile review: sync output size on undo, crop legacy Custom…
git-chad Oct 1, 2026
0a1665a
Add Shape source layers with shared canvas handles
git-chad Sep 21, 2026
8d0288e
Record SVG shapes as the next stage of shape layers
git-chad Sep 21, 2026
1897c31
Record new effect ideas and reference 21 in the V3 roadmap
git-chad Sep 21, 2026
7f38e4e
Record user acceptance of Gradient Map, artboard and shape layers
git-chad Sep 21, 2026
1abfa55
Keep mask handles in composition space and make unmount undo-safe in …
git-chad Oct 1, 2026
33e78c0
Address Greptile review: shape handle drags, atan2 axis, export type,…
git-chad Oct 1, 2026
ca1c86c
Add direct text editing with multiline, alignment, rotation and small…
git-chad Sep 21, 2026
daa8abc
Record annotation design decisions in the V3 roadmap
git-chad Sep 21, 2026
70a3ff9
Address Greptile review: text editing cancel, rotation pivot and leng…
git-chad Oct 1, 2026
0b0ed48
Add corner brackets, edge dots and decorative label modes to Blob Tra…
git-chad Sep 21, 2026
4c4dd3c
Improve Blob Tracking motion detection, add a 1:1 lock and start trai…
git-chad Sep 21, 2026
4fab3b4
Lock Blob Tracking shapes to 1:1 by default for new layers
git-chad Sep 21, 2026
e385486
Record Blob Tracking closure and Annotations inputs from the frog ref…
git-chad Sep 21, 2026
d366814
Record final Annotations design decisions
git-chad Sep 21, 2026
ffb8e48
Address Greptile review: feed bracket stroke to the trail channel in …
git-chad Oct 1, 2026
6b025d8
Add an Annotations layer with seeded, edge-guided and painted placement
git-chad Sep 21, 2026
8199170
Record user results as references 22 and 23 and annotations acceptance
git-chad Sep 21, 2026
d258666
Address Greptile review: keep drifted annotations in painted area, aw…
git-chad Oct 1, 2026
ac5e152
Add depth maps and parallax to Image layers
git-chad Sep 21, 2026
53e40ef
Estimate depth maps in the browser with Depth Anything V2
git-chad Sep 21, 2026
0844190
Publish image depth as scene depth for effect inputs and depth masks
git-chad Sep 21, 2026
0236ba9
Make mask center, size, rotation and feather keyframable
git-chad Sep 21, 2026
46eba52
Keyframe mask Near and Far as independent tracks
git-chad Sep 21, 2026
5f33192
Record depth acceptance and references 24 and 25
git-chad Sep 21, 2026
bb883e9
Consolidate pending effects into Lumen Print, Signal Rot and Erosion …
git-chad Sep 23, 2026
c74446b
Mark Lumen Print as next candidate, not started
git-chad Sep 23, 2026
c198525
Address Greptile review: depth map warning, parallax clock, stretch e…
git-chad Oct 1, 2026
6dfbab9
Fix lint errors from the review fixes
git-chad Oct 1, 2026
a992901
Add a Lumen Print effect layer with analog print styles
git-chad Sep 23, 2026
7ca20cc
Address Greptile review: alpha-aware Lumen Print sampling and palette…
git-chad Oct 1, 2026
a41da7b
Add a Signal Rot effect layer for scanner drag and decaying signal
git-chad Sep 23, 2026
eaf3ee2
Remove the Tape Wobble style from Signal Rot
git-chad Sep 23, 2026
50b5e3b
Split screens and erosion into Dot Grid and Erosion layers in the roa…
git-chad Sep 23, 2026
1df28ae
Fix roadmap order column
git-chad Sep 23, 2026
38dd8e2
Add a Dot Grid effect layer with an exact artboard-fixed grid
git-chad Sep 23, 2026
9130d9f
Record Dot Grid acceptance
git-chad Sep 23, 2026
12480d5
Address Greptile review: support Dot Grid as a Blob Tracking inner ef…
git-chad Oct 1, 2026
cd15793
Add an Erosion effect layer that crumbles edges, tones and cutouts
git-chad Sep 23, 2026
c6756a9
Record Erosion acceptance
git-chad Sep 23, 2026
f04cd37
Address Greptile review: include Seed in erosion style presets
git-chad Oct 1, 2026
151a9d5
Add a Relief effect layer with emboss, deboss and engraving
git-chad Sep 23, 2026
9249cf1
Record Relief acceptance
git-chad Sep 23, 2026
7156ef7
Address Greptile review: preserve source alpha in Relief, fix preset …
git-chad Oct 1, 2026
6f76319
Add a Color Halos effect layer with gradient-mapped halos and cross f…
git-chad Sep 23, 2026
a680f8a
Replace Color Halos with a Flares layer: rays, stars, starbursts and …
git-chad Sep 23, 2026
56e39d0
Record Flares acceptance
git-chad Sep 23, 2026
91c0891
Address Greptile review: output straight-alpha light in Flares
git-chad Oct 1, 2026
2f9107f
Add ring shapes, rotation and width jitter, and boundary lines to Dis…
git-chad Sep 23, 2026
510d2ad
Address Greptile review: polygon cutout seams and extended outline tr…
git-chad Oct 1, 2026
2047a6b
Record blur and glass references and plan
git-chad Sep 23, 2026
49596c1
Add a Blur layer on a smooth blur pyramid with depth of field, focus …
git-chad Sep 23, 2026
f616a9d
Record Blur acceptance
git-chad Sep 23, 2026
13febea
Address Greptile review: blur radius range, focus control visibility,…
git-chad Oct 1, 2026
3aca260
Add Feather to brush masks
git-chad Sep 23, 2026
bf01183
Address Greptile review: brush Feather timeline definition, QA limits
git-chad Oct 1, 2026
0356efb
Add a Glass layer on a shared blur pyramid: reeded, hammered, pyramid…
git-chad Sep 23, 2026
abe1259
Record Glass acceptance
git-chad Sep 23, 2026
9b10887
Address Greptile review: glass dispersion coverage and idle blur pyramid
git-chad Oct 1, 2026
d99ff7a
Add a Connected Dots layer: tone graphs, ink blobs and plexus networks
git-chad Sep 23, 2026
d994f01
Record Connected Dots acceptance
git-chad Sep 23, 2026
4f595c7
Address Greptile review: Connected Dots image background, duplicate t…
git-chad Oct 1, 2026
c840376
Fix lint errors from the review fixes
git-chad Oct 1, 2026
297b5d3
Add Mesh mode and six new styles to Connected Dots
git-chad Sep 23, 2026
575c221
Address Greptile review: keep Mesh topology valid and hide unused con…
git-chad Oct 1, 2026
3177d02
Rework Plotter into a pen plotter: hatch, flow, contour, squiggle, sp…
git-chad Sep 24, 2026
ca0910a
Address Greptile review: plotter transparent ink, control visibility,…
git-chad Oct 1, 2026
b6eb17f
Fix lint errors from the review fixes
git-chad Oct 1, 2026
d8c72e9
Add a Photocopy layer: toner, speckle, streaks, misregistration and c…
git-chad Sep 27, 2026
4373ee0
Record Photocopy acceptance
git-chad Sep 27, 2026
0d565d7
Address Greptile review: Photocopy transparency and amount handling
git-chad Oct 1, 2026
ec99d9f
Add an Outline layer: solid, double, dashed and scalloped cloud outlines
git-chad Sep 27, 2026
c32cb01
Record Outline acceptance
git-chad Sep 27, 2026
93e294c
Plan PBR materials and a path-traced Render mode for the 3D layer
git-chad Sep 28, 2026
f9738ee
Address Greptile review: outline seeds, reach, inset scallops, duplic…
git-chad Oct 1, 2026
ee8ba59
Add a 3D Model layer: GLB import, HDR studios, PBR and replacement ma…
git-chad Sep 29, 2026
2049a14
Show a cube for 3D Model layers in the layer list
git-chad Sep 29, 2026
c7fd24f
Address Greptile review: model floor offset, cutout depth and presets…
git-chad Oct 1, 2026
ecc6f02
Fix lint errors from the review fixes
git-chad Oct 1, 2026
dca5491
Upgrade three.js to 0.185.1
git-chad Sep 29, 2026
89e3857
Regenerate the MCP shader reference for three 0.185.1
git-chad Sep 29, 2026
30df7bb
Address Greptile review: imported transmissive model check
git-chad Oct 1, 2026
a0f5d31
Add animation clips to the 3D Model layer
git-chad Sep 29, 2026
725495e
Address Greptile review: model animation fit, clip identity, durations
git-chad Oct 1, 2026
2f89143
Fix lint errors from the review fixes
git-chad Oct 1, 2026
0b5c09a
Turn SVG logos into 3D Model layers
git-chad Sep 29, 2026
aec13bc
Add a shader scan for three.js upgrades and a resume note to the plan
git-chad Sep 29, 2026
c10f1f8
Make the V3 layers cheaper to render without changing how they look
git-chad Sep 29, 2026
9a3945b
Add a changeset for the V3 render performance work
git-chad Sep 30, 2026
3e94f1d
Address Greptile review: keep partial SVG opacity and restore the SVG…
git-chad Oct 1, 2026
6981dcf
Fix lint errors from the review fixes
git-chad Oct 1, 2026
12dcf0c
Let Pattern layers use your own motifs, ordered light to dark
git-chad Sep 30, 2026
84adaf4
Record Pattern motifs acceptance
git-chad Sep 30, 2026
25b5f75
Address Greptile review: pattern motif warning, preset colors, export…
git-chad Oct 1, 2026
deef91f
Record accepted V3 items and the final V3 deliveries
git-chad Sep 30, 2026
ad947c9
Draw uploaded SVGs as Shape layers with sharp edges and editable colors
git-chad Sep 30, 2026
ed37832
Address Greptile review: SVG opacity, palette alpha, retries, anisotr…
git-chad Oct 1, 2026
4b2858b
Let the Gradient Map ramp be keyframed on the timeline
git-chad Sep 30, 2026
a7bdf1d
Record Gradient Map keyframes in the roadmap and test notes
git-chad Sep 30, 2026
8cf7b05
Address Greptile review: ramp alignment side and color drag interaction
git-chad Oct 1, 2026
879fbd0
Let Annotations follow image regions, connect dots and turn elements
git-chad Sep 30, 2026
094ddaa
Record the Annotations additions and ignore aborted media range reque…
git-chad Sep 30, 2026
c24280c
Address Greptile review: redraw after region readback, aspect-correct…
git-chad Oct 1, 2026
440f202
Fix lint errors from the review fixes
git-chad Oct 1, 2026
6c289a3
Add a standalone Grain layer for animated film grain
git-chad Sep 30, 2026
1d1d466
Record the Grain layer and skip its video previews on SwiftShader
git-chad Sep 30, 2026
43d966a
Address Greptile review: grain clock, chroma clipping, timing cost
git-chad Oct 1, 2026
ec03e76
Let Connected Dots snap its points to image edges
git-chad Sep 30, 2026
21c47c1
Record Connected Dots edge snap in the roadmap and test notes
git-chad Sep 30, 2026
73e05e4
Tidy the effect sidebars: info icons, logical order, hide idle controls
git-chad Sep 30, 2026
3065ba7
Address Greptile review: Connected Dots edge snap export size and alp…
git-chad Oct 1, 2026
4c5c122
Restyle the editor with a tactile skin and add a light theme
git-chad Oct 1, 2026
72ae29a
Round the toolbars concentrically and tokenize the skin sizes
git-chad Oct 1, 2026
43fd4d8
Bring the tactile skin to the community pages
git-chad Oct 1, 2026
1e9f1f7
Polish the community pages, empty canvas, layers panel and 3D gizmo
git-chad Oct 1, 2026
daf4f2f
Address Greptile review: canvas overlays, mobile theme toggle, theme-…
git-chad Oct 1, 2026
3ffe862
Add 3D camera projections, metalness, rim light, wireframe and real g…
git-chad Oct 1, 2026
739903d
Address Greptile review: keyboard-focusable model help, single-tap gl…
git-chad Oct 1, 2026
19a6c3e
Compare saved project params without key order and give the compositi…
git-chad Oct 1, 2026
06049c2
Point the composition tests at the moved slice photo
git-chad Oct 1, 2026
6aff54a
Keep hidden audio videos hidden on publish, and keep missing media li…
git-chad Oct 1, 2026
eb90280
Export pixel trail, magnify lens and blob tracking layers, update mis…
git-chad Oct 1, 2026
a03de46
Default to the light theme, and keep community card overlays light-on…
git-chad Oct 1, 2026
3b8cf0e
Feather ellipse and brush masks by true edge distance
git-chad Oct 13, 2026
d004e2b
Theme the easing curve and audio popovers
git-chad Oct 13, 2026
e958dac
Recreate the text texture when the canvas size changes
git-chad Oct 13, 2026
34bbe26
Use the orange accent in the timeline and audio controls
git-chad Oct 13, 2026
c48f375
Use the accent for the keyframe marquee and tracked keyframe buttons
git-chad Oct 13, 2026
bd112f2
Show canvas handles only while the pointer is over the canvas
git-chad Oct 13, 2026
020db11
Show canvas handles while a slider drives them
git-chad Oct 13, 2026
7fbb10a
List current effects as Blob Tracking inner effects, and render all o…
git-chad Oct 13, 2026
14b1780
Give Blob Tracking inner effects their style and palette controls
git-chad Oct 13, 2026
488c389
Animated Open Graph image for Shader Lab 3.0, on every page
git-chad Oct 13, 2026
3a825fc
Compress the Open Graph GIF to 2 MB
git-chad Oct 13, 2026
7085dff
Recolor SVG pattern motifs from their file colors
git-chad Oct 13, 2026
69dd5ae
Render the editor canvas at zoom resolution, up to a 4096 px edge
git-chad Oct 13, 2026
b32194e
Record native depth timing, zoom-resolution rendering and SVG motif c…
git-chad Oct 13, 2026
70776dd
Mark the five final V3 deliveries as accepted
git-chad Oct 13, 2026
536dbe2
Add a toggleable layout grid overlay to the editor
git-chad Oct 13, 2026
8d20fd9
Snap canvas handles to the layout grid
git-chad Oct 13, 2026
a8106c2
Record the layout grid in the roadmap
git-chad Oct 13, 2026
31be080
Rebuild the 2D canvas handles as a Figma-style transform box
git-chad Oct 13, 2026
5e0c931
Nudge canvas selections with the arrow keys, and fix the handle lint …
git-chad Oct 13, 2026
9e2e725
Show text fields and apply text presets in Blob Tracking inner effects
git-chad Oct 13, 2026
8c5b58b
Rework the Mesh Gradient layer: smooth presets, canvas points, shuffl…
git-chad Oct 13, 2026
beffef7
Fix the Greptile findings on brush masks, runtime inner effects and m…
git-chad Oct 13, 2026
f399bde
Merge pull request #201 from basementstudio/git-chad/v3-mesh-gradient
git-chad Oct 13, 2026
be87d50
Pin static gradient fixtures to Motion Off after the Mesh Gradient re…
git-chad Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/alpha-compositing-foundation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Preserve alpha when copying external input textures and applying effect passes. Source layers use straight-alpha source-over blending; effect passes preserve input coverage and retain their existing alpha-as-strength behavior. Opaque compositions and legacy mask semantics are unchanged.
5 changes: 5 additions & 0 deletions .changeset/annotations-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add an Annotations effect layer: seeded, edge-guided or painted placement of decorative technical marks (target rings, dashed circles and boxes, crosshairs, rulers, connectors, readouts, metadata blocks) with presets, editable text, monochrome or palette colors, rendered identically in the editor and runtime.
5 changes: 5 additions & 0 deletions .changeset/annotations-regions-rotation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Annotations can place marks by image regions, draw connected dots and turn individual elements. Placement → Regions groups the image below into areas of similar tone and color from the same low-resolution field Edges already reads, then frames regions with boxes, traces their outlines with dots and tags them with labels; region ids persist across video frames so marks follow the image instead of flickering. Connected Dots adds small constellations of dots linked to their nearest neighbours. Rotation Jitter turns rings, crosses and boxes by a seeded angle, and Align to Edges turns them along the image edges or each region's long axis. All new controls default to off, so existing annotations render exactly as before.
5 changes: 5 additions & 0 deletions .changeset/blob-inner-effects.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Blob Tracking inner effects cover every current effect, including Blur, Glass, Gradient Map, Grain, Lumen Print, Photocopy, Relief, Erosion and Signal Rot. A newly picked inner effect now starts from its default settings instead of rendering nothing until a setting was changed.
5 changes: 5 additions & 0 deletions .changeset/blob-tracking-annotations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Blob Tracking gains corner-bracket frames, edge dots along each blob's silhouette, and decorative label modes (prefix + seeded ID, custom list). Existing scenes keep their outline and coordinate labels.
5 changes: 5 additions & 0 deletions .changeset/brush-mask-feather.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Brush masks gain Feather: painted mask edges soften by a keyframable distance measured from the painted edge, the same way ellipse and rectangle masks soften. Feather 0 keeps a hard painted edge; the existing default of 0.01 softens old brush masks very slightly.
5 changes: 5 additions & 0 deletions .changeset/cell-edge-scatter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add optional, seeded Edge Scatter to Photographic Cells regions and painted reveals. Scatter fragments boundaries without moving source detail or adding texture samples. Missing values and zero preserve existing projects.
5 changes: 5 additions & 0 deletions .changeset/connected-dots-edge-snap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Connected Dots gains Edge Snap, which pulls each point onto the strongest image edge inside its cell so dots, links and mesh triangles trace contours, and two styles that use it: Contour Graph and Facets. At 0 (the default, and for every existing style and saved project) the output is unchanged. Mesh mode now reads its points from the per-cell pre-pass, about twice as fast at 1080p with identical pixels.
5 changes: 5 additions & 0 deletions .changeset/connected-dots-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Connected Dots effect layer: the image becomes jittered points linked to their neighbors. Graph links dots by tone with links that thicken in the darks; Blobs melts dots and links into organic masses; Plexus draws thin lines that fade with distance. Circle, square, plus or ring dots sized by tone, a tone cutoff that drops the background, palette-by-tone (flat bands from an editable ramp of up to 8 stops), source or ink color, a color, image or transparent background, and Drift so links form and break over time. Four starting styles (Portrait Graph, Ink Blobs, Plexus, Constellation).
5 changes: 5 additions & 0 deletions .changeset/connected-dots-mesh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Connected Dots gains a Mesh mode (flat-colored triangles between the points, with Fill, Wire and Wire Color) and six new styles: Molecule, Circuit, Neural, Riso, Low Poly and Wireframe.
5 changes: 5 additions & 0 deletions .changeset/depth-parallax.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Image layers accept a grayscale depth map as a second asset (`depthAsset` in the runtime config) and gain Depth controls: invert, range, focus plane, orbit/sway/nod/dolly camera motion with amount and speed, a keyframable camera offset, stretched or transparent edges, march quality and a depth preview. The pass marches depth layers from near to far with binary refinement so nearer content covers what is behind it. Layers without a depth map keep the previous shader. An **Estimate** button generates the depth map in the browser with Depth Anything V2 Small (transformers.js in a Web Worker, WebGPU with a WASM fallback) and attaches it as a local asset. The image pass publishes its displaced depth as scene depth for the layers above: ASCII, Halftone, Pattern and Gradient Map gain `input: "luminance" | "depth"`, and layer masks gain a `depth` shape with a near/far range. Mask center, size, rotation and feather are keyframable and audio-linkable as `mask.*` tracks, evaluated in the editor and the runtime.
5 changes: 5 additions & 0 deletions .changeset/displaced-rings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add Displaced Rings with rings/half-discs, progressive transforms, seeded offsets, and Distort/Cutout output. Support transformed coverage in the editor and runtime so grouped photographic cutouts reveal external layers, with opacity interpolating color and alpha together.
5 changes: 5 additions & 0 deletions .changeset/dot-grid-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Dot Grid effect layer: an exact, unrotated dot grid fixed to the artboard where every cell gets a dot that grows with the tone, with Level, Contrast, Softness, circle or square dots, single-color or source ink, a background and a blurred underlay. Four starting styles (Coordinate, Source Dots, Night, Pixel Grid). It renders identically in the editor, exports and the runtime package. Halftone is unchanged.
5 changes: 5 additions & 0 deletions .changeset/editor-groups.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Support isolated groups in exported ShaderLabConfig layer lists using group layers and parentId references. Evaluate group visibility and opacity before building the render tree, preserving child effect scope in composition and headless rendering. Existing flat configs remain compatible.
5 changes: 5 additions & 0 deletions .changeset/erosion-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add an Erosion effect layer that crumbles the image into speckle along its edges, light or dark tones, or the border of a cutout, with Erode, Edge Width, Speckle Size, Clumping and Scatter (fragments thrown across the edge), revealing paper or transparent holes, frozen or animated. Three starting styles (Disintegrate, Paper Erosion, Crumbled Cutout). It renders identically in the editor, exports and the runtime package.
5 changes: 5 additions & 0 deletions .changeset/flares-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Flares effect layer: light flares from the brightest small points in the image, with Threshold, Isolation (large bright areas stay clean), Intensity, 1 to 16 rays, rotation, length, secondary ray length, length jitter, thickness, falloff, ray and core colors and a core glow. Five starting styles (Cross, Star, Starburst, Asterisk, Anamorphic). Flares extend over transparent areas. It renders identically in the editor, exports and the runtime package.
5 changes: 5 additions & 0 deletions .changeset/focus-blur-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Blur effect layer built on a seven-level blur pyramid with B-spline sampling, so any radius stays smooth and the blur size can change per pixel. Blur From: Uniform, Depth (depth of field from the scene depth map), Linear and Radial focus zones, or Luminance, with Focus, Focus Range, Transition, Center, Band Angle and Invert Focus. Kinds: Gaussian, Lens bokeh with Highlights, and Motion. Grain keeps large blurs from banding. Five starting styles (Depth of Field, Tilt-Shift, Vignette, Soft, Motion). Directional Blur, Progressive Blur and Fluted Glass leave the add-layer menu; saved projects keep rendering them.
5 changes: 5 additions & 0 deletions .changeset/glass-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Glass effect layer that replaces Fluted Glass: reeded (round or sharp flutes), hammered, pyramid, hex or frosted glass where every cell is a small lens, the scene blurs with its distance behind the glass (uniform or from the depth map, through the shared blur pyramid), and thin rims, grooves, frost, dispersion and tint make it read as glass. Six starting styles (Reeded, Frosted Reeded, Hammered, Pyramid, Hex, Frosted). The Blur layer now shares the same blur pyramid module.
5 changes: 5 additions & 0 deletions .changeset/gradient-map-keyframes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Gradient Map ramps can be animated. Timeline tracks with the new `gradient` value type blend between two ramps: stops glide when both ramps have the same number of stops, and when the counts differ the shorter ramp gains stops that leave its look unchanged, so the in-between frames stay a smooth crossfade. Each keyframe keeps its easing. Scenes without ramp tracks render exactly as before.
5 changes: 5 additions & 0 deletions .changeset/gradient-map-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Gradient Map effect layer that recolors by tone with an editable ramp, presets, Amount and Invert. It renders identically in the editor, exports and the runtime package, and can be scoped with groups and masks. The global Color Map is unchanged.
5 changes: 5 additions & 0 deletions .changeset/grain-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Grain effect layer: photographic film grain for photos and video, with Amount, Size in document pixels, Roughness, Clumping, Chroma that leaves brightness unchanged, a tonal Response that favors the midtones like film, and Soft Light, Overlay or Add blending. Speed 0 holds one pattern; above 0 it steps to a new pattern 24 times a second like film. Five starting styles (Fine 35mm, Color Negative, 16mm, Pushed, Digital Noise). It renders identically in the editor, exports and the runtime package.
4 changes: 4 additions & 0 deletions .changeset/group-drag-drop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
---

Fix editor layer dragging so dropping into or out of a group updates membership and order together. Add destination indicators, subtree movement, cancellation, and edge scrolling. This editor-only change does not require a package release.
5 changes: 5 additions & 0 deletions .changeset/isolated-group-rendering.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Add isolated, nested group rendering to the internal renderer frame contract. Group children render against transparent targets before the combined result is blended into the parent. Existing flat public shader configs retain their behavior; editor grouping controls and persisted groups follow separately.
5 changes: 5 additions & 0 deletions .changeset/layer-masks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add reusable layer masks: linear and radial gradients, ellipse, rectangle and brush on any layer or group. Masks either limit an effect or cut coverage, support invert and feather (measured from the true shape edge, so stretched ellipses soften evenly), and render identically in the editor, PNG/video export and the runtime package.
5 changes: 5 additions & 0 deletions .changeset/lumen-print-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Lumen Print effect layer: an analog photographic print with sun-print toning through an editable palette, solarization with edge lines, diffusion and halation, highlights washed into paper, burned borders and grain. Six starting styles (Lumen, Cyanotype, Burned, Sabattier, Washed, Eroded). It renders identically in the editor, exports and the runtime package.
5 changes: 5 additions & 0 deletions .changeset/mcp-layer-masks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab-mcp": minor
---

`update_layer` accepts a `mask`: linear, radial, ellipse, rectangle or brush shapes in centered shorter-edge composition units, scoped to the effect or the content, with invert, rotation and feather. Pass `null` to reset it.
5 changes: 5 additions & 0 deletions .changeset/mesh-gradient-v2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Mesh Gradient gets eight new smooth presets (Peach, Lagoon, Dusk, Citrus, Mint, Aurora, Ink, Basement), a Simple distortion mode with Softness, Warp and Detail, and motion styles (Drift, Breathe, Swirl, Flow) that loop seamlessly over the timeline duration. Passes receive the timeline duration through a new `updateTimelineDuration` hook. Saved gradients keep their exact look: they load in Advanced mode with their Original motion.
5 changes: 5 additions & 0 deletions .changeset/outline-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add an Outline effect layer on a jump-flood distance field: solid, double, dashed or scalloped cloud outlines around text, cutouts or dark and light shapes, with offset (negative draws inside), width, repeated rings, fill between shape and outline, and a line-only mode. Six starting styles (Stroke, Cloud, Sticker, Contour Rings, Cut Line, Double).
5 changes: 5 additions & 0 deletions .changeset/pattern-motif-palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Pattern motifs can recolor their SVG files. With Color Mode set to Motif colors, the editor lists every color found in the SVG motifs under File colors, and each one can be replaced, the same way SVG shapes work. Image motifs and projects without a palette render exactly as before.
5 changes: 5 additions & 0 deletions .changeset/pattern-motifs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Pattern layers can use your own motifs: set `preset: "custom"` and list up to ten images or SVGs in `patternAssets`, ordered from the lightest tones to the darkest. Each motif takes an equal band of tones, and Invert reverses the order. The new `colorMode: "original"` keeps each motif's own colors; the other color modes use the motif's alpha as its shape.
5 changes: 5 additions & 0 deletions .changeset/photocopy-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Photocopy effect layer: crushed toner over paper with Threshold, Contrast and Generations (a copy of a copy), uneven fill, toner speckle, drum streaks, misregistration, grain and fold creases, any toner and paper color or transparent paper. Five starting styles (Office Copy, Zine, Fax, Blueprint Copy, Pink Flyer).
5 changes: 5 additions & 0 deletions .changeset/photographic-cell-paint.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add persisted Paint selection to Photographic Cells. Painted coverage shares cell geometry and perimeter outlines with automatic regions, stays anchored in composition space, and reuses its GPU texture while the source animates.
5 changes: 5 additions & 0 deletions .changeset/photographic-cell-regions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add coherent Photographic Cells regions with separate region and cell sizes, image-guided or seeded selection, and None/Perimeter/Every Cell outline modes. Preserve saved cell layouts and contour settings while new layers start with connected regions and fine perimeter outlines.
5 changes: 5 additions & 0 deletions .changeset/photographic-cells.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add Photographic Cells with light/dark/random selection, irregular rectangular cells, full-resolution photographic interiors, alpha cutouts, and optional outlines. Support the effect in runtime configs and grouped compositions. Apply user-curated editor defaults to new Displaced Rings layers while preserving saved settings and renderer fallbacks.
5 changes: 5 additions & 0 deletions .changeset/plotter-rework.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Rework Plotter into a pen-plotter drawing: Hatch (crosshatch layers by tone), Flow (dense lines following the forms), Contour (smooth tone contours), Squiggle (rows that wave in the darks), Spiral (one continuous spiral whose line thickens with tone) and Stipple (dots by density), with pen width, pressure, wobble, ink bleed, ink, source or three pens, paper color, grain or transparent paper, and seven starting styles. The original parameters and their defaults are kept, so saved plotter layers still open.
5 changes: 5 additions & 0 deletions .changeset/relief-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Relief effect layer that embosses or debosses the image into a lit surface, with height from luminance, scene depth or a cutout's alpha, Depth, Bevel, light angle, elevation and ambient, a single material or the source colors with specular highlights, grain, and optional parallel or radial engraving. Five starting styles (Silver Plate, Letterpress, Blind Emboss, Gold Foil, Source Relief). It renders identically in the editor, exports and the runtime package.
5 changes: 5 additions & 0 deletions .changeset/ring-shapes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Displaced Rings gains ring shapes (Circle, Triangle, Square, Polygon with Sides) alongside the Full/Half cut, per-band Rotation Jitter and Width Jitter driven by Seed, and Lines: thin strokes on the band boundaries that can keep repeating across the canvas beyond the outer band, with width, color and opacity. New controls default to off, so existing layers and saved projects look the same.
5 changes: 5 additions & 0 deletions .changeset/shape-layers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Shape source layer: ellipse, rectangle, triangle, polygon, star, ring and blades silhouettes with color, outline, softness and canvas handles. Renders identically in the editor, exports and the runtime package, and combines with blend modes and layer masks.
5 changes: 5 additions & 0 deletions .changeset/signal-rot-layer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a Signal Rot effect layer for scanner drag and decaying signal: held streaks, snaking wobble, uneven scan speed, torn bands with paper dropouts, chroma drift, crushed levels and line noise, frozen or animated. Three starting styles (Scanner Drag, Signal Rot, Torn Scan). It renders identically in the editor, exports and the runtime package.
5 changes: 5 additions & 0 deletions .changeset/stable-artboard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add a stable artboard: any composition aspect other than Screen (adaptive) is a fixed document size, centered in the editor and letterboxed in the community player, so framing, masks and text no longer follow the window. Screen mode and older scenes are unchanged.
5 changes: 5 additions & 0 deletions .changeset/svg-shapes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Shape layers can draw an SVG: set `shape: "svg"` and give the layer an image `asset` pointing at the file. The SVG becomes a signed distance field, so its edges stay sharp at any size and Softness and Outline work as on the built-in shapes. `svgColorMode: "original"` keeps the file's colors, and `svgPalette` (a JSON map from a file color to a new color) recolors them; `"single"` fills the shape with `color`.
5 changes: 5 additions & 0 deletions .changeset/text-editing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Text layers support multiline content, explicit alignment, line height, rotation and font sizes down to 8px, rendered identically in the editor and runtime. The editor adds in-place editing by double-click and canvas handles for position, rotation and size.
5 changes: 5 additions & 0 deletions .changeset/text-texture-resize.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Text layers redraw at the right size after the canvas or composition is resized. The text texture kept its first size on the GPU, so a resized canvas showed the text scaled down.
5 changes: 5 additions & 0 deletions .changeset/three-185.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Require three 0.185: the `three` peer dependency is now `^0.185.0` (was `^0.183.0`). Projects still on three 0.183 need to update three together with this release.
5 changes: 5 additions & 0 deletions .changeset/threshold-colors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": minor
---

Add darkColor and lightColor to Threshold, retaining black/white fallbacks. Recolor the existing threshold field without another render pass; softness, noise, inversion and source coverage retain their behavior.
5 changes: 5 additions & 0 deletions .changeset/transparent-media-bounds.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Support transparent borders for contained image and video layers with `params.transparentBounds: true`. Existing runtime configs without the setting retain black borders.
4 changes: 4 additions & 0 deletions .changeset/transparent-text-defaults.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
---

New editor text uses normal composition over a transparent background. Clarify the background opacity control and preserve the solid fallback for saved text that omits the setting. This editor-only change does not require a package release.
5 changes: 5 additions & 0 deletions .changeset/v3-render-performance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@basementstudio/shader-lab": patch
---

Render the V3 effect layers with less GPU work and no visual change: Connected Dots reads its dot sites from a per-cell pre-pass (about 9x faster at 1080p), and Displaced Rings, Glass, Blur, Plotter, Signal Rot, Outline, Photocopy, Erosion, Lumen Print, Dot Grid and Relief skip work their current settings don't use. Blob Tracking stops requesting continuous rendering once its output settles on a still image, and Annotations only re-read their Edges field when the image below changes. Outline, Flares and Relief no longer read the wrong texture when their shader compiles before the first frame.
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@
# - Prevents merge conflicts caused by line ending differences

* text=auto eol=lf
*.hdr binary
*.wasm binary
Loading
Loading