AIMP Forum
AIMP for Windows => Плагины / Plugins => Дополнения / Addons => Визуализации / Visualizations => Topic started 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.
-
Шикарно смотрится! И название соответствующее. Правда, на твоём скриншоте цвета вроде как понасыщеннее, и в полноэкранном режиме дыра большевата, но в оконном - самое то!
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=73692.0;attach=72798)
-
Изначально хотел назвать Solar Eclipse, но кода первый раз без ошибок запустилось, понял - это именно она.
Дыра масштабируется пропорционально окну, может, и лишковата...
Прожорливая визуалка опять вышла, я вообще сомневался, что получится с такой частотой канву вертеть.
-
Так же через blend mode работает?
-
Так же через blend mode работает?
Да, тут нужна прозрачность, поскольку шаг столбиков меньше ширины их текстуры. Но перегрузки по ядрам нет, даже на 4К.
Артём, попутно вопрос: что будет если процедура Draw не успеет завершить свою работу за период её вызова? По моим замерам это 32..34 мс.
Добавил масштабирование столбиков по ширине, а то на 4К довольно прозрачно смотрится, а на мелком окне всё сливается в одно облако.
-
что будет если процедура Draw не успеет завершить свою работу за период её вызова
Ничего, чем быстрее она работает, тем больше FPS будет у UI.
-
Так же через blend mode работает?
Уточнение: используется DrawBlend, но без BlendMode.
А есть ли другие методы нарезать PNG-ки и выводить с ресайзом и сохранением прозрачности?
-
используется DrawBlend, но без BlendMode.
А есть ли другие методы нарезать PNG-ки и выводить с ресайзом и сохранением прозрачности?
Если нужна прозрачность - только DrawBlend. А вот нарезать и отресайзить можно (и нужно) заранее. На этом можно очень неплохо сэкономить.
П.С. Я внес несколько оптимизаций в рендеринг с BlendMode (залито на гит). Так же появилась возможность регулировать, когда рендеринг будет идти в один поток, а когда - во все (см. глобальную переменную BlendFunctionsThreadingThreshold)
-
А вот нарезать и отресайзить можно (и нужно) заранее. На этом можно очень неплохо сэкономить.
Как их хранить - в отдельных ACLDib?
Ресайз делается в зависимости от значения переменной и размеров окна. Как тут сэкономишь?
Так же появилась возможность регулировать, когда рендеринг будет идти в один поток, а когда - во все...
А есть смысл в каких-то случаях ограничивать число потоков?
Это относится только к функциям с BlendMode?
Артём, я понимаю, что у тебя на всё времени катастрофически не хватает, но, может, когда-нибудь появится описание по билиотеке ACL или, хотя-бы иерархия объектов?
-
Ресайз делается в зависимости от значения переменной и размеров окна. Как тут сэкономишь?
Ну технически да, можно закэшировать. Но для начала надо посмотреть, что именно тормозит. DrawBlend используется с SmoothResize = true?
-
А есть смысл в каких-то случаях ограничивать число потоков?
Это относится только к функциям с BlendMode?
Там не число потоков ограничивается, а сам факт - в несколько потоков или в один. Смысл есть, так для маленьких картинок быстрее посчитать все в текущем потоке, нежели поднимать дополнительные.
когда-нибудь появится описание по билиотеке ACL или, хотя-бы иерархия объектов?
Иерархию классов и сама IDE умеет показывать, а вот описание... с ним все довольно грустно. Нужно ж не просто описание методов и классов, но и примеры, и описание лучших практик использования.
-
Но для начала надо посмотреть, что именно тормозит. DrawBlend используется с SmoothResize = true?
Нет, сглаживание не используется. Отправил проект в личку.