Skip to content

perf(dialogs): drop the Opacity around the backdrop blur; animate sigma and tint (#886) - #977

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/886-dialog-backdrop-filter-opacity
Sep 25, 2026
Merged

ZhuchkaTriplesix merged 1 commit into
devfrom
issue/886-dialog-backdrop-filter-opacity

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Описание изменений

  • В showAppDialog фон-заморозка плавно появлялся через Opacity вокруг BackdropFilter. Это заставляет композитор на каждом кадре входа и выхода создавать дополнительный экранный offscreen-слой.
  • Теперь прогресс перехода напрямую управляет и сигмой размытия, и альфой затемнения (_DialogBackdrop). Эффект по-прежнему появляется и исчезает плавно, без «выскакивания», в установившемся состоянии те же sigma 8 и чёрный 0,32, но Opacity вокруг фильтра нет. При прогрессе 0 фильтр не строится.
  • Анимация самой карточки диалога (FadeTransition / SlideTransition) не менялась.
  • Тесты в app_dialog_test: старый тест закреплял прежнее поведение (статичная сигма и Opacity), заменён на три новых: сигма и тон растут при входе и нет Opacity над фильтром, в конце полный блюр и тон, при закрытии снова затухают и фильтр исчезает. Прогнал test/shared и test/features/main_screen (116 тестов, включая golden), проходят.

Замеры: результат неубедительный

Профильная сборка, окно 2056×2616, открытие и закрытие диалога поверх сетки 5000×120, растр по кадрам:

Вариант raster p50 raster p99 кадров > 8,33 мс
до, 4 прогона 4,1–9,3 мс 6,0–19,2 мс 0/139, 2/139, 40/101, 71/82
после, 3 прогона 3,96–4,35 мс 7,8–9,6 мс 0/137, 2/138, 3/139

Прогоны сильно шумят, поэтому доказать выигрыш нельзя. Единственное, что видно: в 2 из 4 прогонов «до» были серии тяжёлых кадров, в 3 из 3 прогонов «после» этого не было. Это согласуется с описанием issue, но не подтверждает его. Один прогон «после» шёл в другом размере окна (тайлинг), его я исключил.

Связанные Issue

Closes #886

…ma and tint (Closes #886)

The dialog backdrop faded in by wrapping a BackdropFilter in an Opacity driven
by the route animation, which asks the compositor for an extra full-screen
offscreen layer on every frame of the enter and exit transitions.

Animate the blur sigma and the tint alpha directly with the transition progress
instead. The frost still fades in and out without pop-in, ends at the same sigma
8 / black 0.32 as before, and nothing wraps the filter in an Opacity. The filter
is not built at progress 0.
@github-actions github-actions Bot added frontend Theme parser epic label: frontend performance Theme parser epic label: performance motion Animation system, transitions, motion tokens ui User interface components and widgets labels Sep 25, 2026
@github-actions github-actions Bot added this to the 0.4.18 milestone Sep 25, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit 3be1609 into dev Sep 25, 2026
3 checks passed
@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the issue/886-dialog-backdrop-filter-opacity branch September 28, 2026 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend Theme parser epic label: frontend motion Animation system, transitions, motion tokens performance Theme parser epic label: performance ui User interface components and widgets

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant