Repository navigation
V3: Gradient Map effect layer - #166
Merged
Merged
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Collaborator
Author
|
Follow-up pushed: ramp stops keep their authored order while dragging (a stop can pass another without both moving), and one ramp drag is one undo step. Covered by the UI test. |
Merged
…roup failures Media load callbacks now ignore replaced or removed passes and pending loads are cleared on disposal. Strict-mode pass failures are reported once at the originating pass instead of at every group boundary.
Publishing now drops every descendant of a hidden group and clears the parentId of any retained layer (the audio source) whose parent was removed, so the published scene passes hierarchy validation on reopen.
Cap the neighbor row and column search to two cells each side so the worst-case cellAt count per fragment is 25 instead of unbounded in the packed minimum-size, maximum-stroke configuration. Mirrored in the runtime package.
…e on buttons Clear the active paint layer when the layer stops being paintable (selection, mode, visibility or lock change) so Paint never resumes without Edit Paint. Only preventDefault on Space for non-interactive targets so focused buttons and links still activate.
Create the .context artifact directory up front and pick the history shortcut modifier from the platform.
Importing a project now disarms the armed remix draft and clears the remix origin alongside the active draft, so later edits cannot autosave under the previous remix title.
…handle unmount Mask coordinates are now measured against the composition crop frame in the renderer and the handles overlay, so preview and export agree when the viewport and composition aspect ratios differ. Unmounting the handles mid-drag no longer writes the drag-start mask back, which overwrote the result of an undo.
git-chad
force-pushed
the
git-chad/v3-layer-masks
branch
from
October 1, 2026 07:04
79ea3a6 to
3573157
Compare
git-chad
force-pushed
the
git-chad/v3-gradient-map
branch
from
October 1, 2026 07:04
60506af to
60d45d6
Compare
git-chad
changed the base branch from
git-chad/v3-layer-masks
to
git-chad/shader-lab-v3-plan
October 1, 2026 15:13
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a Gradient Map effect layer (roadmap 2.5.2): a reorderable recolor-by-tone effect with an editable ramp, so tonal mapping can be scoped by groups and the new layer masks instead of applying globally. The global Scene → Color Map and existing projects are unchanged. It is listed in Core after Threshold, with a catalog preview rendered by the test harness.
Controls: a Preset select (Thermal, Duotone, Sepia, Neon, Grayscale; editing the ramp shows Custom), the shared GradientRamp editor (2–5 stops, click to add, double-click to remove), Amount and Invert. Stops persist as a compact JSON parameter that is parsed defensively (invalid input falls back to Thermal) and is hidden from the generic parameter list. Preset values are open to the user's choice.
Rendering: the LUT evaluation code moved into a shared
renderer/color-map-lut.ts(pure, byte-identical in the runtime package); the global Color Map keeps its byte LUT and behavior. The layer samples a 256-entry float LUT stored in linear space by Rec.709 luminance of the input, sRGB-encoded so mid-gray lands at the ramp center (linear luminance crowded the Thermal ramp into blue/green, see the before/after previews). Output preserves input coverage like other color effects; Amount mixes toward the original. Reference 18 was reopened for the Thermal direction; it is a tonal palette, not depth.Validation:
bun run check— passes; the same three preexisting lint warnings.bun run test:composition— full suite passes, including 47 new editor/runtime GPU cases intests/composition/gradient-map.mjs: stop parsing/serialization, presets, custom stops, Amount, Invert, alpha preservation, a grouped project where only the masked region is recolored while an external layer stays identical, hydration, history, duplication, save/reopen, shader export and runtime pixel parity. Legacy baselines untouched.bun tests/composition/gradient-map-ui.mjs— actual editor: ramp section, preset switch, adding a stop turns Custom, one-undo-per-edit, picker entry, save/reopen.Not in this slice: animatable ramp stops (Amount and Invert are animatable). Stacked on #165 (
git-chad/v3-layer-masks), within integration #150. Nothing merges to main before V3 is complete. Focused user test: tests/composition/GRADIENT-MAP-MANUAL-QA.md.