AIMP Forum

AIMP for Windows => Плагины / Plugins => Дополнения / Addons => Визуализации / Visualizations => Topic started by: Black_AVP_Bim on November 21, 2024, 17:07:16

Title: Black Hole [AIMP5.30]
Post by: Black_AVP_Bim on November 21, 2024, 17:07:16
[catalog_card=1322]

В плагине использована библиотека ACL (https://github.com/ArtemIzmaylov/ACL?tab=MPL-2.0-1-ov-file), лицензия MPL-2.0.
Title: Re: Black Hole [AIMP5.30]
Post by: McClaud on November 21, 2024, 18:06:27
Шикарно смотрится! И название соответствующее. Правда, на твоём скриншоте цвета вроде как понасыщеннее, и в полноэкранном режиме дыра большевата, но в оконном - самое то!

(https://www.aimp.ru/forum/index.php?action=dlattach;topic=73692.0;attach=72798)
Title: Re: Black Hole [AIMP5.30]
Post by: Black_AVP_Bim on November 22, 2024, 10:55:16
Изначально хотел назвать Solar Eclipse, но кода первый раз без ошибок запустилось, понял  - это именно она.
Дыра масштабируется пропорционально окну, может, и лишковата...
Прожорливая визуалка опять вышла, я вообще сомневался, что получится с такой частотой канву вертеть.
Title: Re: Black Hole [AIMP5.30]
Post by: Artem on November 22, 2024, 12:42:51
Так же через blend mode работает?
Title: Re: Black Hole [AIMP5.30]
Post by: Black_AVP_Bim on November 22, 2024, 12:54:18
Так же через blend mode работает?
Да, тут нужна прозрачность, поскольку шаг столбиков меньше ширины их текстуры. Но перегрузки по ядрам нет, даже на 4К.
Артём, попутно вопрос: что будет если процедура Draw не успеет завершить свою работу за период её вызова? По моим замерам это 32..34 мс.

Добавил масштабирование столбиков по ширине, а то на 4К довольно прозрачно смотрится, а на мелком окне всё сливается в одно облако.
Title: Re: Black Hole [AIMP5.30]
Post by: Artem on November 22, 2024, 12:55:30
что будет если процедура Draw не успеет завершить свою работу за период её вызова

Ничего, чем быстрее она работает, тем больше FPS будет у UI.
Title: Re: Black Hole [AIMP5.30]
Post by: Black_AVP_Bim on November 22, 2024, 12:58:33
Так же через blend mode работает?
Уточнение: используется DrawBlend, но без BlendMode.
А есть ли другие методы нарезать PNG-ки и выводить с ресайзом и сохранением прозрачности?
Title: Re: Black Hole [AIMP5.30]
Post by: Artem on November 23, 2024, 21:51:40
используется DrawBlend, но без BlendMode.
А есть ли другие методы нарезать PNG-ки и выводить с ресайзом и сохранением прозрачности?

Если нужна прозрачность - только DrawBlend. А вот нарезать и отресайзить можно (и нужно) заранее. На этом можно очень неплохо сэкономить.

П.С. Я внес несколько оптимизаций в рендеринг с BlendMode (залито на гит). Так же появилась возможность регулировать, когда рендеринг будет идти в один поток, а когда - во все (см. глобальную переменную BlendFunctionsThreadingThreshold)
Title: Re: Black Hole [AIMP5.30]
Post by: Black_AVP_Bim on November 24, 2024, 11:14:58
А вот нарезать и отресайзить можно (и нужно) заранее. На этом можно очень неплохо сэкономить.
Как их хранить - в отдельных ACLDib?
Ресайз делается в зависимости от значения переменной и размеров окна. Как тут сэкономишь?

Так же появилась возможность регулировать, когда рендеринг будет идти в один поток, а когда - во все...
А есть смысл в каких-то случаях ограничивать число потоков?
Это относится только к функциям с BlendMode?

Артём, я понимаю, что у тебя на всё времени катастрофически не хватает, но, может, когда-нибудь появится описание по билиотеке ACL или, хотя-бы иерархия объектов?
Title: Re: Black Hole [AIMP5.30]
Post by: Artem on November 24, 2024, 15:04:44
Ресайз делается в зависимости от значения переменной и размеров окна. Как тут сэкономишь?

Ну технически да, можно закэшировать. Но для начала надо посмотреть, что именно тормозит. DrawBlend используется с SmoothResize = true?
Title: Re: Black Hole [AIMP5.30]
Post by: Artem on November 24, 2024, 15:07:36
А есть смысл в каких-то случаях ограничивать число потоков?
Это относится только к функциям с BlendMode?

Там не число потоков ограничивается, а сам факт - в несколько потоков или в один. Смысл есть, так для маленьких картинок быстрее посчитать все в текущем потоке, нежели поднимать дополнительные.

когда-нибудь появится описание по билиотеке ACL или, хотя-бы иерархия объектов?

Иерархию классов и сама IDE умеет показывать, а вот описание... с ним все довольно грустно. Нужно ж не просто описание методов и классов, но и примеры, и описание лучших практик использования.
Title: Re: Black Hole [AIMP5.30]
Post by: Black_AVP_Bim on November 24, 2024, 16:20:50
Но для начала надо посмотреть, что именно тормозит. DrawBlend используется с SmoothResize = true?
Нет, сглаживание не используется. Отправил проект в личку.