Skip to content

fix: draw clip filters in the preview as the render applies them - #265

Merged
dazzatronus merged 1 commit into
mainfrom
fix/clip-filters-in-preview
Oct 30, 2026
Merged

dazzatronus merged 1 commit into
mainfrom
fix/clip-filters-in-preview

Conversation

@dazzatronus

Copy link
Copy Markdown
Contributor

Studio drew a clip with filter set as if it were unset, so previews, share links and shotstack inspect sheets differed from the render.

  • The colour filters (boost, contrast, darken, greyscale, lighten, muted, negative) share one shader that ports the render's per-pixel maths on unpremultiplied colour. ColorMatrixFilter can't: saturation pivots on HSP brightness, so a linear matrix greys pure red to 76 where the render gives 139.
  • blur is pixi's BlurFilter with edges repeated, like the render's clamped box blur. Blur strength is now set as each frame draws, so a capture, which resets the editor zoom to 1:1, blurs like the render. The zoom transition's blur read the same stale on-screen zoom and is fixed with it.
  • Clips the render plays as video (video, html5, rich captions, image-to-video, animated rich text) stay unfiltered, as they render today.
  • The filter runs before the wipe transition, the render's order.

Verify: shotstack inspect a 3×3 grid of one image under each filter, against inspect of its render at 1 s. Every tile's mean colour lands within 3 levels of the render's, and the blur radius matches (3 px at scale 0.32).

Risk: the WebGPU shader compiles under a WGSL validator but hasn't drawn a frame; Studio initialises WebGL.

@dazzatronus
dazzatronus merged commit ac02f9b into main Oct 30, 2026
1 check passed
@dazzatronus
dazzatronus deleted the fix/clip-filters-in-preview branch October 30, 2026 22:30
github-actions Bot pushed a commit that referenced this pull request Oct 30, 2026
## [2.30.1](v2.30.0...v2.30.1) (2026-10-30)

### Bug Fixes

* draw clip filters in the preview as the render applies them ([#265](#265)) ([ac02f9b](ac02f9b))
* draw html5 frames on a software canvas so Firefox keeps their gradients ([#280](#280)) ([d508db8](d508db8))
* **export:** draw export frames into one stencil target so Firefox keeps masked content ([#278](#278)) ([f431c6b](f431c6b))
* **export:** tag browser exports as limited range so Safari's whites stay white ([#277](#277)) ([c6150eb](c6150eb))
* keep a frame's embedded images when Safari draws an html5 clip ([#279](#279)) ([5154007](5154007))
* keep baking html5 clips while their tab is in the background ([#281](#281)) ([e1fa158](e1fa158))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.30.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant