summaryrefslogtreecommitdiff
path: root/apps/web/src/services/renderer/compositor
Commit message (Collapse)AuthorAgeFilesLines
* feat: lens effects tab, standalone motion effects, clip/asset rename, ↵cashmere2026-08-091-5/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | preview popout - New Lens category in the assets panel: Blur, Motion Blur, Zoom In/Out, Pan x4, Shake, Pulse, Spin, Custom Zoom. EffectDefinition gains a category field; tabs with an empty category are hidden, and the properties-panel 'Open effects' button opens the first non-empty one. - Motion effects work standalone: dropping them on the timeline creates an effect-track element that animates (scale/translate/rotate) every track below it, computed purely in the TS frame descriptor - no wasm changes, identical in preview and export. supportsStandalone removed. - Motion Blur: directional gaussian smear (amount + angle) reusing the existing WGSL shader with arbitrary u_direction. - Custom Zoom: start/end scale params (keyframable clip-level). - MotionOffset gains optional rotate, accumulated clip-level and applied to standalone layer quads via rotationDegrees. - Rename clips (timeline context menu) and media assets (media panel context menu) via a shared RenameDialog; asset rename persists through storageService with rollback on error. - Preview pops out into a Document Picture-in-Picture window and docks back; button hidden where the API is unsupported. - Export keeps running when the export popover is closed; only the explicit Cancel button aborts. - Captions and Adjustment tabs removed from the assets panel.
* fix: keep GPU effect previews from clobbering the preview canvascashmere2026-08-081-0/+8
| | | | | | | | | | | | | | | | On the WebGL backend wgpu can only present to the single canvas its GL context is bound to, which is also the compositor's output canvas. The effect tile previews (and mask feather) rendered through that canvas and resized it behind the compositor's back, leaving the main preview showing the preview image stretched until a full reload. TS side (works with the published wasm): after every applyEffectPasses/ applyMaskFeather call the gpu renderer restores the canvas size, using a one-pixel intermediate resize to force a surface reconfigure, then notifies the preview component to re-render the current frame. Rust side (next wasm publish): the GL canvas detour saves and restores the canvas size, and resizeCompositor always reconfigures the surface.
* fix: address review findings in masks substrateMaze Winther2026-05-021-0/+4
| | | | | | | | | | | | | | | - Remove dead ternary in getPreferredEdges (always returned undefined; the all-false object was never reached by Object.values().some(Boolean)) - Document why drawWithFeather descriptors zero the feather field in the compositor (analytical renderer handles softness itself; zeroing prevents a second JFA feather pass) - Remove legacyType from V30→V31 migration (not consumed anywhere; a down-migration can map type:"freeform" back to "custom" directly) - Add V30→V31 test coverage: skip-guard branches, freeform passthrough, elements without a masks array - Add snap tests for vertical-edge (bottom) and uniform-scale handle paths Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor: split builtin and freeform masksMaze Winther2026-05-021-2/+2
| | | | Made-with: Cursor
* refactor: make mask renderer dispatch explicitMaze Winther2026-05-021-57/+63
| | | | Made-with: Cursor
* chore: switch from biome to eslint + prettier; fix ton of lint issuesMaze Winther2026-05-021-16/+7
|
* perf: improve rendering performance by ~20xMaze Winther2026-04-223-246/+370
|
* chore: formattingMaze Winther2026-04-221-10/+19
|
* refactor: restructure files to their domains, new preview overlay system, ↵Maze Winther2026-04-202-5/+5
| | | | and dep graph
* feat: text / custom masks, fix preview pan, refactor selectionMaze Winther2026-04-151-6/+30
|
* chore: remove debugging throughout codebaseMaze Winther2026-04-151-15/+0
|
* refactor: rendering pipelineMaze Winther2026-04-133-0/+743
Made-with: Cursor