Skin Engine v3

Сегодня решил вкратце рассказать еще об одной глобальной “фиче”, которая запланирована на ближайшую мажорную версию – новая версия скин-движка – v3.

О новых свойствах скин-элементов сейчас говорить не буду, это менее интересно, на мой взгляд, да и не все еще добавлены.

Сейчас хотелось бы остановиться именно на этой фиче – полупрозрачности окон. Если раньше прозрачность регулировалась окна целиком, то теперь, она зависит только от текстуры – наконец-то можно будет сделать нормальные закругления у формы, тень или просто стеклянный интерфейс.

SkinEngine v3: AlphaBlending Preview

Эта картинка, по большей части, издевательство над скином, однако демонстрирует описанную возможность.

Естественно, фича сказалась на производительности, но не так сильно, как ожидалось 🙂 Скорость отрисовки скина без полупрозрачностых элементов осталась приблизительно такой же, как и раньше. А вот объем потребляемой памяти немножко вырос – на размер буфера для окна. Например, окно у нас размером 350×600 – размер буфера будет равен 820 Кбайт.

А теперь несколько немного о грустном, из-за проблем с производительностью два скин-элемента не поддерживают полупрозрачность – дисплей визуализаций и плейлист.

27 thoughts on “Skin Engine v3

  1. mwChief

    Можно вопрос? Какой смысл в такой реализации прозрачности? В итоге это не только не выглядит красиво, но и привносит визуальный шум в окно плеера, мешая воспринимать выводимую в окне информацию. Приведенный вами скриншот очень хорошо это иллюстрирует. Конечно, понятно что это просто тестовый скин, но так или иначе от этого будет страдать любой скин если вдруг под ним окажется не фон рабочего стола, а страничка с текстом. А размывка того что попадает под окно плеера при такой реализации станет страшным ударом по производительности.
    Другое дело нативная поддержка прозрачности в Vista/7 которая не только выглядит гораздо красивее, не внося шума в окно, но является гораздо более производительным решением. Я также уже писал что это позволит лучше интегрировать скин с темой оформления windows.
    Еще хотел спросить появится ли поддержка нескольких цветовых схем для скина, как это было реализовано в Winamp? Текущая реализация хоть и позволяет задать окну плеера любой оттенок, но на подавляющем большинстве скинов это выглядит ужасно. Не знаю как это сейчас реализовано, но при выборе другого цвета для скина он теряет контрастность, если не планируется добавление цветовых схем, было бы неплохо хотя бы поправить алгоритм замены цвета.

  2. Artem Post author

    В итоге это не только не выглядит красиво, но и привносит визуальный шум в окно плеера, мешая воспринимать выводимую в окне информацию

    Это уже будет вопрос к авторам скинов – как они захотят это сделать. Например, в стандартном скине теперь будут нормальные закругленные края (не “рваные”)

    Другое дело нативная поддержка прозрачности в Vista/7 которая не только выглядит гораздо красивее, не внося шума в окно, но является гораздо более производительным решением.

    Такого точно не будет.

    Еще хотел спросить появится ли поддержка нескольких цветовых схем для скина, как это было реализовано в Winamp?

    В этой версии – нет.

  3. razmus

    Понимаю, что вопрос не совсем уместен, но все же… можно ли узнать, почему такая реализация не подходит…?

    “Другое дело нативная поддержка прозрачности в Vista/7 которая не только выглядит гораздо красивее, не внося шума в окно, но является гораздо более производительным решением.

    Такого точно не будет.”

  4. Artem Post author

    Потому, что затачиваться под “скины” системы – дело гиблое, учитывая, что половину элементов там просто нет

  5. razmus

    Вы меня неправильно поняли, я имел ввиду способ реализации прозрачности… то как она реализована у вас и в Vista/7..

  6. Artem Post author

    А чем моя реализация отличается от системной? На самом деле – ничем, разве что винда рисует еще красивую рамку окна. К тому же, не полагаясь на систему, я получаю еще один бонус – работает на WinXP.

  7. razmus

    Разница в отсутствии размывки… и в виндовой реализации, при “прозрачности” больших объектов или анимации, я особой прибавки нагрузки на систему не заметил….

    З.Ы,
    Не могли бы Вы сказать, насколько сильна потеря производительности при ее реализации для “дисплей визуализаций и плейлист”…

  8. Artem Post author

    Какой толк от размывки? Если перекрывать “виндовую отрисовку”, то размытие само собой уйдет. А сделать так, чтобы было и то, и то – не получится.

    Плейлист начинает рисоваться в 5 раз медленнее. дисплей, из-за частой перерисовки – грузит процессор на +1% (Core2Duo 1.86).

    С дисплеем, я думаю, к релизу вопрос будет решен, а вот в плейлисте пока поддержку прозрачности делать и не планирую.

    1. Nonsense

      для плеилиста можно использовать контеинер, т.е. сделать отрисовку рамки отдельно а само содержание плеилиста отдельно, т.е. сам лист не будет прозрачен, в отличие от рамки

  9. mdimon

    2 Artem
    я использую как минимум два “стеклянных” приложения и каких то существенных тормозов я не заметил и это при допотопном Пентиуме 4. В чем причина столь долгой прорисовки Плейлиста?
    http://s005.radikal.ru/i210/1004/75/76f8e106b7d9.jpg

    ИМХО: будет не красиво если одна часть плеера будет прозрачно, а другая нет (плейлист, эквалайзер и т.д.). Быть может, в Опциях надо ввести настройку, которая бы позволила вообще (или с плейлиста) убрать прозрачность на старых компах и ставить ее на более производительных системах.

    И еще, когда примерно ждать версию плеера с прозрачностью?

    Ну и конечно же огромное спасибо тебе за создание и поддержку АИМПа. Это лучший плеер на сегодняшний день, пользуюсь уже давно + знакомым ставлю 🙂

  10. razmus

    Ваш скриншот очень ярко иллюстрирует зачем нужна размывка…. текст “под” окном мешает… и как бы так сказать….лишает окно объемности…делает его приклеенным к “подложке”

    З.Ы.
    Я не очень силен в написании подобных вещей…. но не решит ли проблемы с плейлистом двойная буферизация окна?

    1. Nonsense

      как решениен можно сделать сплошную матовую подложку, многослоиность исправит проблемы с произодительностью

  11. Artem Post author

    В чем причина столь долгой прорисовки Плейлиста?

    Из-за кол-ва мелких элементов + необходимостью рендеринга / рассчета размеров текста через GDI+.

    ИМХО: будет не красиво если одна часть плеера будет прозрачно, а другая нет (плейлист, эквалайзер и т.д.). Быть может, в Опциях надо ввести настройку, которая бы позволила вообще (или с плейлиста) убрать прозрачность на старых компах и ставить ее на более производительных системах.

    Видимо, я плохо изложил суть, я имею в виду не окно плейлиста в целом, а только тот скин-элемент (он и имеет название “плейлист”), который содержимое отображает. К тому же, это на данный момент, к релизу ситуация может поменяться =).

    И еще, когда примерно ждать версию плеера с прозрачностью?

    Думаю, к концу года что-то вроде бета-версии появится.

    Ваш скриншот очень ярко иллюстрирует зачем нужна размывка…. текст “под” окном мешает… и как бы так сказать….лишает окно объемности…делает его приклеенным к “подложке”

    Повторюсь еще раз, это грубая иллюстрация, все будет зависеть от конкретного скина и задумки автора. В данном случае, я просто выставиль определенное значение альфа-канал одной из текстур.

    Я не очень силен в написании подобных вещей…. но не решит ли проблемы с плейлистом двойная буферизация окна?

    В данном случае, нет.

  12. YurCompMan

    Отличная новость!
    Я считаю, что лучше сделать галочку для включения прозрачности для визуалки и галочку для включения прозрачности для плейлиста (ну, это если вообще есть возможность убирать альфа-канал, и если всё это будет нормально выглядеть).

  13. Artem Post author

    С плейлистом проблема именно в переводе его на GDI+, а две версии я делать не планирую.

    А как на счёт реализации опционального размытия для “задних” текстур?

    Пока не планирую

  14. Lyuter

    С давних пор у меня имеется вопросик. Каждое виндовое приложени сигнализирует своим заголовком о том что, оно сейчас активно или нет. Т.е. если у окна серый заголовок, то оно не активно, и не имеет фокуса. Вопрос: будет ли такое реализованно в следующих версиях скин-движка AIMPа?

  15. mdimon

    2 urahara
    скачал тот плеер, в нем кроме прозрачности больше ни чего нет 😀 . Функциональности – ноль, плэйлист – без вкладок, даже настроек нет (хотя справедливости ради отмечу, что на нем стоит статус БЕТА)
    вот страничка на гугле
    https://sites.google.com/site/xaudioplayer/historyx

  16. Toff

    Эффект прозрачности а ля WinVista/7 (Aero Glass) создаёт эффект объёмного стекла, а обычный альфа-блендинг создаёт эффект тонкой плёночки. Поэтому первый всё же гораздо приятнее на глаз. Игра со значениями альфа-канала и текстурами тут не поможет, т. к. изображение всё равно не получится сделать размытым, оно будет просто слабее просвещаться, но его контуры будут такими же чёткими. “Отклеить” AIMP от странички можно с помощью тени, но тогда получится всё та же плёночка, только висящая в воздухе.
    Читал, что в Delphi 2007 Aero Glass для приложения включается параметром SheetOfGlass, но на этом мои познания данной функции заканчиваются, ибо не программист. 🙂
    Надеюсь, вы всё же рассмотрите возможность внедрения поддержки данного эффекта.

  17. x-new

    А по моему не стОит особо зацикливаться на таких мелочах как Aero эффекты. На некоторых версиях виндовс эти эффекты вообще нативно недоступны. Во второй версии AIMP, на мой взгляд, всего хватает, чтобы настроить внешний вид (даже прозрачность) и скины есть неплохие. Из недостатков поддержки скинов в AIMP2 только “рваные” закругления, ну и неотключаемый “спектранализатор” (я не знаю как его отключить), который вообще хорошо бы исключить, т.к. только место занимает.

Leave a Reply