AIMP Forum
AIMP for PC => Предложения / Suggestions => Skin Editor, Skin Engine => Skin Engine => Topic started by: Kibermanick on February 28, 2026, 16:31:32
-
Предлагаю добавить дополнительный режим размытия при котором можно указывать начальную и конечную степень размытия в заданном направлении. Этакий градиентный способ размытия. Если я правильно понимаю как работает размытие то, данная функция не сильно сложна в реализации и не требует большей мощности железа. При стандартном размытии для каждого пикселя рассчитывается среднее значение в определенном радиусе, в том что предлагаю я используется тот же метод но добавляется построчное размытие где у каждой новой строки свой радиус усреднения. Сейчас для реализации похожего эффекта приходиться использовать много TASEBlurredGlass что плохо сказывается на производительности.
(https://aimp.ru/forum/index.php?action=dlattach;topic=77378.0;attach=77089)
Дополнение подсказанное Black_AVP_Bim: Определять степень размытия не линейно а маской с произвольным рисунком.
Я бы несколько изменил начальное предложение, чтобы степень размытия определялась маской, это более гибкий способ, номер кадра маски можно переключать скриптом.
-
Слой-маска разве для этого не подходит?
-
Слой-маска разве для этого не подходит?
нет, маска не дает нужного результата и добавляет лишний эффект дымки вместо размытия.
(https://aimp.ru/forum/index.php?action=dlattach;topic=77378.0;attach=77097)
-
А надо так:
(https://aimp.ru/forum/index.php?action=dlattach;topic=77378.0;attach=77099)
-
нет, маска не дает нужного результата и добавляет лишний эффект дымки вместо размытия.
Да, есть такое. Значит, алгоритм размытия нужен другой.
-
Редактировал в ФШ портреты, вспомнил про эту тему. В принципе, можно решить эту задачу, используюя пирог из двух каверов: в верхнем градиентная маска (блюр = 0), а нижний расблюрен до нужной кондиции.
-
Редактировал в ФШ портреты, вспомнил про эту тему. В принципе, можно решить эту задачу, используюя пирог из двух каверов: в верхнем градиентная маска (блюр = 0), а нижний расблюрен до нужной кондиции.
А где оно там?
-
Редактировал в ФШ портреты, вспомнил про эту тему. В принципе, можно решить эту задачу, используюя пирог из двух каверов: в верхнем градиентная маска (блюр = 0), а нижний расблюрен до нужной кондиции.
Это конечно хорошо но работает только в пределах кавера. А мне оно надо везде кроме кавера, ну кавер там конечно тоже подпадает но не как основа😅.
-
А как вообще происходит отрисовка? Элементы отрисовывают себя и помещают на контекст или сначала получают фрагмент контекста а потом рисуют на нем себя и возвращают в общий контекст? И еще вопрос, размытие прям полностью делается процессором?
-
А мне оно надо везде кроме кавера, ну кавер там конечно тоже подпадает но не как основа😅.
Везде - это где, всё окно, включая все контролы?
-
Везде - это где, всё окно, включая все контролы?
Ага, ну все то же что может размывать обычный TASEBlurredGlass.
-
:-\ Ну, я понимаю, можно размыть фоновую текстуру, но зачем размывать те же кнопки, регуляторы, индикаторы и пр.?
-
:-\ Ну, я понимаю, можно размыть фоновую текстуру, но зачем размывать те же кнопки, регуляторы, индикаторы и пр.?
Я делаю обложку в которой попытался сымитировать такое размытие на плейлисте сверху и в главном меню(кнопка верхний левый угол). Но повторюсь надо много блюров разом что тяжеловато для некоторых компьютеров.
https://aimp.ru/forum/index.php?topic=65063.0
-
Интересно смотрится. Но как тут по-другому сделаешь? Большой нагрузки на проц я не заметил, даже на старом железе не более 3-4%
-
Нагрузка возрастает до 20% при скольжении курсора по кнопкам. Что ты там за ним таскаешь?
-
Нагрузка возрастает до 20% при скольжении курсора по кнопкам. Что ты там за ним таскаешь?
Парочка Gauge 😀
-
Интересно смотрится. Но как тут по-другому сделаешь? Большой нагрузки на проц я не заметил, даже на старом железе не более 3-4%
Хм странно у меня на фикусе лагает. Особенно в моменты когда растягиваешь область с кавером.
-
Но как тут по-другому сделаешь?
Есть пара идей. Как вариант уже озвученный, процессор все ровно при размытии рассчитывает каждый пиксель последовательно, что мешает при смене строк менять и радиус, как счетчики в циклах? Ну или было бы лучше всего поручить это видеокарте, типа элемент блура берет фрагмент контекста и вызывает функцией отработку шейдера по этому фрагменту, где все пиксели обработаются параллельно и с учетом их положения на фрагменте, а потом возвращать его в общий контекст.
-
Хм странно у меня на фикусе лагает. Особенно в моменты когда растягиваешь область с кавером.
Тоже возрастает нагрузка ~ до 15%, но плеер играет нормально.
Парочка Gauge 😀
Вот они и грузят.
-
Вот они и грузят.
Хм, попробую их как-нибудь заменить. Спасибо что подметил это.
-
Кстати есть еще косяк с тем что коэффициент размытия не масштабируется вместе с масштабом обложки и это несколько ломает изначальный вид скина.
-
Кстати есть еще косяк с тем что коэффициент размытия не масштабируется вместе с масштабом обложки и это несколько ломает изначальный вид скина.
Это можно скорректировать скриптом, обрабатывая событие onResize.
Хм, попробую их как-нибудь заменить.
Пробовал делать на аниматорах, вроде, они грузят поменьше. Где-то выкладывал пример, сейчас найти не смог (см. влож.). Обрабатывал только 2 события: onMouseEnter и onMouserLeave, при желании можно и onMouseMove. Применил для кнопок лишь в одном скине (https://aimp.ru/forum/index.php?topic=74726.0).
-
Это можно скорректировать скриптом, обрабатывая событие onResize.
Мне кажется это не сработает когда изначальная степень размытия 100, больше не поднять.
Пробовал делать на аниматорах, вроде, они грузят поменьше.
Попробую так
-
Мне кажется это не сработает когда изначальная степень размытия 100, больше не поднять.
Если уж колхозить, то можно между каверами ещё и BlurredGlass засунуть.
-
Я бы несколько изменил начальное предложение, чтобы степень размытия определялась маской, это более гибкий способ, номер кадра маски можно переключать скриптом.
-
Я бы несколько изменил начальное предложение, чтобы степень размытия определялась маской, это более гибкий способ, номер кадра маски можно переключать скриптом.
🤔ну тоже прикольно, хотя тут уже тяжелее для железа будит, надо будит сопоставлять каждый пиксель в двух массивах, определять радиус в соответствии с цветом пикселя в маске, нужны два входных параметра минимального и максимального радиуса, и все это еще скорее всего делать через нормализацию, а если размываемый массив и массив маски разного размера, тут дофига математики. В рамках шейдера это все более чем уместно.
Вообще если уж так размечтаться было бы прикольно иметь такой OpenGL компонент с программируемым шейдером, в котором можно реализовать все что фантазия позволит. Нужно только что бы он умел брать фон под собой как это делает блур. В современном вебе есть такой компонент который можно использовать с помощью обычного дива.