diff --git a/.changeset/alpha-compositing-foundation.md b/.changeset/alpha-compositing-foundation.md deleted file mode 100644 index cd35f4c5..00000000 --- a/.changeset/alpha-compositing-foundation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/annotations-layer.md b/.changeset/annotations-layer.md deleted file mode 100644 index 2224df0a..00000000 --- a/.changeset/annotations-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/annotations-regions-rotation.md b/.changeset/annotations-regions-rotation.md deleted file mode 100644 index 18b0da2b..00000000 --- a/.changeset/annotations-regions-rotation.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/blob-inner-effects.md b/.changeset/blob-inner-effects.md deleted file mode 100644 index 3e35b604..00000000 --- a/.changeset/blob-inner-effects.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/blob-tracking-annotations.md b/.changeset/blob-tracking-annotations.md deleted file mode 100644 index 63959164..00000000 --- a/.changeset/blob-tracking-annotations.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/brush-mask-feather.md b/.changeset/brush-mask-feather.md deleted file mode 100644 index a7e8b314..00000000 --- a/.changeset/brush-mask-feather.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/cell-edge-scatter.md b/.changeset/cell-edge-scatter.md deleted file mode 100644 index 9035a4b6..00000000 --- a/.changeset/cell-edge-scatter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/connected-dots-edge-snap.md b/.changeset/connected-dots-edge-snap.md deleted file mode 100644 index 451ad507..00000000 --- a/.changeset/connected-dots-edge-snap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/connected-dots-layer.md b/.changeset/connected-dots-layer.md deleted file mode 100644 index 8de57bea..00000000 --- a/.changeset/connected-dots-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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). diff --git a/.changeset/connected-dots-mesh.md b/.changeset/connected-dots-mesh.md deleted file mode 100644 index 9b0382d4..00000000 --- a/.changeset/connected-dots-mesh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/depth-parallax.md b/.changeset/depth-parallax.md deleted file mode 100644 index 88a4154d..00000000 --- a/.changeset/depth-parallax.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/displaced-rings.md b/.changeset/displaced-rings.md deleted file mode 100644 index e71cfddf..00000000 --- a/.changeset/displaced-rings.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/dot-grid-layer.md b/.changeset/dot-grid-layer.md deleted file mode 100644 index 17213570..00000000 --- a/.changeset/dot-grid-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/editor-groups.md b/.changeset/editor-groups.md deleted file mode 100644 index 335e783a..00000000 --- a/.changeset/editor-groups.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/erosion-layer.md b/.changeset/erosion-layer.md deleted file mode 100644 index 7d421b77..00000000 --- a/.changeset/erosion-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/flares-layer.md b/.changeset/flares-layer.md deleted file mode 100644 index b13ad86b..00000000 --- a/.changeset/flares-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/focus-blur-layer.md b/.changeset/focus-blur-layer.md deleted file mode 100644 index 005451a2..00000000 --- a/.changeset/focus-blur-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/glass-layer.md b/.changeset/glass-layer.md deleted file mode 100644 index c16b44a5..00000000 --- a/.changeset/glass-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/gradient-map-keyframes.md b/.changeset/gradient-map-keyframes.md deleted file mode 100644 index 4e97924b..00000000 --- a/.changeset/gradient-map-keyframes.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/gradient-map-layer.md b/.changeset/gradient-map-layer.md deleted file mode 100644 index 0bd3807f..00000000 --- a/.changeset/gradient-map-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/grain-layer.md b/.changeset/grain-layer.md deleted file mode 100644 index 40ad4b68..00000000 --- a/.changeset/grain-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/group-drag-drop.md b/.changeset/group-drag-drop.md deleted file mode 100644 index 36de81c8..00000000 --- a/.changeset/group-drag-drop.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -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. diff --git a/.changeset/isolated-group-rendering.md b/.changeset/isolated-group-rendering.md deleted file mode 100644 index e4187797..00000000 --- a/.changeset/isolated-group-rendering.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/layer-masks.md b/.changeset/layer-masks.md deleted file mode 100644 index 06ba3d40..00000000 --- a/.changeset/layer-masks.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/lumen-print-layer.md b/.changeset/lumen-print-layer.md deleted file mode 100644 index 685807d5..00000000 --- a/.changeset/lumen-print-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/mcp-layer-masks.md b/.changeset/mcp-layer-masks.md deleted file mode 100644 index 26831036..00000000 --- a/.changeset/mcp-layer-masks.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/mesh-gradient-v2.md b/.changeset/mesh-gradient-v2.md deleted file mode 100644 index 1f702694..00000000 --- a/.changeset/mesh-gradient-v2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/outline-layer.md b/.changeset/outline-layer.md deleted file mode 100644 index bf6230a2..00000000 --- a/.changeset/outline-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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). diff --git a/.changeset/pattern-motif-palette.md b/.changeset/pattern-motif-palette.md deleted file mode 100644 index 12addb5c..00000000 --- a/.changeset/pattern-motif-palette.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/pattern-motifs.md b/.changeset/pattern-motifs.md deleted file mode 100644 index 1840d741..00000000 --- a/.changeset/pattern-motifs.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/photocopy-layer.md b/.changeset/photocopy-layer.md deleted file mode 100644 index a020d4e4..00000000 --- a/.changeset/photocopy-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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). diff --git a/.changeset/photographic-cell-paint.md b/.changeset/photographic-cell-paint.md deleted file mode 100644 index a6117133..00000000 --- a/.changeset/photographic-cell-paint.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/photographic-cell-regions.md b/.changeset/photographic-cell-regions.md deleted file mode 100644 index f29b20b3..00000000 --- a/.changeset/photographic-cell-regions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/photographic-cells.md b/.changeset/photographic-cells.md deleted file mode 100644 index a2f86161..00000000 --- a/.changeset/photographic-cells.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/plotter-rework.md b/.changeset/plotter-rework.md deleted file mode 100644 index 8d45e2bf..00000000 --- a/.changeset/plotter-rework.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/relief-layer.md b/.changeset/relief-layer.md deleted file mode 100644 index f85d818b..00000000 --- a/.changeset/relief-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/ring-shapes.md b/.changeset/ring-shapes.md deleted file mode 100644 index 00d2994d..00000000 --- a/.changeset/ring-shapes.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/shape-layers.md b/.changeset/shape-layers.md deleted file mode 100644 index fe160ce4..00000000 --- a/.changeset/shape-layers.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/signal-rot-layer.md b/.changeset/signal-rot-layer.md deleted file mode 100644 index 962ece4a..00000000 --- a/.changeset/signal-rot-layer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/stable-artboard.md b/.changeset/stable-artboard.md deleted file mode 100644 index 2c8fc517..00000000 --- a/.changeset/stable-artboard.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/svg-shapes.md b/.changeset/svg-shapes.md deleted file mode 100644 index f1f74af1..00000000 --- a/.changeset/svg-shapes.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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`. diff --git a/.changeset/text-editing.md b/.changeset/text-editing.md deleted file mode 100644 index a7dc9c5f..00000000 --- a/.changeset/text-editing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/text-texture-resize.md b/.changeset/text-texture-resize.md deleted file mode 100644 index ebd75770..00000000 --- a/.changeset/text-texture-resize.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/three-185.md b/.changeset/three-185.md deleted file mode 100644 index 8e716e71..00000000 --- a/.changeset/three-185.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/threshold-colors.md b/.changeset/threshold-colors.md deleted file mode 100644 index a0602bf5..00000000 --- a/.changeset/threshold-colors.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/transparent-media-bounds.md b/.changeset/transparent-media-bounds.md deleted file mode 100644 index 931e9dab..00000000 --- a/.changeset/transparent-media-bounds.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/.changeset/transparent-text-defaults.md b/.changeset/transparent-text-defaults.md deleted file mode 100644 index 5232c2c6..00000000 --- a/.changeset/transparent-text-defaults.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -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. diff --git a/.changeset/v3-render-performance.md b/.changeset/v3-render-performance.md deleted file mode 100644 index 9757ad16..00000000 --- a/.changeset/v3-render-performance.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@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. diff --git a/packages/shader-lab-mcp/CHANGELOG.md b/packages/shader-lab-mcp/CHANGELOG.md index e0d5c101..5bfbe9b4 100644 --- a/packages/shader-lab-mcp/CHANGELOG.md +++ b/packages/shader-lab-mcp/CHANGELOG.md @@ -1,5 +1,11 @@ # @basementstudio/shader-lab-mcp +## 0.2.0 + +### Minor Changes + +- eb90280: `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. + ## 0.1.1 ### Patch Changes diff --git a/packages/shader-lab-mcp/package.json b/packages/shader-lab-mcp/package.json index 01633a9f..8d8d1b77 100644 --- a/packages/shader-lab-mcp/package.json +++ b/packages/shader-lab-mcp/package.json @@ -1,7 +1,7 @@ { "name": "@basementstudio/shader-lab-mcp", "description": "MCP server that drives the Shader Lab editor: layer control and custom shader authoring. Built with xmcp.", - "version": "0.1.1", + "version": "0.2.0", "license": "MIT", "author": "Tobi Moccagatta (https://github.com/git-chad)", "repository": { diff --git a/packages/shader-lab-react/CHANGELOG.md b/packages/shader-lab-react/CHANGELOG.md index 22b5f442..0b29e6b8 100644 --- a/packages/shader-lab-react/CHANGELOG.md +++ b/packages/shader-lab-react/CHANGELOG.md @@ -1,5 +1,58 @@ # @basementstudio/shader-lab +## 3.1.0 + +### Minor Changes + +- 6b025d8: 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. +- 879fbd0: 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. +- 0b0ed48: 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. +- 3aca260: 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. +- 6968b06: 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. +- ec03e76: 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. +- d99ff7a: 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). +- 297b5d3: 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. +- 72ee931: 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. +- 38dd8e2: 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. +- 53340e0: 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. +- cd15793: 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. +- a680f8a: 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. +- 49596c1: 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. +- 0356efb: 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. +- 4b2858b: 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. +- af60e65: 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. +- 6c289a3: 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. +- 8dc3c4d: 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. +- a992901: 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. +- 8c5b58b: 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. +- ec99d9f: 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). +- 7085dff: 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. +- 12dcf0c: 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. +- d8c72e9: 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). +- 897c1c0: 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. +- cbb925c: 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. +- 75968e3: 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. +- 3177d02: 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. +- 151a9d5: 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. +- 2f9107f: 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. +- 0a1665a: 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. +- a41da7b: 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. +- ec5cae6: 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. +- ad947c9: 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`. +- ca1c86c: 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. +- dca5491: 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. +- 76efc85: 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. + +### Patch Changes + +- 94c7312: 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. +- 7fbb10a: 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. +- ac5e152: 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. +- 322980b: 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. +- e958dac: 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. +- c69bafd: Support transparent borders for contained image and video layers with `params.transparentBounds: true`. Existing runtime configs without the setting retain black borders. +- 9a3945b: 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. + ## 3.0.2 ### Patch Changes diff --git a/packages/shader-lab-react/package.json b/packages/shader-lab-react/package.json index 6e72bc79..f9ade94e 100644 --- a/packages/shader-lab-react/package.json +++ b/packages/shader-lab-react/package.json @@ -1,6 +1,6 @@ { "name": "@basementstudio/shader-lab", - "version": "3.0.2", + "version": "3.1.0", "description": "Portable React runtime for Shader Lab exports.", "author": "Tobi Moccagatta (https://github.com/git-chad)", "type": "module",